Commit Graph

1582 Commits

Author SHA1 Message Date
Torsten Ruger
99ced4369a adding Tue False and Nil Class to Parfait
and boot
2018-03-19 21:18:56 +05:30
Torsten Ruger
d195ef68da move the code to load a slot_definition to a register
so we don’t have to copy it.
2018-03-19 20:54:32 +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
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
46ed4285a2 filing at dependencies 2018-03-18 22:36:36 +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
0813312ddc using compiler_for to create all building compilers
unify api, create defaults and especially pass the right types into the
typed method creation
2018-03-18 22:08:35 +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
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
3fecdf54a5 always return slot definitions
fixing sends defs
2018-03-17 20:57:35 +05:30
Torsten Ruger
642f16b73a adding cache entry to parfait 2018-03-17 19:03:39 +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
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
0a9997f549 final rename remnant, green again 2018-03-14 20:29:51 +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
2533842204 add traceable dummies 2018-03-14 20:25:21 +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
79b4b07ac4 style 2018-03-14 17:39:49 +05:30
Torsten Ruger
6fe13fc2b7 fix insertion to account for chains 2018-03-14 17:39:31 +05:30
Torsten Ruger
2aa7d37a83 rename locals to frame
includes temps and tradition
2018-03-14 17:39:04 +05:30
Torsten Ruger
83d957377e more precise 2018-03-14 17:37:27 +05:30
Torsten Ruger
b854c075b2 move each slot instruction into own file 2018-03-14 17:36:55 +05:30
Torsten Ruger
a3890afc20 clean up requires a bit 2018-03-13 16:57:24 +05:30
Torsten Ruger
698de13d65 removes remnant 2018-03-13 16:52:31 +05:30
Torsten Ruger
20a88f9ac8 sorting mom instructions and statements into separate dirs 2018-03-13 16:51:33 +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
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
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
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
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
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
985dc9904d copied list code from risc instructions 2017-09-08 13:10:22 +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
0e51492430 introduce statement class for mom 2017-09-06 12:11:30 +03:00
Torsten Ruger
0e98179888 fold the mini check file 2017-09-06 12:08:44 +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
db1549e0ee Clarifying mom 2017-09-04 20:58:57 +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
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
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
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
70479f7074 update object file name to ruby 2017-04-14 14:47:22 +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
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
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
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
Torsten Ruger
3fe286b5ed enforces data encapsulation in vool tree
gets rid of attraccessor
2017-04-06 16:06:51 +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
488af5b8f7 small cleanup 2017-04-05 14:03:48 +03:00
Torsten Ruger
4de57dbe4d start a vool readme 2017-04-05 14:02:34 +03:00
Torsten Ruger
de8b48975b adds logical statements to vool 2017-04-04 18:35:15 +03:00
Torsten Ruger
91fdfb0c1e remove unused classes and cases from vool 2017-04-04 18:21:11 +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
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
b341c722fd copied stash over 2017-04-01 21:28:57 +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
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
f0c0128b38 improve to_code a bit
variable names mainly, some description
2017-01-18 12:24:15 +02:00
Torsten Ruger
a39fc76a12 create vm file to require vm parts 2017-01-18 08:45:42 +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
54b8a9f6de minor 2017-01-17 21:25:18 +02:00
Torsten Ruger
2a57a59c8e do not create already existing classes
wrong logic, also messes with parfait
2017-01-17 21:25:02 +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