Commit Graph

62 Commits

Author SHA1 Message Date
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
bd78a2d555 renames Typed to Vm 2017-01-14 19:28:44 +02:00
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
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
a00f6be3ba remove the space instance from register machine
bad design, probably from the booting
2016-12-30 14:04:59 +02:00
b5f04ec718 mostly renames from the type change
also making setters as explicit set_xx methods
2016-12-29 18:45:32 +02:00
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
9cf56b3aa6 use factory functions consistently to create instructions 2016-12-28 19:01:58 +02:00
4cf732d395 use transfer factory 2016-12-28 18:37:15 +02:00
57c038f13b use load_constant factory method 2016-12-28 18:31:29 +02:00
4412eda105 small refactor and rename 2016-12-28 18:16:39 +02:00
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
f648bf7bd5 rename also get_slot, to slot_to_reg
makes source and target clear
2016-12-25 18:05:39 +02:00
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
756cb52a98 renames compiler to method_compiler 2016-12-18 14:15:19 +02:00
b3a9d8b1bc register and boot consequences of typed method 2016-12-14 13:23:46 +02:00
da553f996f move compiler to typed
starting to get rid of soml, bit by bit
2016-12-08 15:25:20 +02:00
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
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
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
834266e11e improve label names a bit 2015-11-01 19:13:40 +02:00
7e24f63327 polish sources 2015-10-29 22:31:28 +02:00
191be8d2f6 use compiler to generate methods and their instructions 2015-10-28 21:37:42 +02:00
c245272e52 don't export current 2015-10-28 14:37:40 +02:00
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
7e0778dc70 remove return_type
soon to be obsolete with multi returns
2015-10-28 12:19:10 +02:00
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
6754518daf prune builtin
will need much less, many more things can be expressed in soml
2015-10-23 15:13:05 +03:00
dcbd3c7091 fold last of the virtual into register 2015-10-22 18:16:29 +03:00
d767caf479 remove MethodCall and thus all virtual instructions 2015-10-18 19:27:46 +03:00
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
3d83f203ca fixing and testing operators 2015-10-15 09:32:47 +03:00
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
d899d542a4 checking return type is a type 2015-10-14 14:02:34 +03:00
dd3381e38b move type to phial and add type to reg_ref 2015-10-10 19:14:27 +03:00
9fe01c7b31 remove unknown type 2015-09-23 18:35:37 +03:00
36f635f7c1 adding sources to register instructions 2015-07-27 12:13:39 +03:00
b61c73acdd renamed info to MethodSource 2015-07-03 20:13:03 +03:00
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
7136450bde move put string to string where it belongs 2015-07-01 21:45:41 +03:00
135fcaa8fa static message chain
Rewrote Message + frame, only static linked list needed, not dynamic
frames either
2015-07-01 19:27:18 +03:00
fb67f550ec more index fixes, this time arguments 2015-07-01 09:48:20 +03:00
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
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
b8090e0ecd fix init to load into new message 2015-06-30 09:37:25 +03:00
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
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
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
32e1903884 finished init routine
and better implemented sys calls
2015-06-25 16:31:09 +03:00
1a82ebcd69 mor on sys call implementation 2015-06-23 19:55:54 +03:00