Commit Graph

174 Commits

Author SHA1 Message Date
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
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
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
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
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
f4ce6d6253 starting to redo message_setup
apart from previous commits bug, it also needs to deal with
dynamic/static correctly
and while at it will do the getting from space
2018-04-05 12:24:49 +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
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
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
efcc33f8a1 get an elf written 2018-03-29 20:37:25 +03:00
Torsten Ruger
231025389a little cleanup
code climate inspired
2018-03-26 14:15:48 +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
bc4d4b428a change boot to new hash syntax 2018-03-25 13:27:15 +03:00
Torsten Ruger
19afc376f4 fix local name being string (not symbol) 2018-03-22 21:08:13 +05:30
Torsten Ruger
e0dd4e0ad7 test dynamic call
made cache labels unique
2018-03-21 21:58:43 +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
48485477c2 implement one more depth for slot_load
soon time to make some loop
fix offset with array / object layout difference
2018-03-20 23:31:20 +05:30
Torsten Ruger
8dc0950980 implement ArgumentTransfer
also unite with the receiver which was handled incorrectly
(left as a Vool constant)
2018-03-20 22:31:39 +05:30
Torsten Ruger
8bac096f74 fix while statements each
wasn’t picking up condition
2018-03-20 13:29:18 +05:30
Torsten Ruger
46ed4285a2 filing at dependencies 2018-03-18 22:36:36 +05:30
Torsten Ruger
e7b878a353 mostly finish index resolve in slot_definition
alas, it reveals error, types may not be set correctly
2018-03-18 10:51:46 +05:30
Torsten Ruger
3fecdf54a5 always return slot definitions
fixing sends defs
2018-03-17 20:57:35 +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
ad4690d719 move common statements into its only use in vool 2018-03-15 20:40:21 +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
2779045caa small rename 2018-03-13 16:44:39 +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
c806106917 simple test for dynamic call 2018-03-12 18:13:26 +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
f7aac1d1a4 polish docs
and a bit of code style
2018-03-11 16:11:15 +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
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
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
3c92e707da refactor 2017-09-11 14:23:06 +03:00
Torsten Ruger
afbcbca4da extracting some of the calling into own instructions 2017-09-11 14:22:33 +03:00
Torsten Ruger
b6939fe4b3 small rename 2017-09-11 14:21:57 +03:00
Torsten Ruger
0ccb7df0ab refactor send code 2017-09-10 22:54:56 +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
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
76a87dd418 extract hoisting to module
to be used in while statement
2017-09-05 12:04:12 +03:00
Torsten Ruger
1a219a7c89 introduce slot_definition and use it 2017-09-04 21:31:49 +03:00
Torsten Ruger
dab4e74659 Reworking if statement
Using 2 phase approach
Flattening tbd
2017-09-04 21:00:08 +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
cd2988f8a2 fix condition if 2017-08-30 22:54:03 +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
bbc13946ed implements self sent
with explicit and implicit self
2017-04-25 09:40:09 +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
c885888f4a start implementing return for constant 2017-04-14 10:52:23 +03:00
Torsten Ruger
9dd4409009 implements argument assignment 2017-04-13 14:14:43 +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
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
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
0fe5685ad4 makes own file for statement base class
adds some functionality to it
moves the requires from compiler there
2017-04-08 12:09:25 +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