Torsten Ruger
8c322329fb
fix builtin methods according to last commit
2018-04-08 18:52:17 +03:00
Torsten Ruger
9867234c38
move most code from method_compiler to builder
...
rather use builder in two ways, than sometimes compiler and sometimes
builder
Also makes it possible to reuse builtin code in mom’s to_risc, as both
use builder. The builtin code by directly adding to compiler, the mom
code not.
2018-04-08 18:51:20 +03:00
Torsten Ruger
c30e461385
add operator to builder
...
just minus for now, easily extended
2018-04-08 01:01:24 +03:00
Torsten Ruger
5d4b9d4834
add branches to builder
2018-04-08 00:50:51 +03:00
Torsten Ruger
695ae5ad99
add label generation to builder
2018-04-08 00:39:35 +03:00
Torsten Ruger
6958fc31ab
rework resolve_method, using builder
2018-04-07 23:07:44 +03:00
Torsten Ruger
26cf911a5c
change build names a little and document
2018-04-07 22:35:40 +03:00
Torsten Ruger
6d1beec407
fixing the interpreter tests
2018-04-07 18:58:44 +03:00
Torsten Ruger
db55ec3fd6
slightly changing built return logic
...
very tempted to add immediately, but bigger change
2018-04-07 00:35:54 +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
22409c93ee
remove >>, consistent use of <<
...
makes code easier to read, like assignments
does remind of Passengers
2018-04-06 22:40:58 +03:00
Torsten Ruger
c042dd9faa
allow reverse syntax for >> (ie <<)
...
slot >> reg makes sense, being a slot_to_reg
but . . .
consistently use of << (as meaning assignment , =) also makes sense
allow both and let time tell which makes more sense
2018-04-06 21:05:26 +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
c02576b239
reuse dished out names
...
so they become like variables
2018-04-06 20:55:21 +03:00
Torsten Ruger
cae5e323ec
add reg to slot
2018-04-06 20:21:14 +03:00
Torsten Ruger
fe71ddc5ae
remove dead code
...
leave circle detection for now
2018-04-06 20:20:39 +03:00
Torsten Ruger
88dbc7c84f
slot to reg for builder
2018-04-06 16:35:27 +03:00
Torsten Ruger
c233bd82d6
implement [] for RiscValue for the dsl
2018-04-06 16:08:35 +03:00
Torsten Ruger
44d661fe56
progress on the builder front
...
mainly tests for now
2018-04-06 14:54:24 +03:00
Torsten Ruger
e396807ee5
start work on dsl
...
so i can read my own code
2018-04-06 14:21:38 +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
ee0a1ca823
renaming methods args and frame
...
to arguments_type and frame_type, because that is what they are
In honour of setup bug, where the types of those types were loaded,
instead of just them types
2018-04-05 12:22:14 +03:00
Torsten Ruger
cf6636ddda
move (group) test files
2018-04-05 12:19:29 +03:00
Torsten Ruger
c51fc67ba5
make interpreter tests less brittle
...
by factoring __init code away
just counting main
2018-04-04 20:05:09 +03:00
Torsten Ruger
b9f85f9d2e
use instance_variable_set/get instead of eval
...
opal doesn’t like eval anymore
2018-04-03 19:33:36 +03:00
Torsten Ruger
4a2a1da3ff
little spring clean
2018-04-03 15:23:19 +03:00
Torsten Ruger
52d389cdbf
auto extend binary code
...
final solution will need repositioning
2018-04-03 15:07:36 +03:00
Torsten Ruger
30ca70e042
remove extra instruction and use next instead
...
was messing with binary writing as the assumption of 1 word writes is
baked in
2018-04-03 14:46:07 +03:00
Torsten Ruger
0a075c0f8a
fix tests (from changing MethodSetup)
2018-04-03 14:31:49 +03:00
Torsten Ruger
17b52d4e80
fix dynamic resolution
...
was loading self, when it needs to load receiver
some more test (up to the resolve) start working
2018-04-03 12:55:28 +03:00
Torsten Ruger
c304ad67c6
load space twice in init , messagesetup overwrites first
...
lots of interpreter test changes, brittle, must factor __initi out
2018-04-02 23:25:52 +03:00
Torsten Ruger
576ae9261d
recode resolve method as assembler
...
definitely needs some refactoring
in fact i was hoping to code this in ruby (with compiler tweeks)
but there it is: goes through the linked list of methods of the type
and compares their name with self (method on word)
if not found ends in sys exit for now
2018-04-02 19:32:59 +03:00
Torsten Ruger
65d57c8c7c
removing unconditional
...
just Branch is fine
2018-04-02 19:30:34 +03:00
Torsten Ruger
9fafbe4e96
remove Kernel class for clarification
...
since it was a class it was fake anyway
moved methods to object
2018-04-02 17:06:31 +03:00
Torsten Ruger
87eee0b66e
add object method missing as sys exit
...
functions get added twice and thus removed once
remove restriction for now
2018-04-02 16:49:30 +03:00
Torsten Ruger
fb29fb6431
linked list of methods instead of list of methods
...
api changes slightly, especially for each, but mostly sama sama
2018-04-02 16:36:43 +03:00
Torsten Ruger
ad497b34f1
test interpreters event firing
2018-04-01 22:50:15 +03:00
Torsten Ruger
599679d6e8
simplest if
...
without true/false or logic
2018-04-01 22:42:27 +03:00
Torsten Ruger
48e4e3de9a
add returns to tests so program ends in syscall exit
2018-04-01 22:19:21 +03:00
Torsten Ruger
9efeb58061
fix ret_to_byte
...
by the now familiar unwrapping of args and wrapping of return
2018-04-01 22:16:17 +03:00
Torsten Ruger
1a19683e7d
fix RegToByte
...
seems to work, but does not end in syscall
2018-04-01 21:59:06 +03:00
Torsten Ruger
3a9539a071
adds multiplication
...
without overflow testing, like the others
2018-04-01 21:18:08 +03:00
Torsten Ruger
1d57c59dab
fix putstring
...
mainly returning an integer object rather than fixnum
2018-04-01 18:57:43 +03:00
Torsten Ruger
b1376e83bd
add integer minus
...
rework plus to make that easy
2018-04-01 15:26:53 +03:00
Torsten Ruger
972cf47c8b
adding returns to all builtins
2018-04-01 15:17:16 +03:00
Torsten Ruger
def67205f0
fix mod4
...
which is just shift right by 2 after all
2018-04-01 15:13:12 +03:00
Torsten Ruger
10fa61aa9f
fix integer plus
...
mostly forgot the return sequence
2018-04-01 14:56:01 +03:00
Torsten Ruger
8acfda457f
fix div10
...
by reducing the incoming integer to fixnum
and then pushing the fixnum result into a new integer
2018-04-01 14:50:13 +03:00
Torsten Ruger
168c2e862f
move wip tests
2018-04-01 14:01:17 +03:00
Torsten Ruger
5c89884df9
fix binary code mixup
...
mixed get_word with get_internal_word
2018-04-01 12:13:14 +03:00
Torsten Ruger
727069a306
perfectly adding two numbers
...
with only 7k lines of code :-)
2018-04-01 12:00:59 +03:00
Torsten Ruger
15d2b585e6
fix integer and data object get/set word
...
instance variables first, then raw data
keep value reader for now
2018-04-01 11:56:04 +03:00
Torsten Ruger
4725b81270
get those integers crated and used
2018-03-31 20:21:27 +03:00
Torsten Ruger
5b92b6b785
get plus (+) working
...
alas, new integer is not created yet
2018-03-31 19:37:24 +03:00
Torsten Ruger
a5189570c6
fix remaining constant issues
...
all but integer creation
and integer builtins off course
2018-03-31 13:58:08 +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
9e9b5c7f37
move to parfait integers in risc layer
...
loading constants means loading parfait objects
objects have to me collected in machine
integer ok, string/true/false/nil next
2018-03-31 13:25:59 +03:00
Torsten Ruger
6e941ebcb7
introduce load_data instruction
...
which just loads data to a register (used internally)
as opposed to integers, which are objects
2018-03-31 12:38:30 +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
1956f18faa
add an integer plus
...
not correctly handling integer objects yet
2018-03-30 17:09:02 +03:00
Torsten Ruger
efcc33f8a1
get an elf written
2018-03-29 20:37:25 +03:00
Torsten Ruger
3844a738cd
rename assembler to text_writer
...
as “assembly” really happens in the machine now
2018-03-29 18:17:19 +03:00
Torsten Ruger
e012f16d7f
fix positioning and the assembly works
2018-03-29 18:03:21 +03:00
Torsten Ruger
00be522419
each word for binary
2018-03-29 17:38:59 +03:00
Torsten Ruger
7cf253ad9c
change assembler to write binary code objects
...
also all debug in hex
2018-03-29 12:16:27 +03:00
Torsten Ruger
5eee79719d
reenable now working tests
2018-03-28 13:04:25 +03:00
Torsten Ruger
606e3f8cb3
fix calling to binaries
...
used to be to the method, but we assemble the method to its own
position.
Throw in a test for binary calling
2018-03-28 13:00:03 +03:00
Torsten Ruger
7493d738e1
have to translate the labels
...
and use binary as function call target
(because we don’t have the translated label)
2018-03-28 12:50:07 +03:00
Torsten Ruger
85ddf53429
create methods with binaries and extend them later
...
Binary is new jump target for function call
2018-03-28 12:49:17 +03:00
Torsten Ruger
105e8f7092
some better and some missing arm test
...
for the exceptional case
2018-03-28 12:16:28 +03:00
Torsten Ruger
fcb7f652eb
found the culprit
2018-03-28 11:37:17 +03:00
Torsten Ruger
500851d246
start on new binary creation process
...
now writing into BinaryCode instead of stream
also in the risc layer, not arm, for reusability
2018-03-27 20:47:41 +03:00
Torsten Ruger
4069397fca
don't collect labels anymore
...
don’t need, use binary code as the methods jump point
2018-03-27 19:06:16 +03:00
Torsten Ruger
4253d7a6b9
move assembly from assembler to machine
...
id now called position
2018-03-27 18:47:39 +03:00
Torsten Ruger
4cc1d8455e
fix util namespace
...
and instruction move ripples
2018-03-26 20:05:30 +03:00
Torsten Ruger
730197fbed
organise tests to where they belong
2018-03-26 19:43:03 +03:00
Torsten Ruger
3fcb4b74c7
fix binary code set_char bug
2018-03-26 19:41:30 +03:00
Torsten Ruger
a9d5e144ca
get/set word for binary code
2018-03-26 18:14:52 +03:00
Torsten Ruger
b24b65520d
remove all that label stuff
...
left over after rewrite from blocks to linked list
2018-03-26 14:54:41 +03:00
Torsten Ruger
1e21177b35
just keep binary code payload at 13 for now
...
there is an extra in there at the last of the last, but ok
2018-03-26 14:37:55 +03:00
Torsten Ruger
60617ca632
some binary code tests
2018-03-26 14:04:13 +03:00
Torsten Ruger
633e99466d
start to debug
2018-03-26 13:43:26 +03:00
Torsten Ruger
865a116f47
small assembler fix
2018-03-25 20:02:51 +03:00
Torsten Ruger
279fdcc1e2
really translate risc - cpu/arm
...
also labels.
Actual translation/assembly is much cleaner
2018-03-25 19:38:59 +03:00
Torsten Ruger
eb7713a9f3
remove method_compiler init method
...
as init is really just adding a label it is done in the method
(thus mixing the levels, “polluting” parfait with risc, but there must
be change coming that way anyway)
2018-03-25 19:37:51 +03:00
Torsten Ruger
3bd23cee28
also separate risc and cpu inits for the machine
...
interpreter works on risc, but assembler off cpu
2018-03-25 19:36:00 +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
a50368c3aa
assembler will need redoing somewhat
...
with own data objects, we can assemble into them first
then write
may also store cpu instructions
2018-03-25 18:23:00 +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
ad3e73d931
start on dynamic call test
...
fix cache entry being not loaded
test incomplete because of missing resolve_method
2018-03-24 17:55:01 +02:00
Torsten Ruger
3ceb2c2f69
fix div10 return sequence
...
did not return at all before
2018-03-24 16:51:26 +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
65d3d5f1c9
fix tests from interpreter load change
...
loading values, not Constants
2018-03-24 12:24:53 +02:00
Torsten Ruger
2c137e8c97
div10 test for interpreter
2018-03-24 12:21:46 +02:00
Torsten Ruger
30d2cd3af7
fix test ripples from changing return sequence
2018-03-23 20:04:29 +02:00
Torsten Ruger
0f183b3a74
fix value return and test
...
slot load was wrong way around
2018-03-23 20:02:17 +02:00
Torsten Ruger
b4a18bc59b
mostly brackets and formatting
2018-03-23 18:55:23 +02:00
Torsten Ruger
c51e593335
test return in interpreter
...
passes but does not return. dodgy
2018-03-23 11:36:20 +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
34903829ca
fix interpreter test harness and start testing
...
interpreter on debug for now
2018-03-22 18:54:40 +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
71c59e5bc0
remove calls from tests that don't test call
2018-03-21 16:11:57 +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
b4489b1093
rename RiscTransfer to Transfer
2018-03-21 15:48:04 +05:30
Torsten Ruger
fa797f722d
to_risc for NotSameCheck
...
which is only used in call cache checking
some fixing, needed to add a abel for the cache check jump
2018-03-21 12:38:28 +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
8bac096f74
fix while statements each
...
wasn’t picking up condition
2018-03-20 13:29:18 +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
ed902c343c
fix ivar test by actually creating ivar first
...
nice to know one gets errors for using an ivar that was not assigned to
2018-03-18 22:38:49 +05:30
Torsten Ruger
e2729513ed
tracking ivar bug
2018-03-18 22:38:00 +05:30
Torsten Ruger
8c53b4ab67
fix more api ripples from typed method
2018-03-18 22:37:43 +05:30
Torsten Ruger
9989cc12e0
fix ass tests
...
bit weak really, but pass
2018-03-18 22:37:15 +05:30
Torsten Ruger
af94d40cab
passing frame (locals) into method creation
...
so typed_method have correct frame information and
can resolve slots correctly (next step)
2018-03-18 22:09:27 +05:30
Torsten Ruger
be79388cc5
remove dead code
2018-03-18 10:50:37 +05:30
Torsten Ruger
c5ec532616
use common list for risc instruction
...
strange that that was not done before as the code was clearly copied
when extracting it
Fix bug for insertion
2018-03-18 10:36:01 +05:30
Torsten Ruger
9c052c78a7
fix most of slot_load to_risc
...
higher orders not working yet
2018-03-17 21:32:09 +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
0978533d36
remove doubles
2018-03-16 20:13:04 +05:30
Torsten Ruger
f50327eb94
dynamic call green
2018-03-16 20:02:22 +05:30
Torsten Ruger
ba3ec9b1a2
everything but dynamic dispatch
2018-03-16 19:39:35 +05:30
Torsten Ruger
d01bdf5dc5
return works
2018-03-16 19:26:27 +05:30
Torsten Ruger
259b248588
ifs working
2018-03-16 19:05:22 +05:30
Torsten Ruger
da0e1cdc5f
simple sends and all whiles working
2018-03-16 18:41:17 +05:30
Torsten Ruger
35a0952943
first while test working
...
fixed logic error in test framework
2018-03-16 12:33:11 +05:30
Torsten Ruger
ea882f403a
pass parfait method to to_mom
...
previously it was the toll incarnation, and that is almost the same
But for the type of self. This s by definition only known in the
parfait method
And we need it off course for type checking/dispatch
2018-03-16 11:03:29 +05:30
Torsten Ruger
3909bdcc7d
method tests working again
2018-03-16 10:32:11 +05:30
Torsten Ruger
1def69c783
simple send test works again
2018-03-15 21:54:03 +05:30
Torsten Ruger
9b4fcf0e0f
locals work
2018-03-15 20:56:27 +05:30
Torsten Ruger
ff6d84a09b
ivar tests work
...
bit of slot find replace
2018-03-15 20:55:23 +05:30
Torsten Ruger
4a79d20a40
remove duplicate tests
2018-03-15 20:51:46 +05:30
Torsten Ruger
79bf416e58
collapsed slot classes into one
...
different slot operation have different right sides
mom assignment tests work again
157 others don’t
2018-03-15 20:33:38 +05:30
Torsten Ruger
3247c2036c
moving from collect to each
...
when iterating over tree.
Much cleaner, less hokuspukus methods that are noops
Mom is coming back out, but not linked yet
2018-03-15 17:22:56 +05:30
Torsten Ruger
3702411043
first propper hoisting test
...
had to change course, normalising and object creation is not possible
in one go
have to now generate random tmp vars that will have to be picked up
later (sorted by tmp_ prefix?)
2018-03-15 12:46:56 +05:30
Torsten Ruger
9ddcb3224c
rename
2018-03-15 11:32:32 +05:30
Torsten Ruger
78ef1368de
introducing expressions and constants
...
not everything statement anymore (as in ruby)
basic statement tests working, rest havoc
2018-03-15 11:24:14 +05:30
Torsten Ruger
163cad456f
random tries
2018-03-15 10:46:17 +05:30
Torsten Ruger
03a4e04f7e
rename self to receiver
...
just because it is a keyword and can’t be used
2018-03-14 20:26:13 +05:30
Torsten Ruger
559a797100
rename locals to frame
2018-03-14 20:24:47 +05:30
Torsten Ruger
7db329fa6b
actually adding risc instructions
...
fix test harness
1 working test (yeh)
2018-03-14 17:41:09 +05:30
Torsten Ruger
2aa7d37a83
rename locals to frame
...
includes temps and tradition
2018-03-14 17:39:04 +05:30
Torsten Ruger
96800fd8fd
starting to_risc descent
...
just fleshing it for now
2018-03-13 16:16:06 +05:30
Torsten Ruger
b297650b78
adds a mom version of basic values
2018-03-13 12:30:51 +05:30
Torsten Ruger
45bfe118d1
simple mom test for simple call
2018-03-12 18:16:23 +05:30
Torsten Ruger
c806106917
simple test for dynamic call
2018-03-12 18:13:26 +05:30
Torsten Ruger
e6e8522b4e
fix order of pops
...
slightly embarrassingly was popping (from the end)
rather than shifting (from the start)
2018-03-12 18:13:07 +05:30
Torsten Ruger
e0f6ba7bcf
simple if test without else
...
unveils many a bug that is now fixed
2018-03-12 17:56:44 +05:30
Torsten Ruger
d910c02b4a
better name for cool compile
2018-03-12 17:23:16 +05:30
Torsten Ruger
5fe0ba06ab
stash old vm
...
moving on to getting mom to work and can’t have both
interpreter and elf broke, about 100 tests went
2018-03-11 17:02:42 +05:30
Torsten Ruger
d6a2ea4cfc
fix dynamic resolve
...
patch more like, real resolve method will have to be written
and put in there
2018-03-10 19:01:38 +05:30
Torsten Ruger
3a365c779a
setup to resolve method dynamically
2018-03-10 18:47:36 +05:30
Torsten Ruger
dae17e0c18
always slot definitions in slot loads
2018-03-10 18:04:04 +05:30
Torsten Ruger
bc5906fb83
moving vool_method to parfait
2017-12-10 20:47:26 +02:00
Torsten Ruger
b7701d0d5e
start on dynamic call
2017-12-05 21:46:37 +02:00
Torsten Ruger
ba304f51df
using sof again, now rxf
2017-10-05 16:41:45 +03:00
Torsten Ruger
c3318f8f61
send refactor, green by stubbing
2017-09-14 18:42:01 +03:00
Torsten Ruger
2739747453
a start on dynamic dispatch (wip)
2017-09-14 16:07:02 +03:00
Torsten Ruger
be1481ce34
some renaming, start on cached
...
cached stalled for now, continue down to rise with what is first
2017-09-12 17:49:42 +03:00
Torsten Ruger
a3a31ba38d
fixing rest of the send test cases
2017-09-11 21:30:28 +03:00
Torsten Ruger
8598257a98
first send test to work again
2017-09-11 14:23:30 +03:00
Torsten Ruger
94ca8da354
improve mom assignment tests
2017-09-10 19:48:46 +03:00
Torsten Ruger
1a9370ad14
fix moms ivar assignment
2017-09-10 13:33:32 +03:00
Torsten Ruger
c245acbdd3
fix slot_moves for sending, receiver and args
2017-09-10 13:14:51 +03:00
Torsten Ruger
43d660d2d2
fix slot moves for assignment
2017-09-10 13:04:36 +03:00
Torsten Ruger
66901eeb5b
fix use of slot_constant vs slot_move
...
wip
2017-09-10 12:57:25 +03:00
Torsten Ruger
a523af14f1
fix mom assignment test
2017-09-10 12:36:16 +03:00
Torsten Ruger
c5ac24c850
check the instructions that are produced in mom
2017-09-09 23:36:43 +03:00
Torsten Ruger
d86282b007
flattening of moms while
2017-09-08 13:22:20 +03:00
Torsten Ruger
0f83b89805
correct flattening for moms if
2017-09-08 13:12:24 +03:00
Torsten Ruger
9189e56e77
testing for arrays in all the wrong places
2017-09-07 08:17:13 +03:00
Torsten Ruger
b5ca886069
moving helper for all to use
2017-09-07 08:16:37 +03:00
Torsten Ruger
80c3430536
replace arrays with Statements class
2017-09-06 12:51:24 +03:00
Torsten Ruger
9a1e4a6f27
own statements class for mom
...
so we don’t have to deal with arrays (as a special case)
and use method sending as is good oo
2017-09-06 12:33:46 +03:00
Torsten Ruger
af85cb7c67
adds mom while
...
much like the if, difference will show later in the jump arrangement
2017-09-05 12:04:52 +03:00
Torsten Ruger
65ba867aa9
cleanup
2017-09-04 21:32:01 +03:00
Torsten Ruger
1a219a7c89
introduce slot_definition and use it
2017-09-04 21:31:49 +03:00
Torsten Ruger
4f3a4387fc
renaming to_mom tests and improve guard
2017-09-04 21:00:29 +03:00
Torsten Ruger
112ec26bd1
deprecating ruby package
...
to be replaced by vool and mom
2017-08-31 16:18:59 +03:00
Torsten Ruger
0b161ffa06
move ruby_method out of rubyx
...
ruby getting ready for destruction as it’s not used anymore
2017-08-31 16:11:06 +03:00
Torsten Ruger
d5a63ec431
rename one ruby compiler to differentiate
2017-08-31 14:18:12 +03:00
Torsten Ruger
cd2988f8a2
fix condition if
2017-08-30 22:54:03 +03:00
Torsten Ruger
8d16ef0ae0
test ruby method tmp creation
2017-08-30 22:35:10 +03:00
Torsten Ruger
c3939ef622
start better if mom test
2017-08-30 22:27:12 +03:00
Torsten Ruger
349dd37c82
small refactor
2017-08-30 18:23:54 +03:00
Torsten Ruger
b6fa8261e6
first stab at moms if
2017-08-30 17:21:13 +03:00
Torsten Ruger
ffd7a32ae3
fixed test name
2017-08-29 19:31:42 +03:00
Torsten Ruger
670ebd06cc
remove traces of salama
2017-08-29 18:38:51 +03:00
Torsten Ruger
e40346b246
one more send mom test
2017-08-29 18:28:25 +03:00
Torsten Ruger
bbc13946ed
implements self sent
...
with explicit and implicit self
2017-04-25 09:40:09 +03:00
Torsten Ruger
47683817ee
implements resolve_method on parfait type
...
with associated changes to class
adds note about the not being the final version
2017-04-25 09:06:49 +03:00
Torsten Ruger
e387bdb5f2
fixes parfait/type tests place and guard file accordingly
...
test were in old directory and guard file broken accordingly
2017-04-23 18:43:32 +03:00
Torsten Ruger
dda2ddd9fb
rename test to avoid clashes
2017-04-23 17:50:06 +03:00
Torsten Ruger
3e282c083d
introduces compile time type (ct_type)
...
to determine whether we can call directly
2017-04-19 20:59:13 +03:00
Torsten Ruger
d2fba19b95
fixes simple argument passing
2017-04-16 11:39:21 +03:00
Torsten Ruger
0d43987005
start to compile send
...
still very hacked version of simple call, but a start
2017-04-15 20:58:39 +03:00
Torsten Ruger
265b25d5f4
introduce return_sequence instruction to mom
2017-04-14 21:01:50 +03:00
Torsten Ruger
68944a0168
restrict tests to test dir
2017-04-14 20:37:47 +03:00
Torsten Ruger
d0df1a2e28
more remote debugging
2017-04-14 14:38:23 +03:00
Torsten Ruger
d2c64020fc
conditionally start simple_cov
...
slightly mixed messages from the travis and local output.
Also cc docs unclear, trying around
2017-04-14 13:42:50 +03:00
Torsten Ruger
d3f79a1220
use bundler to run tests on travis
2017-04-14 13:32:11 +03:00
Torsten Ruger
21b436c476
update parfait message according to boot
...
most of the attributes are not used at compile time ,
so they did not get updated. But the compiler uses the attribute
names (which are correct as they are set in boot), so it’s nice
to actually see them in ruby too.
2017-04-14 11:13:47 +03:00
Torsten Ruger
c885888f4a
start implementing return for constant
2017-04-14 10:52:23 +03:00
Torsten Ruger
73b7e2b22f
remove all test_all
...
Stop manually creating the list of tests (and searching missing).
Main level test_all does a search for all test_*
also possible to run by command line with starts
2017-04-13 17:00:56 +03:00
Torsten Ruger
9dd4409009
implements argument assignment
2017-04-13 14:14:43 +03:00
Torsten Ruger
d2d845266e
remove code that was moved to support helper
2017-04-12 20:58:40 +03:00
Torsten Ruger
be10e8c6af
set up ivar_assignment correctly
...
for statement tests
and write mom tests
also implement to_mom
and fix local (self) bug
2017-04-12 20:29:45 +03:00
Torsten Ruger
87133722b3
get guard to run several test on one change by setting up names accordingly
2017-04-12 20:18:41 +03:00
Torsten Ruger
21e426be71
finishes local assignments to_mom
2017-04-12 14:45:02 +03:00
Torsten Ruger
9c499c7a19
actually start doing something in to_mom
...
though still dummy
2017-04-12 11:53:02 +03:00
Torsten Ruger
1deca34c23
adds basic to_mom machinery for class and method statement
2017-04-12 11:52:23 +03:00
Torsten Ruger
a4b0666c8c
makes method_statements body always a scope_statement
2017-04-12 11:51:29 +03:00
Torsten Ruger
0d96f5e35f
rearranges test helper modules
2017-04-10 16:12:15 +03:00
Torsten Ruger
0233e91355
basic mom directory structure and a readme
2017-04-10 11:47:18 +03:00
Torsten Ruger
b2775455e1
more class creation tests
2017-04-09 10:14:28 +03:00
Torsten Ruger
397eca541a
fix class statements to always have Statements as body
...
not sometimes an array, which sits badly in the tree of statements
2017-04-09 09:59:21 +03:00
Torsten Ruger
af196c17d3
test correct instance_type creation
...
so ivar collection happens
and a type is created from the names
2017-04-08 19:20:11 +03:00
Torsten Ruger
c7978c22d4
improves method compiler tests
2017-04-08 17:29:53 +03:00
Torsten Ruger
f8b3fa1877
creates methods from method statement
2017-04-08 17:22:53 +03:00
Torsten Ruger
b0e3978b15
starts on local variable collection
...
500 tests (in under 2 seconds), yippie
2017-04-08 12:28:31 +03:00
Torsten Ruger
ea41f9cae9
fixes ivar collection
2017-04-08 12:18:10 +03:00
Torsten Ruger
d00fbb233e
adds ivar collection with tests
2017-04-08 12:11:52 +03:00
Torsten Ruger
8942f42310
adds collect for the statements
2017-04-08 12:10:42 +03:00
Torsten Ruger
db8f99409b
move vool statements into own directory
...
also tests for guard to work
2017-04-06 19:11:11 +03:00
Torsten Ruger
b9caad937a
rename bools compiler to ruby_compiler
...
as that is what is does, compile ruby strings into vool st
2017-04-06 15:36:41 +03:00
Torsten Ruger
3683aa8976
vool method fix
2017-04-06 14:02:18 +03:00
Torsten Ruger
bc0b71d0cd
test local variables
...
need the assignenment first in the same scope so parser knows its a lvar
2017-04-05 14:03:36 +03:00
Torsten Ruger
de8b48975b
adds logical statements to vool
2017-04-04 18:35:15 +03:00
Torsten Ruger
d6e346d9c0
adds instance assignment to vool
2017-04-04 18:10:28 +03:00
Torsten Ruger
73964aeb6e
adds modules to vool
2017-04-04 18:00:21 +03:00
Torsten Ruger
5f70067fa0
adds instance and class variables to vool
2017-04-04 14:04:35 +03:00
Torsten Ruger
83ab197d03
fix and test vool return statement
2017-04-04 10:42:20 +03:00
Torsten Ruger
c545bfdfc6
adds while statement to vool
2017-04-03 11:49:21 +03:00
Torsten Ruger
5335d08408
more condition tests
2017-04-02 22:52:31 +03:00
Torsten Ruger
ffbe39d571
order test requires
...
easier to spot missed tests (when guard and cmd-line differ)
2017-04-02 22:42:51 +03:00
Torsten Ruger
16a55d9f95
include same directory helpers
...
(not one above as falsely was)
2017-04-02 19:13:14 +03:00
Torsten Ruger
f343ad934c
a start on conditionals
2017-04-02 19:12:42 +03:00
Torsten Ruger
443fd13980
adds super
...
with and without args
current thinking is to fill the name of the method later as we carry no
context currently, but this may change
2017-04-02 18:42:52 +03:00
Torsten Ruger
ac7b9138ff
bit of cleaning
2017-04-02 18:25:30 +03:00
Torsten Ruger
539ab692a3
add scope and kwbegin
...
scope is just a list of statements
2017-04-02 13:24:09 +03:00
Torsten Ruger
27e4e9f501
add assignment and self
2017-04-02 12:59:07 +03:00
Torsten Ruger
d62e996f7c
add send statement
2017-04-02 12:57:05 +03:00
Torsten Ruger
93f9d16209
add vool hashes
2017-04-02 10:57:39 +03:00
Torsten Ruger
d5af6dad42
adds arrays to vool
...
also symbols and some cleanup
2017-04-02 10:43:22 +03:00
Torsten Ruger
8f03d98330
adds basic values (bools ints strings)
2017-04-02 09:44:56 +03:00
Torsten Ruger
34fdf7b2cd
adds method_statement to vool
2017-04-01 16:27:32 +03:00
Torsten Ruger
295782d9e6
start on vool, the virtual oo language
...
start with syntax tree, not linked into existing code until finished
2017-04-01 15:57:39 +03:00
Torsten Ruger
b756d275e4
update collector to estimate bootstrap size
2017-01-19 09:08:59 +02:00
Torsten Ruger
aa79e41d1c
rename register to risc
...
seems to fit the layer much better as we really have a very reduced
instruction set
2017-01-19 09:02:29 +02:00
Torsten Ruger
da5823a1a0
move parfait up one, as per its module structure
2017-01-18 20:09:43 +02:00
Torsten Ruger
7abd777d05
rename melon to rubyx
...
melon was still from the salama days and rubyx describes it much better
2017-01-18 00:05:36 +02:00
Torsten Ruger
48d32a2b8e
hello world in ruby works
...
doesnt do much dynamic things though
2017-01-17 21:27:20 +02:00
Torsten Ruger
10d75e136f
defining constants in melon to match classes in vm
2017-01-17 21:26:28 +02:00
Torsten Ruger
9c83423e50
bug hunting for class recreation
2017-01-17 21:25:58 +02:00
Torsten Ruger
cd211f970f
make method creation class methods in MethodCompiler
...
and pass the wish to use main explicitly, which is really a test
feature
2017-01-17 21:23:58 +02:00
Torsten Ruger
0c64e367d5
rename compiler test accrding to convention
2017-01-17 21:22:53 +02:00
Torsten Ruger
7223ca9a1c
clean and refactor
2017-01-16 17:44:34 +02:00
Torsten Ruger
091900ef1c
move test helpers up, so they can be used in Melon too
2017-01-16 17:43:39 +02:00
Torsten Ruger
4ba182a822
rename compilers to passses
2017-01-16 17:24:32 +02:00
Torsten Ruger
8dbbffd58e
fix tests for NameExpression split
...
also necessitates giving method name without the wrapping expression
which is simpler anyway
2017-01-16 09:34:47 +02:00
Torsten Ruger
96f19d18c0
starting on ruby send
2017-01-15 20:30:47 +02:00
Torsten Ruger
cf0a123866
boot_function test
2017-01-15 20:04:52 +02:00
Torsten Ruger
fc96f1d2da
checking classes don't get created twice
2017-01-15 16:59:29 +02:00
Torsten Ruger
83f2459a8a
implement ivar assignment
2017-01-15 14:44:23 +02:00
Torsten Ruger
85eec2f3cb
adding instance variables to class
2017-01-15 14:21:57 +02:00
Torsten Ruger
8b364eb566
fixing tests for assignment split
2017-01-15 13:01:44 +02:00
Torsten Ruger
a0cf5bffc0
small rename to align has_locals and has_arguments
...
for semantic and code unification
2017-01-15 12:59:03 +02:00
Torsten Ruger
4095bb397f
starting to create vm_method from ruby_method
...
issues galore though
2017-01-15 12:10:37 +02:00
Torsten Ruger
9eeb9f65f3
add normalizing and method compilation phases (empty)
2017-01-14 20:30:19 +02:00
Torsten Ruger
1c2b6d103c
move one more test file
2017-01-14 20:10:34 +02:00
Torsten Ruger
2e62c5bbb6
create compilers directory, found and renamed salama.rb
2017-01-14 20:05:58 +02:00
Torsten Ruger
01fe3b4b04
small rename
2017-01-14 19:52:16 +02:00
Torsten Ruger
bd78a2d555
renames Typed to Vm
2017-01-14 19:28:44 +02:00
Torsten Ruger
75c7ca950e
bit more method collector/creation testing
2017-01-13 22:16:06 +02:00
Torsten Ruger
3f6c1bc3a3
manage to create ruby methods
2017-01-12 20:38:04 +02:00
Torsten Ruger
89f5badc16
putting melon tests into module and splitting to one per file
2017-01-11 19:18:04 +02:00
Torsten Ruger
83d943afa5
Fix for call changes and helper changes
2017-01-04 21:38:38 +02:00
Torsten Ruger
0084406cfd
let check return and assert in main test
...
so one can better locale the error
(the assert in the helper does not give stack trace)
a shot at keeping the calling handshake out of the asserts failed
2017-01-04 21:38:03 +02:00
Torsten Ruger
49da77f996
fix interpreter tests to use classes (not strings)
...
and fix for the change in call sequence
2017-01-04 21:36:46 +02:00
Torsten Ruger
3f24409093
us the actual classes for expected results
...
If i remember strings were only used to shorten the names
Now in register module this is not neccessary
2017-01-04 21:35:50 +02:00
Torsten Ruger
f2c4e542ac
rename to to array function to to_arr
2017-01-04 21:32:09 +02:00
Torsten Ruger
88eae0e6f0
add colour output to tests
2017-01-04 21:31:03 +02:00
Torsten Ruger
8aee761b73
putting tests into module
2017-01-03 22:42:40 +02:00
Torsten Ruger
da58ce30e3
put arm tests in arm module
2017-01-03 22:37:55 +02:00
Torsten Ruger
a14a0de9d1
put everything into register module (avoid clashes)
2017-01-03 22:37:25 +02:00
Torsten Ruger
d94af2a724
align method compiler test names
2017-01-03 22:32:34 +02:00
Torsten Ruger
66f359a14f
move expression tests to standard dir for guard
2017-01-03 22:18:41 +02:00
Torsten Ruger
3b0c5c00ce
move tests to correct directory for guard to pick them up
2017-01-03 22:10:58 +02:00
Torsten Ruger
82ff8244cf
thougth i'd got that one
2017-01-02 01:02:07 +02:00
Torsten Ruger
7602fd0af4
fix positioned tests
...
thanks to codeclimate
the broken tests were still raising errors, just the wrong ones, but
coverage shoed it!
2017-01-02 00:53:28 +02:00
Torsten Ruger
cd474f66f6
stop including positioned
2017-01-01 21:52:35 +02:00
Torsten Ruger
b8b387d498
some extra assembler tests
2017-01-01 21:51:23 +02:00
Torsten Ruger
06cfbdf066
minor
2017-01-01 21:50:54 +02:00
Torsten Ruger
b7147b3dd4
simple collector test
2016-12-31 21:05:19 +02:00
Torsten Ruger
86dafccb04
stop including padding
...
use it as a helper module
2016-12-31 20:08:33 +02:00
Torsten Ruger
dccd097fef
remove collecting from the machine
...
use as stand alone module
2016-12-31 19:54:18 +02:00
Torsten Ruger
113b349af5
unlinking the objects collection from the machine
...
passing it around instead
2016-12-31 18:46:17 +02:00
Torsten Ruger
7bb1c361a5
small word test
2016-12-31 15:17:45 +02:00
Torsten Ruger
a2ece04b6d
a little more minimal elf tests
2016-12-31 15:08:32 +02:00
Torsten Ruger
b9073d0c88
redid the type hashing
...
account for the class the type is for
by adding it to the hash code, so even the ivars are identical the
types are not
2016-12-31 14:51:06 +02:00
Torsten Ruger
0fa7f54bcc
found and fixed hashing bug
2016-12-31 14:04:04 +02:00
Torsten Ruger
d6c503ecf4
inlined indexed into list
...
which was the only one using it.
A whole lot simpler, considering it will have to be bootstrapped someday
2016-12-30 21:00:18 +02:00
Torsten Ruger
e80d028f7b
test to check that types are types
...
which led to dictionary bug
2016-12-30 20:48:14 +02:00
Torsten Ruger
7f06e00ccd
making types private in space
...
turned out to be unnecessary, but still better
2016-12-30 20:47:28 +02:00
Torsten Ruger
ef66a87527
fixed silly dictionary bug
...
also finally duplicating keys and values and not handing them out
2016-12-30 20:46:18 +02:00
Torsten Ruger
83b6628f1a
whitespace and code style
2016-12-30 19:17:15 +02:00
Torsten Ruger
a82c9e8fb1
minor whitespace and renaming
2016-12-30 18:39:49 +02:00
Torsten Ruger
f0350601a7
Move the space instance to the parfait module
...
A better fit, maybe even a pattern for singletons
2016-12-30 14:10:49 +02:00
Torsten Ruger
a00f6be3ba
remove the space instance from register machine
...
bad design, probably from the booting
2016-12-30 14:04:59 +02:00
Torsten Ruger
ef872edd7a
rename instance_methods to just methods
2016-12-30 13:33:07 +02:00
Torsten Ruger
631038dfbd
add another test (still failing)
2016-12-30 13:15:08 +02:00
Torsten Ruger
d8289d4fcf
try spelling correctly
2016-12-30 11:59:38 +02:00
Torsten Ruger
8aae8f7425
disabling failing test for now
...
have to add more test and code climate will show where
2016-12-29 21:24:11 +02:00
Torsten Ruger
e69d9a492e
mostly moving to ruby instance variables
2016-12-29 18:51:24 +02:00
Torsten Ruger
e3de4efe02
fixing the tests from all the previous changes
2016-12-29 18:50:10 +02:00
Torsten Ruger
b5f04ec718
mostly renames from the type change
...
also making setters as explicit set_xx methods
2016-12-29 18:45:32 +02:00
Torsten Ruger
4c3007e6c0
removing meta class (for now)
2016-12-29 18:39:59 +02:00
Torsten Ruger
80237e5033
rename position accessor
...
for future
2016-12-28 21:40:06 +02:00
Torsten Ruger
8cfcb84c8d
collect missing tests (and ordering)
2016-12-28 19:31:17 +02:00
Torsten Ruger
af31774074
implement assignment type check
2016-12-28 19:20:16 +02:00
Torsten Ruger
9cf56b3aa6
use factory functions consistently to create instructions
2016-12-28 19:01:58 +02:00
Torsten Ruger
7d29a85187
remove legacy :int type
2016-12-28 18:25:14 +02:00
Torsten Ruger
4412eda105
small refactor and rename
2016-12-28 18:16:39 +02:00
Torsten Ruger
25ae6e3d26
remove next_list from NamedList
...
Was legacy from the days of (linked) Frames
Now only messages are linked
2016-12-28 18:08:07 +02:00
Torsten Ruger
266764be06
testing to_s on Code
2016-12-28 13:59:02 +02:00
Torsten Ruger
9fb89e09f3
fixes for tighter argument handling
2016-12-27 20:41:01 +02:00
Torsten Ruger
7462d0c486
lots more ripples from changing calling convention
2016-12-27 20:40:37 +02:00