Commit Graph

1673 Commits

Author SHA1 Message Date
Torsten Ruger
6bb23eac56 small interpreter refactor 2016-12-11 14:19:24 +02:00
Torsten Ruger
e479b00b29 introduce base class for get_slot and get_byte called getter 2016-12-11 14:12:35 +02:00
Torsten Ruger
ef285a146f add abstract base class for set_byte and set_slot called setter 2016-12-11 14:06:09 +02:00
Torsten Ruger
1dbd8c86e0 remove parslet dependency 2016-12-11 14:05:43 +02:00
Torsten Ruger
f3248462cc remove references to soml 2016-12-11 12:55:03 +02:00
Torsten Ruger
3715eb94ed uncomment unused code for now 2016-12-11 12:18:11 +02:00
Torsten Ruger
b6fdb51ed1 fix statement list compilation 2016-12-11 12:13:42 +02:00
Torsten Ruger
661911de0a comment unused fluff 2016-12-10 23:45:24 +02:00
Torsten Ruger
e82c86f6c1 fix class def tests and code 2016-12-10 22:41:49 +02:00
Torsten Ruger
6d4347c7ba finish assignment tests
and related code fixes
2016-12-10 18:48:18 +02:00
Torsten Ruger
f49b0c7356 fix assignment
tests paying off
2016-12-10 18:08:21 +02:00
Torsten Ruger
87693112d4 small fix 2016-12-10 18:07:38 +02:00
Torsten Ruger
4054b61752 fix more expression tests 2016-12-10 15:18:37 +02:00
Torsten Ruger
de5d87cde7 add basic compiler expression tests (back) 2016-12-10 04:01:47 +02:00
Torsten Ruger
5c2f545f8e tests for ast to code converter 2016-12-10 03:43:44 +02:00
Torsten Ruger
29fb2a50f5 refactor while statement 2016-12-09 14:29:06 +02:00
Torsten Ruger
da4a1af074 modulize return and list 2016-12-09 14:19:22 +02:00
Torsten Ruger
99132a92b6 modulize operator_expression 2016-12-09 14:17:01 +02:00
Torsten Ruger
037fd722df clean up function definition, now function statement 2016-12-09 14:12:41 +02:00
Torsten Ruger
059fb38f08 modulize field_access and field_def 2016-12-09 14:04:06 +02:00
Torsten Ruger
4da13c3867 move ast to tree, remove seperate helper file 2016-12-09 13:56:13 +02:00
Torsten Ruger
bab2fe32df modulize class_field and class_statement 2016-12-09 13:46:26 +02:00
Torsten Ruger
2b008dd3da modulize basic_value 2016-12-09 13:40:10 +02:00
Torsten Ruger
fa14e35a50 refactor if_statement 2016-12-09 13:38:07 +02:00
Torsten Ruger
1e7093c63f remodel assignment a bit 2016-12-09 13:20:48 +02:00
Torsten Ruger
395fd2d701 refoactor call site some 2016-12-09 12:22:37 +02:00
Torsten Ruger
224670e449 refactor name expression for compiler 2016-12-09 12:13:33 +02:00
Torsten Ruger
ca4bdcc528 gets rid of soml-parser completely 2016-12-08 20:13:08 +02:00
Torsten Ruger
e2236cf703 move soml ast here, now called type as the language is going 2016-12-08 19:38:50 +02:00
Torsten Ruger
da553f996f move compiler to typed
starting to get rid of soml, bit by bit
2016-12-08 15:25:20 +02:00
Torsten Ruger
c3a28d2abc small collector change 2016-12-08 15:19:37 +02:00
Torsten Ruger
a31f75fe93 basic immutability for type
add_instance_variable now uses global type list to check
adds hash and to_has functions
use backdoor (send) for booting
2016-12-08 12:50:25 +02:00
Torsten Ruger
137d3c9231 add each_with_index to indexed 2016-12-08 12:48:39 +02:00
Torsten Ruger
ad91c0a4bf add inspect method to dictionary 2016-12-08 12:48:08 +02:00
Torsten Ruger
2741f35380 add a each_pair to indexed and use in types 2016-12-07 23:35:51 +02:00
Torsten Ruger
266a04040b add types hash to space 2016-12-07 23:34:45 +02:00
Torsten Ruger
bcba3ed3b2 move parfait to new module 2016-12-06 16:50:54 +02:00
Torsten Ruger
3ed0c4829a log test 2016-12-06 16:44:04 +02:00
Torsten Ruger
adca8b21c1 move soml tests out, small cleanup 2016-12-06 15:08:29 +02:00
Torsten Ruger
5ac14ddccc update gems and fix tests 2016-12-06 12:08:18 +02:00
Torsten Ruger
4b05b48197 some docs 2016-12-06 11:38:09 +02:00
Torsten Ruger
229f5896c6 update to use new ast
soml was updated to have a typed ast layer to make programatic creation
easier
this brings LOTS of syntax change with it, that does not really mean
anything at all
All tests pass again so back to the same
2016-03-07 11:55:28 +02:00
Torsten Ruger
d7b210d63a update parser 2016-03-06 10:48:14 +02:00
Torsten Ruger
a8b815117f rename object_type to instance_type
for better distinction that it is not every object
but only instances of the class
2016-02-25 12:16:13 -08:00
Torsten Ruger
278d71b56c fix docs for rename 2016-02-25 12:03:11 -08:00
Torsten Ruger
d32b51c67b rename layout to type
this one goes to caleb for pointing it out.
Much better word
2016-02-25 11:50:10 -08:00
Torsten Ruger
3480b97eaa rename variable type to value_type
in preparation for next rename
2016-02-25 11:41:03 -08:00
Torsten Ruger
afe16868b5 more some tests 2015-11-30 16:10:08 +02:00
Torsten Ruger
dc560aaa5e move main to space 2015-11-30 16:09:12 +02:00
Torsten Ruger
d0b655d05f implement the div10 as assembler
easy after the some version worked
because it’s not arm it probably twice as long as need be
better (any?) optimisation would take care of that
still, nice to see it works
2015-11-21 14:20:25 +02:00
Torsten Ruger
ffc69fd2a5 add the hackers delight version of div10
better test too
remove remnants of 64bit multiplication
2015-11-21 14:19:07 +02:00
Torsten Ruger
91a0365c2e fix register shortcuts 2015-11-21 14:17:54 +02:00
Torsten Ruger
96972dab29 thats most of the benchmarking
strange about the puts in soml, hard to see where a factor of 10 would
come from
2015-11-20 23:51:58 +02:00
Torsten Ruger
da4003c30a ruby fibs versions and tests for them 2015-11-20 19:12:58 +02:00
Torsten Ruger
02d9a063b0 fix both parfait words to have same indexing 2015-11-20 13:25:49 +02:00
Torsten Ruger
aabde4b9a6 fix word indexes on arm
which affected offsets in the ruby side too
the hidden dead word needed accounting for
2015-11-19 16:40:00 +02:00
Torsten Ruger
a8453c126d use arm shift at runtime
arm indexes are in bytes (x4) at compile time
but at runtime we only have the array indexes, iw word indexes
arm has the nice barrel shifter to save us an extra instruction
2015-11-19 12:48:13 +02:00
Torsten Ruger
4871a52d37 better error reporting for parser 2015-11-19 10:10:13 +02:00
Torsten Ruger
249f43ad34 translate and interpret new instructions 2015-11-19 10:09:55 +02:00
Torsten Ruger
ac5a7ac4ca making parfait (both) use the new byte functions 2015-11-19 10:09:24 +02:00
Torsten Ruger
dffa3fbf42 adding word functions for byte access 2015-11-19 10:08:41 +02:00
Torsten Ruger
ff65952a3e add get/set byte instructions
it seems all cpus have them anyway so best use them
it was a pain to do this on word level, hard to write, hard to debug and
quite unnecessarily slow
2015-11-19 10:07:27 +02:00
Torsten Ruger
5369dc3d52 rename get/set internal
to _word , because _byte versions are coming
2015-11-18 15:36:43 +02:00
Torsten Ruger
979660f282 move parfait into register
register layer uses parfait models to generate object space
so parfait  should be part of register (not above it)
2015-11-18 12:04:25 +02:00
Torsten Ruger
2bc2d4486f move interpreter to register
seems more where it belongs, since it interprets the register machine
instructions
2015-11-18 12:00:30 +02:00
Torsten Ruger
40d81681b5 move parfait adapter into parfait ruby
in the future parfait will be coded in some and translated back into
ruby to “adapt”
until then, all ruby code is the adapter
2015-11-18 11:55:29 +02:00
Torsten Ruger
0643b96641 update arm
and small code changes from the fact that just loading a variable does
not change status flags
2015-11-17 02:28:47 +02:00
Torsten Ruger
303b7eb1f8 putstring unfolds length
which means sys call doesn’t need to
and also interpreter sometimes gets a symbol length
2015-11-16 18:03:29 +02:00
Torsten Ruger
f50d7b57a4 fix the putstring sys call indexing
index 0 is the marker word , so like in some, all indexes 1 based
works :-)
2015-11-15 22:03:06 +02:00
Torsten Ruger
8e82da0b61 fix arm (assembled) indexing
by having a dummy 0 index in salaam. when assembled
2015-11-15 20:42:07 +02:00
Torsten Ruger
9a2fe42167 change assembly order
first objects, then methods.
methods change length, so at least this way objects stay
did mean hacking the arm code (something for later)
2015-11-15 16:24:43 +02:00
Torsten Ruger
458610b970 implement string length 2015-11-15 11:28:16 +02:00
Torsten Ruger
1633bf1289 fix position check
as programs get bigger the distance gets bigger
needs better approach
2015-11-15 00:38:23 +02:00
Torsten Ruger
9602acf3d2 fix label positions 2015-11-15 00:36:15 +02:00
Torsten Ruger
cea60f202a small label changes 2015-11-15 00:35:43 +02:00
Torsten Ruger
b30cf21bbd fix arm indexes
needs rethought
fixed for static use, but what about dynamic
2015-11-15 00:35:12 +02:00
Torsten Ruger
cc9b515752 fix double label names 2015-11-14 22:53:01 +02:00
Torsten Ruger
278eccbed5 derive binary code form word
long ago hacked the binary code to use integers (thus forsaking correct
arm binaries)
Finally fix by deriving from Word which now has correct binary access
Dumped binary.name in the process, that is available from the method
2015-11-14 15:04:04 +02:00
Torsten Ruger
8fa92515b5 update arm and small arm fixes
constants in arm chunks, needs better solution
2015-11-14 13:05:49 +02:00
Torsten Ruger
dbcd39c277 helper do get the register no as int for arm 2015-11-14 00:22:23 +02:00
Torsten Ruger
6e7c6d814a long const avoidance
arm can only load 10 bits and some funny logic
so for now avoid big fffffff const
2015-11-14 00:21:24 +02:00
Torsten Ruger
6127d92ca9 implement arm branches
which backfired into interpreter as
plus actually means 0 or plus in arm
may still change back but for now
2015-11-14 00:20:03 +02:00
Torsten Ruger
9ab3de234d some helper functions
for when i started the assembler div10
in the end i did the div10 in some, so no need
2015-11-13 20:47:08 +02:00
Torsten Ruger
4a8bb32039 serious bit fiddling, div10 using shift magic
forgot that arm has no division (or respectively only later models have)
many magic formulae out there, none seem to work 1000% on the
interpreter. some big 0 ending numbers are 1 off.
2015-11-13 20:46:27 +02:00
Torsten Ruger
f779b5d15f fix interpreter to simulate 32 bit machine 2015-11-13 20:31:35 +02:00
Torsten Ruger
5c862111b9 remove div and add div10
general division is for another day, the 10 version is manageable
also same code produces mod10
wip
2015-11-12 20:03:57 +02:00
Torsten Ruger
a5afca10f6 don't pass machine around, its global 2015-11-12 20:02:44 +02:00
Torsten Ruger
6f0d6d831e update arm and implement most operators
multiplication wasn’t implemented
and division isn’t part if arm
neither is rotate by register
2015-11-12 20:02:14 +02:00
Torsten Ruger
787f727974 simplify i to_s 2015-11-11 20:45:40 +02:00
Torsten Ruger
6137833140 change args argument to create method to be hash
was array and didn’t carry types and names
2015-11-11 20:41:02 +02:00
Torsten Ruger
351a747bfd mod and div for int 2015-11-11 20:36:40 +02:00
Torsten Ruger
1e7935bf85 implement byte access for some word
wouldn’t have been possible without the ruby version
2015-11-11 20:36:07 +02:00
Torsten Ruger
9bfc9cf6c2 implementing missing operators 2015-11-11 20:34:49 +02:00
Torsten Ruger
d870553a1f make ruby word byte size
was hacked as int
interestingly zero change to tests
2015-11-11 19:11:08 +02:00
Torsten Ruger
93ff44bb6f improve reinit of interpreter 2015-11-10 19:28:31 +02:00
Torsten Ruger
1efa36ed4f string sometimes gets to_s in equal while half cooked
during debugger register change or update to be precise.
without the debugger there would be no access to the word
at that point and no need for this hack
2015-11-10 19:16:38 +02:00
Torsten Ruger
daffa0579e another opal hack
in opal 13 / 10 = 1.3 whereas in ruby its 1
2015-11-10 19:10:11 +02:00
Torsten Ruger
c92814440f fix integer to_s and put, with tests 2015-11-10 19:09:17 +02:00
Torsten Ruger
760a4beb86 fix some word with tests 2015-11-10 19:08:48 +02:00
Torsten Ruger
6c2ce66bfc fix old warning 2015-11-10 11:48:53 +02:00
Torsten Ruger
a730dd0c99 fix some, return missing
must write no return error code
2015-11-09 23:29:35 +02:00
Torsten Ruger
70f912f94c allow message as keyword to access current message
the ultimate in meta-programming
2015-11-09 23:29:14 +02:00
Torsten Ruger
a20f1570ee temporary word hack to make it look liked indexed 2015-11-09 23:28:40 +02:00
Torsten Ruger
5d80c38c87 correct register types 2015-11-09 23:28:10 +02:00
Torsten Ruger
9ab7b476d5 opal fix and minor 2015-11-09 23:27:15 +02:00
Torsten Ruger
368263d5a5 rewrite of field access using on_name
much cleaner and revealed a bug
2015-11-09 23:26:37 +02:00
Torsten Ruger
dd7973875c fix interpreter to handle registers in set 2015-11-09 23:25:34 +02:00
Torsten Ruger
9075f1af37 fixes yet another order dependant bug in the test (not the code) 2015-11-09 10:04:37 +02:00
Torsten Ruger
b2de1c6d79 minor fixes 2015-11-08 23:58:54 +02:00
Torsten Ruger
f746218765 reinstate word creation and use for strings
so string constants become words, so we can fiddle with them
2015-11-08 23:58:35 +02:00
Torsten Ruger
c8fa5238ee stdout word too 2015-11-08 23:57:38 +02:00
Torsten Ruger
6b9c472bec refactor load_parfait
so debugger can grab and wire it easily
2015-11-08 18:35:10 +02:00
Torsten Ruger
6f69995284 stab at inter to string
wip
2015-11-08 17:11:03 +02:00
Torsten Ruger
c38775e933 add set_internal
and the set_slot with register
very much like the get_slot for get_internal
2015-11-08 17:10:36 +02:00
Torsten Ruger
64d99d5e68 didn't need big decimal require 2015-11-08 15:18:39 +02:00
Torsten Ruger
d6108e7b3a fix interpreter overflow issue
flag set for bigness, result reduced
tests for + and *
fixed fibs tests
2015-11-08 15:15:55 +02:00
Torsten Ruger
6ea698d397 save some to_s code 2015-11-08 14:30:42 +02:00
Torsten Ruger
37564d9c2e implement message pseudo variable (like self)
too easy
also simplified some tests
2015-11-08 13:55:38 +02:00
Torsten Ruger
69918c8e88 add some message and remove fields
those fields are already present in the classes
(in the future they should be defined in some and integrated to ruby,
but that would mean parsing to boot and parsing doesn’t yet work on
opal)
2015-11-08 13:54:58 +02:00
Torsten Ruger
502cfa357d implement and test field access 2015-11-08 13:39:13 +02:00
Torsten Ruger
b443103ea4 using class fields
instead of internal_get
2015-11-08 01:02:47 +02:00
Torsten Ruger
9fd7c79cfb mixed up class and meta, fixed 2015-11-08 00:55:10 +02:00
Torsten Ruger
bcc366f8fd bit more soml 2015-11-08 00:54:47 +02:00
Torsten Ruger
3e4dcd35c7 better no method no super handling
also revealed bug in booting
2015-11-08 00:54:24 +02:00
Torsten Ruger
5ddc96718b slight call logic modification
simplification, new model is such that the upon start the method:
has a message in r0, works on it and returns to the return address.

Everything else is up to the caller
2015-11-07 21:59:39 +02:00
Torsten Ruger
f2c7ed827d simplify the __init
admittedly more source code, but half the runtime
mainly just using message (not new)
made possible by call sequence change
2015-11-07 21:58:19 +02:00
Torsten Ruger
2315ad6920 minor cleaning 2015-11-07 21:55:04 +02:00
Torsten Ruger
8c68ffc7a4 fixing indexes makes test work
forgot my own rule: all parfait works in 1 based lists
2015-11-07 20:10:55 +02:00
Torsten Ruger
a1aa6b58ac resolve methods, don't just get them
i.e. down the ladder we go
2015-11-07 19:39:15 +02:00
Torsten Ruger
7523bac80a add layout and class accessor and test 2015-11-07 19:38:52 +02:00
Torsten Ruger
484e2d19d4 allow for registers in get slot 2015-11-07 19:38:03 +02:00
Torsten Ruger
1d07c1fb95 fix super class with name mixup 2015-11-07 19:37:38 +02:00
Torsten Ruger
37928b8591 rename internal get/set functions
mainly because the salaam parser chokes on internal…
2015-11-07 17:40:59 +02:00
Torsten Ruger
50b03a5e94 load parfait soml files
No dir glob for precise order
2015-11-07 17:38:27 +02:00
Torsten Ruger
d878ce00d8 framework for parfait runtime testing
with interpreter for now
later with arm exec support
2015-11-07 17:37:41 +02:00
Torsten Ruger
708cdace17 implement indexed object access
one of the few functions that can’t be coded
(or the design specifically is such that it can’t, in c it would be
self[index],
or, worse *(self + index) )
2015-11-07 17:36:28 +02:00
Torsten Ruger
35afe88ede allow get_slot with two registers
before was register and number, but for runtime that doesn’t work
2015-11-07 17:34:41 +02:00
Torsten Ruger
9ebe28450b add global variable space
could in the long run move spaces functionality to the class
and since the class is global anyway, wouldn’t need this
2015-11-07 12:19:04 +02:00
Torsten Ruger
fd7e4afb2f small meta related changes 2015-11-07 00:14:10 +02:00
Torsten Ruger
46e1a112ab metaclass moves down to object 2015-11-07 00:12:17 +02:00
Torsten Ruger
204200b92a metaclass is back
this time with a real purpose and implementation as the intermediary
As the interface to the layout and for replacing an edited layout
2015-11-07 00:11:56 +02:00
Torsten Ruger
ebcc15d314 testing fibo 2015-11-06 14:24:57 +02:00
Torsten Ruger
4eb3d9029a use logger 2015-11-05 16:50:00 +02:00
Torsten Ruger
13d0747b45 test the log_level too 2015-11-05 14:05:12 +02:00
Torsten Ruger
aad50021fe more messages for recursive fibs 2015-11-05 12:23:11 +02:00
Torsten Ruger
4014ad27fe fix and test return
return was in the wrong message
better tests now
2015-11-05 12:22:48 +02:00
Torsten Ruger
ff759bf0c1 increase message size
message size is somewhat like stack size,
but 1-1 related to how deep it can be, now 50 calls
2015-11-05 12:12:15 +02:00
Torsten Ruger
642dcb065a fix while statement
logic was broken, or inversed
had to lay the code out a bit funny, but it works and makes sense
2015-11-04 20:23:26 +02:00
Torsten Ruger
ab2c73f42c right name for return label makes interpreter work 2015-11-04 20:22:28 +02:00
Torsten Ruger
691ae96d71 fix names of branch codes
also store objects in register, avoid the whole object_id thing which
just lead to unclarity about class
2015-11-04 20:22:03 +02:00
Torsten Ruger
428faad25f opal fix for indexes 2015-11-04 16:11:25 +02:00
Torsten Ruger
b5e733cd11 finally simple logging
instead of commenting puts
2015-11-04 11:48:51 +02:00
Torsten Ruger
2236065d02 position filling after the padding changes, works again 2015-11-04 10:34:58 +02:00
Torsten Ruger
c87682b77f fix padding
used to be that type and layout were hidden
now type is gone and layout is an explicit instance, so 0 overhead
2015-11-04 10:34:03 +02:00
Torsten Ruger
5bddbfbb62 rename word_length to padded length
with word_length i was never sure if it was the padded version or not
2015-11-04 10:33:10 +02:00
Torsten Ruger
6ada815735 first stab at fixing the assembly
lots of length fiddling
wip
2015-11-03 16:24:12 +02:00
Torsten Ruger
0f8f0a681c fix padding to only consider layout (1 word) 2015-11-03 16:22:50 +02:00
Torsten Ruger
ca1dc36e3d method marking for labels 2015-11-03 16:22:24 +02:00
Torsten Ruger
6882f39645 fixing lengths 2015-11-03 16:21:50 +02:00
Torsten Ruger
c15445a958 let labels be constants 2015-11-03 16:20:25 +02:00
Torsten Ruger
5a8d7d313f little more tests 2015-11-03 11:23:15 +02:00
Torsten Ruger
c940e25f91 other half of previous call change 2015-11-03 11:22:52 +02:00
Torsten Ruger
1be5d1862f need to collect labels for return
so the interpreter can find the object
2015-11-03 11:22:26 +02:00
Torsten Ruger
bc414fd3e8 function call now saves the return address before calling
that means SaveReturn is obsolete (breaks loads of tests)
first step towards multi - return which obviously can not have the
callee save return address.
In fact this would make FunctionCall redundant too, as it is really
just a branch
2015-11-03 11:20:49 +02:00
Torsten Ruger
cffbc91821 fix field_def to new syntax 2015-11-02 21:27:37 +02:00
Torsten Ruger
45bd4bfdc6 remove save return 2015-11-02 20:11:12 +02:00
Torsten Ruger
ddb1df7362 start to fix the link issue
that came from removing SaveReturn
2015-11-02 20:10:48 +02:00
Torsten Ruger
86b0030f15 refactor on_call 2015-11-02 17:32:21 +02:00
Torsten Ruger
834266e11e improve label names a bit 2015-11-01 19:13:40 +02:00
Torsten Ruger
d3a7809746 use . to mark methods 2015-10-30 00:01:28 +02:00
Torsten Ruger
7e24f63327 polish sources 2015-10-29 22:31:28 +02:00
Torsten Ruger
7d7b7ca995 adding types to layout
so we can test assignment
2015-10-29 12:45:29 +02:00
Torsten Ruger
e4201143b3 last fixes from source change 2015-10-28 21:40:48 +02:00
Torsten Ruger
e6743c7216 (string) source knockoffs 2015-10-28 21:39:59 +02:00
Torsten Ruger
c426f4a6d5 some of the sources methods belonged to method really 2015-10-28 21:38:52 +02:00
Torsten Ruger
bdb4a40f9c only string and ast allowed as source 2015-10-28 21:38:23 +02:00
Torsten Ruger
191be8d2f6 use compiler to generate methods and their instructions 2015-10-28 21:37:42 +02:00
Torsten Ruger
99a695907c move method_source functionality into compiler
the source was there long before the compiler (sis language) came along
and was basically doing the same
Much clearer concept with using compiler to generate methods and code
Also move compile method to method
2015-10-28 21:36:41 +02:00
Torsten Ruger
c245272e52 don't export current 2015-10-28 14:37:40 +02:00
Torsten Ruger
ef6cb2a069 use instruction steam from message
had been attached there last week, but was still used mainly through
the source (which i’m trying to remove)
2015-10-28 14:33:38 +02:00
Torsten Ruger
72b790c107 remove method source receiver
no harm done it seems
2015-10-28 14:24:14 +02:00
Torsten Ruger
e75517ff05 move constants to machine 2015-10-28 13:00:23 +02:00
Torsten Ruger
7e0778dc70 remove return_type
soon to be obsolete with multi returns
2015-10-28 12:19:10 +02:00
Torsten Ruger
142c36a374 fix return statement to actually return
fix a million tests
2015-10-27 21:04:46 +02:00
Torsten Ruger
79cf59c4e2 still finding index errors 2015-10-27 18:45:56 +02:00
Torsten Ruger
444ad75e1e some message tests, all ok 2015-10-27 18:08:40 +02:00
Torsten Ruger
bb908dcf76 adding arg length to call sequence
and fix all the tests that affects
2015-10-27 16:21:11 +02:00
Torsten Ruger
bd171d091a fix tests for indexed messages and frames
index_length changes index a bit
but from now on changes to layouts should push the index automatically
just have to set the index while calling now
2015-10-27 16:05:50 +02:00
Torsten Ruger
50029711ff make frame and message indexed
also auto generate a replacement for previous offset class method (dry)
2015-10-27 16:04:36 +02:00
Torsten Ruger
fdc7f8b39c small opal fix
the return didn’t work
but couldn’t reproduce in opal try
2015-10-27 12:44:53 +02:00
Torsten Ruger
638c367e00 more class methods 2015-10-26 22:23:06 +02:00
Torsten Ruger
5b7c98f50b order requires 2015-10-26 22:22:38 +02:00
Torsten Ruger
abaa56fbba add create_method for layout too
as for class, same signature
some more test for behavior
2015-10-26 17:24:28 +02:00
Torsten Ruger
9d0b264b79 minors 2015-10-26 17:23:35 +02:00
Torsten Ruger
a0944266c5 hack weird instantiation bug
self.instance_methods is not always set. tried but didn’t find why
any instantiating to circumvent
2015-10-26 17:23:02 +02:00
Torsten Ruger
624699f8ed minor 2015-10-26 15:14:38 +02:00
Torsten Ruger
55dd5f74fc fixed layout inspect bug 2015-10-26 15:07:59 +02:00
Torsten Ruger
885aa765d6 still fixing index bugs
the indexed_length got written wrong
which is why the layout methods didn’t work
Now all indexes are 1 based, even fake men, where we just ignore 0
2015-10-26 14:33:36 +02:00
Torsten Ruger
9f4952b5ac create behavior module
behavior handles instance methods (add/remove/find)
and shall be included in layout later too
2015-10-26 13:27:56 +02:00
Torsten Ruger
b76c140d32 some class field tests 2015-10-26 13:08:40 +02:00
Torsten Ruger
dc58dbe2fe little clean 2015-10-26 13:02:08 +02:00
Torsten Ruger
4cadfc9ea9 shortening some methods, removing object prefix 2015-10-26 12:58:38 +02:00
Torsten Ruger
d2c670b31a fixing offset bug
found by tests that overwrite the attribute
2015-10-26 12:57:54 +02:00
Torsten Ruger
1a236aa50e make binary code indexed (not derive from word)
still some work to be done there, as we should really have a byte buffer
2015-10-26 12:24:47 +02:00
Torsten Ruger
96f43dcfda also giving word it's length
still hacked as char per word, but should be easy enough to fix when…
2015-10-26 12:23:52 +02:00
Torsten Ruger
979ebb7612 fixing indexed stuff
layout returns layout as first name (offsets indexes)
object internal length is gone  into layouts functionality
2015-10-26 12:22:32 +02:00
Torsten Ruger
bb3d211c04 layout moves to 0
no more type word, only layout
2015-10-25 20:44:30 +02:00
Torsten Ruger
df62b75c6f adding an instance for the length of lists 2015-10-25 20:44:03 +02:00
Torsten Ruger
c1ee67038c internally objects stop changing size 2015-10-25 20:43:13 +02:00
Torsten Ruger
92fe12a0d1 move methods back to the module
easier to read and debug
2015-10-25 19:32:36 +02:00
Torsten Ruger
60098257e9 use include so we can test with is_a
using the well documented included/extend trick
2015-10-25 19:16:12 +02:00
Torsten Ruger
3318b5026c externalizing list functionality
redefining it with define_method and adding it dynamically to the list
gotta love ruby for it
2015-10-25 18:40:17 +02:00
Torsten Ruger
b7d0ee8f99 wit metaclass and class functions
needs to go back to arrays first
2015-10-25 15:40:12 +02:00
Torsten Ruger
0d001ec0fc rename super_clsas to super_class_name
as it should have been
2015-10-25 15:32:38 +02:00
Torsten Ruger
f22eca053d split create method
to allow class methods to use the other half
2015-10-25 15:04:40 +02:00
Torsten Ruger
7de2f913a0 more class tests 2015-10-25 13:19:18 +02:00
Torsten Ruger
12e31f28c2 fix and test class definition 2015-10-25 12:31:35 +02:00
Torsten Ruger
7a690cd38d fix to_s 2015-10-25 12:10:56 +02:00
Torsten Ruger
0921073025 remove last block occurrences
fixed.
2015-10-25 12:03:31 +02:00
Torsten Ruger
471329917b most of the length and assembly stuff fixed 2015-10-25 10:54:19 +02:00
Torsten Ruger
405a6935d4 lots of stuff to move to linked lists
and remove the blocks
more position stuff coming, but the list part should be ok
2015-10-24 17:12:36 +03:00
Torsten Ruger
3774f8a5a2 use translator and remove passes
the only passes that were left were reg -> arm
those are almost completely one to one, so the idea of passes didn’t fit
2015-10-24 17:11:18 +03:00
Torsten Ruger
a871f96630 remove passes and achieve the same by translating 2015-10-24 11:42:36 +03:00
Torsten Ruger
57f37ec023 removed blocks and moved to labels
somewhat easier to understand the code as a linked list
relatively painless change, considering
2015-10-23 21:27:36 +03:00
Torsten Ruger
f1f56f0d4e remove parfait module
which was only there because ruby has it
the concept is flawed and should be split into namespace and aspect
2015-10-23 15:20:02 +03:00
Torsten Ruger
6754518daf prune builtin
will need much less, many more things can be expressed in soml
2015-10-23 15:13:05 +03:00
Torsten Ruger
897e11ce80 store three versions of the code in method
source, instructions and binary
2015-10-23 14:41:47 +03:00
Torsten Ruger
e0c5bc4c11 rename phisol to soml 2015-10-23 14:22:55 +03:00
Torsten Ruger
991cc0519f create add_code helper and some cleaning 2015-10-23 14:08:12 +03:00
Torsten Ruger
dcbd3c7091 fold last of the virtual into register 2015-10-22 18:16:29 +03:00
Torsten Ruger
f658ecf425 bit of cleaning, updated readme 2015-10-22 17:38:49 +03:00
Torsten Ruger
6ac339d998 catching empty blocks
should really clean those away
2015-10-22 15:34:47 +03:00
Torsten Ruger
83670079c3 resetting registers to prevent overflow 2015-10-22 14:50:58 +03:00
Torsten Ruger
2842c903e1 fix integers and clock reset 2015-10-22 14:42:23 +03:00
Torsten Ruger
3895ac624c fix offsets, debugging revealed them to be 1 off 2015-10-22 11:48:03 +03:00
Torsten Ruger
4ca15449be test and fix arg passing offset too 2015-10-22 11:32:37 +03:00
Torsten Ruger
ede0fe5f16 fix indexing when accessing locals or args
Was missing the offset of object variables
2015-10-22 11:02:46 +03:00
Torsten Ruger
a44b88f570 trigger on state change
also make states symbols
2015-10-21 14:07:29 +03:00
Torsten Ruger
db5c37bc55 fix while syntax and test 2015-10-19 16:37:12 +03:00
Torsten Ruger
99cff3aa32 fix the if syntax and branches 2015-10-19 16:22:24 +03:00
Torsten Ruger
1fd937927c adjust branch names
IsXXX  with xxx as condition, same as after if_xxx
AlwaysBranch is back to Branch
2015-10-19 16:08:00 +03:00
Torsten Ruger
50379a1fea update to new syntax and patch tests
basic semantics remain, but have to improve test for new functionality
that has to be written for new branch types
2015-10-19 15:31:48 +03:00
Torsten Ruger
bdcd0f297d first interpreted tests, fix branch issues
whole branch logic wobbly
better syntax needed, but working(ish) for now
2015-10-19 14:46:12 +03:00
Torsten Ruger
d767caf479 remove MethodCall and thus all virtual instructions 2015-10-18 19:27:46 +03:00
Torsten Ruger
15b570f5cf removing passes (before arm)
collector becomes a function
minimizer unused
2015-10-18 19:27:02 +03:00
Torsten Ruger
fa4949fc80 remove MethodEnter Instructions
only resolved to SaveReturn anyway
also Halt instruction wasn’t used, gone
passes changed to start at register
2015-10-18 17:39:35 +03:00
Torsten Ruger
8bf1337043 Remove MethodReturn instruction
and pass
and fix all tests
move towards removing all vm instructions
2015-10-18 17:32:32 +03:00
Torsten Ruger
ae21feb6dc minor 2015-10-18 17:20:25 +03:00
Torsten Ruger
6c7e4c0fe2 stop pinning self and frame
before: r0-message , r1-self , r2-frame , r3-new_message , r4 + tmps
now: r0-message , r1-new_message , r2 + tmps
programs got smaller, less fuss
also fix in return implementation that got the address from the wrong
message
2015-10-18 17:20:19 +03:00
Torsten Ruger
da5502e301 minor 2015-10-17 19:36:00 +03:00
Torsten Ruger
13eb017394 small to_s changes 2015-10-17 10:03:56 +03:00
Torsten Ruger
4ce4775902 fix layout
amazing at this stage, but yet another index error
the strange (and wonderful) thing is that changing the return
of the one function just shifts the variables and everything else
stays intact. Thus are the wonders of object orientation
2015-10-17 10:03:39 +03:00
Torsten Ruger
3e79e5cf8e fix code duplication 2015-10-16 19:18:37 +03:00
Torsten Ruger
dc3920580b bit more cleaning of testing 2015-10-16 18:34:54 +03:00
Torsten Ruger
aaaef6e3d7 there go the slots
addressing them now directly in get/set slot
idea is still valid, but express objects not needed/used anymore
2015-10-16 18:16:39 +03:00
Torsten Ruger
64a92fb9f4 remove dead code
was only used by now removed set instruction
2015-10-16 18:07:17 +03:00
Torsten Ruger
3a622efe9a remove virtual new_frame instruction
resolved to one register instruction, not worth the hassle
2015-10-16 17:58:42 +03:00
Torsten Ruger
9ae850e3b2 remove unused set instruction 2015-10-16 17:45:24 +03:00
Torsten Ruger
bd2bf612ac fixed last test
back in the green
2015-10-16 17:13:08 +03:00
Torsten Ruger
a6712fc4f9 add call statement tests 2015-10-16 13:20:21 +03:00
Torsten Ruger
0cf0b35853 remove call_site value dependency
Revisit for optimization, now irrelevant
2015-10-16 13:13:56 +03:00
Torsten Ruger
349352faa9 minor 2015-10-16 13:12:52 +03:00
Torsten Ruger
6f856315d7 fix and test assign
also fix field def and
externalized assign
2015-10-15 13:08:53 +03:00
Torsten Ruger
0179638f0e cleaning 2015-10-15 10:27:06 +03:00
Torsten Ruger
f8efdd910c basic if statement tests 2015-10-15 09:47:11 +03:00
Torsten Ruger
3d83f203ca fixing and testing operators 2015-10-15 09:32:47 +03:00
Torsten Ruger
e436581ce8 adds value to used regs and test for it 2015-10-15 09:07:47 +03:00
Torsten Ruger
f105b1eb3c fix name expression 2015-10-14 21:34:18 +03:00
Torsten Ruger
1141ed9c99 type now means class name
update reader (with new type definition)
remove type class (now symbol)
update all types to class name symbols
2015-10-14 16:16:03 +03:00
Torsten Ruger
d8a5dc147b new function test and scoping fix 2015-10-14 15:17:33 +03:00
Torsten Ruger
d899d542a4 checking return type is a type 2015-10-14 14:02:34 +03:00
Torsten Ruger
e33a20dd41 minor housekeeping 2015-10-14 13:48:42 +03:00
Torsten Ruger
5b95319191 almost rewritten the call site
statements resolve to nothing and use all registers
expressions return register and allocate those with use_reg
2015-10-14 13:48:21 +03:00
Torsten Ruger
82d6ebf392 giving the register_value it's value
though not used yet
2015-10-14 13:45:46 +03:00
Torsten Ruger
5122137a33 start new elf testing category (and minors) 2015-10-13 17:30:39 +03:00
Torsten Ruger
f506f95cbf fixing basic and field access to return register
as that is the new way, drop a layer, code to registers
2015-10-13 16:42:53 +03:00
Torsten Ruger
80d58ee03c fixed simple layout offset bug in layout 2015-10-13 14:46:07 +03:00
Torsten Ruger
aa20f2ca77 renamed reg ref to reg val
more appropriate
alas, salaam-arm will break for a sec
2015-10-10 21:38:55 +03:00
Torsten Ruger
dd3381e38b move type to phial and add type to reg_ref 2015-10-10 19:14:27 +03:00
Torsten Ruger
cb306c09f0 stash unused 2015-10-10 12:39:09 +03:00
Torsten Ruger
20ccf58e7c move and remove unused from stream reader/writer 2015-10-10 12:24:43 +03:00
Torsten Ruger
3d342f7d88 remove new_message instruction 2015-10-10 12:04:34 +03:00
Torsten Ruger
c3eb295f4e remove set optimization
will become obsolete soon anyway
2015-10-10 11:52:54 +03:00
Torsten Ruger
8642207158 remove instance_get instruction 2015-10-10 11:17:04 +03:00
Torsten Ruger
4334b68736 remove virtual main instruction
on a quest to remove all virtual instructions
2015-10-10 11:14:31 +03:00
Torsten Ruger
4b8a4d4ef5 improve tmp register usage 2015-10-10 11:05:55 +03:00
Torsten Ruger
024e6cb389 ion out last changes from grammar update
surprisingly painless, considering it was more or less a rewrite
2015-10-09 18:06:00 +03:00
Torsten Ruger
4c17ed2e6e update the reader rewrite and reflect name changes 2015-10-09 17:51:14 +03:00
Torsten Ruger
02e9975ad6 fix case (from replace) 2015-10-07 15:25:11 +03:00
Torsten Ruger
99098951ca rename bosl to phisol 2015-10-07 15:22:47 +03:00
Torsten Ruger
e669489419 went over the various readmes 2015-10-07 11:32:48 +03:00
Torsten Ruger
cd96e78e2d small fix 2015-10-07 10:22:45 +03:00
Torsten Ruger
83ef902b55 better calcite and operator to expand the interpreter test 2015-10-07 10:05:34 +03:00
Torsten Ruger
cc89e49a43 renames SelfSlot to SelfsSlot
in the hope to make a little more distinction
2015-10-07 10:04:00 +03:00
Torsten Ruger
f0611e52db work on branches
the concept is different in bosl, move appropriate to virtual
2015-10-07 10:02:51 +03:00
Torsten Ruger
4e26166dff fix type in call issue 2015-10-06 15:26:57 +03:00
Torsten Ruger
f4a4ccb98e several larger changes came together, bit of cleaning too
- all code must be in functions (which must be in classes).
— changes a fair few tests
— also changes api, as method is not recursive, not passed around
- all state in instance vars in compiler (no accessors)
- class is another such variable, surely more coming
all green again
2015-10-06 00:27:13 +03:00
Torsten Ruger
501da4d922 ignore 1.9.3
something with the integer encodings doesn’t quite sync
2015-09-27 22:56:20 +03:00
Torsten Ruger
4186405930 new i_to_s test 2015-09-27 22:39:10 +03:00
Torsten Ruger
259b0afa96 improve tests 2015-09-27 20:28:34 +03:00
Torsten Ruger
6e009cc6df remove send instruction 2015-09-27 19:18:36 +03:00
Torsten Ruger
eb57eb4d41 minor send fixes 2015-09-27 19:07:56 +03:00
Torsten Ruger
bb8a57f5a5 remove send , move into call_site (resolve to calls) 2015-09-27 19:07:12 +03:00
Torsten Ruger
252c0ccdca finish typing variables 2015-09-27 16:06:48 +03:00
Torsten Ruger
26c6db17b1 better inspect 2015-09-27 16:06:11 +03:00
Torsten Ruger
18935366fe introducing class variable and typed arguments 2015-09-27 14:30:41 +03:00
Torsten Ruger
94c08f7129 small clean 2015-09-27 14:07:02 +03:00
Torsten Ruger
dba94827ec remove tmp variables
sadly without having to touch tests
2015-09-27 14:00:24 +03:00
Torsten Ruger
5a2a857485 finish the field access
now that fields can be defined
2015-09-27 12:59:50 +03:00
Torsten Ruger
964abe1e32 small cleans 2015-09-27 12:59:26 +03:00
Torsten Ruger
6bdbfcde60 update reader and implement class field 2015-09-27 12:58:54 +03:00
Torsten Ruger
b99b392481 new field access code and test. wip as field def broken 2015-09-27 11:28:06 +03:00
Torsten Ruger
c4f89441e2 cleaning 2015-09-27 11:27:30 +03:00
Torsten Ruger
4d9d67af5c move ast code/patch here 2015-09-27 11:26:53 +03:00
Torsten Ruger
9fe01c7b31 remove unknown type 2015-09-23 18:35:37 +03:00
Torsten Ruger
b1cab4f395 compiler test back up 2015-09-20 17:33:05 +03:00
Torsten Ruger
5f628744d6 more test working
operator wip
2015-09-20 16:52:26 +03:00
Torsten Ruger
77f0a08060 update and fix class compilation 2015-09-20 16:30:39 +03:00
Torsten Ruger
f2fc9c5f89 new field def compiles, fix test 2015-09-20 16:30:07 +03:00
Torsten Ruger
bc70c1efe5 temporarily disabling test that haven't been fixed yet 2015-09-19 22:24:57 +03:00
Torsten Ruger
775bca50ac switching to ast::processor
using instance methods instead of context
2015-09-19 18:56:18 +03:00
Torsten Ruger
3a885a8e46 more expressions and if test 2015-09-19 17:57:44 +03:00
Torsten Ruger
9bacb07f1c add some ast sugar 2015-09-19 17:57:31 +03:00
Torsten Ruger
2061097e88 move compiler to bosl and get first test working (adjusting syntax as i go) 2015-09-19 16:28:41 +03:00
Torsten Ruger
df95b8b54d trigger index for object changed 2015-08-23 02:14:16 +02:00
Torsten Ruger
c039f3d6e6 fix the string warning raises 2015-08-17 02:37:07 +03:00
Torsten Ruger
4e56056b62 better test for add 2015-08-09 00:53:04 +03:00
Torsten Ruger
bae7f5dcb1 better to_s for load constant 2015-08-09 00:52:47 +03:00
Torsten Ruger
db31ff7021 implement adding in interpreter 2015-08-09 00:52:27 +03:00
Torsten Ruger
5d838056fa small rename and new test for layout 2015-08-08 18:08:47 +03:00
Torsten Ruger
ca14ef8914 fix test result, but not test yet 2015-08-07 16:46:55 +03:00
Torsten Ruger
4afd7f78ca fix the plus method that sneaked into arm 2015-08-06 18:55:08 +03:00
Torsten Ruger
9ebe6eb5b7 move to clss names as types
so as not to mix ruby class names into parfait code
2015-08-06 18:28:40 +03:00
Torsten Ruger
75c43d1b03 add fixnum as constant (was buggy) 2015-08-06 18:28:09 +03:00
Torsten Ruger
2f39f707f0 better naming 2015-08-06 18:27:35 +03:00
Torsten Ruger
2c6ca7b4f2 small checks 2015-08-06 18:27:25 +03:00
Torsten Ruger
8560f15c87 plus function, indentation 2015-08-05 18:49:37 +03:00
Torsten Ruger
21b0702154 fix tests (just using local gem) 2015-08-04 22:01:20 +03:00
Torsten Ruger
9680ff2a71 fxes for add test 2015-08-04 21:46:33 +03:00
Torsten Ruger
96c7b7133d no more partial boots, always full reboot
otherwise tests are not indepant
2015-07-30 19:19:37 +03:00
Torsten Ruger
8ab9a417aa minors 2015-07-30 19:18:41 +03:00
Torsten Ruger
7216300452 add interpreter here (moved from debugger) 2015-07-30 19:18:12 +03:00
Torsten Ruger
3fb08acf3f better tests to find sneaky module bug 2015-07-28 16:19:10 +03:00
Torsten Ruger
5fd04ee0c5 shuffling and rename dummy 2015-07-28 16:18:32 +03:00
Torsten Ruger
36f635f7c1 adding sources to register instructions 2015-07-27 12:13:39 +03:00
Torsten Ruger
f91c9fabe8 fix block initialization 2015-07-26 18:28:39 +03:00
Torsten Ruger
e7b8f2fcc8 critical bug from array/list mix up 2015-07-26 18:27:54 +03:00
Torsten Ruger
b0c78479ff clearer to_s s 2015-07-25 09:30:58 +03:00
Torsten Ruger
772212bad9 fix the reg test (one off) 2015-07-24 17:23:44 +03:00
Torsten Ruger
139b0174d8 to_s for reg instructions 2015-07-24 13:23:56 +03:00
Torsten Ruger
fa552bf751 opal only bug, deleting while iterating over array 2015-07-23 17:15:07 +03:00
Torsten Ruger
2f409ea4e1 more dead code goes 2015-07-21 20:24:31 +03:00
Torsten Ruger
074f3af174 uncomment dead code
it’s dead, unfair to say it’s untested.
percentage wise i mean
2015-07-21 19:57:38 +03:00
Torsten Ruger
e3577d18af fix that silly mistake that made the percentage plummet
mostly due to the fact that object is a hash now,
not array. Took a while though
2015-07-21 19:41:30 +03:00
Torsten Ruger
2d0424a370 turned out to be a rewrite of boot process
and also attribute handling and fake_memory
luckily there are tests and all is green again
2015-07-21 15:40:25 +03:00
Torsten Ruger
f8cb33ec5e test ivar name list 2015-07-20 13:20:43 +03:00
Torsten Ruger
2c1c38716b move from new_object to normal new 2015-07-20 13:01:15 +03:00
Torsten Ruger
d7c9245bb3 more fragment tests 2015-07-19 13:31:13 +03:00
Torsten Ruger
31d825df7b fix and test basic and name expressions 2015-07-19 13:20:34 +03:00
Torsten Ruger
48d090f19c test return. remove some dead code 2015-07-19 13:03:21 +03:00
Torsten Ruger
db17a9b696 fix function and class compile
also fix misconception: methods do not have to be added to class by
called
that is a side effect from compiling a method
2015-07-19 12:34:23 +03:00
Torsten Ruger
849a92a909 splitting out the compile_name expression 2015-07-19 12:31:35 +03:00
Torsten Ruger
cbff41b61d test name expr 2015-07-19 11:15:38 +03:00
Torsten Ruger
0a09477dc6 fix and test compiling classes 2015-07-19 10:36:06 +03:00
Torsten Ruger
ae7350bd57 redefining a methods is not an error
and happens in tests
2015-07-19 10:35:45 +03:00
Torsten Ruger
a554762da8 fix the compile while test 2015-07-18 19:02:54 +03:00
Torsten Ruger
3d8fc8819c fix rebooting by clearing our main 2015-07-18 16:12:50 +03:00
Torsten Ruger
b83f50c57c rebooting tests for small compiles 2015-07-18 15:28:57 +03:00
Torsten Ruger
7b1e89effb get fragment tests back online
the 58%  REALLY doesn’t look good
and things have settle down, so no more excuses
2015-07-18 14:33:09 +03:00
Torsten Ruger
f4f703975b removed arm and use as gem 2015-07-18 14:12:20 +03:00
Torsten Ruger
e1c19dee80 remove old to_asm
very strange that is was called in 1.9 but not 2.0
2.0 seems to delay interpolating strings
2015-07-18 12:15:07 +03:00
Torsten Ruger
46de0f278e fix the boot
was broken for unknown reason really
2015-07-18 11:53:04 +03:00
Torsten Ruger
f5136b6b68 minor formatting 2015-07-18 11:52:30 +03:00
Torsten Ruger
53d8f4b163 add source to instruction
for debug
2015-07-18 11:21:49 +03:00
Torsten Ruger
50da6a40f2 Move the Main instruction from register to virtual
also needs a branch in register.
This way the register level is self sufficient
(noticed while writing debugger)
2015-07-17 13:21:57 +03:00
Torsten Ruger
60d09ab057 fix for opal
in opal string and symbol is the same.
2015-07-17 11:40:40 +03:00
Torsten Ruger
9a48ab1330 fix eval for opal consumption 2015-07-17 11:39:20 +03:00
Torsten Ruger
b670e058a9 fixes to get opal to work
opal has bug with << and |=, but changing syntax works
2015-07-12 10:01:45 +03:00
Torsten Ruger
ae97425918 reminder 2015-07-04 14:34:51 +03:00
Torsten Ruger
b61c73acdd renamed info to MethodSource 2015-07-03 20:13:03 +03:00
Torsten Ruger
e959c5b0f5 fixed wrong exit code
no wonder it was set faulting, duh
2015-07-02 13:50:13 +03:00
Torsten Ruger
4f2f56fff8 minors 2015-07-02 13:49:33 +03:00
Torsten Ruger
69781fb505 remoe sys call message
and rely on linux to restore all registers
save message in r8
2015-07-02 13:48:32 +03:00
Torsten Ruger
9a6c5d9ea8 wordlnegth is not +1 for string as no trailing 0 2015-07-02 13:47:46 +03:00
Torsten Ruger
caa4ae1cf0 new tests for space
finds the bug in message creation!
2015-07-02 11:09:23 +03:00
Torsten Ruger
9ca5ddf7c0 fix all tests
some had to be disabled
since stability is coming back more test are coming too
2015-07-02 10:26:48 +03:00
Torsten Ruger
3195d800e9 fix putstring file descriptor 2015-07-02 09:49:52 +03:00
Torsten Ruger
11997ef354 had to revert name method change
method is not known when message is created
2015-07-02 09:48:41 +03:00
Torsten Ruger
7136450bde move put string to string where it belongs 2015-07-01 21:45:41 +03:00
Torsten Ruger
f8ba77dff7 fix require 2015-07-01 21:45:21 +03:00
Torsten Ruger
1b791dc0d0 putstring was missing the steam id 2015-07-01 21:42:59 +03:00
Torsten Ruger
8f0fd30ef3 small name update 2015-07-01 21:42:31 +03:00
Torsten Ruger
6a23ef8b26 storing method, not just name in message
goes with a rename and other admin
2015-07-01 19:39:23 +03:00
Torsten Ruger
5e85d0781f have to retry in assembler
can raise several times, calling once was not enough
tbr: to be revisited
2015-07-01 19:36:18 +03:00
Torsten Ruger
60fe0dfd1c separate New frame and message
and also much much shorter now, as all is static
2015-07-01 19:27:52 +03:00
Torsten Ruger
135fcaa8fa static message chain
Rewrote Message + frame, only static linked list needed, not dynamic
frames either
2015-07-01 19:27:18 +03:00
Torsten Ruger
fb67f550ec more index fixes, this time arguments 2015-07-01 09:48:20 +03:00
Torsten Ruger
4c315a8115 fix the autocomplete 2015-07-01 09:47:37 +03:00
Torsten Ruger
047c77e186 fixed that darn method address bug 2015-07-01 09:47:10 +03:00
Torsten Ruger
9541712af8 fixing all the indexes
with the type word and layout
but the list starting at 1, indexes still need 1 added
and for arm x 4.
Tried to get all that into one function, resolve_index
2015-06-30 18:38:56 +03:00
Torsten Ruger
88f45cbf15 weird 4 to add for call works 2015-06-30 18:36:57 +03:00
Torsten Ruger
c0f11d70f1 rephrased the retry, didnt find the bug though 2015-06-30 18:35:37 +03:00
Torsten Ruger
b9e2d4dd21 remove some debug 2015-06-30 10:22:54 +03:00
Torsten Ruger
7e9b940890 add init_message to space
so kernel::__init can use that and the first next_message does not need
to be reused
2015-06-30 09:52:17 +03:00
Torsten Ruger
df2a080bd0 move register_machine to register 2015-06-30 09:46:11 +03:00
Torsten Ruger
ee2294ded7 remove unused reference 2015-06-30 09:45:45 +03:00
Torsten Ruger
60c8f8ef73 move generator functions to the instructions they generate 2015-06-30 09:43:50 +03:00
Torsten Ruger
bd77db656a remove class_eval on slots to map registers
Use their class names (or for now called object names)
these are the same that Register helper functions accept already anyway
2015-06-30 09:39:45 +03:00
Torsten Ruger
c4502c5030 get rid of the last constants
return them by method, nicer code
2015-06-30 09:38:32 +03:00
Torsten Ruger
b8090e0ecd fix init to load into new message 2015-06-30 09:37:25 +03:00
Torsten Ruger
3a6d3143c5 change method debug format for gdb autocomplete 2015-06-30 09:37:01 +03:00
Torsten Ruger
0f2c8e4201 finally scoping builtin to register
had put this off because it breaks history
but now the references to register stuff which
builtin is off course full of, become much shorter
2015-06-29 21:03:58 +03:00
Torsten Ruger
a03dcecbbd fix namespacing and remove indexes 2015-06-29 20:58:52 +03:00
Torsten Ruger
553f30c874 more ripples from removing index constants 2015-06-29 20:58:06 +03:00
Torsten Ruger
1e18db00c9 add set_slot and save_return
as functions to generate instructions
2015-06-29 20:57:16 +03:00
Torsten Ruger
a24e96efbc asserts to debug 2015-06-29 20:56:11 +03:00
Torsten Ruger
218fafca05 renames 2015-06-29 20:55:45 +03:00
Torsten Ruger
5ce7b6c7c9 removing those ugly slot index constants
The constants were bad enough,
but they were also at the wrong level

Now register level is defining mappings from
symbol names to indexes, by using the layout
2015-06-29 10:55:22 +03:00
Torsten Ruger
06b5d24729 fixing require order
so Register stuff is defined when builtin is loaded
2015-06-29 10:53:27 +03:00
Torsten Ruger
a16abeb3e6 giving the method to return and save
so they can make decisions
like wether to create a frame or not
2015-06-28 22:03:21 +03:00
Torsten Ruger
02615db508 minor 2015-06-28 22:02:27 +03:00
Torsten Ruger
8674c322c4 correctly linking frames and messages 2015-06-28 22:02:07 +03:00
Torsten Ruger
31635d9747 fixing index issues 2015-06-28 22:01:13 +03:00
Torsten Ruger
99b59d920c constant fixes 2015-06-28 10:52:02 +03:00
Torsten Ruger
a00a49ecdb fix frame indexes 2015-06-28 10:50:47 +03:00
Torsten Ruger
ef42abe611 unifying register comstants
were in several files with different names
many files touched, but just renames
2015-06-27 21:16:46 +03:00
Torsten Ruger
97b4c469f8 fixing register order in some instructions
and their use
Arm is confusing as it has result as first arg
we use forward logic, i.e. from -> to
2015-06-27 20:09:21 +03:00
Torsten Ruger
add79e5157 use sod names for debug info 2015-06-27 20:08:07 +03:00
Torsten Ruger
294ea8de4f fix the move, correct for funny pipeline 2015-06-27 20:07:42 +03:00
Torsten Ruger
485d6566ad write object refs at offset
that is (only) the linux/arm offset off course
2015-06-27 15:17:15 +03:00
Torsten Ruger
d0d857bbe0 fix object loading
by (ahem) copying the code from MoveInst.
2015-06-26 20:36:00 +03:00
Torsten Ruger
5539d8fe32 just a little more precise 2015-06-26 20:35:16 +03:00
Torsten Ruger
e20fba61d9 allowing for relinking to add more instructions 2015-06-26 20:34:40 +03:00
Torsten Ruger
55b7ca83e1 fixing load constant
which needs to add to pc to get an object reference
2015-06-26 20:01:52 +03:00
Torsten Ruger
108cc8af45 minor cleanup 2015-06-26 20:00:50 +03:00
Torsten Ruger
37403f1139 fix misunderstood mov usage
When moving a reference (pointer) to a register
one needs to ADD to the pc
i.e. one needs an add, not mov instruction
2015-06-26 20:00:33 +03:00
Torsten Ruger
32e1903884 finished init routine
and better implemented sys calls
2015-06-25 16:31:09 +03:00
Torsten Ruger
cedc6e1b61 Fix parfait bug for word_length 2015-06-24 16:08:06 +03:00
Torsten Ruger
59188105ba finish syscall
works, even had to fix parfait bug to see
2015-06-24 16:07:27 +03:00
Torsten Ruger
1a82ebcd69 mor on sys call implementation 2015-06-23 19:55:54 +03:00
Torsten Ruger
2aba926f1f start on reworking sys calls 2015-06-22 22:48:42 +03:00
Torsten Ruger
9c21f4274d better names for index constants 2015-06-21 21:09:15 +03:00
Torsten Ruger
836089a249 clean up Get/SetSlot
document and make arguments consistent
2015-06-21 21:00:16 +03:00
Torsten Ruger
f3ee11fca5 simple set optimisation
the price of having simple code (generation) is that
it is sometimes stupid code that gets generated
Filter some of the really daft stuff out
2015-06-21 17:25:27 +03:00
Torsten Ruger
aafb179c61 move frame_impl to register 2015-06-21 17:23:15 +03:00
Torsten Ruger
3fe35e34ec fix slot constant access 2015-06-21 17:22:51 +03:00
Torsten Ruger
cdf17a73b2 changed Set order
from to seems more logical than to,from
2015-06-21 13:29:27 +03:00
Torsten Ruger
6867175bd1 slot docs and rename 2015-06-21 00:21:42 +03:00
Torsten Ruger
eeaf2d97de starting to clear up slots
mostly docs
2015-06-20 23:49:30 +03:00
Torsten Ruger
7551a16b6e pretty names for references 2015-06-19 19:50:53 +03:00
Torsten Ruger
a2bfaf1b2c remove memory from sod but keep layout 2015-06-19 13:11:40 +03:00
Torsten Ruger
87143091ca moved sod write method to module 2015-06-19 12:29:41 +03:00
Torsten Ruger
1baece99c7 split the pass runs to debug 2015-06-12 18:52:06 +03:00
Torsten Ruger
54c71fa216 split pass runs for debug in-between 2015-06-11 17:04:18 +02:00
Torsten Ruger
a1848a051d don't print binary codes in sof
keeps more readable and binary is really only useful with decompiler
2015-06-11 07:05:39 +02:00
Torsten Ruger
9b89f6cb16 move the pass running out of elf
and leave it up to user
later partial running planned
2015-06-11 07:04:55 +02:00
Torsten Ruger
ee6f9d733b rename Mystery
just unknown, mystery should be more difficult to find out.
After all we keep run time info, so just need unknown at compile time
2015-06-11 07:04:14 +02:00
Torsten Ruger
d8fa266b5d fix method call addresses
was jumping to the method
but needs to jump to the code of the method
2015-06-10 11:10:46 +02:00
Torsten Ruger
6f111a5ae0 fix the initial jump 2015-06-10 10:43:50 +02:00
Torsten Ruger
c9ec6e2f39 fix debug 2015-06-09 11:38:03 +02:00
Torsten Ruger
20b28077a1 we have executables again
they are missing their initial jump, but reassemble fi
2015-06-09 11:37:32 +02:00
Torsten Ruger
7818059734 remove dead code 2015-06-08 12:24:28 +02:00
Torsten Ruger
f8688cbe17 it actually assembles again 2015-06-08 12:19:53 +02:00
Torsten Ruger
0122585b3b fixed, nay, hacked list problem
lists were in object space but not liked due to
equality returning true
2015-06-08 11:52:56 +02:00
Torsten Ruger
5b3045e42a remove positioned copy paste 2015-06-08 11:37:20 +02:00
Torsten Ruger
575d19cb02 assembling layout 2015-06-07 10:06:08 +02:00
Torsten Ruger
13ab029cc5 word length fixes 2015-06-06 18:46:53 +02:00
Torsten Ruger
1c29fcfd43 mem_length to word/byte length
be more specific, and don’t include padding
2015-06-05 09:20:43 +03:00
Torsten Ruger
30d9aaf61b extract padding functions to module
and finally TEST them
its especially the brain bending stuff that needs tests
2015-06-04 08:22:38 +03:00
Torsten Ruger
4ddfcc4900 assembles more already 2015-06-03 10:01:59 +03:00
Torsten Ruger
3cdb3d513c move to basic types (not wrapped) 2015-06-02 09:05:27 +03:00
Torsten Ruger
aea8f20be5 more symbol related fixes 2015-06-01 17:31:35 +03:00
Torsten Ruger
5726d2c181 move machine to module level
makes for shorter, more concise, access
also remove one more bug possibility
(reinitiation)
2015-06-01 08:40:17 +03:00
Torsten Ruger
336e6c18de register reference creation got more complicated 2015-06-01 08:34:17 +03:00
Torsten Ruger
66f5dcf152 method stores constants 2015-06-01 08:33:51 +03:00
Torsten Ruger
f08d9659fc getting the symbols to work 2015-06-01 08:33:23 +03:00
Torsten Ruger
bee73801eb revert to symbols
Parfait::Words were nice, but endless problems with the fact that when
you write “String” you get a string.
Symbols take care of uniqueness at the same time
2015-05-31 18:34:18 +03:00
Torsten Ruger
5d870ef154 got it down to string equality/identity 2015-05-31 17:54:36 +03:00
Torsten Ruger
1509e7ba2f better assembly
but bug is still scuttling around there in
link/assembly process
2015-05-31 14:45:28 +03:00
Torsten Ruger
7a5cf03d73 minor fixes 2015-05-31 14:44:26 +03:00
Torsten Ruger
db5c958d2e fix lists first 2015-05-31 13:26:47 +03:00
Torsten Ruger
03bdc16810 fixed layouts
also moved objects to machine, from space
space has a list of objects, but implicit,
not as an explicit array
2015-05-31 13:02:29 +03:00
Torsten Ruger
aaa206fbca debugging missing layout 2015-05-31 11:07:49 +03:00
Torsten Ruger
deaa062062 start to minimize
filter unused methods
Filter works, need to remove still
2015-05-30 14:49:47 +03:00
Torsten Ruger
079306dbf8 move main to object (from kernel) 2015-05-30 14:49:10 +03:00
Torsten Ruger
24259fa18b fix method list (was still array) 2015-05-30 14:47:56 +03:00
Torsten Ruger
96a20ff554 add delete to list 2015-05-30 14:22:33 +03:00
Torsten Ruger
e651b57d08 homing in on line length 100 2015-05-30 12:20:39 +03:00
Torsten Ruger
33d464f032 minor 2015-05-30 11:56:47 +03:00
Torsten Ruger
bea10cc560 fix bug where layout wasn't initialized 2015-05-30 11:55:46 +03:00
Torsten Ruger
3e9e650764 fix arm tests 2015-05-29 12:47:49 +03:00
Torsten Ruger
73e5ec550a small fixes 2015-05-29 12:33:59 +03:00
Torsten Ruger
a46b2d5c56 update to use parfait not virtual
more ripples
reverting to integers (not virtual::integer)
2015-05-29 12:33:40 +03:00
Torsten Ruger
c28430698c get binary code to work 2015-05-28 21:10:27 +03:00
Torsten Ruger
5845bde33a binary code to its own class
makes linking easier
2015-05-26 20:17:43 +03:00
Torsten Ruger
96c59ac144 fixing assembly (wip)
main entry is the main problem, still polishing
2015-05-26 20:17:03 +03:00
Torsten Ruger
8413f6b470 smaller clean-ups 2015-05-25 18:48:35 +03:00
Torsten Ruger
4d0773ebae misc 2015-05-24 20:00:11 +03:00
Torsten Ruger
5670f07eac bit more on booting of the space 2015-05-24 19:59:19 +03:00
Torsten Ruger
2ccbea04b9 fixing assembly
position code changed and linking too
passes not working
2015-05-24 18:05:20 +03:00
Torsten Ruger
95ac024421 fix old tests again 2015-05-24 16:55:03 +03:00
Torsten Ruger
29a34b4d24 no need to keep object list in linker (use space) 2015-05-24 16:25:17 +03:00
Torsten Ruger
3e18694be7 code for method 2015-05-24 16:24:57 +03:00
Torsten Ruger
38cb9f7d3c get words to compare to strings 2015-05-24 15:31:44 +03:00
Torsten Ruger
b58bba3fc4 register access fixes
since the constants moved
2015-05-24 15:31:30 +03:00
Torsten Ruger
6f0ae51dc5 move register constants here 2015-05-24 15:07:07 +03:00
Torsten Ruger
05a7ded7d5 fix space layout and init 2015-05-24 15:06:35 +03:00
Torsten Ruger
1170761922 fix classic index bug 2015-05-24 15:05:58 +03:00
Torsten Ruger
6786855e95 start on passes
after all that booting and vm/parfait changes
passes have gone out of sync, start to fix
2015-05-24 13:55:05 +03:00
Torsten Ruger
47abdffd1a minor 2015-05-24 13:54:17 +03:00
Torsten Ruger
3c0022191b more booting 2015-05-24 13:53:49 +03:00
Torsten Ruger
e64733d72b some link for readmes
for salama-reader
2015-05-24 13:42:29 +03:00
Torsten Ruger
1a499a1de9 fix method seperation
Since Compiled method split into Method and
CompiledMethodInfo (parfait/vm) lots of call
syntax changes
2015-05-24 13:31:33 +03:00
Torsten Ruger
1d9ef6d5c8 boot process 90 percent done
Creating the class and layout objects in the
right order was tricky, but  now mostly done
2015-05-23 12:15:06 +03:00
Torsten Ruger
94f49bf5c2 much work on boot process
fiddly egg and chicken, though a bit clearer with parfait objects now
2015-05-22 22:51:36 +03:00
Torsten Ruger
174afb33fb catch errrors 2015-05-22 22:50:40 +03:00
Torsten Ruger
b687255976 move to parfait members 2015-05-22 22:50:19 +03:00
Torsten Ruger
b4eb14e639 found bug and more tests 2015-05-21 21:50:39 +03:00
Torsten Ruger
531d3e181a was missing some super inits 2015-05-21 21:50:17 +03:00
Torsten Ruger
a28b41a5f5 renamed adapter
seemed more appropriate as it makes the
parfait work in the vm (i.e. adapts parfait)
2015-05-21 21:49:47 +03:00
Torsten Ruger
422ec64105 all green
That fixes all existing tests. Operation successful

Off course there is tests missing :-(
2015-05-20 17:29:08 +03:00
Torsten Ruger
2ec9ee90f9 forgot to init super
which caused the fake_mem to be nil
2015-05-20 17:17:11 +03:00
Torsten Ruger
6eba363fb8 more speration
Separating vm and parfait
especially in method this is hairy, lots of ripples
bug is back in sod (i hope thats a good thing)
2015-05-20 17:11:13 +03:00
Torsten Ruger
d6d0f4f43a split compiled_method into method and compiled_method_info 2015-05-20 16:43:26 +03:00
Torsten Ruger
dd2a5e367f more docs and better read me 2015-05-20 13:50:56 +03:00
Torsten Ruger
d71547ea01 copy and other improvements for word
more tests reveal a bug (fixed) and more docs
2015-05-20 13:50:25 +03:00
Torsten Ruger
06cfba7c58 get sod to output lists and dicts 2015-05-20 10:57:20 +03:00
Torsten Ruger
8ec8a519ba externalize boot process
Booting is complicated, make an own file for it
2015-05-19 20:29:33 +03:00
Torsten Ruger
4e3640e432 shift code from class to module
as class derives from module, module carries
much of the code that one thinks of as class
class only handles allocation really
2015-05-18 12:35:01 +03:00
Torsten Ruger
cfc2c474b2 test compatibility layer
test from and to std/parfait objects
for list and word for now
moved some of that code to virtual, out of parfait
2015-05-18 10:47:29 +03:00
Torsten Ruger
f7eb888c36 refactoring virtual parfait code 2015-05-18 10:21:23 +03:00
Torsten Ruger
d348e7afe7 more parfait ripples
changes due to previous changes in parfait api
2015-05-18 10:10:31 +03:00
Torsten Ruger
cff827ad42 final word fix
that does the parfait
2015-05-17 15:34:45 +03:00
Torsten Ruger
e70bfb9f7a many minor parfait fixes 2015-05-17 15:34:29 +03:00
Torsten Ruger
3bdba119c8 fix the list after object fixes
start index at 1, but don’t overwrite layout,
so add one
2015-05-17 14:56:06 +03:00
Torsten Ruger
3b268df920 init with nil layout
making the default length 1 (the nil layout)
2015-05-17 14:55:10 +03:00
Torsten Ruger
701b0bc011 fix object grow
and write a test (and another one …)
2015-05-17 14:44:48 +03:00
Torsten Ruger
1114f06921 rename old layout()
new is called get_layout, but keep old around for
checking
2015-05-17 14:41:18 +03:00
Torsten Ruger
350d708fd3 introduce some constants 2015-05-17 14:40:02 +03:00
Torsten Ruger
8fa501fb91 fix object compiletime
and write some tests for it
2015-05-17 14:38:25 +03:00
Torsten Ruger
fe2be323d8 improve boot
also move to superclass not superclass_name in class
Makes ripples
2015-05-16 20:16:49 +03:00
Torsten Ruger
7085dee510 array to list conversion
start on layouts
2015-05-16 14:01:48 +03:00
Torsten Ruger
bee269f7a8 just renaming 2015-05-16 12:54:11 +03:00
Torsten Ruger
9376b8bc16 work on ObjectWriter
Back to the root! but lots of adjusting
ObjectWriter takes machine, machine has space
Virtual constants become Parfait::Objects etc
2015-05-16 12:53:10 +03:00
Torsten Ruger
9d8dc68bf4 fixing all tests 2015-05-15 21:11:44 +03:00
Torsten Ruger
f691ba1b20 using sof is_value 2015-05-15 21:11:29 +03:00
Torsten Ruger
a46dd9f6bf more word tests 2015-05-15 20:31:43 +03:00
Torsten Ruger
0731a6061a fix word implementation and tests
much better, though wasteful implementation
breaks a few tests, but ploughing on first
2015-05-15 16:45:36 +03:00
Torsten Ruger
164816c441 basic word functionality
and conversion from string
2015-05-14 20:39:12 +03:00
Torsten Ruger
5e0e8c8364 move index_of to list
and give it a sort of basic implementation
2015-05-14 19:54:38 +03:00