mirror of
https://github.com/urbit/ares.git
synced 2024-11-26 09:57:56 +03:00
21 lines
1.2 KiB
Markdown
21 lines
1.2 KiB
Markdown
|
# Notes ~2021.9.23
|
||
|
## Discussion with ~rovnys-ricfer
|
||
|
* Some discussion of the memory model, in particular using tag bits to identify
|
||
|
- direct noun
|
||
|
- indirect noun
|
||
|
- pointer to cell
|
||
|
- hash table reference
|
||
|
* Hash table ejection strategy
|
||
|
- When the copier is returning a noun, it counts how many iterations of copying it has performed
|
||
|
- Above a tunable threshhold, an entry in the hash table is made and the noun is copied there instead.
|
||
|
- Existing pointers into the hash table are copied and re-inserted as new entries, thus maintaining an invariant
|
||
|
that a hash table entry can only reference its own memory by a direct pointer, or another hash table entry,
|
||
|
by hash reference.
|
||
|
- nouns that require metadata (jet pointers, cached bytecode) are ejected to the hashtable
|
||
|
- hashtable can also store non-noun data such as bytecode
|
||
|
- TBD: a collection strategy for the hash table.
|
||
|
|
||
|
## Infrastructure channel discussion
|
||
|
* Interpreter should handle nock 12 with an extra input of a scry gate stack, so it can be used to jet `+mink`
|
||
|
* Also need to return crash values from the interpreter, and build traces when passing through nock 11.
|
||
|
* ~master-morzod objects to calling the machine code from JIT compilation "automatic jets" and is probably right.
|