Slava Pestov
920d6b1829
cpu.ppc: updating optimizing compiler backend for recent changes
2010-05-04 05:51:54 -05:00
Slava Pestov
030b966adf
cpu.ppc.assembler: new opcodes: LFDUX LFDX LFSUX LFSX STFDUX STFDX STFSUX STFSX
2010-05-04 05:47:21 -05:00
Slava Pestov
46864a2c92
vm: tweak inline_gc() for PowerPC
2010-05-04 06:52:30 -04:00
Slava Pestov
8c099dac43
cpu.x86: GC root offsets were computed wrong in words containing alien calls
2010-05-04 02:53:53 -04:00
Slava Pestov
27ba4339a7
cpu: cleanups
2010-05-03 23:08:24 -04:00
Slava Pestov
bd4b31ffa9
cpu.ppc: fixing typos in non-optimizing backend
2010-05-03 22:43:51 -04:00
Slava Pestov
94e6ed142d
cpu.x86.assembler: fix test on 64-bit
2010-05-03 20:16:13 -04:00
Slava Pestov
acfec41df5
cpu.ppc: updates for recent compiler changes, untested
2010-05-03 18:28:31 -04:00
Slava Pestov
7f0469efef
compiler: new "binary literal area" at the end of a word's machine code stores constant floats and SIMD vectors; this allows ##load-reference/##load-memory fusion to be performed on x86-64, with a RIP-relative address reaching the data; also simplifies VM since custom relocation types used by the previous 32-bit-only optimization are no longer needed
2010-05-03 17:34:35 -04:00
Slava Pestov
73c83333f2
compiler: remove flat machine representation and generate code directly from the CFG
2010-05-03 17:34:32 -04:00
Slava Pestov
c724550291
compiler.cfg: fuse ##load-integer/##load-reference into ##replace to form ##replace-imm
2010-05-03 17:34:28 -04:00
Slava Pestov
90b945eaa0
compiler: add ##load-vector instruction to avoid wasting a temporary register on x86-32
2010-05-03 17:34:28 -04:00
Slava Pestov
be95003594
cpu.x86: use available type info to generate more efficient %box-displaced-alien where possible
2010-05-03 17:34:27 -04:00
Slava Pestov
8849e370ca
Register allocation now uses SSA properties to coalesce values with different representations
2010-05-03 17:34:20 -04:00
Slava Pestov
fc7a1ad8b3
New GC checks work in progress
2010-05-03 17:34:16 -04:00
Slava Pestov
1bde985228
cpu.x86.assembler: small cleanups
2010-05-03 17:34:15 -04:00
Slava Pestov
fd84bb98bc
strings: move string-nth primitive out of the VM and into the library
2010-05-03 17:34:12 -04:00
Slava Pestov
8af111577c
compiler.cfg.representations: fix various bugs
2010-05-03 17:34:11 -04:00
Slava Pestov
80c8a7154d
compiler.cfg: add ##load-memory and ##store-memory instructions implementing complex addressing modes, and associated value numbering optimizations
2010-05-03 17:34:07 -04:00
Slava Pestov
59fe281799
compiler.cfg: more flexible addressing for ##slot and ##set-slot
2010-05-03 17:34:06 -04:00
Slava Pestov
a5e4eb1948
cpu.x86.assembler: support all addressing modes
2010-05-03 17:34:06 -04:00
Slava Pestov
becd957d29
compiler.cfg: merge all alien accessors into ##load-memory-imm and ##store-memory-imm
2010-05-03 17:34:06 -04:00
Slava Pestov
3c965afd10
compiler.cfg: remove ##set-string-nth-fast instruction since it can be expressed just as efficiently using other instructions
2010-05-03 17:34:04 -04:00
Slava Pestov
6403572286
compiler.cfg.value-numbering: new optimizations; reassociation for shifts and redistribution for shifts/multiplies over additions/subtractions
2010-05-03 17:34:02 -04:00
Slava Pestov
80558a93fa
Debugging untagged fixnums
2010-05-03 17:34:02 -04:00
Slava Pestov
6fdcd9fb02
Untagged fixnums work in progress
2010-05-03 17:34:02 -04:00
Slava Pestov
19412e4ad1
compiler: Start using tagged-rep for stuff, and split up compiler.cfg.representations into several sub-vocabularies
2010-05-03 17:34:01 -04:00
Slava Pestov
1185ab0305
cpu.ppc: fix breakage caused by ##compare-imm change
2010-04-19 01:40:16 -05:00
Slava Pestov
1d7089dc04
compiler: combine ##load-constant followed by ##alien-double into a ##load-double on x86-32, saving an integer register
2010-04-18 21:42:45 -05:00
Slava Pestov
dbd7489894
compiler.cfg: fix some bugs introduced by the ##compare-imm fusion patch
2010-04-18 21:42:45 -05:00
Slava Pestov
c4cf2a4085
compiler: change how 'f' is represented in low level IR to simplify some code, and fuse a ##load-constant of a word with a ##compare into a ##compare-imm on x86-32. This eliminates a spill from binary-search
2010-04-18 21:42:45 -05:00
Slava Pestov
3b92172115
Replace 'untested' tag with 'not loaded' and 'not tested' tags
2010-04-13 18:43:01 -07:00
Slava Pestov
df0f21c48d
compiler.codegen: need to do name decoration with fastcall as well
2010-04-12 18:10:25 -05:00
Slava Pestov
61e300f87e
cpu.x86.32: fastcall struct returns are different on Linux than everywhere else for some unknown reason
2010-04-12 18:44:02 -04:00
Slava Pestov
3a3b50327f
vm: add a new rc-absolute-1 relocation class to allow storing values in 8-bit operands, and optimized code sequences for inline caches using this
2010-04-12 14:22:41 -07:00
Slava Pestov
d7ff3faa0f
alien: now that fastcall works better it doesn't need to be private
2010-04-10 16:57:07 -07:00
Slava Pestov
4edf4f1519
cpu.x86.32: cleanups and fixes to make fastcall and thiscall callbacks work
2010-04-10 16:54:17 -07:00
Slava Pestov
0dc43a94bd
Merge remote branch 'origin/abi-symbols' into fastcall-madness
2010-04-10 00:10:33 -07:00
Slava Pestov
89f912fe74
Fiddle with register assignments in non-optimizing x86-32 backend
2010-04-10 00:10:05 -07:00
Joe Groff
3b4f8758b5
Merge branch 'master' of git://factorcode.org/git/factor into abi-symbols
...
Conflicts:
basis/compiler/tests/alien.factor
2010-04-06 12:30:15 -07:00
Slava Pestov
b4ee322ea3
Store stack bounds in TIB on win64 to make C++ exceptions work
2010-04-05 19:07:10 -04:00
Slava Pestov
639a1f7043
cpu.x86.assembler: add support for absolute addressing on x86-64; [RIP+] now behaves like [] did, and [] now does absolute addressing just like in 32-bit mode
2010-04-04 19:42:57 -04:00
Slava Pestov
44b3977c2b
cpu.x86.64: fix typo that caused bootstrap crash
2010-04-03 21:11:04 -04:00
Slava Pestov
cdc4fb3b62
Get green threads working on Windows
...
- store stack base and limit in TIB
- set up a frame-based structured exception handler in each context's callstack
- boot.x86.32.image has now been replaced by boot.winnt-x86.32.image and boot.unix-x86.32.image
2010-04-03 20:24:33 -04:00
Joe Groff
2d96bff203
cpu.x86.32: add load-return-regs methods for stack-params so callbacks can box the struct return pointer
2010-04-01 22:01:10 -07:00
Slava Pestov
47f86898d7
vm: pre-allocate context alien
2010-04-02 00:02:21 -04:00
Joe Groff
e23e035b66
flatten non-integral types to (stack-value) on x86.32
2010-04-01 20:56:43 -07:00
Slava Pestov
62eaecdac3
cpu.ppc: fix optimizing compiler backend
2010-04-01 21:41:13 -05:00
Slava Pestov
e330fcb0f9
cpu.ppc: stick old stack pointer in a register for use by callbacks
2010-04-01 22:39:46 -04:00
Joe Groff
d6ad21bcc6
make "fastcall" symbol private since it doesn't really work in all cases
2010-04-01 18:34:15 -07:00