fix constants being passed down
This commit is contained in:
parent
01151b4ba7
commit
ca3bf6acfa
@ -103,7 +103,7 @@ module Mom
|
|||||||
right = compiler.use_reg( type )
|
right = compiler.use_reg( type )
|
||||||
case known_object
|
case known_object
|
||||||
when Constant , Parfait::Object , Risc::Label
|
when Constant , Parfait::Object , Risc::Label
|
||||||
const = Risc.load_constant(instruction, self , right)
|
const = Risc.load_constant(instruction, known_object , right)
|
||||||
when Symbol
|
when Symbol
|
||||||
const = Risc::SlotToReg.new( instruction , Risc.resolve_to_register(known_object) ,
|
const = Risc::SlotToReg.new( instruction , Risc.resolve_to_register(known_object) ,
|
||||||
Risc.resolve_to_index(:message , slots[0]), right)
|
Risc.resolve_to_index(:message , slots[0]), right)
|
||||||
|
@ -9,6 +9,7 @@ module Risc
|
|||||||
super(source)
|
super(source)
|
||||||
@register = register
|
@register = register
|
||||||
@constant = constant
|
@constant = constant
|
||||||
|
raise "Not Constant #{constant}" if constant.is_a?(Mom::SlotDefinition)
|
||||||
end
|
end
|
||||||
attr_accessor :register , :constant
|
attr_accessor :register , :constant
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ module Risc
|
|||||||
|
|
||||||
def test_constant_load
|
def test_constant_load
|
||||||
produced = produce_body
|
produced = produce_body
|
||||||
assert_equal 5 , produced.constant.known_object.value
|
assert_equal 5 , produced.constant.value
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_slot_move
|
def test_slot_move
|
||||||
|
@ -15,7 +15,7 @@ module Risc
|
|||||||
|
|
||||||
def test_constant_load
|
def test_constant_load
|
||||||
produced = produce_body
|
produced = produce_body
|
||||||
assert_equal 5 , produced.constant.known_object.value
|
assert_equal 5 , produced.constant.value
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_slot_move
|
def test_slot_move
|
||||||
|
@ -15,7 +15,7 @@ module Risc
|
|||||||
|
|
||||||
def test_constant_load
|
def test_constant_load
|
||||||
produced = produce_body
|
produced = produce_body
|
||||||
assert_equal 5 , produced.constant.known_object.value
|
assert_equal 5 , produced.constant.value
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_slot_move
|
def test_slot_move
|
||||||
|
@ -16,7 +16,7 @@ module Risc
|
|||||||
|
|
||||||
def test_constant_load
|
def test_constant_load
|
||||||
produced = produce_body
|
produced = produce_body
|
||||||
assert_equal 5 , produced.constant.known_object.value
|
assert_equal 5 , produced.constant.value
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_slot_move
|
def test_slot_move
|
||||||
|
@ -18,7 +18,7 @@ module Risc
|
|||||||
|
|
||||||
def test_constant_load
|
def test_constant_load
|
||||||
produced = produce_body
|
produced = produce_body
|
||||||
assert_equal 5 , produced.next(11).constant.known_object.value
|
assert_equal 5 , produced.next(11).constant.value
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -18,7 +18,7 @@ module Risc
|
|||||||
|
|
||||||
def test_false_load
|
def test_false_load
|
||||||
produced = produce_body
|
produced = produce_body
|
||||||
assert_equal Mom::FalseConstant , produced.next(2).constant.known_object.class
|
assert_equal Mom::FalseConstant , produced.next(2).constant.class
|
||||||
end
|
end
|
||||||
def test_false_check
|
def test_false_check
|
||||||
produced = produce_body
|
produced = produce_body
|
||||||
@ -26,7 +26,7 @@ module Risc
|
|||||||
end
|
end
|
||||||
def test_nil_load
|
def test_nil_load
|
||||||
produced = produce_body
|
produced = produce_body
|
||||||
assert_equal Mom::NilConstant , produced.next(4).constant.known_object.class
|
assert_equal Mom::NilConstant , produced.next(4).constant.class
|
||||||
end
|
end
|
||||||
def test_nil_check
|
def test_nil_check
|
||||||
produced = produce_body
|
produced = produce_body
|
||||||
|
@ -17,7 +17,7 @@ module Risc
|
|||||||
|
|
||||||
def test_false_load
|
def test_false_load
|
||||||
produced = produce_body
|
produced = produce_body
|
||||||
assert_equal Mom::FalseConstant , produced.next(2).constant.known_object.class
|
assert_equal Mom::FalseConstant , produced.next(2).constant.class
|
||||||
end
|
end
|
||||||
def test_false_check
|
def test_false_check
|
||||||
produced = produce_body
|
produced = produce_body
|
||||||
@ -25,7 +25,7 @@ module Risc
|
|||||||
end
|
end
|
||||||
def test_nil_load
|
def test_nil_load
|
||||||
produced = produce_body
|
produced = produce_body
|
||||||
assert_equal Mom::NilConstant , produced.next(4).constant.known_object.class
|
assert_equal Mom::NilConstant , produced.next(4).constant.class
|
||||||
end
|
end
|
||||||
def test_nil_check
|
def test_nil_check
|
||||||
produced = produce_body
|
produced = produce_body
|
||||||
|
@ -27,11 +27,11 @@ module Risc
|
|||||||
end
|
end
|
||||||
def test_load_label
|
def test_load_label
|
||||||
produced = produce_body
|
produced = produce_body
|
||||||
assert_equal Label , produced.next(14).constant.known_object.class
|
assert_equal Label , produced.next(14).constant.class
|
||||||
end
|
end
|
||||||
def test_load_5
|
def test_load_5
|
||||||
produced = produce_body
|
produced = produce_body
|
||||||
assert_equal 5 , produced.next(11).constant.known_object.value
|
assert_equal 5 , produced.next(11).constant.value
|
||||||
end
|
end
|
||||||
def test_call_reg_setup
|
def test_call_reg_setup
|
||||||
produced = produce_body
|
produced = produce_body
|
||||||
|
@ -17,7 +17,7 @@ module Risc
|
|||||||
|
|
||||||
def test_false_load
|
def test_false_load
|
||||||
produced = produce_body
|
produced = produce_body
|
||||||
assert_equal Mom::FalseConstant , produced.next(3).constant.known_object.class
|
assert_equal Mom::FalseConstant , produced.next(3).constant.class
|
||||||
end
|
end
|
||||||
def test_false_check
|
def test_false_check
|
||||||
produced = produce_body
|
produced = produce_body
|
||||||
@ -25,7 +25,7 @@ module Risc
|
|||||||
end
|
end
|
||||||
def test_nil_load
|
def test_nil_load
|
||||||
produced = produce_body
|
produced = produce_body
|
||||||
assert_equal Mom::NilConstant , produced.next(5).constant.known_object.class
|
assert_equal Mom::NilConstant , produced.next(5).constant.class
|
||||||
end
|
end
|
||||||
def test_nil_check
|
def test_nil_check
|
||||||
produced = produce_body
|
produced = produce_body
|
||||||
|
Loading…
Reference in New Issue
Block a user