Commit Graph

153 Commits (ed5cea57eae7412cbd52129ee757f21c89b9fb9c)

Author SHA1 Message Date
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