Commit Graph

2809 Commits

Author SHA1 Message Date
Torsten Rüger 7c91a08d5b Fix vool assignments after call rework
also small fix for if and return, as they need to execute sneds and yields (not just sends), so testing for Call not SendStatement
2019-08-16 20:39:08 +03:00
Torsten Rüger e6c30d98fb Fix if statements hoisting, now that send is working
Same same, just have to remembe to actually execute the condition if it is a send
Having send a possible expression, removes one tmp variable and associated move, for a little extra work.
Next return and assign (rest)
2019-08-16 18:42:57 +03:00
Torsten Rüger dee1e24c28 Fix ruby receiver to vool
for chained calls to be normalized correctly
2019-08-16 16:05:45 +03:00
Torsten Rüger c213cf874b Fix ruby normalising to_vool
So that vool layer never has complex conditions or returns
Start with while, next if, return and assign
2019-08-16 14:20:06 +03:00
Torsten Rüger 84b9811e55 Fixing ruby send with arguments
When send has complex args, mostly more sends, we hoist those out and pass created temporary variables
2019-08-15 21:30:36 +03:00
Torsten Rüger 31ae0a9670 Add support for unless
ifs without a true branch would crash before
Somewhat more verbose but unified
2019-08-14 22:24:35 +03:00
Torsten Rüger d6c38d15ba Fix calling unknown methods
Before, when the type was determined, it was assumed that the method can be resolved. But off course tis is not true, as methods may be defined later in the file.
Two solutions for that. One could  (and should) define all methods and only then start to compile. Thus having the type safety.
Or (as now) make a dynamic call and let it fail at runtime.
2019-08-14 14:59:54 +03:00
Torsten Rüger 1dad6dee7a Merge branch 'new_mom' 2019-08-14 11:14:58 +03:00
Torsten Rüger b2260d856d And we are green again
After having over 600 failing tests at one point, this does feel good.
Even better, most of the risc/interpreter tests where i didn't change anything came gree without changing the tests. ie we have binary compatibility.
2019-08-14 11:11:26 +03:00
Torsten Rüger c13a8ceb11 all of mom and vool
with working block tests this time
2019-08-13 20:35:27 +03:00
Torsten Rüger 155c042009 Fix forgotten block compiler
Especially on the way down to risc
2019-08-13 19:32:17 +03:00
Torsten Rüger 8036b23593 Fixed more disabled tests 2019-08-13 11:14:36 +03:00
Torsten Rüger aaf169ad8d Fixed almost all but Interpreter
150 only failing, seems only 1 bug though
and one in linker
2019-08-13 00:13:29 +03:00
Torsten Rüger 9474932320 fixing risc collection tests 2019-08-12 16:12:17 +03:00
Torsten Rüger 9a2716280c Extracting the mom instruction from builtin modules
Since they were embedded at first (easier copy/paste) they now got own files, like their brethren
also mini tests for each instruction , nice start
2019-08-12 13:16:15 +03:00
Torsten Rüger fa0aa30386 Move builtin wholesale to Mom
Since Builtin generates risc, just like mom instructions, it was a design mistake to put builtin into risc in the first place. Now that borders are coming more into focus, it make much more sense to have the builtin in mom.
In fact the instructions should be moved out and a seperate invocation mechanism used , so functions can be parsed, not generated (wip)
2019-08-12 12:38:29 +03:00
Torsten Rüger a4b6f29834 Booting functions again and send test
both class and normal sending tests at vool / mom level
2019-08-12 11:57:32 +03:00
Torsten Rüger 2326081161 Now booting all original methods
Just need to refactor now
2019-08-12 11:31:47 +03:00
Torsten Rüger 91ddae2251 Start to convert integer operations
All apart from operators, which are its own thing
2019-08-12 11:08:09 +03:00
Torsten Rüger 97488c4e5b Transform builtin word functions
according to same schema
2019-08-12 10:45:07 +03:00
Torsten Rüger 3282e0ae06 transformed object builtins 2019-08-11 20:36:10 +03:00
Torsten Rüger 0725f02e9a starting to fix builtin
start at Object get_interna_word
using the pattern to replace the whole risc method with a single mom instruction. Copying the original risc code into the instrucitons to_risc
also adding some very basic tests
2019-08-11 14:31:00 +03:00
Torsten Rüger 0b59c95218 more test fixes and more to do 2019-08-10 21:59:31 +03:00
Torsten Rüger 213938075f fix most mom and risc apart
apart from things involving builtn, which is not yet conceptually solved (as it codes risc, not mom)
2019-08-10 21:30:00 +03:00
Torsten Rüger d5f89a4979 compile from mom compiler to risc 2019-08-10 12:42:47 +03:00
Torsten Rüger 5994cd3276 starting on mom to risc
some docs too
2019-08-08 12:19:27 +03:00
Torsten Rüger 82c9f1d97f more and better tests
especially vool
2019-08-08 12:18:36 +03:00
Torsten Rüger d5625a70d7 fix a whole bunch of vool to_mom
All but those requiring boot functions
2019-08-07 15:09:26 +03:00
Torsten Rüger 1237e079f7 Some vool starting to work again
disabling some rubyx compiler tests
2019-08-07 12:06:06 +03:00
Torsten Rüger 5d1d485565 move mom instruction up one
just like the risc one, also some basic tests
2019-08-06 20:44:39 +03:00
Torsten Rüger 66c2adda20 Copy risc compiler stuff to mom
Start to separate the layers. 
wip, just checkin in to see the following changes better
2019-08-06 18:33:27 +03:00
Torsten Rüger d3ed29520e Some docs 2019-08-06 17:42:15 +03:00
Torsten 3c0ba4f2ab Merge branch 'master' into new_mom 2019-08-01 09:20:34 +03:00
Torsten 7daf015ed2 small refactor 2019-08-01 09:20:08 +03:00
Torsten 6b1c316f04 add simple loop bench
fiddled with run numbers a bit
recording times with noop removed
results slightly worse than hoped
2019-07-31 21:18:03 +03:00
Torsten 8eb0ba0d81 fix benchmarks
up to 20 recursive fibo
had mixed add and calls for rubyx
2019-07-30 21:16:24 +03:00
Torsten 6273ab769c redid the old benchmarks
With #26 out of the way, was able to get meaningful rubyx benchmarks. Meaning loops large enough for the exec time to go significantly over the noop.
Did mruby too and as expected got much lower noop
2019-07-30 13:55:29 +03:00
Torsten ab87806d08 fixes #26
only recurse to 1k
then come up for air an go again.
Should allow for 1M objects on a 2k stack (previously exceptions at 3.6k)
2019-07-28 16:42:40 +03:00
Torsten 74f3420d45 added execute command and options
execute to compile and run
options to pass parfait factory levels in (as no gc)
2019-07-25 22:36:51 +03:00
Torsten 95af84e752 fixing test to pass
and extract own kind of same tests to bench
bench tests will need some loop, but not as large as c
2019-07-25 21:25:15 +03:00
Torsten 14c965360d a basic interpret command for cli
part of the benchmark effort
determine amount of objects
2019-07-25 21:23:55 +03:00
Torsten 00bf38a0e6 updating benchmarks
on the new machine, consistent
not rubyx yet
2019-07-23 20:14:28 +03:00
Torsten 861fa3203f updated qemu wuth buster
Also updated website
2019-07-23 12:08:06 +03:00
Torsten 27fc66a8ca adapted scripts for linux 2019-07-23 12:07:24 +03:00
Torsten fdb940e43f stashing 2019-07-22 15:21:16 +03:00
Torsten 1c4882c40d update parser
to get rid of warning
bundling (locally) to vendor
remove dead file
2019-06-01 21:01:11 +03:00
Torsten Ruger 1391667f6c still doing attr_reader, but closing #25
cattr still missing, but only one occurence. Later.
2019-03-07 11:00:18 +02:00
Torsten Ruger 5ed6a07083 better test for attr
still #25
2019-03-07 10:47:48 +02:00
Torsten Ruger 04720d4950 implement attr setter correctly
part of #25
still need to do for list and attr_reader
2019-03-06 11:21:09 +02:00
Torsten Ruger b4b1e6e13b start rewriting for parfait #25
just some infrastructure for now.
2019-03-05 20:36:40 +02:00