Commit Graph

1353 Commits

Author SHA1 Message Date
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
Torsten Ruger
681b53cc4c make compiler default to compiling Space.main 2016-12-17 00:17:35 +02:00
Torsten Ruger
f8cefcde3c retiring ClassField and class_field from typed layer
Creating classes is the responsibility of melon
2016-12-16 19:05:49 +02:00
Torsten Ruger
dd6dede6ef refactor object file somewhat 2016-12-16 16:18:14 +02:00
Torsten Ruger
e10fc3eedd some reek assited coding on assembler 2016-12-16 15:41:26 +02:00
Torsten Ruger
5cd05f6135 refactor memory instruction (needs better tests) 2016-12-16 15:40:52 +02:00
Torsten Ruger
190a0ffa47 adds set_byte interpreter test 2016-12-16 01:43:54 +02:00
Torsten Ruger
b2579a2b82 dead code removal 2016-12-16 01:31:38 +02:00
Torsten Ruger
6f9955a726 more auto guard rules
and related renaming of files
2016-12-16 01:14:09 +02:00
Torsten Ruger
516bbd10b7 little fat of meta class
meta is firmly in the ruby world, not implemented in type world
2016-12-16 00:57:10 +02:00
Torsten Ruger
f7e01ff05e remove the value class
more of an idea, had no impact on implementation
2016-12-16 00:56:25 +02:00
Torsten Ruger
fd519314cb strip down compare instruction
not really used, using conditional branches instead.
(in arm any instruction can execute conditionally)
2016-12-16 00:41:37 +02:00
Torsten Ruger
ed0900df7f extracting to_s from getter and setter 2016-12-16 00:30:26 +02:00
Torsten Ruger
bc22c40101 Get Byte interpreter test 2016-12-15 22:15:58 +02:00
Torsten Ruger
886220d388 remove unused variable class 2016-12-15 19:43:53 +02:00
Torsten Ruger
dc56274940 refactor also building word
obviously created by copy/paste, more refactoring possible
2016-12-15 19:31:39 +02:00