Offload int[] to byte[].
[SquirrelJME.git] / assets / developer-notes / stephanie-gawroriski / 2017 / 02 / 23.mkd
blob436dba1ddbcc5d298cf609103f41d43dd4a7946f
1 # 2017/02/23
3 ## 07:24
5 Actually what I can do is add an `endInstruction` method which is called at
6 the end of every single instruction. That would make things a bit easier.
8 ## 09:23
10 I believe the cache state system is a bit ugly and messy. There is
11 `CacheStates` which holds every single state, but then there is active state
12 which is mutable. `CacheStates` would best have immutable data so that there
13 is not much chance for errors. This would then mean that there is an
14 `ActiveCacheState` which is effectively final. Existing cache states are
15 stored into it, they can be read but not modified. Otherwise there is
16 potential for errors to occur where a cache state in the stored states is
17 modified when it should never be modified once being placed in the
18 `CacheStates` instance. So the best thing to do in this case would be to not
19 make stored state mutable. Also bindings could potentially be automatically
20 handled via the translation engine. Basically each code variable in use has a
21 binding. If the JIT project can handle these things then it would simplify
22 implementation of JITs because they would not need to have all these methods
23 for moving bindings around. So creation of the bindings is best done in the
24 JIT as an `ActiveBinding` which can be created by the translation engine. This
25 way, no code variable will be missed.
27 ## 09:37
29 In the end it should be far less messy, which will be good. So `CacheStates`
30 will have a `snapshot` at the specified location rather than a get or a set.
31 It will either snapshot or fail because it is already snapshotted. So there
32 would also be a check if there is a snapshot and a get for an existing
33 snapshot. Then `ActiveCacheState` will have a method for setting its state to
34 that of an existing `CacheState`.
36 ## 13:44
38 `CodeVariables` do not store a type, but are not completely needed, they are
39 just virtualized registers and such that can be copied around and such. The
40 (`Active`)`CacheState` does not even need a set which refers to the variables.