Skip to content

Commit 90afc9d

Browse files
committed
feat(binary-object): admit ordinary nop bytecode
1 parent 6203e8a commit 90afc9d

11 files changed

Lines changed: 1505 additions & 118 deletions

File tree

dev-support/quickjs-c-oracles.tsv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ function-bytecode-nested-closure function-bytecode tests/fixtures/function_bytec
77
function-bytecode-non-string-properties function-bytecode tests/fixtures/function_bytecode_non_string_properties.c 3d15e8f1f88a08c6fa4e36dc07d53a6e8c23c1ca6151468140255115325a7dda tests/fixtures/function_bytecode_non_string_properties.quickjs-2026-06-04.txt db6592def2d6533912f15e56b6498ff70a4d32cd69ac0f96b774653e7ab99e78 enumerable symbol and private property filtering before value traversal in bytecode writes
88
function-bytecode-reference-boundary function-bytecode tests/fixtures/function_bytecode_reference_boundary.c fd31889a9404350cec51d2e6dd16ab886475cb46067296ab8d516fa6446e5116 tests/fixtures/function_bytecode_reference_boundary.quickjs-2026-06-04.txt 392c993f7f48103e3cb4a7b7140c1fe5fec554e75262f79d5a7bbf99157251ea shared object-reference table across nested function constant-pool boundaries
99
function-bytecode-sab-reference function-bytecode tests/fixtures/function_bytecode_sab_reference.c 548f92e81c14f0ceb6e75ba11a2d09c161b8d2f19e39d7e360d32aff15fa887c tests/fixtures/function_bytecode_sab_reference.quickjs-2026-06-04.txt 7b8f31ef9d6e7b9b8720ebc5b34f9b0f01a147dced381e219d8245b8160a6366 whole-image FunctionBytecode, TypedArray, and SharedArrayBuffer reference and redacted side-table contract
10-
function-bytecode-wire function-bytecode tests/fixtures/function_bytecode_wire.c 2489185bc2dbe4383a770836ce81f3fd49f4148557e74562b77c58d7b58cc30f tests/fixtures/function_bytecode_wire.quickjs-2026-06-04.txt 127b07ba0f3e8503d7e6f49a3dcbe9609cae917a6aee67a7c3e7d77a43ac1418 canonical exact number, primitive, BigInt, Float64, signed arbitrary-precision BigInt, string scalar-script, and stripped-debug 119-byte ordinary-leaf root and child opcode wires; compatible alternate integer widths, wide constant references, manual BigInt i32::MIN, Float64 bit patterns, minimal or nonminimal BigInt payloads, atom or constant-pool string encodings, and synthesized seven-op unary chains for neg, plus, dec, inc, bitnot, lnot, and typeof; exact fresh-runtime tags, values, UTF-16 units, Float64 bits including negative zero and NaN payload/sign, Int and BigInt boundary promotion, the pinned 2026-06-04 heap BigInt decrement unsigned-opcode quirk, Number bitnot ToInt32, String arithmetic ToNumeric, execution-time BigInt unary-plus TypeError, scalar truthiness, identity or canonical rewrite evaluation, admitted double-neg and mixed chains, and non-address String and typeof-atom identity matrices; ordinary-leaf read and write byte identity, selected child metadata including sloppy js_mode, two-entry Float64 constant pool, 46-byte and 38-instruction code, and five conditional and loop branch targets with IR mappings; exact JS_TAG_INT equal and unequal JS_Call results, constructor and own length/name/prototype.constructor identity, JS_CallConstructor instance prototype and instanceof, sloppy caller/arguments undefined, strict child-js_mode read/write identity with caller/arguments TypeError, and evaluated-closure serialization rejection; explicit outside-frontier Private and Symbol atom cases, including unary Symbol truthiness and typeof boundaries; and malformed ULEB, atom, string, bytecode length, ArrayBuffer, and TypedArray read diagnostics; data-driven ordinary expansion evidence for the 57-row atom-free and five-row plain-call admission cohorts, with seven exact compile-only BC5 wires, hashes, parsed and field-verified child metadata and code offsets, opcode sets, fresh-runtime read/write identity and execution; compiler-natural evidence for 45 target rows including Drop raw 14 and Dup raw 17, authenticated manual-wire VM evidence for stack raws 15, 16, and 18 through 32 plus six multi-op lowering sequences and every output slot, explicit unique raw cohorts with an exact manual-missing set, return_undef max_stack zero, exact JS_TAG_BOOL HTMLDDA predicate semantics, undefined plain-call receiver with argc zero through four, the exact 22-result unary and binary sink sequence, and exact BigInt and physical and normalized Float64 tags and payloads; and Stage3A invocation evidence for compiler-natural call_constructor raw 33, call_method raw 36, and array_from raw 38 with exact whole wires and metadata, authenticated property-free manual constructor and method wires plus zero- and three-element array wires, distinct new.target prototype and argument order, strict receiver object identity and argc/order, fresh array identity, full natural admission for raws 33 and 38, and raw 36's blocked get_field2 producer split from its manual public evidence; and Stage3B raw39 apply evidence for compiler-natural magic 0 and 1 whole wires, a compiler-authenticated 53-byte strict three-argument base transformed into four 58-byte property-free manual u16 wires, exact fresh-runtime read/write identity, nullish ordinary-call shortcuts, dense call and construct behavior, raw primitive, ordinary, and callable new.target without prevalidation, callability, build-list, constructor, and construct-only Proxy trap ordering, mechanically executable noncanonical 2 and MAX operands with the Rust unadmitted boundary; and Stage3C tail invocation evidence for compiler-natural raw35 tail_call and raw37 tail_call_method exact wires, parsed metadata and terminal opcode layouts without trailing return, raw37's blocked get_field2 producer split from a compiler-authenticated property-free 62-byte manual wire, fresh-runtime read/write identity, strict undefined plain receiver, exact method receiver and argc/order, noncallable TypeError ordering, thrown callee and getter identity through catch, preserved callee-to-tail backtraces, and upstream InternalError stack overflow proving non-PTC recursion; and Stage3D raw48 throw evidence for the exact compiler-natural strict 45-byte wire and child cf30 code, fresh-runtime read/write identity, terminal no-return behavior, C uncaught exception and JavaScript catch identity for integer, object, and Error values, pending-exception clearing, backtrace attachment before catch, and iterator-close ordering that preserves the original exception while raw177 nop remains blocked; and Stage3E raw49 throw_error evidence for the exact 58-byte compiler-natural strict const-assignment origin, whose lexical local and raw94 remain outside the Rust ordinary cohort, and the exact 47-byte property-free mechanically derived wire with one used atom slot, parsed raw49-only terminal code, 0-to-0 empty-stack semantics, fresh-runtime read/write identity, Unicode TypeError spelling, defining-realm identity, own backtrace, pending-exception publication and clearing, caller-catch no-return behavior, mechanically executable subtype 1 SyntaxError and subtype 255 InternalError with the Rust subtype-0-only admission boundary, and raw177 remaining deferred
10+
function-bytecode-wire function-bytecode tests/fixtures/function_bytecode_wire.c 7b9aeda55ee982134b1f31543150d09c3e047ed9560ce8c36158db1c66b80b11 tests/fixtures/function_bytecode_wire.quickjs-2026-06-04.txt c9aa4b8415c7d0df9a05586fd24ab9c30e2f0d4f7eb5a42aa76b107f95046494 canonical exact number, primitive, BigInt, Float64, signed arbitrary-precision BigInt, string scalar-script, and stripped-debug 119-byte ordinary-leaf root and child opcode wires; compatible alternate integer widths, wide constant references, manual BigInt i32::MIN, Float64 bit patterns, minimal or nonminimal BigInt payloads, atom or constant-pool string encodings, and synthesized seven-op unary chains for neg, plus, dec, inc, bitnot, lnot, and typeof; exact fresh-runtime tags, values, UTF-16 units, Float64 bits including negative zero and NaN payload/sign, Int and BigInt boundary promotion, the pinned 2026-06-04 heap BigInt decrement unsigned-opcode quirk, Number bitnot ToInt32, String arithmetic ToNumeric, execution-time BigInt unary-plus TypeError, scalar truthiness, identity or canonical rewrite evaluation, admitted double-neg and mixed chains, and non-address String and typeof-atom identity matrices; ordinary-leaf read and write byte identity, selected child metadata including sloppy js_mode, two-entry Float64 constant pool, 46-byte and 38-instruction code, and five conditional and loop branch targets with IR mappings; exact JS_TAG_INT equal and unequal JS_Call results, constructor and own length/name/prototype.constructor identity, JS_CallConstructor instance prototype and instanceof, sloppy caller/arguments undefined, strict child-js_mode read/write identity with caller/arguments TypeError, and evaluated-closure serialization rejection; explicit outside-frontier Private and Symbol atom cases, including unary Symbol truthiness and typeof boundaries; and malformed ULEB, atom, string, bytecode length, ArrayBuffer, and TypedArray read diagnostics; data-driven ordinary expansion evidence for the 57-row atom-free and five-row plain-call admission cohorts, with seven exact compile-only BC5 wires, hashes, parsed and field-verified child metadata and code offsets, opcode sets, fresh-runtime read/write identity and execution; compiler-natural evidence for 45 target rows including Drop raw 14 and Dup raw 17, authenticated manual-wire VM evidence for stack raws 15, 16, and 18 through 32 plus six multi-op lowering sequences and every output slot, explicit unique raw cohorts with an exact manual-missing set, return_undef max_stack zero, exact JS_TAG_BOOL HTMLDDA predicate semantics, undefined plain-call receiver with argc zero through four, the exact 22-result unary and binary sink sequence, and exact BigInt and physical and normalized Float64 tags and payloads; and Stage3A invocation evidence for compiler-natural call_constructor raw 33, call_method raw 36, and array_from raw 38 with exact whole wires and metadata, authenticated property-free manual constructor and method wires plus zero- and three-element array wires, distinct new.target prototype and argument order, strict receiver object identity and argc/order, fresh array identity, full natural admission for raws 33 and 38, and raw 36's blocked get_field2 producer split from its manual public evidence; and Stage3B raw39 apply evidence for compiler-natural magic 0 and 1 whole wires, a compiler-authenticated 53-byte strict three-argument base transformed into four 58-byte property-free manual u16 wires, exact fresh-runtime read/write identity, nullish ordinary-call shortcuts, dense call and construct behavior, raw primitive, ordinary, and callable new.target without prevalidation, callability, build-list, constructor, and construct-only Proxy trap ordering, mechanically executable noncanonical 2 and MAX operands with the Rust unadmitted boundary; and Stage3C tail invocation evidence for compiler-natural raw35 tail_call and raw37 tail_call_method exact wires, parsed metadata and terminal opcode layouts without trailing return, raw37's blocked get_field2 producer split from a compiler-authenticated property-free 62-byte manual wire, fresh-runtime read/write identity, strict undefined plain receiver, exact method receiver and argc/order, noncallable TypeError ordering, thrown callee and getter identity through catch, preserved callee-to-tail backtraces, and upstream InternalError stack overflow proving non-PTC recursion; and Stage3D raw48 throw evidence for the exact compiler-natural strict 45-byte wire and child cf30 code, fresh-runtime read/write identity, terminal no-return behavior, C uncaught exception and JavaScript catch identity for integer, object, and Error values, pending-exception clearing, backtrace attachment before catch, and iterator-close ordering that preserves the original exception; and Stage3E raw49 throw_error evidence for the exact 58-byte compiler-natural strict const-assignment origin, whose lexical local and raw94 remain outside the Rust ordinary cohort, and the exact 47-byte property-free mechanically derived wire with one used atom slot, parsed raw49-only terminal code, 0-to-0 empty-stack semantics, fresh-runtime read/write identity, Unicode TypeError spelling, defining-realm identity, own backtrace, pending-exception publication and clearing, caller-catch no-return behavior, mechanically executable subtype 1 SyntaxError and subtype 255 InternalError with the Rust subtype-0-only admission boundary, and Stage3F raw177 nop evidence for the compiler-natural exact 40-byte strict empty-function raw41-only baseline and its mechanically derived exact 41-byte raw177-plus-raw41 wire, parsed property-free zero-stack metadata with zero atoms and constants, fresh-runtime read/write identity, repeated defining- and caller-realm undefined results without pending exceptions, explicit non-compiler-natural provenance, and the raw177-only malformed wire reserved for the Rust verifier negative boundary and never read or executed by C
1111
function-bytecode-writer-flags function-bytecode tests/fixtures/function_bytecode_writer_flags.c d5494b0bce19e530d8c6f2a8b5a8ae20476e17b03c34335ae58c56544ff367d1 tests/fixtures/function_bytecode_writer_flags.quickjs-2026-06-04.txt 95665dc04cb18780505d0a8c592d8ce66b601c77049aa9eb7f1925b1fda73d95 keep-source, strip-source, and strip-debug nested function bytecode writer and BSWAP identity contract
1212
import-attributes module tests/fixtures/module_import_attributes_loader2.c d243a74b07d59d60f4d811c66447087547a43c5541baf60eb48b7d4c337e2863 tests/fixtures/module_import_attributes_loader2.quickjs-2026-06-04.txt 31121aad6e62055f7389392c83c09efaa225fa126b27bb9c08db6d8daca41e28 loader2 import-attributes contract
1313
import-meta module tests/fixtures/module_import_meta_host.c e695e55164c6c07440e5f05135f14fe959367836e5380f7fc245d409130b503d tests/fixtures/module_import_meta_host.quickjs-2026-06-04.txt 928013ebd2080271e69a56516d5dd024e76cdd94fdb9bdc8fc27c08ece0efc8f canonical host import.meta contract

0 commit comments

Comments
 (0)