feat(v4.0.0): the host node's stacks are 32 deep (D-17)
With the stacks counted and guarded (D-16) their size is a parameter of the node. The host node, which runs the interpreter and the compiler under the user's programme, gets 32 values and 32 return entries; a mesh node keeps the F18's 10 and 9. Nothing else about the mechanism or any word's definition changes. - stack.h: V4_DATA_RING and V4_RET_RING are build parameters; the Makefile sets them for the host-node tests. - tests/test_host_quit.c no longer assumes a size: it fills the stacks to whatever they are, and takes every exit with the return stack full. - Measured on the host node now: 28 values on a line, 29 waiting between lines, words 31 deep from the prompt. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
0da7e32a0b
commit
ebffa6082d
+8
-2
@@ -40,8 +40,14 @@ BINDIR := $(HERE)/build
|
||||
# dictionary and the text being compiled (JUSTIFICATION.md section 9), which
|
||||
# do not fit 1024 words. Tests named test_host_*.c are therefore built with a
|
||||
# host node of HOST_WORDS words; every other test keeps the mesh-node size.
|
||||
HOST_WORDS := 16384
|
||||
node_size = $(if $(findstring /test_host_,$(1)),-DV4_NODE_WORDS=$(HOST_WORDS))
|
||||
#
|
||||
# The host node's stacks are deeper too (DECOMPOSITION.md D-17): 32 values and
|
||||
# 32 return entries, where a mesh node has the F18's 10 and 9. The stack is
|
||||
# its top registers and a ring; the ring sizes are what is set here.
|
||||
HOST_WORDS := 16384
|
||||
HOST_DATA_RING := 30
|
||||
HOST_RET_RING := 31
|
||||
node_size = $(if $(findstring /test_host_,$(1)),-DV4_NODE_WORDS=$(HOST_WORDS) -DV4_DATA_RING=$(HOST_DATA_RING) -DV4_RET_RING=$(HOST_RET_RING))
|
||||
|
||||
# The capsule sources: definitions as text (include/v4/text.h), which tests
|
||||
# assemble onto a node. The directory is passed to the tests so that they
|
||||
|
||||
Reference in New Issue
Block a user