Completing slot and set-slot changes on x86
parent
7bd330cfd5
commit
51f2bbd74b
|
@ -63,9 +63,11 @@ insn-classes get [
|
|||
: ^^allot-byte-array ( n -- dst )
|
||||
2 cells + byte-array ^^allot ;
|
||||
|
||||
: ^^offset>slot ( tag slot -- vreg' )
|
||||
cell 4 = [ 1 ^^shr-imm ] [ any-rep ^^copy ] if
|
||||
swap ^^sub-imm ;
|
||||
: ^^offset>slot ( slot -- vreg' )
|
||||
cell 4 = [ 1 ^^shr-imm ] [ any-rep ^^copy ] if ;
|
||||
|
||||
: ^^tag-offset>slot ( slot tag -- vreg' )
|
||||
[ ^^offset>slot ] dip ^^sub-imm ;
|
||||
|
||||
: ^^tag-fixnum ( src -- dst )
|
||||
tag-bits get ^^shl-imm ;
|
||||
|
|
|
@ -12,5 +12,5 @@ IN: compiler.cfg.intrinsics.misc
|
|||
: emit-getenv ( node -- )
|
||||
"userenv" ^^vm-field-ptr
|
||||
swap node-input-infos first literal>>
|
||||
[ ds-drop 0 ^^slot-imm ] [ ds-pop ^^offset>slot 0 ^^slot ] if*
|
||||
[ ds-drop 0 ^^slot-imm ] [ ds-pop ^^offset>slot ^^slot ] if*
|
||||
ds-push ;
|
||||
|
|
|
@ -9,8 +9,8 @@ IN: compiler.cfg.intrinsics.slots
|
|||
: value-tag ( info -- n ) class>> class-tag ; inline
|
||||
|
||||
: (emit-slot) ( infos -- dst )
|
||||
[ 2inputs ^^offset>slot ] [ first value-tag ] bi*
|
||||
^^sub-imm ^^slot ;
|
||||
[ 2inputs ] [ first value-tag ] bi*
|
||||
^^tag-offset>slot ^^slot ;
|
||||
|
||||
: (emit-slot-imm) ( infos -- dst )
|
||||
ds-drop
|
||||
|
@ -28,8 +28,8 @@ IN: compiler.cfg.intrinsics.slots
|
|||
] [ drop emit-primitive ] if ;
|
||||
|
||||
: (emit-set-slot) ( infos -- obj-reg )
|
||||
[ 3inputs ^^offset>slot ] [ second value-tag ] bi*
|
||||
^^sub-imm over [ ##set-slot ] dip ;
|
||||
[ 3inputs ] [ second value-tag ] bi*
|
||||
^^tag-offset>slot over [ ##set-slot ] dip ;
|
||||
|
||||
: (emit-set-slot-imm) ( infos -- obj-reg )
|
||||
ds-drop
|
||||
|
|
|
@ -102,9 +102,9 @@ HOOK: %return cpu ( -- )
|
|||
|
||||
HOOK: %dispatch cpu ( src temp -- )
|
||||
|
||||
HOOK: %slot cpu ( dst obj slot tag temp -- )
|
||||
HOOK: %slot cpu ( dst obj slot -- )
|
||||
HOOK: %slot-imm cpu ( dst obj slot tag -- )
|
||||
HOOK: %set-slot cpu ( src obj slot tag temp -- )
|
||||
HOOK: %set-slot cpu ( src obj slot -- )
|
||||
HOOK: %set-slot-imm cpu ( src obj slot tag -- )
|
||||
|
||||
HOOK: %string-nth cpu ( dst obj index temp -- )
|
||||
|
|
Loading…
Reference in New Issue