Torsten Ruger
2c137e8c97
div10 test for interpreter
2018-03-24 12:21:46 +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
6721153456
fix return sequence
...
logic error of swapping messages too soon
simplify by folding message unto itself
thus only need one extra register for the address
2018-03-23 18:58:42 +02:00
Torsten Ruger
a306c464b7
start using tmp registers at 1
...
which used to be reserved for the next message
2018-03-23 18:57:16 +02:00
Torsten Ruger
472b1a638a
add register logging and fix function return
...
return semantics used to be different, now only register is given
2018-03-23 18:56:38 +02:00
Torsten Ruger
b4a18bc59b
mostly brackets and formatting
2018-03-23 18:55:23 +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
e505856af7
fix multi level right slot load
...
was done for left, but forgotten for right
2018-03-22 18:54:07 +02:00
Torsten Ruger
6e901e1718
allow setting the source for slot loads
...
so we can track more exactly which instruction created the risc
2018-03-22 18:45:03 +02:00
Torsten Ruger
9932d0bf33
add source to the to_s
2018-03-22 18:38:19 +02:00
Torsten Ruger
19afc376f4
fix local name being string (not symbol)
2018-03-22 21:08:13 +05:30
Torsten Ruger
769fd71a3d
fix redefining typed methods
...
as happens for predefined Space.main
2018-03-22 21:06:22 +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
b5ef929c9c
add method to risc function call
...
just so we still know at compile time
2018-03-21 19:05:53 +05:30
Torsten Ruger
a9196e9cd6
implement simple_calls to_risc
2018-03-21 18:54:42 +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
61a801b00c
Return to_risc
...
remove the index from FunctionReturn, just jump to the register address
2018-03-21 15:48:50 +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
b99fdc3425
rename jump label
2018-03-21 11:52:53 +05:30
Torsten Ruger
d98e55907e
first go at translating DynamicCall to risc
2018-03-21 11:51:10 +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
77084dc894
fix unconditional jump
...
and affected tests
2018-03-20 22:05:09 +05:30
Torsten Ruger
dba08ba8ce
small code climate inspired clean
2018-03-20 13:48:17 +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
63c1468e1e
bit of code docs
2018-03-19 21:19:46 +05:30
Torsten Ruger
cff6226297
own file for check
2018-03-19 21:19:26 +05:30
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
Torsten Ruger
7223ca9a1c
clean and refactor
2017-01-16 17:44:34 +02:00
Torsten Ruger
4ba182a822
rename compilers to passses
2017-01-16 17:24:32 +02:00
Torsten Ruger
5f7ea08a43
Splitting NameExpression into three, Known,Local,Argument
...
The decision which to use can be made higher up, in ruby, and so it
should.
2017-01-16 09:33:49 +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
680fc7ecce
minor fixes
2017-01-15 14:44:11 +02:00
Torsten Ruger
85eec2f3cb
adding instance variables to class
2017-01-15 14:21:57 +02:00
Torsten Ruger
f9824079d6
splitting assignment into three, for args, locals and ivars
...
The decision on which is moving up to the ruby compiler, so it can at
the same time emit the correct assignment form.
Just another example of moving away from a language and to an
intermediate form (that has no language equivalent)
2017-01-15 13:01:28 +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
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
9d36d72ee5
load arg type directly into the object
...
Was going through the method, but the type is just as constant and
saves 2 instructions 4 every call
2017-01-04 21:34:51 +02:00
Torsten Ruger
78f7420ef7
add locals type into the call preable
...
calling already sets the argument type
so now we set the locals type too- symmetry
(lots of tests affected)
2017-01-04 21:33:43 +02:00
Torsten Ruger
f2c4e542ac
rename to to array function to to_arr
2017-01-04 21:32:09 +02:00
Torsten Ruger
0383532cd4
the number keeps changing, but why
2017-01-03 22:56:00 +02:00
Torsten Ruger
1647b746ea
starting to rename to rubyx
2017-01-02 00:29:20 +02:00
Torsten Ruger
0397d4064d
fix all positioned uses as helper (not included anymore)
2017-01-01 21:52:55 +02:00
Torsten Ruger
cd474f66f6
stop including positioned
2017-01-01 21:52:35 +02:00
Torsten Ruger
fafcd15ce8
make positioned a helper module
2017-01-01 21:52:00 +02:00
Torsten Ruger
06cfbdf066
minor
2017-01-01 21:50:54 +02:00
Torsten Ruger
86dafccb04
stop including padding
...
use it as a helper module
2016-12-31 20:08:33 +02:00
Torsten Ruger
dccd097fef
remove collecting from the machine
...
use as stand alone module
2016-12-31 19:54:18 +02:00
Torsten Ruger
671512b96c
avoid fixnum overflow for hashes
2016-12-31 19:53:43 +02:00
Torsten Ruger
113b349af5
unlinking the objects collection from the machine
...
passing it around instead
2016-12-31 18:46:17 +02:00
Torsten Ruger
b094bcc64f
rename unit and sint to human readable forms
2016-12-31 18:45:22 +02:00
Torsten Ruger
5f3744d6af
remove unused attributes functions
2016-12-31 15:20:02 +02:00
Torsten Ruger
7bb1c361a5
small word test
2016-12-31 15:17:45 +02:00
Torsten Ruger
47c0f62212
error message
2016-12-31 15:10:07 +02:00
Torsten Ruger
a2ece04b6d
a little more minimal elf tests
2016-12-31 15:08:32 +02:00
Torsten Ruger
fb414cecd6
use helper
2016-12-31 14:54:53 +02:00
Torsten Ruger
838aba470d
move fix_types in order of usage
2016-12-31 14:54:34 +02:00
Torsten Ruger
853a531578
Move add_object to collector
...
more changes to come
2016-12-31 14:54:15 +02:00
Torsten Ruger
b9073d0c88
redid the type hashing
...
account for the class the type is for
by adding it to the hash code, so even the ivars are identical the
types are not
2016-12-31 14:51:06 +02:00
Torsten Ruger
0fa7f54bcc
found and fixed hashing bug
2016-12-31 14:04:04 +02:00
Torsten Ruger
d6c503ecf4
inlined indexed into list
...
which was the only one using it.
A whole lot simpler, considering it will have to be bootstrapped someday
2016-12-30 21:00:18 +02:00
Torsten Ruger
7f06e00ccd
making types private in space
...
turned out to be unnecessary, but still better
2016-12-30 20:47:28 +02:00
Torsten Ruger
ef66a87527
fixed silly dictionary bug
...
also finally duplicating keys and values and not handing them out
2016-12-30 20:46:18 +02:00
Torsten Ruger
a7935db107
cleaner way to generate argument types
...
possibly more correct
2016-12-30 19:17:59 +02:00
Torsten Ruger
83b6628f1a
whitespace and code style
2016-12-30 19:17:15 +02:00
Torsten Ruger
db798d1a4a
no default arg on init
...
also making sure the type is in the hash
but also that the order of type does not matter
2016-12-30 18:41:36 +02:00
Torsten Ruger
a82c9e8fb1
minor whitespace and renaming
2016-12-30 18:39:49 +02:00
Torsten Ruger
f0350601a7
Move the space instance to the parfait module
...
A better fit, maybe even a pattern for singletons
2016-12-30 14:10:49 +02:00
Torsten Ruger
a00f6be3ba
remove the space instance from register machine
...
bad design, probably from the booting
2016-12-30 14:04:59 +02:00
Torsten Ruger
ef872edd7a
rename instance_methods to just methods
2016-12-30 13:33:07 +02:00
Torsten Ruger
631038dfbd
add another test (still failing)
2016-12-30 13:15:08 +02:00
Torsten Ruger
8aae8f7425
disabling failing test for now
...
have to add more test and code climate will show where
2016-12-29 21:24:11 +02:00
Torsten Ruger
4b5c590afe
rework the boot process
...
Using a BootSpace mock to use more of the ruby new as before
Still some allocating and mucking about, but less
2016-12-29 18:53:24 +02:00
Torsten Ruger
e69d9a492e
mostly moving to ruby instance variables
2016-12-29 18:51:24 +02:00
Torsten Ruger
25f44949e4
removing the fake memory form object
...
just in word and list now
2016-12-29 18:49:03 +02:00
Torsten Ruger
6214040888
changing to ruby instance variables
...
from the fake memory
2016-12-29 18:47:45 +02:00
Torsten Ruger
b5f04ec718
mostly renames from the type change
...
also making setters as explicit set_xx methods
2016-12-29 18:45:32 +02:00
Torsten Ruger
f4b3c645e5
rework type with separate arrays for names and types
...
Means no more indexed
also using ruby instances
small rename for names
2016-12-29 18:42:38 +02:00
Torsten Ruger
4c3007e6c0
removing meta class (for now)
2016-12-29 18:39:59 +02:00
Torsten Ruger
80237e5033
rename position accessor
...
for future
2016-12-28 21:40:06 +02:00
Torsten Ruger
c60949fe24
small refactor on arg loading
2016-12-28 21:10:14 +02:00
Torsten Ruger
e551732f18
tighter integration with factory methods for adding code
...
define methods to collapse the code Register.
in add_code Register.factory_method
most instructions done, except op and branch that are rare
2016-12-28 20:37:54 +02:00
Torsten Ruger
af31774074
implement assignment type check
2016-12-28 19:20:16 +02:00
Torsten Ruger
9cf56b3aa6
use factory functions consistently to create instructions
2016-12-28 19:01:58 +02:00
Torsten Ruger
4cf732d395
use transfer factory
2016-12-28 18:37:15 +02:00
Torsten Ruger
57c038f13b
use load_constant factory method
2016-12-28 18:31:29 +02:00
Torsten Ruger
7d29a85187
remove legacy :int type
2016-12-28 18:25:14 +02:00
Torsten Ruger
a3585870b9
remove unused code
2016-12-28 18:17:52 +02:00
Torsten Ruger
4412eda105
small refactor and rename
2016-12-28 18:16:39 +02:00
Torsten Ruger
184f129107
dead comment removal
2016-12-28 18:10:33 +02:00
Torsten Ruger
25ae6e3d26
remove next_list from NamedList
...
Was legacy from the days of (linked) Frames
Now only messages are linked
2016-12-28 18:08:07 +02:00
Torsten Ruger
8867b13240
yep, opal != OPAL
...
engine has to be in small letters it seems
OPAL came from the original commit in 2013, but alas
2016-12-28 14:35:07 +02:00
Torsten Ruger
9226de4502
testing to_s
2016-12-28 14:11:05 +02:00
Torsten Ruger
266764be06
testing to_s on Code
2016-12-28 13:59:02 +02:00
Torsten Ruger
a8f3d5a634
had to fix the string hash for opal
2016-12-28 13:53:57 +02:00
Torsten Ruger
4940bc41a3
keep positions globally, not in the object
...
hopefully cleaner switch after bootstrapping
2016-12-28 12:51:18 +02:00
Torsten Ruger
903fc3e4cf
much ripples from changing the calling convention
...
See previous commit
Now args and locals are arrays in the Message
2016-12-27 20:39:39 +02:00
Torsten Ruger
f1cfd3c379
change calling convention
...
Message carries arrays for arguments and locals
This means an extra load for any access
Also fix silly bug: using the wrong method (the one we’re in, not the
one we’re calling)
2016-12-27 20:37:53 +02:00
Torsten Ruger
3c3dedadd1
remove indexed_length from NamedList
2016-12-27 20:34:47 +02:00
Torsten Ruger
aaa94f0743
small fixes
2016-12-27 20:34:11 +02:00
Torsten Ruger
a5946cb644
same renames for bytes (set/get_byte)
2016-12-25 18:11:58 +02:00
Torsten Ruger
f648bf7bd5
rename also get_slot, to slot_to_reg
...
makes source and target clear
2016-12-25 18:05:39 +02:00
Torsten Ruger
35adf9a5e6
rename set_slot
...
set_slot was clear about the target, but not the source.
Better with reg_to_slot (and soon it’s inverse slot_to_reg)
2016-12-25 18:02:39 +02:00
Torsten Ruger
1b8d6149dd
adding to_s to code for debugging
2016-12-23 21:31:31 +02:00
Torsten Ruger
6c9bd7e476
remove unused code
...
also just came through opal
2016-12-22 21:16:56 +02:00
Torsten Ruger
3b888b203d
crude rework of the hashing to work in opal
2016-12-22 21:16:36 +02:00
Torsten Ruger
2adec3226c
opal gods require explicit requires
2016-12-22 21:15:20 +02:00
Torsten Ruger
c3c52d36b8
seperate args from message (just like frame)
2016-12-21 22:35:36 +02:00
Torsten Ruger
ed12108425
rename locals from type to role in message
2016-12-21 19:01:42 +02:00
Torsten Ruger
0e99ff33ae
use frame type rather than the indexed construct
2016-12-21 18:59:07 +02:00
Torsten Ruger
93ba5543b3
more renaming of frame
2016-12-21 18:51:22 +02:00
Torsten Ruger
0040baae28
rename frame to named_list to be shared soon
2016-12-21 18:45:18 +02:00
Torsten Ruger
b242f9e223
bringing the locals into the ruby method
2016-12-21 11:30:35 +02:00
Torsten Ruger
9ec9ccb9b6
start on collector for local variables
2016-12-21 11:20:36 +02:00
Torsten Ruger
8b05951883
extracting processor comonality before adding a third
2016-12-21 10:51:33 +02:00
Torsten Ruger
8507bef08b
extracting methods for the compiler to handle
2016-12-20 20:02:52 +02:00
Torsten Ruger
a70d20d63e
add a ruby method
...
including source ast and args, later locals
2016-12-20 20:02:20 +02:00
Torsten Ruger
9e89306733
rename to get guard matches
2016-12-20 20:01:28 +02:00
Torsten Ruger
aa6685a0cb
test collector for ivar assignment
2016-12-20 15:46:23 +02:00
Torsten Ruger
aa5f48e3c6
remove instance_names from class again
...
and use types names instead. For now assuming Object class
2016-12-19 14:20:47 +02:00
Torsten Ruger
af9fed863f
small rename
2016-12-19 14:16:10 +02:00
Torsten Ruger
107e3e6d58
pick up instance variables from the class
...
Crude first set to creating types
2016-12-18 20:05:11 +02:00
Torsten Ruger
e77298f4b1
Give the class a list of ivars
...
Which is redundant with the type’s names, so let’s see
2016-12-18 20:04:40 +02:00
Torsten Ruger
af9987659f
create and test derived classes too
2016-12-18 17:17:58 +02:00
Torsten Ruger
170d453a36
start with melon and tests
...
First step, create a basic class
2016-12-18 17:02:55 +02:00
Torsten Ruger
756cb52a98
renames compiler to method_compiler
2016-12-18 14:15:19 +02:00
Torsten Ruger
272f99daf7
the cop struck again
2016-12-17 20:09:17 +02:00
Torsten Ruger
48af14f5c9
removes class statements
...
classes have to be created in melon, a level up
2016-12-17 18:31:26 +02:00
Torsten Ruger
ffb69a2c55
remove function statements
...
functions need to be defined a level up
2016-12-17 18:28:42 +02:00
Torsten Ruger
8845b91529
remove FieldDef
...
and on_field_def , :field_def and fixed all related tests
local variables will have to be determined outside the typed layer
2016-12-17 13:12:49 +02:00
Torsten Ruger
c12f11fba5
try both ree and cop
2016-12-17 09:44:21 +02:00
Torsten Ruger
782627ae79
small rename
...
to avoid confusion with type.create_method
2016-12-17 00:21:12 +02:00
Torsten Ruger
5c34835ae3
type converts method args if needed
2016-12-17 00:17:54 +02:00