cpu.x86.*: fix %prepare-var-args

EAX EAX XOR over RAX shaves off one byte
char-rename
Björn Lindqvist 2016-07-25 14:15:00 +02:00
parent 4f74f5bd69
commit b2ed71ec7f
3 changed files with 10 additions and 4 deletions

View File

@ -112,7 +112,7 @@ M: x86.64 %end-callback ( -- )
param-reg-0 vm-reg MOV
"end_callback" f f %c-invoke ;
M: x86.64 %prepare-var-args ( -- ) RAX RAX XOR ;
M: x86.64 %prepare-var-args ( -- ) EAX EAX XOR ;
M: x86.64 stack-cleanup 3drop 0 ;

View File

@ -44,5 +44,3 @@ M: x86.64 dummy-stack-params? f ;
M: x86.64 dummy-int-params? f ;
M: x86.64 dummy-fp-params? f ;
M: x86.64 %prepare-var-args RAX RAX XOR ;

View File

@ -2,7 +2,8 @@ USING: compiler.cfg.debugger compiler.cfg.instructions
compiler.cfg.registers compiler.codegen.gc-maps
compiler.codegen.relocation cpu.architecture cpu.x86 cpu.x86.assembler
cpu.x86.assembler.operands cpu.x86.features kernel kernel.private
layouts make math math.libm namespaces sequences system tools.test ;
layouts literals make math math.libm namespaces sequences system
tools.test ;
IN: cpu.x86.tests
{ } [
@ -79,6 +80,13 @@ cpu x86.64? [
[ RCX 0 %load-immediate ] B{ } make
] unit-test
! %prepare-varargs
${
cpu x86.64? B{ 49 192 } B{ } ?
} [
[ %prepare-var-args ] B{ } make
] unit-test
! %prologue
{ t } [
[ 2 cells %prologue ] B{ } make