Commit Graph

15 Commits (bad5408c76d9c88fe7c24e1ddd5c7ede4b6fd1d2)

Author SHA1 Message Date
Björn Lindqvist 349f99661d compiler.*: Remove the scrubbing part of the GC maps
Instead of generating GC maps which describe which stack locations that
are uninitialized, we emit ##clear instructions for those locations in
front of ##call-gc instructions. This makes the context root scanning
much simpler because the GC can assume that all stack slots are
initialized. It also removes the compiler.cfg.stacks.vacant pass and
seem to reduce the image size slightly because many fewer GC maps needs
to be emitted.
2016-09-11 20:34:44 +02:00
Björn Lindqvist faaa898975 compiler.codegen.*: removing the init-gc-maps word 2016-09-09 18:57:57 +02:00
Björn Lindqvist a36c0cb5ac compiler.*: moving all words only relevant for testing to compiler.test 2016-08-12 15:13:51 +02:00
Björn Lindqvist 24a02a1c8f compiler.*: Backend implementation of varargs
It is turned off by default. Support for using it coming soon. :)
2016-08-08 12:02:19 +02:00
Björn Lindqvist 86274c895e cpu.x86.*: improved varargs support
Now on the x86.64 platform, we set the AL register to contain the nr of
floating point values passed to the function as required by the abi.
2016-08-02 23:14:37 +02:00
Björn Lindqvist b2ed71ec7f cpu.x86.*: fix %prepare-var-args
EAX EAX XOR over RAX shaves off one byte
2016-07-30 00:07:26 +02:00
Björn Lindqvist 5b3933e2e4 cpu.x86: xor rax, rax -> xor eax, eax
The latter should be equivalent in all ways, but its encoding is one
byte shorter.
2016-05-20 13:38:42 +02:00
Björn Lindqvist 973606b5e2 cpu.x86.assembler: enable zero extension for AND with small immediates 2016-05-20 12:42:27 +02:00
Björn Lindqvist 0fc8fb22ca cpu.x86,bootstrap.assembler.*: making sure 0 is the relocation dummy value everywhere
In some places it was 0xffffffff, but it should always be 0 MOV for
consistency.
2016-05-19 22:43:52 +02:00
Björn Lindqvist 274a0174fd cpu.x86: use INC and DEC in favor of ADD reg, 1 and SUB reg, 1
The encoding for INC reg and DEC reg is one byte shorter so using it
shaves of a few bytes from the generated code.
2016-05-08 18:44:31 +02:00
Doug Coleman 38f3450519 compiler: fix D. 2015-08-13 18:15:25 -07:00
Björn Lindqvist e41aef9a50 cpu.x86: use push and pop when emitting %prologue and %epilogue
push/pop REG has the same effect as sub/add rsp, 8 so use them instead
when applicable to generate a little shorter code
2015-07-21 16:22:33 -07:00
Björn Lindqvist 6c43475183 cpu.x86: fix silly bug in %clear 2015-05-18 06:52:49 +02:00
Björn Lindqvist ba6accb983 cpu.x86.tests: more tests 2014-12-08 18:13:46 -08:00
Slava Pestov 42b858b3f0 math.libm: fix regression: fsqrt intrinsic was not working ever since change was made to inline FUNCTION: bodies 2010-08-12 21:41:57 -07:00