finally creating less objects in the test
basic still #23 , now applied Basic size of 20, interpreter gets 50 and the full set is 1024 Tests run more than twice as fast!!
This commit is contained in:
parent
37eeb81f45
commit
a89301d623
@ -55,10 +55,8 @@ module Parfait
|
|||||||
boot_boot_space( types )
|
boot_boot_space( types )
|
||||||
classes = boot_classes( types )
|
classes = boot_classes( types )
|
||||||
fix_types( types , classes )
|
fix_types( types , classes )
|
||||||
if( page = options[:page_size])
|
page = options[:factory] || 1024
|
||||||
Factory.page_size = page
|
Factory.page_size = page
|
||||||
PUTS "PAGE #{page}"
|
|
||||||
end
|
|
||||||
space = Space.new( classes )
|
space = Space.new( classes )
|
||||||
Parfait.set_object_space( space )
|
Parfait.set_object_space( space )
|
||||||
end
|
end
|
||||||
|
@ -20,7 +20,7 @@ module RubyX
|
|||||||
|
|
||||||
# initialize boots Parfait and Risc (ie load Builin)
|
# initialize boots Parfait and Risc (ie load Builin)
|
||||||
def initialize(options)
|
def initialize(options)
|
||||||
Parfait.boot!(options)
|
Parfait.boot!(options[:parfait] || {})
|
||||||
Risc.boot!
|
Risc.boot!
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ module Mains
|
|||||||
include Risc::Ticker
|
include Risc::Ticker
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
@string_input = as_main("a = 1011 ; while(a>0) ; a = a - 1 ; end ; return a")
|
@string_input = as_main("a = 37 ; while(a>0) ; a = a - 1 ; end ; return a")
|
||||||
super
|
super
|
||||||
end
|
end
|
||||||
def test_chain # max 1011 iterations on 1014 integers (1024 - 10 reserve)
|
def test_chain # max 1011 iterations on 1014 integers (1024 - 10 reserve)
|
||||||
|
@ -23,8 +23,8 @@ module Parfait
|
|||||||
def test_get_next_object
|
def test_get_next_object
|
||||||
assert_equal Parfait::Integer , @factory.get_next_object.class
|
assert_equal Parfait::Integer , @factory.get_next_object.class
|
||||||
end
|
end
|
||||||
def test_default_page
|
def test_default_test_page
|
||||||
assert_equal 1024 , Factory.page_size
|
assert_equal 20 , Factory.page_size
|
||||||
end
|
end
|
||||||
def test_default_reserve
|
def test_default_reserve
|
||||||
assert_equal 10 , Factory.reserve_size
|
assert_equal 10 , Factory.reserve_size
|
||||||
@ -37,15 +37,6 @@ module Parfait
|
|||||||
@factory.get_next_object
|
@factory.get_next_object
|
||||||
assert_equal Parfait::Integer , @factory.reserve.class
|
assert_equal Parfait::Integer , @factory.reserve.class
|
||||||
end
|
end
|
||||||
def test_chain_length
|
|
||||||
count = 0
|
|
||||||
start = @factory.get_next_object
|
|
||||||
while( start )
|
|
||||||
start = start.next_integer
|
|
||||||
count += 1
|
|
||||||
end
|
|
||||||
assert_equal 1024 - 10 , count
|
|
||||||
end
|
|
||||||
def test_reserve_length
|
def test_reserve_length
|
||||||
count = 0
|
count = 0
|
||||||
start = @factory.get_next_object
|
start = @factory.get_next_object
|
||||||
@ -56,5 +47,23 @@ module Parfait
|
|||||||
end
|
end
|
||||||
assert_equal 11 , count
|
assert_equal 11 , count
|
||||||
end
|
end
|
||||||
|
class BigFactoryTest < BigParfaitTest
|
||||||
|
def setup
|
||||||
|
super
|
||||||
|
@factory = Factory.new Parfait.object_space.get_type_by_class_name(:Integer)
|
||||||
|
end
|
||||||
|
def test_chain_length
|
||||||
|
count = 0
|
||||||
|
start = @factory.get_next_object
|
||||||
|
while( start )
|
||||||
|
start = start.next_integer
|
||||||
|
count += 1
|
||||||
|
end
|
||||||
|
assert_equal 1024 - 10 , count
|
||||||
|
end
|
||||||
|
def test_default_page
|
||||||
|
assert_equal 1024 , Factory.page_size
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -117,15 +117,6 @@ module Parfait
|
|||||||
def test_has_next_address
|
def test_has_next_address
|
||||||
assert_equal Parfait::ReturnAddress , @space.get_next_for(:ReturnAddress).class
|
assert_equal Parfait::ReturnAddress , @space.get_next_for(:ReturnAddress).class
|
||||||
end
|
end
|
||||||
def test_address_count
|
|
||||||
addr = @space.get_next_for(:ReturnAddress)
|
|
||||||
count = 0
|
|
||||||
while(addr)
|
|
||||||
count += 1
|
|
||||||
addr = addr.next_integer
|
|
||||||
end
|
|
||||||
assert_equal 1014, count
|
|
||||||
end
|
|
||||||
def test_has_message_factory
|
def test_has_message_factory
|
||||||
ints = @space.get_factory_for(:Message)
|
ints = @space.get_factory_for(:Message)
|
||||||
assert_equal Factory , ints.class
|
assert_equal Factory , ints.class
|
||||||
@ -138,16 +129,6 @@ module Parfait
|
|||||||
def test_has_next_message
|
def test_has_next_message
|
||||||
assert_equal Parfait::Message , @space.get_next_for(:Message).class
|
assert_equal Parfait::Message , @space.get_next_for(:Message).class
|
||||||
end
|
end
|
||||||
def test_message_count
|
|
||||||
mess = @space.get_next_for(:Message)
|
|
||||||
count = 0
|
|
||||||
while(mess)
|
|
||||||
count += 1
|
|
||||||
assert mess.frame
|
|
||||||
mess = mess.next_message
|
|
||||||
end
|
|
||||||
assert_equal 1014, count
|
|
||||||
end
|
|
||||||
def test_create_class
|
def test_create_class
|
||||||
assert @space.create_class( :NewClass )
|
assert @space.create_class( :NewClass )
|
||||||
end
|
end
|
||||||
@ -191,4 +172,26 @@ module Parfait
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
class BigTestSpace < BigParfaitTest
|
||||||
|
def test_address_count
|
||||||
|
addr = @space.get_next_for(:ReturnAddress)
|
||||||
|
count = 0
|
||||||
|
while(addr)
|
||||||
|
count += 1
|
||||||
|
addr = addr.next_integer
|
||||||
|
end
|
||||||
|
assert_equal 1014, count
|
||||||
|
end
|
||||||
|
def test_message_count
|
||||||
|
mess = @space.get_next_for(:Message)
|
||||||
|
count = 0
|
||||||
|
while(mess)
|
||||||
|
count += 1
|
||||||
|
assert mess.frame
|
||||||
|
mess = mess.next_message
|
||||||
|
end
|
||||||
|
assert_equal 1014, count
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
@ -41,7 +41,7 @@ module Risc
|
|||||||
ret = main_ticks(68)
|
ret = main_ticks(68)
|
||||||
assert_equal FunctionReturn , ret.class
|
assert_equal FunctionReturn , ret.class
|
||||||
assert_equal :r1 , ret.register.symbol
|
assert_equal :r1 , ret.register.symbol
|
||||||
assert_equal 175116 , @interpreter.get_register(ret.register)
|
assert_equal 22284 , @interpreter.get_register(ret.register)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -54,7 +54,7 @@ module Risc
|
|||||||
end
|
end
|
||||||
def test_pc1
|
def test_pc1
|
||||||
@interpreter.tick
|
@interpreter.tick
|
||||||
assert_equal 174552 , @interpreter.pc
|
assert_equal 21688 , @interpreter.pc
|
||||||
end
|
end
|
||||||
def test_tick2
|
def test_tick2
|
||||||
@interpreter.tick
|
@interpreter.tick
|
||||||
@ -68,7 +68,7 @@ module Risc
|
|||||||
def test_pc2
|
def test_pc2
|
||||||
@interpreter.tick
|
@interpreter.tick
|
||||||
@interpreter.tick
|
@interpreter.tick
|
||||||
assert_equal 174556 , @interpreter.pc
|
assert_equal 21692 , @interpreter.pc
|
||||||
end
|
end
|
||||||
def test_tick_14_jump
|
def test_tick_14_jump
|
||||||
14.times {@interpreter.tick}
|
14.times {@interpreter.tick}
|
||||||
|
@ -25,7 +25,7 @@ module Risc
|
|||||||
assert_equal 0 , Position.get(@linker.cpu_init).at
|
assert_equal 0 , Position.get(@linker.cpu_init).at
|
||||||
end
|
end
|
||||||
def test_cpu_at
|
def test_cpu_at
|
||||||
assert_equal "0x2b90c" , Position.get(@linker.cpu_init.first).to_s
|
assert_equal "0x4f1c" , Position.get(@linker.cpu_init.first).to_s
|
||||||
end
|
end
|
||||||
def test_cpu_label
|
def test_cpu_label
|
||||||
assert_equal Position , Position.get(@linker.cpu_init.first).class
|
assert_equal Position , Position.get(@linker.cpu_init.first).class
|
||||||
|
@ -1,11 +1,36 @@
|
|||||||
module Parfait
|
module Parfait
|
||||||
def self.default_test_options
|
def self.default_test_options
|
||||||
{}
|
{
|
||||||
|
factory: 20,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
def self.interpreter_test_options
|
||||||
|
{
|
||||||
|
factory: 50,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
def self.full_test_options
|
||||||
|
{
|
||||||
|
factory: 1024,
|
||||||
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
module RubyX
|
module RubyX
|
||||||
def self.default_test_options
|
def self.default_test_options
|
||||||
{ parfait: Parfait.default_test_options}
|
{
|
||||||
|
parfait: Parfait.default_test_options
|
||||||
|
}
|
||||||
|
end
|
||||||
|
def self.full_test_options
|
||||||
|
{
|
||||||
|
parfait: Parfait.full_test_options
|
||||||
|
}
|
||||||
|
end
|
||||||
|
def self.interpreter_test_options
|
||||||
|
{
|
||||||
|
parfait: Parfait.interpreter_test_options,
|
||||||
|
platform: :interpreter
|
||||||
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -12,4 +12,10 @@ module Parfait
|
|||||||
@method = Parfait::CallableMethod.new( :meth , @obj , @args , @frame)
|
@method = Parfait::CallableMethod.new( :meth , @obj , @args , @frame)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
class BigParfaitTest < ParfaitTest
|
||||||
|
def setup
|
||||||
|
Parfait.boot!(Parfait.full_test_options)
|
||||||
|
@space = Parfait.object_space
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -7,7 +7,7 @@ module Risc
|
|||||||
include ScopeHelper
|
include ScopeHelper
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
compiler = RubyX::RubyXCompiler.new(RubyX.default_test_options)
|
compiler = RubyX::RubyXCompiler.new(RubyX.interpreter_test_options)
|
||||||
@linker = compiler.ruby_to_binary(@string_input, :interpreter)
|
@linker = compiler.ruby_to_binary(@string_input, :interpreter)
|
||||||
@interpreter = Interpreter.new(@linker)
|
@interpreter = Interpreter.new(@linker)
|
||||||
@interpreter.start_program
|
@interpreter.start_program
|
||||||
|
Loading…
Reference in New Issue
Block a user