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
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
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
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
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
233b83510f
fixed some disabled tests
2018-08-17 22:43:17 +03:00
ce157ffa94
change block_yield to_risc to use builder
...
only changes the order of two instructions
2018-08-16 08:58:49 +03:00
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
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
15337e10be
move putstring to use builder
2018-08-15 17:52:21 +03:00
e953cc90d5
remove some more add_xx functions
...
also load labels by dsl now
2018-08-14 20:24:48 +03:00
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
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
fb54d68020
redo restore after syscall with builder
2018-08-13 18:48:54 +03:00
55bc9c5273
rewrite new_int with builder
2018-08-13 18:02:34 +03:00
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
fee9e261a5
still some names that needed changing
2018-08-12 14:48:20 +03:00
3d113b4d83
fix more of the changed names
...
add a few self.
2018-08-12 13:10:44 +03:00
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
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
0d52b620ed
redid integer comparison with builder
...
had to add some helpers to builder
2018-08-08 20:53:06 +03:00
fc6aa4e28b
rework operator with builder
2018-08-08 15:49:47 +03:00
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
f5ea51c4d0
new test to run out of ints
2018-08-08 12:03:17 +03:00
6200a35562
add shortcut for class_name
...
for when type is not set
2018-08-08 12:02:59 +03:00
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
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
595e032edf
add function_return helper to risc_value
...
create a function_return from within builder
2018-08-06 13:03:33 +03:00
c9d8f750e5
extend type inference for dsl
...
and finally test it
2018-08-06 10:11:12 +03:00
308996bf8e
fix all tests accordingly to new return
2018-08-02 17:37:27 +03:00
050659ea12
block tests for if and while
...
bundle update too
2018-08-01 20:17:41 +03:00
4f3c0d8b08
more block tests working
...
dynamic calls and operators on block args
(giant strides)
2018-08-01 16:31:16 +03:00
4b4528abb2
propagate constants from block_compiler up
...
up to method_compiler, where they are collected by mom_compiler
(and included in binary)
2018-08-01 16:27:34 +03:00
81cc109d1e
more block tests
...
instance and arg access
2018-07-31 19:44:40 +03:00
04bcfea8ce
fix scoping of blockcompiler
...
Was accessing caller scope, but must use caller's caller as the yield itself is a call.
2018-07-31 18:00:42 +03:00
4fe0edd1e3
first risc level block test working
...
assign was not executing yield
baecause it was just testing for send, instead of callable
2018-07-30 20:11:52 +03:00
9c6a099cde
block test
...
working on return semanitcs
(still avoiding the implicit return)
2018-07-30 14:10:24 +03:00
165036ea39
misc
2018-07-30 10:26:47 +03:00
285a88b59f
generalize assemblers to use callables
...
not just methods, they are almost the same anyway
2018-07-30 10:23:42 +03:00
f5c284b3a0
bring the blocks down to mom level
...
reusing message_setup, but adding yield specific instructions
2018-07-24 11:35:49 +03:00
d80ef4bf4e
store method, not name, in message
...
changes the calling and thus too many test
2018-07-22 22:29:32 +03:00
f620f0fd74
last test fixed, ruby layer complete
2018-07-20 21:27:55 +03:00
b00b0cf064
fixed some interpreter tests
...
hoisting is slightly more simple and that adds a couple insstructions
2018-07-20 21:00:47 +03:00
ff8b95f21a
get block resolution to use the extra
...
block_compiler puts in the extra, that we get out when resolving the type
Thus block args work, though only by assuming direct call
2018-07-17 10:37:33 +03:00
3343017dba
move type resolution to compiler
...
from risc_value.
also unite mock compilers
2018-07-16 11:46:18 +03:00
3bc85805a4
must pass registers to slot_to_reg and reg_to_slot
...
as they are typed, those functions don't resolve on Risc, but the register type
miscother changes from previous commits
2018-07-15 16:30:50 +03:00
f31d22d901
use real type in register, not symbol
...
this has some more consequences, upcoming
2018-07-15 15:16:12 +03:00
69385c863f
some more addresses
2018-07-15 15:13:25 +03:00
61c840c023
start to move slot_load code to register_value
...
the iea is to iterate through register_values while reducing the slot_load to a number of Slot_to_regs
wip
2018-07-13 21:56:55 +03:00
2f07cc34f3
add parfait block
2018-07-07 15:50:43 +03:00