x86 backend now supports %box-struct
parent
6abc8df1d8
commit
0cc07ef41e
|
@ -31,10 +31,6 @@ M: %unbox generate-node
|
||||||
drop 2 input f compile-c-call 1 input push-return-reg ;
|
drop 2 input f compile-c-call 1 input push-return-reg ;
|
||||||
|
|
||||||
: struct-ptr/size ( func -- )
|
: struct-ptr/size ( func -- )
|
||||||
! Increase stack size
|
|
||||||
ESP 2 input SUB
|
|
||||||
! Save destination address in EAX
|
|
||||||
EAX ESP MOV
|
|
||||||
! Load struct size
|
! Load struct size
|
||||||
2 input PUSH
|
2 input PUSH
|
||||||
! Load destination address
|
! Load destination address
|
||||||
|
@ -46,9 +42,17 @@ M: %unbox generate-node
|
||||||
ECX POP ;
|
ECX POP ;
|
||||||
|
|
||||||
M: %unbox-struct generate-node ( vop -- )
|
M: %unbox-struct generate-node ( vop -- )
|
||||||
drop "unbox_value_struct" struct-ptr/size ;
|
drop
|
||||||
|
! Increase stack size
|
||||||
|
ESP 2 input SUB
|
||||||
|
! Save destination address in EAX
|
||||||
|
EAX ESP MOV
|
||||||
|
"unbox_value_struct" struct-ptr/size ;
|
||||||
|
|
||||||
M: %box-struct generate-node ( vop -- )
|
M: %box-struct generate-node ( vop -- )
|
||||||
|
! Compute source address in EAX
|
||||||
|
EAX ESP MOV
|
||||||
|
EAX 4 ADD
|
||||||
drop "box_value_struct" struct-ptr/size ;
|
drop "box_value_struct" struct-ptr/size ;
|
||||||
|
|
||||||
M: %box generate-node
|
M: %box generate-node
|
||||||
|
|
|
@ -22,14 +22,8 @@ M: %write-barrier generate-node ( vop -- )
|
||||||
#! Mark the card pointed to by vreg.
|
#! Mark the card pointed to by vreg.
|
||||||
drop
|
drop
|
||||||
0 input-operand card-bits SHR
|
0 input-operand card-bits SHR
|
||||||
0 scratch card-offset MOV rel-absolute-cell rel-cards
|
0 input-operand card-offset ADD rel-absolute-cell rel-cards
|
||||||
0 scratch 0 input-operand ADD
|
0 input-operand [] card-mark OR ;
|
||||||
0 scratch [] card-mark OR ;
|
|
||||||
|
|
||||||
! drop
|
|
||||||
! 0 input-operand card-bits SHR
|
|
||||||
! 0 input-operand card-offset [+] card-mark OR
|
|
||||||
! rel-absolute-cell rel-cards ;
|
|
||||||
|
|
||||||
M: %set-slot generate-node ( vop -- )
|
M: %set-slot generate-node ( vop -- )
|
||||||
drop
|
drop
|
||||||
|
|
Loading…
Reference in New Issue