Fix clobberage
parent
fc9e87db1c
commit
e944286b0e
|
@ -63,8 +63,6 @@ IN: cpu.x86.intrinsics
|
||||||
: generate-write-barrier ( -- )
|
: generate-write-barrier ( -- )
|
||||||
#! Mark the card pointed to by vreg.
|
#! Mark the card pointed to by vreg.
|
||||||
"val" get operand-immediate? "obj" get fresh-object? or [
|
"val" get operand-immediate? "obj" get fresh-object? or [
|
||||||
"obj" operand PUSH
|
|
||||||
|
|
||||||
! Mark the card
|
! Mark the card
|
||||||
"obj" operand card-bits SHR
|
"obj" operand card-bits SHR
|
||||||
"cards_offset" f temp-reg v>operand %alien-global
|
"cards_offset" f temp-reg v>operand %alien-global
|
||||||
|
@ -74,8 +72,6 @@ IN: cpu.x86.intrinsics
|
||||||
"obj" operand deck-bits card-bits - SHR
|
"obj" operand deck-bits card-bits - SHR
|
||||||
"decks_offset" f temp-reg v>operand %alien-global
|
"decks_offset" f temp-reg v>operand %alien-global
|
||||||
temp-reg v>operand "obj" operand [+] card-mark <byte> MOV
|
temp-reg v>operand "obj" operand [+] card-mark <byte> MOV
|
||||||
|
|
||||||
"obj" operand POP
|
|
||||||
] unless ;
|
] unless ;
|
||||||
|
|
||||||
\ set-slot {
|
\ set-slot {
|
||||||
|
@ -97,7 +93,7 @@ IN: cpu.x86.intrinsics
|
||||||
{
|
{
|
||||||
[ %slot-any "val" operand MOV generate-write-barrier ] H{
|
[ %slot-any "val" operand MOV generate-write-barrier ] H{
|
||||||
{ +input+ { { f "val" } { f "obj" } { f "n" } } }
|
{ +input+ { { f "val" } { f "obj" } { f "n" } } }
|
||||||
{ +clobber+ { "n" } }
|
{ +clobber+ { "obj" "n" } }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} define-intrinsics
|
} define-intrinsics
|
||||||
|
|
Loading…
Reference in New Issue