diff options
| author | eunhhu <[email protected]> | 2026-10-05 07:32:17 +0100 |
|---|---|---|
| committer | eunhhu <[email protected]> | 2026-10-05 07:38:00 +0100 |
| commit | 75b9c1c1e936e2b7c55275139897e1c78d7939c1 (patch) | |
| tree | 63f4a2c15a9ca651b9ce7f961683692626e551e0 /Makefile | |
| parent | 71f1de8416a01ce6305ec9c5ed29895f4344886b (diff) | |
| download | pure-75b9c1c1e936e2b7c55275139897e1c78d7939c1.tar.gz pure-75b9c1c1e936e2b7c55275139897e1c78d7939c1.zip | |
Run a block through a frame and step, and compile blocks to AArch64 that call the same steps (021)
- run() keeps a block's operand stack and open loops in a Frame; step()
runs one instruction (branches and loops too, one dispatch), and
enter_each, enter_loop, leave_loop and iterate are their own functions.
The executor is the same machine code, 7% fewer instructions.
- The verifier records each instruction's stack height (from its block's
start), so compiled code knows each slot's place.
- module-jit.c (AArch64 Linux; elsewhere, or PURE_JIT=0, none): a
module's handlers', views' and folds' blocks compiled when it loads.
Branches and loops are branches; every other instruction calls the
executor's own step, so both run the same meaning. A loop that is not
opened lands where its iteration would have ended; an empty loop
iterates in place.
- test-module recompiles a module whose code a test changes after load.
- A search (100,000 nodes, 1,000,000 edges, core only) is 150 ms
compiled, against 122 ms executed: a call of step for every instruction
costs more than the executor's switch; the hot instructions are written
as code next.
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -23,7 +23,7 @@ BUILD ?= build # store/test-log.c, link/test-link.c, serve/test-message-json.c); # tests/check.py checks the hosts end to end. INCLUDES = -Icore -MODEL = core/module.c core/module-list.c core/module-save.c core/module-text.c core/module-store.c core/flow.c +MODEL = core/module.c core/module-jit.c core/module-list.c core/module-save.c core/module-text.c core/module-store.c core/flow.c STORE = store/store-tree.c store/store-log.c LINK = link/link-protocol.c link/link.c link/sending.c link/crypto.c SERVE = serve/serve.c serve/deliver.c serve/message-json.c serve/sha256.c |
