]> gitweb.factorcode.org Git - factor.git/commitdiff
cpu.x86.*: fix %prepare-var-args
authorBjörn Lindqvist <bjourne@gmail.com>
Mon, 25 Jul 2016 12:15:00 +0000 (14:15 +0200)
committerBjörn Lindqvist <bjourne@gmail.com>
Fri, 29 Jul 2016 22:07:26 +0000 (00:07 +0200)
EAX EAX XOR over RAX shaves off one byte

basis/cpu/x86/64/64.factor
basis/cpu/x86/64/unix/unix.factor
basis/cpu/x86/x86-tests.factor

index 72a98fe181d2d861bcd0604888df58c0ddda6b04..9e2ee5e11d6ac0f05eafc45c2d731e562abfcd3b 100644 (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 ;
 
index dfd61abfceffaf547614935e085dd576e610dd92..84a34988e0d68ab0f36de77610cd4351c8c91da3 100644 (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 ;
index 5e61d3c34c8731c023a8f33762bf9183483bf3eb..56fc27372b5ca17e181f76f76c96c27625a074b8 100644 (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