Fix set-slot on x86

release
slava 2006-05-11 23:46:19 +00:00
parent b633604081
commit 30e1f0fc2b
2 changed files with 13 additions and 14 deletions

View File

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

View File

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