Slava Pestov
|
1985705413
|
compiler: now that FFI has been deconcatenatized, we no longer need the special ##unary-float-function and ##binary-float-function fastpaths
|
2010-08-13 23:59:19 -07:00 |
Slava Pestov
|
b5fc39c198
|
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
|
168dd1f825
|
FFI rewrite part 7: compile callback bodies with the optimizing compiler
|
2010-07-28 00:49:26 -04:00 |
Slava Pestov
|
0fbe78be00
|
cpu.x86.64: fix calling varargs functions
|
2010-07-19 16:03:39 -04:00 |
Slava Pestov
|
e5dd21b0b9
|
compiler.cfg: nuke ##allot-byte-array instruction
|
2010-07-16 19:57:45 -04:00 |
Slava Pestov
|
0fd636b4b9
|
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
|
5e13318988
|
cpu.x86.32: fix %binary-float-function
|
2010-07-15 03:09:06 -04:00 |
Slava Pestov
|
867530223c
|
cpu.x86: fix %load/store-stack-param for 32-bit
|
2010-07-14 17:50:40 -04:00 |
Slava Pestov
|
e27adb2830
|
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
|
e86f434f26
|
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
|
8ed4760b51
|
cpu.x86: combine 32-bit and 64-bit %dispatch template
|
2010-06-11 21:52:38 -04:00 |
Slava Pestov
|
806e54630a
|
GC maps for more compact inline GC checks
|
2010-06-11 20:06:00 -04:00 |
Slava Pestov
|
9730ec1707
|
cpu.x86.32: fix load error
|
2010-05-19 01:29:52 -04:00 |
Slava Pestov
|
91cd3b854d
|
Use ##local-allot to simplify longlong unboxing
|
2010-05-19 01:07:22 -04:00 |
Slava Pestov
|
6eaf2d7534
|
cpu.x86: add x87 codegen for Model T enthusiasts
|
2010-05-17 11:35:47 -04:00 |
Slava Pestov
|
db5b33977b
|
cpu.x86.32: clean up %unary/binary-float-function
|
2010-05-17 04:03:13 -04:00 |
Slava Pestov
|
7ff309d50e
|
cpu.x86: get rid of this extra-stack-space nonsense
|
2010-05-17 02:14:44 -04:00 |
Slava Pestov
|
3f8e13bf66
|
compiler.cfg: refactor stack frame code and fix frame pointer usage in callbacks
|
2010-05-16 21:04:40 -04:00 |
Slava Pestov
|
5b48cd2a63
|
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
|
42b0d456cd
|
Refactor x86-32 stack cleanup logic
|
2010-05-12 02:09:11 -04:00 |
Slava Pestov
|
f89b85db7b
|
Temporary fixes for x86-32 until FFI boxing is rewritten
|
2010-05-12 01:41:49 -04:00 |
Slava Pestov
|
eb802208d1
|
FFI rewrite part 4: parameter and return value unboxing redesign
|
2010-05-11 19:11:44 -04:00 |
Slava Pestov
|
45689dbfe6
|
compiler: simplify ##unbox-small/large-struct by emitting an ##unbox-any-c-ptr first
|
2010-05-10 01:38:34 -04:00 |
Slava Pestov
|
4478c3a51a
|
FFI rewrite part 3: eliminate ##push-context-stack and ##pop-context-stack
|
2010-05-10 00:46:29 -04:00 |
Slava Pestov
|
7450dcf9ff
|
cpu.x86.32: fix load error
|
2010-05-09 23:36:57 -04:00 |
Slava Pestov
|
7316d41226
|
FFI rewrite part 2: use ##peek and ##replace instructions to access stack
|
2010-05-09 23:26:43 -04:00 |
Slava Pestov
|
839e26de3a
|
cpu.x86.32: fix load error
|
2010-05-09 21:55:21 -04:00 |
Slava Pestov
|
c211c3e84e
|
FFI rewrite part 1: split up ##alien-invoke and friends into smaller instructions
|
2010-05-09 21:36:52 -04:00 |
Slava Pestov
|
f988dad79c
|
compiler.cfg: add ##load-float instruction for single precision floating point constants
|
2010-05-07 18:26:00 -04:00 |
Slava Pestov
|
aaa706dd29
|
cpu.x86.32: fix load error
|
2010-05-05 02:54:48 -04:00 |
Slava Pestov
|
e763c74096
|
More FFI cleanups
|
2010-05-05 01:13:45 -04:00 |
Slava Pestov
|
58e4381eb1
|
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
|
f5c5d8b44c
|
compiler: remove flat machine representation and generate code directly from the CFG
|
2010-05-03 17:34:32 -04:00 |
Slava Pestov
|
428ba9fd0f
|
compiler.cfg: fuse ##load-integer/##load-reference into ##replace to form ##replace-imm
|
2010-05-03 17:34:28 -04:00 |
Slava Pestov
|
9788323d25
|
compiler: add ##load-vector instruction to avoid wasting a temporary register on x86-32
|
2010-05-03 17:34:28 -04:00 |
Slava Pestov
|
43f269e4eb
|
Register allocation now uses SSA properties to coalesce values with different representations
|
2010-05-03 17:34:20 -04:00 |
Slava Pestov
|
95ff5ffe51
|
New GC checks work in progress
|
2010-05-03 17:34:16 -04:00 |
Slava Pestov
|
2517b2fc2b
|
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
|
2aaf24412a
|
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
|
67e24b1d2a
|
compiler.codegen: need to do name decoration with fastcall as well
|
2010-04-12 18:10:25 -05:00 |
Slava Pestov
|
2712496880
|
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
|
0202c35d2a
|
alien: now that fastcall works better it doesn't need to be private
|
2010-04-10 16:57:07 -07:00 |
Slava Pestov
|
ed40eb4239
|
cpu.x86.32: cleanups and fixes to make fastcall and thiscall callbacks work
|
2010-04-10 16:54:17 -07:00 |
Slava Pestov
|
46a1fb2646
|
Merge remote branch 'origin/abi-symbols' into fastcall-madness
|
2010-04-10 00:10:33 -07:00 |
Slava Pestov
|
f828f9fdaa
|
Fiddle with register assignments in non-optimizing x86-32 backend
|
2010-04-10 00:10:05 -07:00 |
Joe Groff
|
3e0d86f355
|
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
|
2c3fde412a
|
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
|
0faa3bcf4a
|
vm: pre-allocate context alien
|
2010-04-02 00:02:21 -04:00 |
Joe Groff
|
88fbcba067
|
flatten non-integral types to (stack-value) on x86.32
|
2010-04-01 20:56:43 -07:00 |
Joe Groff
|
553b9fcd93
|
make "fastcall" symbol private since it doesn't really work in all cases
|
2010-04-01 18:34:15 -07:00 |