rubydesign
3a983b4fc8
fix plus, which inherited bugs from operator
2020-03-22 14:31:43 +02:00
rubydesign
7232c28ecd
operator also fell into ssa trap
...
relying on register identity
in fact the whole operator concept was geared towards this, using 2 regs instead of one to avoid the whole issue
better now
2020-03-22 14:31:43 +02:00
rubydesign
3145547315
init fell into the ssa tap, fixed
...
reducing and assuming the same register, buuh
adds a transfer instruction that can hopefully be removed by analysis
2020-03-22 14:31:43 +02:00
rubydesign
5b0c1195e4
Fix interpreter and resolve method
...
Interpreter was not handling ssa correctly (ie overwriting)
Resolve was assuming wrong registers (also non ssa)
return value still broken
2020-03-22 14:31:43 +02:00
rubydesign
4db71c1c03
fix all uses of operators now they are ssa
2020-03-22 14:31:43 +02:00
rubydesign
61fc8a3991
make operator_instruction single ass
...
create result register automatically
usually not used, but register allocation will sort that
2020-03-22 14:31:43 +02:00
rubydesign
1378745907
first interpreter tests
2020-03-22 14:31:43 +02:00
rubydesign
c16ed5ab3a
fix interpreter
...
by currently not checking for old register pattern
feels like wip, but passes (all but one)
2020-03-22 14:31:43 +02:00
rubydesign
f2250bc206
fix resolve and introduce method to chop strings to max
...
strings are 20 bytes. I want to implement the extension idea, just not now
2020-03-22 14:31:43 +02:00
rubydesign
407ca6ef72
misc test fixes
2020-03-22 14:31:43 +02:00
rubydesign
126466e9a9
fixing tests
2020-03-22 14:31:43 +02:00
rubydesign
504fc3509e
fix set_internal_word register
2020-03-22 14:31:43 +02:00
rubydesign
5c13ea1433
fix naming mistakes fo Word.get/set macros
2020-03-22 14:31:43 +02:00
rubydesign
d125a1528a
Fix set_internal_byte registers
2020-03-22 14:31:43 +02:00
rubydesign
17a1121408
fix putstring registers
2020-03-22 14:31:43 +02:00
rubydesign
3a3a9277b3
fix operators registers
2020-03-22 14:31:43 +02:00
rubydesign
8867d60c13
fix method_missing register
...
logic is still wrong, even it is slightly less (at least loading the method name)
2020-03-22 14:31:43 +02:00
rubydesign
ede103e73d
finally did assert_function_call
...
for cleaner reading, like all other instruction asserts
2020-03-22 14:31:43 +02:00
rubydesign
cf5a3c0102
fix inits registers
...
surprisingly easy. shorter code and more readable tests
2020-03-22 14:31:43 +02:00
rubydesign
7d8ef8ef64
fix allocate tests
...
as allocate got one smaller
2020-03-22 14:31:43 +02:00
rubydesign
8abcaa330b
fix allocate in builder
...
which accessed unknown types.
also moved assert_allocate to support
2020-03-22 14:31:43 +02:00
rubydesign
c9fedec230
add a way to bend the type for register_value
...
specifically for factories, where we know the type of next_object even it is not specified
2020-03-22 14:31:43 +02:00
rubydesign
8119030ed2
fix return sequence
...
broken due to logic error in register_slot << (which was reducing the wrong register, self, not the arg)
Still the sequence is in 2 places, one too many ?
2020-03-22 14:31:43 +02:00
rubydesign
05ddc70fd6
fix get_internal word register names
...
seems previous commits broke the return
2020-03-22 14:31:43 +02:00
rubydesign
6267bf3ad0
fix slot_to_reg to allow register indexes
...
we mostly use pre-calculated indexes, ie integers
but registers are allowed (in arm/risc), so we try to check the registers type at least is right.
The return is really a machine word, but we call it Object (yes, more work that way)
2020-03-22 14:31:43 +02:00
rubydesign
62d8d92b50
restrict list index to integer
2020-03-22 14:31:43 +02:00
rubydesign
a70e510548
fix test_exit registers
2020-03-22 14:31:43 +02:00
rubydesign
fb4fa598f2
fix get_internal_byte
...
improved operators and tests
some logic errors still
2020-03-22 14:31:43 +02:00
rubydesign
a70f63e7bb
fix remaining slot instruction tests
2020-03-22 14:31:43 +02:00
rubydesign
07873ce068
fix not same logic
...
caused by assert logic error, also fixed
2020-03-22 14:31:43 +02:00
rubydesign
c1cfc12a1c
converted resolve_method
...
Big, left till last, but surprisingly painless
2020-03-22 14:31:43 +02:00
rubydesign
28e9cd335a
still fixing instruction tests
2020-03-22 14:31:43 +02:00
rubydesign
e6729b8b60
fixing instruction tests
2020-03-22 14:31:43 +02:00
rubydesign
22d513d895
fix div4 and tests
...
also bug in reduce_int, compiler not carried through
2020-03-22 14:31:43 +02:00
rubydesign
eed9ba082f
Fix div10 and test
...
fix and use load_data (similar to load_constant)
and integrate into load_object when appropriate (ie for integers)
2020-03-22 14:31:43 +02:00
rubydesign
bd02f69824
reduce_int was overwriting register
...
No more. But the type question is open, ie what type does the resulting register have
2020-03-22 14:31:43 +02:00
rubydesign
53eb28fff4
load constant to create register names with class
...
Just the id_ did give no clue to the contents, just took care of the uniqueness.
Better for debugging
2020-03-22 14:31:43 +02:00
rubydesign
3ec5557ddb
fix builder logic error
...
and tests
2020-03-22 14:31:43 +02:00
rubydesign
1760b5b203
fix comparison test and helpers
...
moving to passing the instruction number, not the instruction
so in the error message we can say where the error is
(otherwise minitest is good enough to supress the trace of asserts calling asserts)
2020-03-22 14:31:43 +02:00
rubydesign
3575aada17
tests for all macros
...
generated on master (know to work)
but with rXX registers, needs fixing
2020-03-22 14:31:43 +02:00
rubydesign
9c5d17a3bb
Fix div10 without method_missing
...
but reanimate infer_type to auto create the needed regsiters
also some helpers
2020-03-22 14:31:43 +02:00
rubydesign
9a5e0f15cd
reannimate infer_type
...
now with a _purpose_
2020-03-22 14:31:43 +02:00
rubydesign
3688c967d3
Fix comparison macro
...
which leaves a definite need for instruction level testing
2020-03-22 14:31:43 +02:00
rubydesign
2af953e1d2
last instruciton, dynamic_call
...
next macros
2020-03-22 14:31:43 +02:00
rubydesign
7f5ebab800
did block yield
2020-03-22 14:31:43 +02:00
rubydesign
a4c0b8e5f9
did return sequence
...
surprisingly easy. also some check polish
2020-03-22 14:31:43 +02:00
rubydesign
fd43fc9e5c
finally fixes the builder
2020-03-22 14:31:43 +02:00
rubydesign
db5a59f735
Unify instruction namings also dirs
...
Was getting confused myself, where it was instruction or instructions, when if the base class was inside or out of dir.
Now dirs are plural, and base class is inside.
2020-03-22 14:31:43 +02:00
rubydesign
f3d299208e
fix message_setup with new builder
2020-03-22 14:31:43 +02:00
rubydesign
d0036ed95b
better way to test object registers
...
also some cleaning, by using more helpers
2020-03-22 14:31:43 +02:00