58c7294abd
finish the loop in slot_load
...
thus rewrite of that old nested if thing is done
2018-07-14 11:04:21 +03:00
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
21009b0e9b
delegate resolve to compiler when needed
...
and forgotten space test
2018-07-13 21:55:27 +03:00
a095515b0e
new get_type_by_class_name helper for space
...
sorely needed, with 36 occurences replaced
2018-07-13 21:50:40 +03:00
27a142f2a3
use compiler base class for blocks too
...
can now go to mom level and add
test harness still looks overly complicated, but works
first block tests at mom level
2018-07-10 22:03:32 +03:00
a3e758357c
extract base class from method_compiler
...
to be used for blocks too
2018-07-10 22:02:11 +03:00
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
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
4ac89ece66
start delegating scope matters to the compiler(s)
...
slot_type_for to return the slot way to access variable
this is off course version 0.0.1 alpha, no types are checked or errors handled
2018-07-09 17:53:56 +03:00
dd544214b3
start with block_compiler
...
as a copy of method_compiler
re-merge later, when we know what's needed
2018-07-09 16:48:23 +03:00
0d900de695
block creation and insertion with correct types
2018-07-07 22:42:00 +03:00
2f07cc34f3
add parfait block
2018-07-07 15:50:43 +03:00
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
acd5cd8f30
rename for_type to self_type
...
and split a base class off TypedMethod
2018-07-06 20:01:17 +03:00
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
6f936f190d
misc to_s and small fixes
2018-07-04 08:28:29 +03:00
e099014d63
fix dunamic jump in interpreter and misc
2018-07-03 19:15:36 +03:00
bb1d1495db
fix constant propagation through the layers
...
so they can end up in the binary
2018-07-03 10:12:22 +03:00
56f2742e89
fix code listener logic bug
...
next's position was only updated initially
previous logic relied on pushing everything long rightly
but it wasn't right, and no harm in setting position twice,
as events only fire if there is real change
2018-07-02 23:03:00 +03:00
a1197fb70c
interpreter tests working again
2018-07-02 17:29:26 +03:00
6af651a886
text writer working
...
adjusted ordering as psoitioning, ie
methods in order of the assemblers of the linker
(not the object space)
2018-07-02 17:05:02 +03:00
474cd4b348
linker and collector test work again
...
had to give space a fixed number of addresses
2018-07-02 16:19:01 +03:00
6a4c90e2bd
fix the cpu_init for linker
...
cpu_init still translates from risc_init
but since interpreter is a platform risc_init is a private thing
and the cpu_init does not need to be lazily created, so it's done in the init
2018-07-02 15:51:50 +03:00
1132309f6a
unify space collection attribute naming
...
currently space is still acting as a sort of memory manager.
For proper linking, all objects must be reachable from space, hence the plural versions like messages and addresses (even they are instances, it is the list that is important)
To dish out instance to use, the head must be kept, ie next_XXX for intergers, return addresses and messages
2018-07-02 15:49:51 +03:00
07a154be70
code listener now get platform explicitly
...
used to grab it from global machine.
Now passed in from linker
tests fixed accordingly
2018-07-02 09:39:07 +03:00
8952b39446
linker goes through assemblers, not space
...
used to traverse all methods in space
now "just" use the passed assemblers, which usually should be compiled and builtin (but for testing . . .)
tests fixed accordingly
2018-07-02 09:37:58 +03:00
c6f0dc636d
platform helper
2018-07-02 09:36:29 +03:00
f4b1290e58
position tests working
2018-07-02 09:35:57 +03:00
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
5f2a256608
fix platform derivation and some tests
2018-07-01 21:27:27 +03:00
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
e75aef933d
have to pass constants around now
...
as they are not global anymore
2018-07-01 14:11:29 +03:00
e10092a4be
rename machine to linker
...
even work is not quite finished, but helps root out offenders
(needless to say this is wip, deep red wip)
2018-07-01 13:45:14 +03:00
57fc67ddf6
move address list to object_space
...
where i guess it should have been from the start
2018-07-01 13:43:53 +03:00
35b10c46a3
adds the risc instructions to the compiler
...
since they are not in the method anymore
2018-07-01 11:59:52 +03:00
1505df894a
remove translation
...
from machine, which is quickly becoming a linker
2018-07-01 11:58:06 +03:00
1a97408e22
return compiler, not generated mom
...
does make the tests more verbose, but the code cleaner
2018-07-01 11:57:17 +03:00
2d83473d74
add assembler
...
getting the layers better
2018-07-01 11:53:18 +03:00
05669065ca
back to method_compiler
...
it is what it is
2018-06-30 23:26:28 +03:00
91a99b1239
let boot_functions return the compilers
...
methods are still added, but this is a good step to removing the risc/cpu level from the methods
2018-06-30 23:16:17 +03:00
208b98d709
start to move translate code
2018-06-30 22:53:32 +03:00
46d8f5002f
hoist parfait boot out of the machine boot
2018-06-30 00:39:23 +03:00
ae35fed0ab
fix list to expand
...
prevously fixed max length list
now expanding on demand, using next
quite like binary_code, a pattern is emerging
2018-06-29 20:58:59 +03:00
6bd01fd55f
rename method_compiler
...
in line with other compiler XX_Compiler being the compiler for that layer
remove type from compiler as it is in method available
2018-06-29 14:48:52 +03:00
114dc95b60
move parfait boot into parfait
...
and out of risc
2018-06-29 14:36:11 +03:00
e6f01748ff
move adapter stuff around
2018-06-29 14:26:25 +03:00
86b1edb40c
add seperate builders
...
remove if with polymorphism for different builders
(easier to understand by naming)
2018-06-29 13:27:57 +03:00
3dffebed3f
rename a bit
2018-06-29 13:03:19 +03:00
d50893bb0f
rename risc_value to register_value
...
almost to register, but it still carries that value
2018-06-29 11:39:07 +03:00
606c7bf906
remove booted flag
...
just boot if needed
2018-06-29 11:36:14 +03:00