fold last of the virtual into register

This commit is contained in:
Torsten Ruger
2015-10-22 18:16:29 +03:00
parent f658ecf425
commit dcbd3c7091
67 changed files with 161 additions and 227 deletions

View File

@ -3,7 +3,7 @@ require 'parslet/convenience'
Phisol::Compiler.class_eval do
def set_main main
@clazz = Virtual.machine.space.get_class_by_name :Object
@clazz = Register.machine.space.get_class_by_name :Object
@method = main
end
end
@ -11,10 +11,10 @@ end
module CompilerHelper
def set_main compiler
compiler.set_main Virtual.machine.space.get_main
compiler.set_main Register.machine.space.get_main
end
def check
machine = Virtual.machine
machine = Register.machine
machine.boot unless machine.booted
parser = Parser::Salama.new
parser = parser.send @root

View File

@ -1,11 +1,11 @@
require_relative "compiler_helper"
module Virtual
module Register
class TestCall < MiniTest::Test
include CompilerHelper
def setup
Virtual.machine.boot
Register.machine.boot
@root = :call_site
@output = Register::RegisterValue
end
@ -31,7 +31,7 @@ module Virtual
end
def test_call_main_op
Virtual.machine.space.get_main.ensure_local(:bar , :Integer)
Register.machine.space.get_main.ensure_local(:bar , :Integer)
@string_input = 'main( bar )'
check
end

View File

@ -1,11 +1,11 @@
require_relative "compiler_helper"
module Virtual
module Register
class TestFields < MiniTest::Test
include CompilerHelper
def setup
Virtual.machine.boot
Register.machine.boot
end
def test_field_not_defined
@ -17,7 +17,7 @@ HERE
end
def test_field
Virtual.machine.space.get_class_by_name(:Object).object_layout.add_instance_variable(:bro)
Register.machine.space.get_class_by_name(:Object).object_layout.add_instance_variable(:bro)
@root = :field_access
@string_input = <<HERE
self.bro
@ -27,7 +27,7 @@ HERE
end
def test_local
Virtual.machine.space.get_main.ensure_local(:bar , :Integer)
Register.machine.space.get_main.ensure_local(:bar , :Integer)
@root = :name
@string_input = 'bar '
@output = Register::RegisterValue
@ -35,7 +35,7 @@ HERE
end
def test_args
Virtual.machine.space.get_main.arguments.push Parfait::Variable.new(:Integer , :bar)
Register.machine.space.get_main.arguments.push Parfait::Variable.new(:Integer , :bar)
@root = :name
@string_input = 'bar '
@output = Register::RegisterValue

View File

@ -1,11 +1,11 @@
require_relative "compiler_helper"
module Virtual
module Register
class TestOps < MiniTest::Test
include CompilerHelper
def setup
Virtual.machine.boot
Register.machine.boot
@root = :operator_value
@output = Register::RegisterValue
end
@ -20,24 +20,24 @@ module Virtual
end
end
def test_local_int
Virtual.machine.space.get_main.ensure_local(:bar , :Integer)
Register.machine.space.get_main.ensure_local(:bar , :Integer)
@string_input = 'bar + 3'
check
end
def test_int_local
Virtual.machine.space.get_main.ensure_local(:bar , :Integer)
Register.machine.space.get_main.ensure_local(:bar , :Integer)
@string_input = '3 + bar'
check
end
def test_field_int
Virtual.machine.space.get_class_by_name(:Object).object_layout.add_instance_variable(:bro)
Register.machine.space.get_class_by_name(:Object).object_layout.add_instance_variable(:bro)
@string_input = "self.bro + 3"
check
end
def test_int_field
Virtual.machine.space.get_class_by_name(:Object).object_layout.add_instance_variable(:bro)
Register.machine.space.get_class_by_name(:Object).object_layout.add_instance_variable(:bro)
@string_input = "3 + self.bro"
check
end