more index fixes, this time arguments
This commit is contained in:
parent
4c315a8115
commit
fb67f550ec
@ -14,7 +14,7 @@ module Register
|
|||||||
#Set up the Space as self upon init
|
#Set up the Space as self upon init
|
||||||
space = Parfait::Space.object_space
|
space = Parfait::Space.object_space
|
||||||
function.info.add_code LoadConstant.new( space , Register.self_reg)
|
function.info.add_code LoadConstant.new( space , Register.self_reg)
|
||||||
message_ind = space.get_layout().index_of( :init_message )
|
message_ind = Register.resolve_index( :space , :init_message )
|
||||||
# Load the message to new message register (r3)
|
# Load the message to new message register (r3)
|
||||||
function.info.add_code Register.get_slot( :self , message_ind , :new_message)
|
function.info.add_code Register.get_slot( :self , message_ind , :new_message)
|
||||||
# And store the space as the new self (so the call can move it back as self)
|
# And store the space as the new self (so the call can move it back as self)
|
||||||
|
@ -26,7 +26,8 @@ module Virtual
|
|||||||
layouts = { :Word => [] ,
|
layouts = { :Word => [] ,
|
||||||
:List => [] ,
|
:List => [] ,
|
||||||
# Assumtion is that name is the last of message
|
# Assumtion is that name is the last of message
|
||||||
:Message => [:next_message , :receiver , :frame , :return_address , :caller , :name ],
|
:Message => [:next_message , :receiver , :frame , :return_address , :return_value,
|
||||||
|
:caller , :name ],
|
||||||
:MetaClass => [],
|
:MetaClass => [],
|
||||||
:BinaryCode => [],
|
:BinaryCode => [],
|
||||||
:Space => [:classes ,:init_message , :next_message ,:next_frame, :syscall_message],
|
:Space => [:classes ,:init_message , :next_message ,:next_frame, :syscall_message],
|
||||||
|
@ -14,7 +14,9 @@ module Virtual
|
|||||||
#compile in the running method, ie before passing control
|
#compile in the running method, ie before passing control
|
||||||
val = Compiler.compile( arg , method)
|
val = Compiler.compile( arg , method)
|
||||||
# move the compiled value to it's slot in the new message
|
# move the compiled value to it's slot in the new message
|
||||||
to = NewArgSlot.new(i ,val.type , val)
|
# + 1 as this is a ruby 0-start , but 0 is the last message ivar.
|
||||||
|
# so the next free is +1
|
||||||
|
to = NewArgSlot.new(i + 1 ,val.type , val)
|
||||||
# (doing this immediately, not after the loop, so if it's a return it won't get overwritten)
|
# (doing this immediately, not after the loop, so if it's a return it won't get overwritten)
|
||||||
method.info.add_code Set.new( val , to )
|
method.info.add_code Set.new( val , to )
|
||||||
compiled_args << to
|
compiled_args << to
|
||||||
|
Loading…
x
Reference in New Issue
Block a user