x86 backend now supports %box-struct

slava 2006-03-29 04:25:52 +00:00
parent 6abc8df1d8
commit 0cc07ef41e
2 changed files with 11 additions and 13 deletions

View File

@ -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

View File

@ -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