Parent
Scope
Implement the pinned side-effect-controlled property reads:
JSC__JSValue__fastGetDirect_
JSC__JSValue__fastGet
JSC__JSValue__fastGetOwn
Bun__JSObject__getCodePropertyVMInquiry (Bun core only)
Acceptance criteria
- Pin all 24
BuiltinName byte values, including Symbol.asyncIterator, and reject out-of-range IDs safely.
fastGetDirect_ reads only direct own data storage and returns empty for absence/accessors without walking prototypes or invoking user code.
fastGetOwn performs exact GetOwnProperty slot resolution, including own accessors and Proxy descriptor behavior, and returns empty for absence/exception.
fastGet uses the existing Bun-compatible Object.prototype-cutoff lookup and returns deleted for absence, empty for exception, and present undefined unchanged.
- Bun's
code VM inquiry rejects null/proxy receivers, walks data properties without invoking accessors/custom hooks, and returns empty for absence or non-pure slots.
- Focused coverage includes all 24 IDs, Symbol identity, direct/own/inherited distinctions, Object.prototype cutoff, accessors, proxies, present undefined, invalid IDs, sibling realms, foreign values, and first-exception preservation.
- Inventories, README/API evidence, and parent trackers are regenerated from checked-in results.
Parent
Scope
Implement the pinned side-effect-controlled property reads:
JSC__JSValue__fastGetDirect_JSC__JSValue__fastGetJSC__JSValue__fastGetOwnBun__JSObject__getCodePropertyVMInquiry(Bun core only)Acceptance criteria
BuiltinNamebyte values, includingSymbol.asyncIterator, and reject out-of-range IDs safely.fastGetDirect_reads only direct own data storage and returns empty for absence/accessors without walking prototypes or invoking user code.fastGetOwnperforms exactGetOwnPropertyslot resolution, including own accessors and Proxy descriptor behavior, and returns empty for absence/exception.fastGetuses the existing Bun-compatible Object.prototype-cutoff lookup and returns deleted for absence, empty for exception, and presentundefinedunchanged.codeVM inquiry rejects null/proxy receivers, walks data properties without invoking accessors/custom hooks, and returns empty for absence or non-pure slots.