Commit Graph

1754 Commits

Author SHA1 Message Date
Torsten Ruger
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
Torsten Ruger
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
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
22b1fea587 use rubyc_compiler as instance
not as before class methods
so we can carry the state around
2018-07-01 11:59:07 +03:00
Torsten Ruger
1505df894a remove translation
from machine, which is quickly becoming a linker
2018-07-01 11:58:06 +03:00
Torsten Ruger
05669065ca back to method_compiler
it is what it is
2018-06-30 23:26:28 +03:00
Torsten Ruger
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
Torsten Ruger
208b98d709 start to move translate code 2018-06-30 22:53:32 +03:00
Torsten Ruger
daf1b56062 start on class compiler
idea is to get cleaner layer seperation
reduce machine and rework builtin boot
2018-06-30 19:20:17 +03:00
Torsten Ruger
4a7cc72732 always list of methods in class
improve vool test dirs
2018-06-30 10:08:18 +03:00
Torsten Ruger
46d8f5002f hoist parfait boot out of the machine boot 2018-06-30 00:39:23 +03:00
Torsten Ruger
8d7a2fe4d6 fix mom tests
and always have a list inside a class
2018-06-29 23:29:10 +03:00
Torsten Ruger
5b87133df2 split rubyx tests
in vool and mom level
2018-06-29 23:04:50 +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
7377522417 fix test ripples and minor parfait naming
Parfait ruby and boot names desynced, fixed that
2018-06-29 21:03:06 +03:00
Torsten Ruger
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
Torsten Ruger
5036dd68df remove to_mom from ruby_to_vool
must have slipped in
affects mosty tests
2018-06-29 14:57:48 +03:00
Torsten Ruger
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
Torsten Ruger
e6f01748ff move adapter stuff around 2018-06-29 14:26:25 +03:00
Torsten Ruger
86b1edb40c add seperate builders
remove if with polymorphism for different builders
(easier to understand by naming)
2018-06-29 13:27:57 +03:00
Torsten Ruger
3dffebed3f rename a bit 2018-06-29 13:03:19 +03:00
Torsten Ruger
d50893bb0f rename risc_value to register_value
almost to register, but it still carries that value
2018-06-29 11:39:07 +03:00
Torsten Ruger
606c7bf906 remove booted flag
just boot if needed
2018-06-29 11:36:14 +03:00
Torsten Ruger
18994d2b4b start on yield statement 2018-06-28 20:15:24 +03:00
Torsten Ruger
f0ba863721 remove to_mom / create_objects dichotomy
wsa supposed to be clearer, but even to me seems confusing now.
2018-06-26 20:46:58 +03:00
Torsten Ruger
c6a903073a start on blocks 2018-06-26 20:28:27 +03:00
Torsten Ruger
4103da7490 small test fixes 2018-06-25 20:21:15 +03:00
Torsten Ruger
67a6ef9f67 add rewriting of operator assignment
foo += 1 becomes foo = foo + 1 in vool
2018-06-25 16:32:20 +03:00
Torsten Ruger
70d7e654c4 only check object file creation in efl
remote execution only per request
2018-06-25 00:39:13 +03:00
Torsten Ruger
b804be5f70 fix dynamic call
which had the method in the regsiter, not the binary.
Single SlotToReg added (and some tests)
Which amazingly fixed all broken binary tests
2018-06-25 00:19:43 +03:00
Torsten Ruger
068bda492c implement DynamicJump for Arm
which is in fact the same as return (moving address into pc)
2018-06-24 19:13:55 +03:00
Torsten Ruger
f83f52faa0 reusing ssh instance for arm
some speedup , but hoped for more
2018-06-24 17:44:02 +03:00
Torsten Ruger
c8a903cd83 adds arm testing of same files 2018-06-24 17:10:39 +03:00
Torsten Ruger
ae976c8fb9 generate mains test methods according to file name 2018-06-24 16:48:23 +03:00
Torsten Ruger
8d369dbfa1 automate mains test more
move sources and include exit code and stdout in filename
2018-06-24 13:37:36 +03:00
Torsten Ruger
563ed4647a extract the ruby from mains tests
move up in directory
in preparation for arm tests
2018-06-24 11:56:10 +03:00
Torsten Ruger
87be6bf9d5 add automated arm tests 2018-06-23 15:58:43 +03:00
Torsten Ruger
ce79617875 fix the exit sequence
was returning wrong register (1, not 0)
also saving the message for test, which changes order as the return value destroys the message
2018-06-19 19:52:06 +03:00
Torsten Ruger
5f7683efcf pass return integer back out through exit
for testing of binaries later (and off course general correctness)
Some tests were using the fact that the interpreter was used, changed those to return ints rather than strings
2018-06-19 18:55:47 +03:00
Torsten Ruger
db459fcd3d fix label loading in arm
was still loading the integer address
instead of the return address's address
Hello World working
2018-06-19 17:35:00 +03:00
Torsten Ruger
956c2ebe54 make arm use branch_lsteners 2018-06-19 10:51:03 +03:00
Torsten Ruger
046617f8dc add branch listener functionaliy
have to store the branches and loop again as labels
dont neccessarily have positions yet
2018-06-17 22:25:38 +03:00
Torsten Ruger
3298651238 split create_binary into two phases
Which gives instructions a chance to check everything
and in Arms case check the constant loads/ instruction adding
So that during assembly no more change happens (and we don't have to reassemble)
2018-06-17 13:53:17 +03:00
Torsten Ruger
c94f6eaa78 small maintanance 2018-06-16 21:01:15 +03:00
Torsten Ruger
7543236f4f objects didn't get positions
positions.empty? was wrong check
2018-06-16 10:58:54 +03:00
Torsten Ruger
698c845297 seperate position create and register
many test fixes
2018-06-15 22:00:49 +03:00
Torsten Ruger
9c93b38b8f crete positions while collecting objects
clear two phase lifecycle for positions
always created invalid and set later
new does not auto add to cache
but create and get_or_create do
2018-06-15 21:54:21 +03:00
Torsten Ruger
2c765c8f14 rename the objects accessor
and move to object keys, not object_id
2018-06-15 09:18:39 +03:00
Torsten Ruger
3cc9175efa start BranchListener
but on hold, since it needs positions before we have them
Must create them during collection phase
2018-06-14 21:29:34 +03:00
Torsten Ruger
eaaf61c117 fix position test 2018-06-14 21:19:22 +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
e1683938ed fix label positioning bug
where a label at the end of a binary code resulted in the
label actually taking up a position, instead of sharing it with it's next
2018-06-10 13:18:56 +03:00
Torsten Ruger
0513cd504f update return address in label
so return jumps go to the right address
2018-06-10 09:15:57 +03:00
Torsten Ruger
c7ad1d98ca introduce the LabeListener to move instructions along when first code position changes 2018-06-09 22:13:43 +03:00
Torsten Ruger
ec1d38f5a6 reimplement instruction listeners with indexes
easier to understand, as indexes map to Binarycode indexes, and can thus later be used to assemble directoy into the  code
Almost no change in tests (now only multiples of 4 addresses allowed)
2018-06-09 17:41:39 +03:00
Torsten Ruger
cf94227b2c fix code init bug
where initial pos wasnt propagated
2018-06-09 09:16:23 +03:00
Torsten Ruger
ad3040a846 add position_chaning to event interface
by reacting to the change _before it happens, we can move any BinaryCode out of the way

So when Instruction are inserted and code gets inserted, we don't need to set up the correct listener explicitly (which is tricky across mathods and changing chains), but instead just move anything that is in the way along
2018-06-09 08:10:41 +03:00
Torsten Ruger
74c15d45a3 some more mocking worked
some didnt
2018-06-08 20:43:36 +03:00
Torsten Ruger
5815d32bde make the instructions jump over the BinaryCode end 2018-06-07 19:27:44 +03:00
Torsten Ruger
2d218bbc48 work on jump insertion continues
Now registering CodeListener instead of PositionListener
Also instead of on the previous, in itself, which is simpler
and allows to react to insertion at end
2018-06-07 19:26:02 +03:00
Torsten Ruger
7fa8397b56 insertion pushes, split position tests 2018-06-06 10:19:18 +03:00
Torsten Ruger
c22aff4c4f start on insertion events and handling 2018-06-06 10:00:07 +03:00
Torsten Ruger
4789b63fcb fix the gapping of instructions
so last binary stays empty and new starts at 8
2018-06-06 01:16:00 +03:00
Torsten Ruger
4ab6d62acf small arm fixes etc 2018-06-06 00:53:41 +03:00
Torsten Ruger
d7b3368b28 fix some pesty errors
need to fix instruction overlap beofre interpreter starts again
2018-06-05 19:05:12 +03:00
Torsten Ruger
8d953a619f propagate instruction positions
still overlapping onto binaries, but a start
2018-06-05 18:11:25 +03:00
Torsten Ruger
f35ee6425a renaming and test fixing 2018-06-02 23:48:12 +03:00
Torsten Ruger
1d1c7105b4 introduce some helper methods 2018-06-02 23:02:59 +03:00
Torsten Ruger
c2d450f779 fold position module and object position
simpler that way, aslo code is moving to listners
2018-06-02 21:59:41 +03:00
Torsten Ruger
24f6e30b54 start on redoing instruction positions
using insruction listeners (wip)
2018-06-02 21:20:15 +03:00
Torsten Ruger
3bc35c2275 rework binary code positioning setup
dependency chain set up explicitly.
Next have to react to events correctly
2018-06-02 17:29:38 +03:00
Torsten Ruger
91c7903848 start simple with code listner 2018-06-02 16:34:44 +03:00
Torsten Ruger
aa6707337a positioning wip 2018-06-02 16:12:01 +03:00
Torsten Ruger
d1cc482f8f bit of test refactoring 2018-06-01 19:13:53 +03:00
Torsten Ruger
46fbfb7101 adds the simple object dependency
where the next object is dependent on the previous one
and just behind it, the padded_length away
2018-05-31 20:41:04 +03:00
Torsten Ruger
21a9c56ba9 change position event code to use util
general purpose event fireing
can then be used for several event types
2018-05-31 19:05:53 +03:00
Torsten Ruger
2544bc5a85 move position module to folder 2018-05-31 19:01:10 +03:00
Torsten Ruger
49849939a1 little event mechanism for changed positions 2018-05-31 17:01:23 +03:00
Torsten Ruger
0e155315aa movs is not allowed into pc
Illegal instruction it says
Otherwise the status update is nice (for branches) and we’ll keep
2018-05-31 14:03:25 +03:00
Torsten Ruger
67100a3ef8 write adjusted address
and rename integer to address in label
1k hurray
2018-05-31 00:07:58 +03:00
Torsten Ruger
e39e96f646 create return address as own class to hold return addresses
to distinguish from integer, which does not need adjusting
2018-05-30 23:49:01 +03:00
Torsten Ruger
e86ca5ae9d integer was wrong padded§ length
or rather right (2 as should be and will be)
but currently we use next AND value + type means 3, rounded 4
because we can’t swap types at compile time (as is planned at runtime,
we use next OR value)
2018-05-30 14:55:17 +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
01a2911483 using label int in interpreter 2018-05-30 11:49:29 +03:00
Torsten Ruger
0dc89c772a get the label int to work consistently
still need to use it in the return
2018-05-30 10:54:18 +03:00
Torsten Ruger
074ec34659 wip, fixed some label, need more fixing 2018-05-30 10:29:38 +03:00
Torsten Ruger
c55b41afae sort objects by class before positioning
since we don’t have pages yet, but want consistent layout
2018-05-29 20:52:58 +03:00
Torsten Ruger
e94c9ea37b add failfast
tired of waiting for the almost 1000 tests to run through, just to get
an error message
2018-05-29 20:40:02 +03:00
Torsten Ruger
296617cbaf set label integer to position 2018-05-29 20:30:02 +03:00
Torsten Ruger
8322fca7b3 give labels an integer that will end up being the position at runtime
Since integers are first class objects, we need to use an integer object
as the return address. The actual address can not be stored in an
instance variable since it is not an object.
The address is unique to the label and never changes after positioning
(using the int is next up)
2018-05-29 20:26:00 +03:00
Torsten Ruger
7847420d49 make ints compile time mutable
to change the label value and use the allocated stubs
2018-05-29 17:03:55 +03:00
Torsten Ruger
b81d9565de fix binary code offset when calling
in other words, remember the arm pipeline being 8
2018-05-29 17:03:20 +03:00
Torsten Ruger
4b34546c11 fixing the binary code indexes
AGAIN, that third of all bugs, the off by one
2018-05-28 18:20:09 +03:00
Torsten Ruger
8ef1a471a4 finally change List to derive from data object
can’t derive from data16 as some lists are longer
have to get the delegation to work first
2018-05-28 15:45:29 +03:00
Torsten Ruger
f9a89db10c use fake memory
fix integer offset bug
(which only didn’t cause errors as fixnums are still an order too big
and the famous +1 error hit the empty space)
2018-05-28 15:09:59 +03:00
Torsten Ruger
6c06f61ab8 start on fake memory
get index checks on the array access of parfait
2018-05-28 14:46:26 +03:00
Torsten Ruger
be1bc63ff2 jump was written off the end of binary code, fixed 2018-05-28 11:45:04 +03:00
Torsten Ruger
1c09d4202f fix all test
and thus all green, two weeks of side branch positioning  done
(luckily not on arm, but interpreter)
2018-05-25 20:40:39 +03:00
Torsten Ruger
c0cd1e0740 fix an issue where instruction was in wrong code
embarrassingly used instance variable where it should have been local
2018-05-25 19:16:13 +03:00
Torsten Ruger
6f0fad0957 dragging the extra through resets
as the binary the instruction is in may change when repositioning
2018-05-25 19:04:48 +03:00
Torsten Ruger
8d8cc4b016 more test fixing
only one bug to go
2018-05-24 21:20:56 +03:00
Torsten Ruger
bf23883270 busy fixing tests 2018-05-24 19:38:48 +03:00
Torsten Ruger
183d4152d5 loading label must translate the labels too
(psst: like arm translator already did. duh)
2018-05-24 19:20:06 +03:00
Torsten Ruger
dae8e88b7a recurring bug, don't save label positions
labels are ethereal, no length, so they don’t get to occupy a position
2018-05-24 16:26:56 +03:00
Torsten Ruger
8d510c2e7e getting instruction repositioning right
big bug hunt, involving complicated maths (%)
2018-05-24 14:27:53 +03:00
Torsten Ruger
0293320bb8 use a constant for the binary code offset
where the instructions start
2018-05-23 21:35:22 +03:00
Torsten Ruger
8ca70a6835 Steamline objectPosition init
check for resetting on the same position with different class, which
should not happen
Ie it’s ok for an object to push another object up,
but not for an instruction to land on code
2018-05-23 21:34:49 +03:00
Torsten Ruger
f5d1090c39 no-ops really 2018-05-23 18:06:55 +03:00
Torsten Ruger
a2e7d7c469 give interpreter a clock and pc
where the pc, like in cpu’s is the memory position.
That is what the interpreter works on.
But for humans, the clock is a simpler way to count where the program
is at, no. of instructions executed
2018-05-23 18:05:22 +03:00
Torsten Ruger
ef2dc932ad use positions in interpreter 2018-05-20 15:52:13 +03:00
Torsten Ruger
a7a62d53b2 use modified opal logger
logger was having bizarre format errors
copied and simplified (to get on)
2018-05-20 14:45:48 +03:00
Torsten Ruger
15e4533a2f fix interpreter to use positions
tick from one (simulated memory) position to the next
(not from one instruction to the next)
2018-05-17 20:14:59 +03:00
Torsten Ruger
8966a50a8a getter by position
extract and expand position testing
never return labels (that have the same position as their target)
2018-05-17 20:13:33 +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
49c4d170ce make the interpreter platform
but still using the risc_instruction stream
2018-05-17 09:31:36 +03:00
Torsten Ruger
07ed16d765 groundwork for interpreter platform
especially positioning makes the previous interpreter approach to
fragile (too far off the real thing)
Interpreter should be it’s own platform (still use the risc
instructions),
get a translator and use positions
2018-05-16 21:00:14 +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
e237bc625a remove unused methods
and a whole lot more index fixes
2018-05-14 20:50:52 +03:00
Torsten Ruger
5d3c70da89 fix type api
tests were using methods that were only used in tests.
2018-05-14 16:13:50 +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
ab01fa3862 switch to 0 based indexing
the world rocked for a moment (and more fixes to follow)
also the crumbling of idealism was heard
2018-05-14 11:55:01 +03:00
Torsten Ruger
4856b9891d simplify writing binary
loop as should be, fixes the problem (one problem at least)
2018-05-13 18:01:45 +03:00
Torsten Ruger
866467ee5e change binary labels 2018-05-13 17:21:48 +03:00
Torsten Ruger
39902401b9 positioning code by setting first method code
codes will initial (and on reset) propagate the whole chain
2018-05-13 15:28:10 +03:00
Torsten Ruger
7ad36380c2 add next_value for dictionary
also next for list
and add types attributes to space
2018-05-13 13:03:04 +03:00
Torsten Ruger
2d901bf7b6 not wrapping the cpu initial jump anymore
also introduce padding after cpu_init (wip)
2018-05-12 18:36:59 +03:00
Torsten Ruger
232fe67c09 introduce platform to abstract cpu and load address 2018-05-12 18:32:10 +03:00
Torsten Ruger
776a97986d fix instruction positioning
use at as at and only compute difference when needed (to determine if
there is a jump in binary)
Easier to understand that way
2018-05-11 18:36:45 +03:00
Torsten Ruger
bc1e29e4f6 seperate different Position classes into own files
also tests
and have Position module keep all positions
(singletons should be at module, not class level)
2018-05-10 20:56:12 +03:00
Torsten Ruger
1169fa7220 propagating binary code position on extend 2018-05-09 20:36:49 +03:00
Torsten Ruger
6a1528e75a Fix instruction resetting
which happens on insert of a new instruction
2018-05-08 20:53:48 +03:00
Torsten Ruger
7ca7e92dda remove link exception class 2018-05-08 20:22:04 +03:00
Torsten Ruger
cf06642768 start passing positions along inside the position code 2018-05-08 19:59:43 +03:00
Torsten Ruger
ce3cc72f9e move all position setting into position
Position and subclasses handle the logic, external to
the classes, so it can be swapped out later
(at runtime positions can’t change)
2018-05-07 22:30:43 +03:00
Torsten Ruger
68fb9b1bdc rename Position get/set 2018-05-06 20:04:02 +03:00
Torsten Ruger
415df49199 hand context into position 2018-05-06 00:34:59 +03:00
Torsten Ruger
6b7e1e3932 remove link exception raise
need to fix move logic next
2018-05-05 23:55:50 +03:00
Torsten Ruger
40f4bfc287 change to position objects complete 2018-05-05 20:25:10 +03:00
Torsten Ruger
3244c7d633 add position tests
and refactor padding out
2018-05-05 20:11:08 +03:00
Torsten Ruger
d65a982454 start by moving positioned(module) to position(class) 2018-05-05 19:47:18 +03:00
Torsten Ruger
43d5521cfc debugging positions 2018-05-05 19:32:01 +03:00
Torsten Ruger
d49d2665c5 reinit risc_init
fixes over 100 tests :-)
2018-05-01 22:36:46 +03:00
Torsten Ruger
06f51da8f1 rename get_all_methods 2018-05-01 19:19:37 +03:00
Torsten Ruger
1acd231a33 debugging binaries, initial jump issues 2018-04-30 13:28:55 +03:00
Torsten Ruger
d84d208192 implement assignment normalisation
especially when the value is a send that needs normalising
fixes several broken tests
2018-04-27 21:56:41 +03:00
Torsten Ruger
1685ba5a44 fix send normalisation 2018-04-27 21:55:41 +03:00
Torsten Ruger
672ccb351d fix argument hoisting
arguments in vool must be simple variables
finally did the hoisting to do that
2018-04-27 09:59:01 +03:00
Torsten Ruger
08d0aae79e refactor send vool tests 2018-04-26 20:26:42 +03:00
Torsten Ruger
26fe77ed68 add some multi method tests 2018-04-26 12:33:33 +03:00
Torsten Ruger
a8e7602193 extract setup for mains test 2018-04-26 12:33:19 +03:00
Torsten Ruger
a7207a9984 wrap parfait tests in module and boot 2018-04-26 12:31:37 +03:00
Torsten Ruger
30ba626cf9 fix knock ons 2018-04-24 20:16:50 +03:00
Torsten Ruger
6fc84d2f98 bit of renaming and a string test 2018-04-24 20:12:49 +03:00
Torsten Ruger
ee28d12429 bit more comparison testing 2018-04-24 19:57:14 +03:00
Torsten Ruger
2bd39bd3dd renaming 2018-04-24 19:46:22 +03:00
Torsten Ruger
ec5a7f8a02 implement larger/smaller or equal 2018-04-24 19:45:58 +03:00
Torsten Ruger
7a2160e9b4 fix comparison operator
< implemented <=
2018-04-23 19:39:16 +03:00
Torsten Ruger
ef5854c4df start larger tests 2018-04-23 14:05:37 +03:00
Torsten Ruger
1907574c60 bit of organising 2018-04-23 13:16:46 +03:00
Torsten Ruger
020bce740a more complex while test
that works, but does leave one wondering what is tested apart from the
result (1)
2018-04-20 19:38:33 +03:00
Torsten Ruger
6a8bb90704 test multiple assigns 2018-04-20 13:13:09 +03:00
Torsten Ruger
98f3898acd fix while tests 2018-04-20 10:27:06 +03:00
Torsten Ruger
bf6e0853ce fix while back jump
while normalising the condition had gone before the
jump target accidentally
2018-04-20 09:56:06 +03:00
Torsten Ruger
04359546b7 implement greater than 2018-04-19 22:57:31 +03:00
Torsten Ruger
be3d125b82 implement smaller than comparison
which is NOT an operator in the risc sense
rather a minus and a check for sign
(which _could be more efficient in arm, with conditional execution)
2018-04-19 22:41:40 +03:00
Torsten Ruger
9e21719aeb generalise the operator handling
ie passing them through
implementing more
2018-04-19 22:13:52 +03:00
Torsten Ruger
7d9132ee36 test other int methods
harness for testing compiler in a method (before just in a case)
2018-04-19 19:59:48 +03:00
Torsten Ruger
a98d7630fb start testing builtin seperately
in terms of output only
2018-04-19 19:47:35 +03:00
Torsten Ruger
1741ad540e move test helper code to support
to be reused
2018-04-19 19:33:40 +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
059ff4a868 pass a source into the builder
for debugging
2018-04-18 19:12:30 +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
e5d014b936 bit more regs, bit more resets 2018-04-08 22:29:08 +03:00
Torsten Ruger
33ffcf1d88 move resolve_method code from word to mom
rather make resolve an instruction.
Since it was coded in risc anyway, we not only save the setup and call
But also makes the mom instruction flow clearer
The method really came from not wanting to code it in risc, but with
the Builder, that is now surprisingly painless
2018-04-08 18:55:17 +03:00
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