remove IsSame branch from risc

mixing up levels, IsSame is Mom
at risc this is a minus and Zero check
fix all tests
This commit is contained in:
Torsten Ruger
2018-03-24 18:54:36 +02:00
parent a407601f5c
commit de7e02b0b8
5 changed files with 40 additions and 33 deletions

View File

@ -19,10 +19,13 @@ module Mom
left = @condition.to_register(compiler,self)
false_load = SlotDefinition.new( FalseConstant.new , [] ).to_register(compiler,self)
left << false_load
left << Risc::IsSame.new(self , left.register , false_load.register , false_label)
left << Risc.op( self , :- , left.register , false_load.register)
left << Risc::IsNotZero.new( self, false_label)
nil_load = SlotDefinition.new( NilConstant.new , [] ).to_register(compiler,self)
left << nil_load
left << Risc::IsSame.new(self , left.register , nil_load.register , false_label)
left << Risc.op( self , :- , left.register , nil_load.register)
left << Risc::IsNotZero.new( self, false_label)
left
end

View File

@ -67,14 +67,6 @@ module Risc
attr_reader :register
end
# branch if two registers contain same value
class IsSame < Branch
attr_reader :left , :right
def initialize(source , left , right , label)
super(source , label)
end
end
class Unconditional < Branch
end