fix div4 and tests

also bug in reduce_int, compiler not carried through
This commit is contained in:
2020-03-08 12:14:53 +02:00
parent eed9ba082f
commit 22d513d895
4 changed files with 16 additions and 14 deletions

View File

@ -71,7 +71,7 @@ module Risc
def reduce_int(check = true)
raise "type not int #{type.name}" if check && type.name != "Integer_Type"
new_name = "#{@symbol}.data_1"
new_reg = RegisterValue.new( new_name.to_sym , :Integer , extra)
new_reg = RegisterValue.new( new_name.to_sym , :Integer , extra).set_compiler(compiler)
reduce = Risc::SlotToReg.new( "int -> fix" , self , Parfait::Integer.integer_index , new_reg)
compiler.add_code(reduce) if compiler
reduce.register

View File

@ -3,10 +3,11 @@ module SlotMachine
def to_risc(compiler)
builder = compiler.builder(compiler.source)
integer_tmp = builder.allocate_int
integer_1 = builder.register( :integer_1 )
integer_self = builder.register( :integer_self )
builder.build do
integer_self! << message[:receiver]
integer_self.reduce_int
integer_1! << 2
integer_self = message[:receiver].to_reg.reduce_int(false)
load_object( 2 , integer_1)
integer_self.op :>> , integer_1
integer_tmp[Parfait::Integer.integer_index] << integer_self
message[:return_value] << integer_tmp