remove set optimization

will become obsolete soon anyway
This commit is contained in:
Torsten Ruger 2015-10-10 11:52:54 +03:00
parent 8642207158
commit c3eb295f4e
3 changed files with 2 additions and 22 deletions

View File

@ -14,7 +14,6 @@ require "virtual/type"
require "virtual/passes/minimizer" require "virtual/passes/minimizer"
require "virtual/passes/collector" require "virtual/passes/collector"
require "virtual/passes/enter_implementation" require "virtual/passes/enter_implementation"
require "virtual/passes/set_optimisation"
class Fixnum class Fixnum

View File

@ -1,19 +0,0 @@
module Virtual
class SetOptimisation
def run block
block.codes.dup.each_with_index do |code , i|
next unless code.is_a? Virtual::Set
next_code = block.codes[i+1]
next unless next_code.is_a? Virtual::Set
next unless code.to == next_code.from
# TODO: a correct implementation would have to check that the code.to
# is not used in further blocks, before being assigned to
new_code = Virtual::Set.new(code.from , next_code.to )
block.replace(code , [new_code] )
block.replace(next_code , [] )
end
end
end
Virtual.machine.add_pass "Virtual::SetOptimisation"
end

View File

@ -48,7 +48,7 @@ class AddTest < MiniTest::Test
assert @interpreter.link assert @interpreter.link
end end
def test_adding def test_adding
done = ticks(23) done = ticks(25)
assert_equal Register::OperatorInstruction , done.class assert_equal Register::OperatorInstruction , done.class
left = @interpreter.get_register(done.left) left = @interpreter.get_register(done.left)
rr = done.right rr = done.right
@ -67,7 +67,7 @@ class AddTest < MiniTest::Test
["Branch" , "LoadConstant" , "GetSlot" , "SetSlot" , "RegisterTransfer" , ["Branch" , "LoadConstant" , "GetSlot" , "SetSlot" , "RegisterTransfer" ,
"GetSlot" , "FunctionCall" , "SaveReturn" , "LoadConstant" , "SetSlot" , "GetSlot" , "FunctionCall" , "SaveReturn" , "LoadConstant" , "SetSlot" ,
"GetSlot" , "GetSlot" , "SetSlot" , "LoadConstant" , "SetSlot" , "GetSlot" , "GetSlot" , "SetSlot" , "LoadConstant" , "SetSlot" ,
"LoadConstant" , "SetSlot" , "RegisterTransfer" , "GetSlot" , "FunctionCall" , "LoadConstant" , "SetSlot" , "GetSlot" , "SetSlot", "RegisterTransfer" , "GetSlot" , "FunctionCall" ,
"SaveReturn" , "GetSlot", "OperatorInstruction" , "RegisterTransfer" , "GetSlot" , "GetSlot" , "SaveReturn" , "GetSlot", "OperatorInstruction" , "RegisterTransfer" , "GetSlot" , "GetSlot" ,
"GetSlot" , "FunctionReturn" ,"RegisterTransfer" , "Syscall", "NilClass"].each_with_index do |name , index| "GetSlot" , "FunctionReturn" ,"RegisterTransfer" , "Syscall", "NilClass"].each_with_index do |name , index|
got = ticks(1) got = ticks(1)