setting registers in the allocator
unfortunately the reg instances are spread across instructions this causes problems when setting them
This commit is contained in:
@ -21,4 +21,26 @@ module Risc
|
||||
assert_equal "Integer_Type" , risc(1).register.type.name
|
||||
end
|
||||
end
|
||||
# following tests are really Instruction tests, but would require mocking there
|
||||
class TestInstructionProtocol < MiniTest::Test
|
||||
def setup
|
||||
Parfait.boot!({})
|
||||
@load = Risc.load_data("source" , 1)
|
||||
end
|
||||
def test_reg_names
|
||||
assert_equal 1 , @load.register_names.length
|
||||
end
|
||||
def test_reg_get
|
||||
reg = @load.register_names.first
|
||||
assert_equal :fix_1 , reg
|
||||
end
|
||||
def test_reg_set
|
||||
@load.set_registers(:fix_1 , :r10)
|
||||
assert_equal :r10 , @load.get_register(:register)
|
||||
end
|
||||
def test_reg_ssa
|
||||
value = @load.set_registers(:register , :r10)
|
||||
assert_equal :fix_1 , @load.get_register(:register)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -13,11 +13,20 @@ module Risc
|
||||
end
|
||||
def test_allocate_runs
|
||||
assert_nil @allocator.allocate_regs
|
||||
assert_equal 0 , @allocator.used_regs.length
|
||||
#assert_equal 0 , @allocator.used_regs.length
|
||||
end
|
||||
def test_live_length
|
||||
live = @allocator.walk_and_mark(@compiler.risc_instructions)
|
||||
assert_equal 10 , live.length
|
||||
end
|
||||
def test_ssa
|
||||
instruction = @compiler.risc_instructions.next(2)
|
||||
assert_equal :"message.next_message" , instruction.register.symbol
|
||||
end
|
||||
def est_risc
|
||||
assert_nil @allocator.allocate_regs
|
||||
instruction = @compiler.risc_instructions.next(2)
|
||||
assert_equal :"message.next_message" , instruction.register.symbol
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user