Fix set-slot on x86
parent
b633604081
commit
30e1f0fc2b
|
@ -1,6 +1,5 @@
|
||||||
should fix in 0.82:
|
should fix in 0.82:
|
||||||
|
|
||||||
- test x86 set-slot
|
|
||||||
- clean up fp-scratch
|
- clean up fp-scratch
|
||||||
- update amd64 backend
|
- update amd64 backend
|
||||||
- when generating a 32-bit image on a 64-bit system, large numbers which should
|
- when generating a 32-bit image on a 64-bit system, large numbers which should
|
||||||
|
|
|
@ -74,19 +74,19 @@ IN: compiler
|
||||||
"obj" operand card-offset ADD rel-absolute-cell rel-cards
|
"obj" operand card-offset ADD rel-absolute-cell rel-cards
|
||||||
"obj" operand [] card-mark OR ;
|
"obj" operand [] card-mark OR ;
|
||||||
|
|
||||||
! \ set-slot [
|
\ set-slot [
|
||||||
! "obj" operand untag
|
"obj" operand untag
|
||||||
! ! turn tagged fixnum slot # into an offset
|
! turn tagged fixnum slot # into an offset
|
||||||
! "slot" operand fixnum>slot@
|
"slot" operand fixnum>slot@
|
||||||
! ! compute slot address
|
! compute slot address
|
||||||
! "obj" operand "slot" operand ADD
|
"slot" operand "obj" operand ADD
|
||||||
! ! store new slot value
|
! store new slot value
|
||||||
! "obj" operand [] "val" operand MOV
|
"slot" operand [] "val" operand MOV
|
||||||
! generate-write-barrier
|
generate-write-barrier
|
||||||
! ] H{
|
] H{
|
||||||
! { +input { { f "val" } { f "obj" } { f "slot" } } }
|
{ +input { { f "val" } { f "obj" } { f "slot" } } }
|
||||||
! { +clobber { "obj" "slot" } }
|
{ +clobber { "obj" "slot" } }
|
||||||
! } define-intrinsic
|
} define-intrinsic
|
||||||
|
|
||||||
\ char-slot [
|
\ char-slot [
|
||||||
EBX PUSH
|
EBX PUSH
|
||||||
|
|
Loading…
Reference in New Issue