Torsten Ruger
04bcfea8ce
fix scoping of blockcompiler
...
Was accessing caller scope, but must use caller's caller as the yield itself is a call.
2018-07-31 18:00:42 +03:00
Torsten Ruger
9c6a099cde
block test
...
working on return semanitcs
(still avoiding the implicit return)
2018-07-30 14:10:24 +03:00
Torsten Ruger
285a88b59f
generalize assemblers to use callables
...
not just methods, they are almost the same anyway
2018-07-30 10:23:42 +03:00
Torsten Ruger
d80ef4bf4e
store method, not name, in message
...
changes the calling and thus too many test
2018-07-22 22:29:32 +03:00
Torsten Ruger
3c1137066b
more block tests reveal a compiler bug
...
copy/paste, args twice in switch
2018-07-18 10:13:19 +03:00
Torsten Ruger
ff8b95f21a
get block resolution to use the extra
...
block_compiler puts in the extra, that we get out when resolving the type
Thus block args work, though only by assuming direct call
2018-07-17 10:37:33 +03:00
Torsten Ruger
3343017dba
move type resolution to compiler
...
from risc_value.
also unite mock compilers
2018-07-16 11:46:18 +03:00
Torsten Ruger
e3673e579c
pass extra info into register init, not just value
...
extra info may be hash, maybe just type info
2018-07-16 11:23:09 +03:00
Torsten Ruger
b410538d07
uups, forgot to check that in
2018-07-15 17:44:26 +03:00
Torsten Ruger
3bc85805a4
must pass registers to slot_to_reg and reg_to_slot
...
as they are typed, those functions don't resolve on Risc, but the register type
miscother changes from previous commits
2018-07-15 16:30:50 +03:00
Torsten Ruger
f31d22d901
use real type in register, not symbol
...
this has some more consequences, upcoming
2018-07-15 15:16:12 +03:00
Torsten Ruger
61c840c023
start to move slot_load code to register_value
...
the iea is to iterate through register_values while reducing the slot_load to a number of Slot_to_regs
wip
2018-07-13 21:56:55 +03:00
Torsten Ruger
a095515b0e
new get_type_by_class_name helper for space
...
sorely needed, with 36 occurences replaced
2018-07-13 21:50:40 +03:00
Torsten Ruger
edea9ac080
makeing the method of the compiler more or less private
...
in preparation for using the same code for bocks
2018-07-09 19:32:17 +03:00
Torsten Ruger
63b55f2aa4
refactor a bit for upcoming delegations
...
must get method to be private
more tell, not ask
2018-07-09 18:16:51 +03:00
Torsten Ruger
06e78a7326
fix locals scope in method and blocks
...
methods used to gobble up any locals of included scope. fixed
Blocks now create frame_type correctly and don't include and locals that are in fact method scope
2018-07-09 17:55:45 +03:00
Torsten Ruger
7231f301ba
move tests with mom_compile to mom
2018-07-07 22:45:48 +03:00
Torsten Ruger
9005513368
rename typed_method to callable_method
...
seems to make the essence clearer
also extracted base class
2018-07-07 09:11:09 +03:00
Torsten Ruger
acd5cd8f30
rename for_type to self_type
...
and split a base class off TypedMethod
2018-07-06 20:01:17 +03:00
Torsten Ruger
2485f7e9eb
misc fixes and (finally, sigh) green again
...
deeeep dive, almost 40 commits
2018-07-04 09:18:55 +03:00
Torsten Ruger
d8b58d8da6
fix inital main (again)
...
stop even compiling a fake main if a real exists (in builtin)
previous version was still buggy: using builting methods types (especially locals) even comiled version had different
2018-07-04 09:17:30 +03:00
Torsten Ruger
8b9fd29ce9
Only add Builtin methods that are not in the current compilation
...
Current bug looks like the original main is used in parts
(not the compiled one, but the builtin on)
2018-07-04 08:28:05 +03:00
Torsten Ruger
bb1d1495db
fix constant propagation through the layers
...
so they can end up in the binary
2018-07-03 10:12:22 +03:00
Torsten Ruger
63dfee0978
move some tests around (and fix them)
2018-07-02 23:20:54 +03:00
Torsten Ruger
4b33d1c056
fix many a test especially whole mom
...
but some positioning bug still in there preventing
binary to work
2018-07-02 17:01:07 +03:00
Torsten Ruger
22408b86c6
return the linker from mom_compiler
...
linker holds assemblers
assemblers come from method compilation
and so the layers come into focus
2018-07-01 21:51:48 +03:00
Torsten Ruger
bb49f1be78
rename ClassCompiler to MomComplier
...
ended up not even using the class, it just came from there
It actually compiles methods, and it turns out is the point where builtin comes into the picture as it's boot process also returns method compilers
2018-07-01 21:26:45 +03:00
Torsten Ruger
c947c27a14
clean up booting
...
many machine boot became obsolete
or just neede parfait to boot
actual linker functionality pending
2018-07-01 14:12:42 +03:00
Torsten Ruger
35b10c46a3
adds the risc instructions to the compiler
...
since they are not in the method anymore
2018-07-01 11:59:52 +03:00
Torsten Ruger
46d8f5002f
hoist parfait boot out of the machine boot
2018-06-30 00:39:23 +03:00
Torsten Ruger
7006c8e3aa
fix remaining tests
...
rename ripples
2018-06-29 22:56:49 +03:00
Torsten Ruger
c8451d0048
create rubyx dir and move previous vool_compiler there
2018-06-29 22:46:39 +03:00
Torsten Ruger
3dffebed3f
rename a bit
2018-06-29 13:03:19 +03:00
Torsten Ruger
c94f6eaa78
small maintanance
2018-06-16 21:01:15 +03:00
Torsten Ruger
5ec235d049
fixes outstanding misc, All green
...
Well. it's been a while, positioning is fixed (again)
apart from the upcoming BranchListener
2018-06-10 13:19:55 +03:00
Torsten Ruger
53107d3ef8
reducing the label's int for return
...
placing the raw address in the register to jump to
puts the extra instruction at the risc level (not arm), thus changing a
lot of (brittle?) tests
2018-05-30 12:54:40 +03:00
Torsten Ruger
bf23883270
busy fixing tests
2018-05-24 19:38:48 +03:00
Torsten Ruger
f5d1090c39
no-ops really
2018-05-23 18:06:55 +03:00
Torsten Ruger
37d62d298e
assemble risc to it's position (not itself)
...
So in the next step the interpreter can use positions as program counter
and would be much more like the real thing
2018-05-17 09:49:01 +03:00
Torsten Ruger
9597fc5756
more slot tests, also in separate files
2018-05-16 12:49:46 +03:00
Torsten Ruger
36e59ebdea
some slot load tests
2018-05-16 12:35:44 +03:00
Torsten Ruger
473866e76b
start with some slot definition tests
2018-05-15 19:29:27 +03:00
Torsten Ruger
ab4bc370ed
another +1 bug
2018-05-15 16:25:55 +03:00
Torsten Ruger
3c00239f36
another million index fixes
2018-05-14 15:17:04 +03:00
Torsten Ruger
4a88f342d3
random checkin
...
still suffering -1 trauma
2018-05-14 12:38:44 +03:00
Torsten Ruger
98f3898acd
fix while tests
2018-04-20 10:27:06 +03:00
Torsten Ruger
13d8a65e07
add while interpreter test
2018-04-19 19:23:12 +03:00
Torsten Ruger
1849522a54
fix TruthCheck
...
mixing up the false and true, such a basic human mistake
2018-04-19 10:34:15 +03:00
Torsten Ruger
3a50b7dd0e
fix mod4 name
...
really did div4
2018-04-19 10:00:55 +03:00
Torsten Ruger
d19bd5f98d
fix dynamic jump
...
which gets dynamic resolve and call to work.
FIRST DYNAMIC CALL working
2018-04-09 15:06:46 +03:00
Torsten Ruger
59e6298879
first resolved call running though
...
and returning an int, as it should
just the value . . .
2018-04-08 23:45:23 +03:00
Torsten Ruger
fabe4db4f6
fix logic error in vool dynamic send
...
using receiver of current method
instead of receiver of next message
2018-04-08 22:59:42 +03:00
Torsten Ruger
580c53cdae
fix the resolve
...
without return and not being a function
2018-04-08 22:30:18 +03:00
Torsten Ruger
8c322329fb
fix builtin methods according to last commit
2018-04-08 18:52:17 +03:00
Torsten Ruger
3c90eb31c6
fixes all but interpreter tests
2018-04-06 23:37:41 +03:00
Torsten Ruger
eea92399ee
concludes static message setup
2018-04-06 23:11:08 +03:00
Torsten Ruger
1ddbde1191
return single message for "message" ie r0
...
other names, like next_message allocate a new register
2018-04-06 22:54:54 +03:00
Torsten Ruger
41d573d571
wrought one more instruction for message setup
...
now with dsl ready, should be faster
2018-04-06 20:58:58 +03:00
Torsten Ruger
d52e14d201
continue to rewrite message_setup
...
message come from space already.
next types
2018-04-05 20:37:03 +03:00
Torsten Ruger
f09086e524
unite the two resolve_to_index functions
2018-04-05 20:10:00 +03:00
Torsten Ruger
cf6636ddda
move (group) test files
2018-04-05 12:19:29 +03:00
Torsten Ruger
0a075c0f8a
fix tests (from changing MethodSetup)
2018-04-03 14:31:49 +03:00
Torsten Ruger
65d57c8c7c
removing unconditional
...
just Branch is fine
2018-04-02 19:30:34 +03:00
Torsten Ruger
cb9f6973d9
fix true false and nil constant
...
going from mom to parfait
basics in place, more ripples to fix
2018-03-31 13:47:02 +03:00
Torsten Ruger
ee8b9469af
fix argument indexing
...
good old index bug, off by one
this time forgot about parfait 1-indexing
2018-03-30 20:01:31 +03:00
Torsten Ruger
b997f01236
simple arg test
...
yields no insights
2018-03-30 18:13:17 +03:00
Torsten Ruger
e68b28d66d
fix helper
...
and start on arg test
2018-03-30 18:05:38 +03:00
Torsten Ruger
3090ccffea
keep risc and cpu instructions separate in method
...
that overwriting was a bit of thorn
2018-03-25 19:33:50 +03:00
Torsten Ruger
de7e02b0b8
remove IsSame branch from risc
...
mixing up levels, IsSame is Mom
at risc this is a minus and Zero check
fix all tests
2018-03-24 18:54:36 +02:00
Torsten Ruger
a407601f5c
fix tests from NotSame removal
2018-03-24 18:33:19 +02:00
Torsten Ruger
267237b776
fix init method message setup
...
was causing errors in interpreter
(that may have gone unnoticed in arm, as the interpreter checks stuff)
2018-03-24 15:59:54 +02:00
Torsten Ruger
30d2cd3af7
fix test ripples from changing return sequence
2018-03-23 20:04:29 +02:00
Torsten Ruger
f46c4d148e
more return testing
2018-03-23 11:21:41 +02:00
Torsten Ruger
55832315eb
more fix for multilevel constant load
...
was ignoring first level which is already the second for a constant
as the constant is the first load.
first interpreter test working but looking dodgy
2018-03-22 19:14:22 +02:00
Torsten Ruger
02c12996b3
return test for risc
2018-03-22 02:38:41 +05:30
Torsten Ruger
ca3bf6acfa
fix constants being passed down
2018-03-22 02:38:06 +05:30
Torsten Ruger
01151b4ba7
make continue labels unique
2018-03-21 22:05:51 +05:30
Torsten Ruger
e0dd4e0ad7
test dynamic call
...
made cache labels unique
2018-03-21 21:58:43 +05:30
Torsten Ruger
f424e58715
finish the simple call
...
moving jump address
2018-03-21 19:29:00 +05:30
Torsten Ruger
49880267bb
start to test call
...
as per tdd noticing logic errors, have to swap message out
2018-03-21 19:20:51 +05:30
Torsten Ruger
a9196e9cd6
implement simple_calls to_risc
2018-03-21 18:54:42 +05:30
Torsten Ruger
fcbdba4804
simplify method entry exit codes
...
Basically just a label now
No more implicit returns (needs compiler tests)
Many return points is the new idea
Also setup is done before the enter by MessageSetup
2018-03-21 16:02:46 +05:30
Torsten Ruger
12c71fa394
first go at message setups translation to risc
...
simplest possible implementation, ie the method and next_messages are
loaded many times.
But the layer design shines, it’s easy to understand
2018-03-21 12:20:55 +05:30
Torsten Ruger
d9ce295b89
fix all tests from removing the receiver load
2018-03-20 23:31:42 +05:30
Torsten Ruger
77084dc894
fix unconditional jump
...
and affected tests
2018-03-20 22:05:09 +05:30
Torsten Ruger
c12830ee6d
simple while risc conversion test
2018-03-20 16:32:07 +05:30
Torsten Ruger
2c6ea7ea46
finish truth check (green again)
...
some (basic) if tests
2018-03-20 13:30:38 +05:30
Torsten Ruger
c8980595a3
start to test if
...
truth check is only half done
2018-03-19 21:20:11 +05:30
Torsten Ruger
81f4524c7a
move assignment test into own dir
2018-03-19 16:28:53 +05:30
Torsten Ruger
7953ef3e39
fix slot_load for higher order left arguments
...
needed for getting args or frame of the target, for assigns
fixed ripples in tests
2018-03-19 15:47:40 +05:30
Torsten Ruger
483a7c4467
arg assignment test (could be better)
2018-03-19 13:34:50 +05:30
Torsten Ruger
dda2ff9049
more assignment tests
...
move to writing code to Test class
To use space as before one would have to implement re-opening classes
2018-03-19 13:30:14 +05:30
Torsten Ruger
c0a7f1d284
fix insertion and add assign send
...
must implement send conversion before this makes sense
2018-03-19 13:19:42 +05:30
Torsten Ruger
66a160d8ab
fix code insertion in method
2018-03-19 13:05:08 +05:30
Torsten Ruger
cddc25a595
fixing tests for shifting constants into slots
2018-03-17 21:15:38 +05:30
Torsten Ruger
16c8fcbf66
first local assignment risc test
...
comes with casualties
slot_load needs more work
2018-03-17 11:13:44 +05:30
Torsten Ruger
3eef27be76
test helper cleanup
2018-03-16 20:25:01 +05:30
Torsten Ruger
4a79d20a40
remove duplicate tests
2018-03-15 20:51:46 +05:30
Torsten Ruger
163cad456f
random tries
2018-03-15 10:46:17 +05:30
Torsten Ruger
7db329fa6b
actually adding risc instructions
...
fix test harness
1 working test (yeh)
2018-03-14 17:41:09 +05:30