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
@@ -38,12 +38,19 @@
|
||||
#include "v4/cell.h"
|
||||
#include "v4/guard.h"
|
||||
|
||||
/* D-2: data stack is T, S + 8 circular = 10 deep. */
|
||||
/* D-2: data stack is T, S + 8 circular = 10 deep. That is a mesh node. The
|
||||
* ring size is a build parameter, like node memory (node.h): D-17 gives the
|
||||
* host node, which runs the interpreter and the compiler under the user's
|
||||
* programme, deeper stacks. Nothing else about the mechanism changes. */
|
||||
#ifndef V4_DATA_RING
|
||||
#define V4_DATA_RING 8
|
||||
#endif
|
||||
#define V4_DATA_DEPTH (V4_DATA_RING + 2)
|
||||
|
||||
/* D-2: return stack is R + 8 circular = 9 deep. */
|
||||
/* D-2: return stack is R + 8 circular = 9 deep; a build parameter likewise. */
|
||||
#ifndef V4_RET_RING
|
||||
#define V4_RET_RING 8
|
||||
#endif
|
||||
#define V4_RET_DEPTH (V4_RET_RING + 1)
|
||||
|
||||
/* 5% safety boundary at each end of each ring, per guard.h. The bands sit
|
||||
|
||||
Reference in New Issue
Block a user