From: Joe Groff Date: Tue, 6 Apr 2010 19:30:15 +0000 (-0700) Subject: Merge branch 'master' of git://factorcode.org/git/factor into abi-symbols X-Git-Tag: 0.97~4720^2~22^2~23^2 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=3e0d86f355c6e0aa50d204065f1ac8effe801a76 Merge branch 'master' of git://factorcode.org/git/factor into abi-symbols Conflicts: basis/compiler/tests/alien.factor --- 3e0d86f355c6e0aa50d204065f1ac8effe801a76 diff --cc basis/compiler/tests/alien.factor index c54ce443d6,ceac1b094c..5793482a27 --- a/basis/compiler/tests/alien.factor +++ b/basis/compiler/tests/alien.factor @@@ -441,13 -429,12 +441,13 @@@ STRUCT: double-rec } cleave ; : double-rect-callback ( -- alien ) - void { void* void* double-rect } "cdecl" + void { void* void* double-rect } cdecl [ "example" set-global 2drop ] alien-callback ; -: double-rect-test ( arg callback -- arg' ) +: double-rect-test ( arg -- arg' ) - f f rot + [ f f ] 2dip - void { void* void* double-rect } "cdecl" alien-indirect + double-rect-callback + void { void* void* double-rect } cdecl alien-indirect "example" get-global ; [ 1.0 2.0 3.0 4.0 ] diff --cc basis/cpu/x86/64/64.factor index 87578dd8db,4dfb250348..432d210bec --- a/basis/cpu/x86/64/64.factor +++ b/basis/cpu/x86/64/64.factor @@@ -43,14 -43,19 +43,17 @@@ M: x86.64 machine-register M: x86.64 %mov-vm-ptr ( reg -- ) vm-reg MOV ; - M: x86.64 %vm-field ( dst field -- ) - [ vm-reg ] dip vm-field-offset [+] MOV ; + M: x86.64 %vm-field ( dst offset -- ) + [ vm-reg ] dip [+] MOV ; - M: x86.64 %vm-field-ptr ( dst field -- ) - [ vm-reg ] dip vm-field-offset [+] LEA ; + M: x86.64 %set-vm-field ( src offset -- ) + [ vm-reg ] dip [+] swap MOV ; + + M: x86.64 %vm-field-ptr ( dst offset -- ) + [ vm-reg ] dip [+] LEA ; -: param@ ( n -- op ) reserved-stack-space + stack@ ; - M: x86.64 %prologue ( n -- ) - temp-reg -7 [] LEA + temp-reg -7 [RIP+] LEA dup PUSH temp-reg PUSH stack-reg swap 3 cells - SUB ;