Pin the accumulated dynamic handle tags

NODE_ISLAND and the twelve WS_* stream handles lived in
SCR_DYNH_NEW_TAGS, whose rows are numbered positionally from the
largest pinned value. Adding SEGMENTER_WORD and SEGMENTS_WORD ahead of
them renumbered every WS_* tag by two, and those numbers are immediate
operands in the link-gated stream units (scr_webstreams.c,
scr_stream.c, scr_stream_from_web.c, scr_fetch.c): eight runtime
objects changed and 35 non-Intl corpus programs stopped being
byte-identical in the zero-cost gate.

Move the thirteen older rows to SCR_DYNH_TAGS with the values they
already had (84 through 96). Their numbers, the enum, and every unit's
object code return to the base build, and the two Intl tags number from
97.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Malte Ubl
2026-10-28 19:49:12 -07:00
co-authored by Claude Opus 5.5
parent 7cf37d9dc9
commit 7a257160bb
+15 -15
View File
@@ -207,6 +207,7 @@ typedef enum {
X(NET_SERVER, 3) /* ScrNetServer — net.Server (http.Server rides the same handle) */ \
X(NET_SOCKET, 2) /* ScrNetSocket — net.Socket */ \
X(NET_SOCKET_ADDRESS, 47) /* net.SocketAddress (scr_net.c) */ \
X(NODE_ISLAND, 84) /* a Node island value (scr_node_island_handle.c) */ \
X(PRIVATE_KEY, 65) /* node:crypto PrivateKeyObject (scr_pki.c) */ \
X(PUBLIC_KEY, 66) /* node:crypto PublicKeyObject (scr_pki.c) */ \
X(REGEXP, 26) /* native RegExp, shared compiled pattern */ \
@@ -236,25 +237,24 @@ typedef enum {
X(WEB_TRANSFORM, 73) /* native identity TransformStream (scr_fetch.c) */ \
X(WEB_WRITABLE, 74) /* a TransformStream's WritableStream (scr_fetch.c) */ \
X(WEB_WRITER, 75) /* WritableStreamDefaultWriter (scr_fetch.c) */ \
X(WORKER, 35)
X(WORKER, 35) \
X(WS_BYTE_STRATEGY, 85) /* ByteLengthQueuingStrategy (scr_webstreams.c) */ \
X(WS_COUNT_STRATEGY, 86) /* CountQueuingStrategy (scr_webstreams.c) */ \
X(WS_RCONTROLLER, 87) /* ReadableStreamDefaultController (scr_webstreams.c) */ \
X(WS_READABLE, 88) /* ReadableStream for checked-dynamic code (scr_webstreams.c) */ \
X(WS_READER, 89) /* ReadableStreamDefaultReader (scr_webstreams.c) */ \
X(WS_TCONTROLLER, 90) /* TransformStreamDefaultController (scr_webstreams.c) */ \
X(WS_TEXT_DECODER, 91) /* TextDecoderStream (scr_webstreams.c) */ \
X(WS_TEXT_ENCODER, 92) /* TextEncoderStream (scr_webstreams.c) */ \
X(WS_TRANSFORM, 93) /* TransformStream for checked-dynamic code (scr_webstreams.c) */ \
X(WS_WCONTROLLER, 94) /* WritableStreamDefaultController (scr_webstreams.c) */ \
X(WS_WRITABLE, 95) /* WritableStream for checked-dynamic code (scr_webstreams.c) */ \
X(WS_WRITER, 96) /* WritableStreamDefaultWriter (scr_webstreams.c) */
/* Tags added since the last pin, by name only (see above). */
#define SCR_DYNH_NEW_TAGS(Y) \
Y(NODE_ISLAND) /* a Node island value (scr_node_island_handle.c) */ \
Y(SEGMENTER_WORD) /* ICU word-granularity Segmenter (scr_intl.c) */ \
Y(SEGMENTS_WORD) /* its word segmentation result (scr_intl.c) */ \
Y(WS_BYTE_STRATEGY) /* ByteLengthQueuingStrategy (scr_webstreams.c) */ \
Y(WS_COUNT_STRATEGY) /* CountQueuingStrategy (scr_webstreams.c) */ \
Y(WS_RCONTROLLER) /* ReadableStreamDefaultController (scr_webstreams.c) */ \
Y(WS_READABLE) /* ReadableStream for checked-dynamic code (scr_webstreams.c) */ \
Y(WS_READER) /* ReadableStreamDefaultReader (scr_webstreams.c) */ \
Y(WS_TCONTROLLER) /* TransformStreamDefaultController (scr_webstreams.c) */ \
Y(WS_TEXT_DECODER) /* TextDecoderStream (scr_webstreams.c) */ \
Y(WS_TEXT_ENCODER) /* TextEncoderStream (scr_webstreams.c) */ \
Y(WS_TRANSFORM) /* TransformStream for checked-dynamic code (scr_webstreams.c) */ \
Y(WS_WCONTROLLER) /* WritableStreamDefaultController (scr_webstreams.c) */ \
Y(WS_WRITABLE) /* WritableStream for checked-dynamic code (scr_webstreams.c) */ \
Y(WS_WRITER) /* WritableStreamDefaultWriter (scr_webstreams.c) */
Y(SEGMENTS_WORD) /* its word segmentation result (scr_intl.c) */
/* Values below the largest pinned one that no tag holds, each with the
* reason. Never reuse one without removing it here. */