Torsten Ruger
7fc104a019
Use minitest-profile to find long tests
...
Only found one big fibo
All else due to large amount of objects
(now with factories it jumped from hundreds to thousands)
2018-09-02 13:58:42 +03:00
Torsten Ruger
8a81d41d5e
Move booting to RubyXCompiler init
...
Also pass the source into the compile method.
This way compiler can be reused for subsequent compile.
Does remove some double boots, but no major time save
2018-09-02 13:57:19 +03:00
Torsten Ruger
d73e1526cd
Some docs and to_s testing
...
somewhat code_climate inspired
2018-09-01 15:54:25 +03:00
Torsten Ruger
f798173a09
change to_risc and builtin code according to last commit
...
Wherever space was loaded to get to the next_message
we now load the Message factory.
Otherwise much the same, only the attribute is next_object, not next_message
The binary is growing with 1k objects per factory, so i had to fix (hack) arm to handle bigger constants
close #14
2018-09-01 11:28:53 +03:00
Torsten Ruger
d964e9ea9d
let spce keep the messages in a factory #14
...
Like Integers and addresses before, messages are now in a factory
Factories keep allocated (uninitialised) objects, had to make init public to call it
2018-09-01 11:24:16 +03:00
Torsten Ruger
0a390cc5a9
shaves an instruction off resolve_method
...
by loading nil directly, not space first
2018-09-01 11:20:59 +03:00
Torsten Ruger
c3b026a180
expand constant load
...
slightly hacky, but in good tradition
previous implementation only worked until 16 significant bits, which is getting to little
this one just keeps adding more instructions to arrive at the constant by force
There are surely cleverer ways of doing this, ie by using the barrel shifter
A start on #15 , admittedly a hack
2018-08-31 23:28:31 +03:00
Torsten Ruger
b2339dc330
fix address nil values
2018-08-30 16:38:00 +03:00
Torsten Ruger
dc12c1d70b
add the addresses from labels as constants
2018-08-29 21:06:29 +03:00
Torsten Ruger
ea7f3c9653
remove the last_object from chain
...
also tried to keep the first around as was done in space
partially to not have to add the consrtants seperately
didn't work, as chain gets broken
also this has to be redone anyway
2018-08-29 21:05:54 +03:00
Torsten Ruger
c983dcf0eb
move return address generation to factory
...
removes the list from space
adds a ReturnAddress factory instead
and uses these throughout
2018-08-29 21:02:49 +03:00
Torsten Ruger
71ab369c71
use factory to generte intergers in space
...
start with just integer factory in space
change all the hand-out code
still #14
2018-08-24 18:49:21 +03:00
Torsten Ruger
d396da16e3
start with #14 by implementing factory
...
page was maybe a too low level name
pages may be the unit of the syscall, but after that objects desolve (maybe later to be added on from different pages)
Factory has the job of handing out a new instance of a type
it keeps a freelist for that and a reserve
2018-08-23 19:55:06 +03:00
Torsten Ruger
9687d6611f
avoid adding risc instructions twice
...
that causes loops in the chain
infinite loops in the code that are hard to debug
closes #11
2018-08-19 17:29:04 +03:00
Torsten Ruger
f85fe8a2cb
fix bug in slot_load and definition
...
move parfait helper for reuse
2018-08-19 15:36:51 +03:00
Torsten Ruger
57dc6c45bb
remove the code_builder
...
this is core of #11
rename compiler_builder to just builder
and change all builder uses to use that
some test change as code is not returned anymore
2018-08-19 13:16:07 +03:00
Torsten Ruger
b294208025
continue with #11
...
slots are the most tricky, especially testing
2018-08-19 13:06:00 +03:00
Torsten Ruger
047a36178f
start with #11
...
by adding striaght to compiler
2018-08-19 12:56:44 +03:00
Torsten Ruger
5b2c7745fe
move the methods test to mains
...
previous commit made the mains tests more general
this joins methods tests here
so we can run them on arm too
fix #11
2018-08-18 20:06:15 +03:00
Torsten Ruger
80264c5322
mains tests can include any code
...
not wrapping as main anymore
(must still include mains)
first part of #11
2018-08-18 19:42:14 +03:00
Torsten Ruger
233b83510f
fixed some disabled tests
2018-08-17 22:43:17 +03:00
Torsten Ruger
ce157ffa94
change block_yield to_risc to use builder
...
only changes the order of two instructions
2018-08-16 08:58:49 +03:00
Torsten Ruger
1dabe0fda1
finish the idea behind #8 , conditionally creating variables
...
by using space? , the ? makes for conditional creation of the variable
This is especially useful for constants (ie space)
2018-08-15 19:59:17 +03:00
Torsten Ruger
252ae6de72
finally get rid of the fixme in div10
...
create (load/reduce) the int once and transfer.
Save a cruicial 2 instructions
Also expanded the variable name possibilities with _self, __const , _1 and _2
2018-08-15 18:18:21 +03:00
Torsten Ruger
15337e10be
move putstring to use builder
2018-08-15 17:52:21 +03:00
Torsten Ruger
e953cc90d5
remove some more add_xx functions
...
also load labels by dsl now
2018-08-14 20:24:48 +03:00
Torsten Ruger
520dc7b41f
remove ad_transfer in save_message
...
towards removing all add_
change to set_builder and chaining in reg values
2018-08-14 20:08:58 +03:00
Torsten Ruger
37461a1727
add the ! syntax to create variables in builder, fix #8
...
now a variable has to be created before being used
thus it is save to develop contracts where a certain name
must exist in the scope
Maybe the syntax starts getting a bit weird, but at least the ! is a common symbol in ruby
2018-08-14 19:39:46 +03:00
Torsten Ruger
fb54d68020
redo restore after syscall with builder
2018-08-13 18:48:54 +03:00
Torsten Ruger
55bc9c5273
rewrite new_int with builder
2018-08-13 18:02:34 +03:00
Torsten Ruger
86462e238a
large test changes due to change in cc
...
calling convention does affect
less than before, but still a LOT
2018-08-12 15:02:23 +03:00
Torsten Ruger
fee9e261a5
still some names that needed changing
2018-08-12 14:48:20 +03:00
Torsten Ruger
28b4a2b373
add line numbers to array output
2018-08-12 13:58:58 +03:00
Torsten Ruger
3d113b4d83
fix more of the changed names
...
add a few self.
2018-08-12 13:10:44 +03:00
Torsten Ruger
84de400529
some test change because of renaming
...
next is a keyword, can't be used as instance writer
fake_memory gets the pobject for debug
2018-08-11 19:17:20 +03:00
Torsten Ruger
99a95d40a6
also redid the get/set internal byte with builder
...
had to pimp register value to use a semblance of the dsl
using <= for bytes and << for words
2018-08-09 20:16:55 +03:00
Torsten Ruger
0d52b620ed
redid integer comparison with builder
...
had to add some helpers to builder
2018-08-08 20:53:06 +03:00
Torsten Ruger
fc6aa4e28b
rework operator with builder
2018-08-08 15:49:47 +03:00
Torsten Ruger
78466090b3
add reduce_int and fix bug
...
hardcoded operator, buh
reduce_int to avoid that long constant
2018-08-08 15:49:07 +03:00
Torsten Ruger
f5ea51c4d0
new test to run out of ints
2018-08-08 12:03:17 +03:00
Torsten Ruger
6200a35562
add shortcut for class_name
...
for when type is not set
2018-08-08 12:02:59 +03:00
Torsten Ruger
c63e55c2bc
add an operator function
...
to be able to use the builder more
also add ability to load fixnums (for the int functions)
2018-08-07 20:48:36 +03:00
Torsten Ruger
554c2d3d73
just checking fibo 30
...
at just under 8000 instructions i can't wait to run real benchmarks
2018-08-06 14:13:39 +03:00
Torsten Ruger
393ac873c9
change return sequence to return messages to space
...
as it was before blocks
(thought blocks would make reuse of messages impossible, but was wrong, this only appilies to lambdas)
(too) many tests affected
2018-08-06 14:07:17 +03:00
Torsten Ruger
77cbc0ad6a
always use fail fast (in dev)
...
but not for the travis run (or test_all check)
2018-08-06 13:07:06 +03:00
Torsten Ruger
fd25f997ce
reqrote return sequence with builder
...
added test _before_ , same code, just much easier to read
in preparation for returning messages
2018-08-06 13:04:47 +03:00
Torsten Ruger
595e032edf
add function_return helper to risc_value
...
create a function_return from within builder
2018-08-06 13:03:33 +03:00
Torsten Ruger
c9d8f750e5
extend type inference for dsl
...
and finally test it
2018-08-06 10:11:12 +03:00
Torsten Ruger
308996bf8e
fix all tests accordingly to new return
2018-08-02 17:37:27 +03:00
Torsten Ruger
050659ea12
block tests for if and while
...
bundle update too
2018-08-01 20:17:41 +03:00