did return sequence
surprisingly easy. also some check polish
This commit is contained in:
@ -19,7 +19,8 @@ module SlotMachine
|
||||
|
||||
def set_label(false_label)
|
||||
@false_label = false_label
|
||||
raise "Jump target must be a label #{false_label}" unless false_label.is_a?(Label) end
|
||||
raise "Jump target must be a label #{false_label}" unless false_label.is_a?(Label)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -20,16 +20,9 @@ module SlotMachine
|
||||
#
|
||||
class ReturnSequence < Instruction
|
||||
def to_risc(compiler)
|
||||
compiler.reset_regs
|
||||
builder = compiler.builder(self)
|
||||
builder.build do
|
||||
object! << message[:return_value]
|
||||
caller_reg! << message[:caller]
|
||||
caller_reg[:return_value] << object
|
||||
end
|
||||
builder.build do
|
||||
return_address! << message[:return_address]
|
||||
return_address << return_address[ Parfait::Integer.integer_index]
|
||||
compiler.build(to_s) do
|
||||
message[:caller][:return_value] << message[:return_value]
|
||||
return_address = message[:return_address].to_reg
|
||||
message << message[:caller]
|
||||
add_code Risc.function_return("return #{compiler.callable.name}", return_address)
|
||||
end
|
||||
|
@ -21,7 +21,7 @@ module SlotMachine
|
||||
def to_risc(compiler)
|
||||
false_label = @false_label.risc_label(compiler)
|
||||
condition_reg = @condition.to_register(compiler,self)
|
||||
|
||||
|
||||
compiler.build(self.to_s) do
|
||||
object = load_object Parfait.object_space.false_object
|
||||
object.op :- , condition_reg
|
||||
|
Reference in New Issue
Block a user