Slava Pestov
|
ed5cea57ea
|
compiler.cfg: Reading the return value of a float-returning function on x86-32 had a side effect of popping the x87 stack, so it was not correct for DCE to just eliminate this if the return value was not used. Fix this by adding a new dead-outputs slot to alien-call-insns and having DCE move dead returns there
|
2010-08-13 23:19:56 -07:00 |
Slava Pestov
|
7d792778f5
|
FFI rewrite part 7: compile callback bodies with the optimizing compiler
|
2010-07-28 00:49:26 -04:00 |
Slava Pestov
|
917622eeb1
|
cpu.x86.64: fix calling varargs functions
|
2010-07-19 16:03:39 -04:00 |
Slava Pestov
|
333b9a34cc
|
compiler.cfg: nuke ##allot-byte-array instruction
|
2010-07-16 19:57:45 -04:00 |
Slava Pestov
|
bbcffab3fa
|
compiler.cfg: ##unbox-long-long can have multiple outputs now, clean up long long parameter passing code using this
|
2010-07-15 19:49:29 -04:00 |
Slava Pestov
|
cc3a96c5a1
|
cpu.x86.32: fix %binary-float-function
|
2010-07-15 03:09:06 -04:00 |
Slava Pestov
|
f50addd3f4
|
cpu.x86: fix %load/store-stack-param for 32-bit
|
2010-07-14 17:50:40 -04:00 |
Slava Pestov
|
f133a5f2be
|
compiler: re-architect low-level optimizer to allow more than one output value per instruction
|
2010-07-13 07:40:14 -04:00 |
Slava Pestov
|
fb4de47abf
|
Add GC maps to ##box, ##box-long-long, ##alien-invoke, ##alien-indirect and ##call-gc; remove ##gc-map instruction
|
2010-06-14 19:39:46 -04:00 |
Slava Pestov
|
dbf6bac599
|
cpu.x86: combine 32-bit and 64-bit %dispatch template
|
2010-06-11 21:52:38 -04:00 |
Slava Pestov
|
a08295d9b7
|
GC maps for more compact inline GC checks
|
2010-06-11 20:06:00 -04:00 |
Slava Pestov
|
f4ff644329
|
cpu.x86.32: fix load error
|
2010-05-19 01:29:52 -04:00 |
Slava Pestov
|
bcf7a5e15e
|
Use ##local-allot to simplify longlong unboxing
|
2010-05-19 01:07:22 -04:00 |
Slava Pestov
|
66e9bed2d8
|
cpu.x86: add x87 codegen for Model T enthusiasts
|
2010-05-17 11:35:47 -04:00 |
Slava Pestov
|
325df742b0
|
cpu.x86.32: clean up %unary/binary-float-function
|
2010-05-17 04:03:13 -04:00 |
Slava Pestov
|
ed04758ad6
|
cpu.x86: get rid of this extra-stack-space nonsense
|
2010-05-17 02:14:44 -04:00 |
Slava Pestov
|
0f5d9d368a
|
compiler.cfg: refactor stack frame code and fix frame pointer usage in callbacks
|
2010-05-16 21:04:40 -04:00 |
Slava Pestov
|
35bd2bca06
|
FFI rewrite part 5: return value boxing and callback parameter boxing now uses vregs; simplify return value unboxing
|
2010-05-16 03:43:23 -04:00 |
Slava Pestov
|
5e290d5648
|
Refactor x86-32 stack cleanup logic
|
2010-05-12 02:09:11 -04:00 |
Slava Pestov
|
09e1cf58be
|
Temporary fixes for x86-32 until FFI boxing is rewritten
|
2010-05-12 01:41:49 -04:00 |
Slava Pestov
|
5054bb4b25
|
FFI rewrite part 4: parameter and return value unboxing redesign
|
2010-05-11 19:11:44 -04:00 |
Slava Pestov
|
5d7287b71d
|
compiler: simplify ##unbox-small/large-struct by emitting an ##unbox-any-c-ptr first
|
2010-05-10 01:38:34 -04:00 |
Slava Pestov
|
8d887c3240
|
FFI rewrite part 3: eliminate ##push-context-stack and ##pop-context-stack
|
2010-05-10 00:46:29 -04:00 |
Slava Pestov
|
8468f72b3f
|
cpu.x86.32: fix load error
|
2010-05-09 23:36:57 -04:00 |
Slava Pestov
|
af4e851392
|
FFI rewrite part 2: use ##peek and ##replace instructions to access stack
|
2010-05-09 23:26:43 -04:00 |
Slava Pestov
|
03108747b3
|
cpu.x86.32: fix load error
|
2010-05-09 21:55:21 -04:00 |
Slava Pestov
|
3d66820344
|
FFI rewrite part 1: split up ##alien-invoke and friends into smaller instructions
|
2010-05-09 21:36:52 -04:00 |
Slava Pestov
|
6d367ba038
|
compiler.cfg: add ##load-float instruction for single precision floating point constants
|
2010-05-07 18:26:00 -04:00 |
Slava Pestov
|
ff2966a675
|
cpu.x86.32: fix load error
|
2010-05-05 02:54:48 -04:00 |
Slava Pestov
|
7e8add87fe
|
More FFI cleanups
|
2010-05-05 01:13:45 -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
|
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
|
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
|
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
|
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
|
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 |
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 |
Joe Groff
|
d6ad21bcc6
|
make "fastcall" symbol private since it doesn't really work in all cases
|
2010-04-01 18:34:15 -07:00 |
Joe Groff
|
c3b7a04b50
|
update %load-param-reg, %save-param-reg, and %cleanup to take register args into account
|
2010-04-01 17:36:09 -07:00 |