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