fix resolve and introduce method to chop strings to max

strings are 20 bytes. I want to implement the extension idea, just not now
This commit is contained in:
Torsten 2020-03-13 15:50:50 +02:00
parent 407ca6ef72
commit f2250bc206
3 changed files with 20 additions and 11 deletions

View File

@ -112,8 +112,14 @@ module Parfait
list
end
def self.new_word_max( string )
return self.new_word(string) if string.length < 20
self.new_word(string[0 ... 20])
end
# Word from string
def self.new_word( string )
# puts "NEW #{string.length}=#{string}"
string = string.to_s if string.is_a? Symbol
word = Word.new( string.length )
string.codepoints.each_with_index do |code , index |

View File

@ -11,7 +11,7 @@ module SlotMachine
def to_risc(compiler)
builder = compiler.builder(compiler.source_name)
from = compiler.load_object(Parfait.new_word(@name))
from = compiler.load_object(Parfait.new_word_max(@name))
to = Risc::RegisterValue.new(:r1 , :Word)
builder.add_code Risc::Transfer.new(self , from , to)
builder.add_code Risc::Syscall.new(self, :died )

View File

@ -9,8 +9,8 @@ module SlotMachine
cache_entry = Parfait::CacheEntry.new(method.frame_type, method)
ResolveMethod.new( "method" , :name , cache_entry )
end
def est_len
assert_equal 19 , all.length , all_str
def test_len
assert_equal 20 , all.length , all_str
end
def test_1_load_name
assert_load 1, Parfait::Word , "id_word_"
@ -55,17 +55,20 @@ module SlotMachine
def test_14_goto_exit
assert_label 14, "exit_label_"
end
def test_15_move_name
assert_transfer 15, "id_word_" , :r1
def test_15_load_name
assert_load 15, Parfait::Word , "id_word_"
end
def test_16_die
assert_syscall 16, :died
def test_16_move_name
assert_transfer 16, "id_word_" , :r1
end
def test_17_label
assert_label 17, "ok_label_"
def test_17_sys
assert_syscall 17, :died
end
def test_18_load_method
assert_reg_to_slot 18 , "id_cacheentry_.cached_type.methods.next_callable" , "id_cacheentry_" , 2
def test_18_label
assert_label 18, "ok_label_"
end
def test_19_method
assert_reg_to_slot 19 , "id_cacheentry_.cached_type.methods.next_callable" , "id_cacheentry_" , 2
end
end
end