fix init method message setup

was causing errors in interpreter
(that may have gone unnoticed in arm, as the interpreter checks stuff)
This commit is contained in:
Torsten Ruger
2018-03-24 15:59:54 +02:00
parent 65d3d5f1c9
commit 267237b776
4 changed files with 78 additions and 11 deletions

View File

@ -19,8 +19,10 @@ module Risc
message_ind = Risc.resolve_to_index( :space , :first_message )
#load the first_message (instance of space)
compiler.add_slot_to_reg( "__init__ load 1st message" , space_reg , message_ind , :message)
compiler.add_mom( Mom::MessageSetup.new(compiler.method))
# but use it's next message, so main can return normally
compiler.add_slot_to_reg( "__init__ load 2nd message" , :message , :next_message , :message)
compiler.add_reg_to_slot( "__init__ store Space in message", space_reg , :message , :receiver)
#fixme: should add arg type here, as done in call_site (which this sort of is)
exit_label = Risc.label("_exit_label for __init__" , "#{compiler.type.object_class.name}.#{compiler.method.name}" )