You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fresh function and built-in initialization repeatedly publishes a data property with assignment-default attributes, releases property_lock, reacquires it, and then installs the final descriptor. The post-#662 cold Context profile retains Object.setOwnUnlocked, Object.setAttrUnlocked, installNativeProps, and setNativeWithData leaves along this exact path. Besides duplicate uncontended synchronization, a published object can transiently expose the wrong descriptor if initialization ever crosses a sharing boundary.
Scope
Add one Object primitive that publishes a data value and its final attributes under one property_lock critical section.
Prepare attribute metadata before release-publishing the Shape and restore the exact prior metadata on OOM.
No lock disabling, freshness guesses at shared call sites, default-attribute publication followed by repair, ignored OOM state, predictable hashing, benchmark-only fast path, pooling, or hidden warmup.
No stacks, queues, jobs, Promise, microtask, Worker-lifecycle, or Map/Set iterator changes.
Acceptance
Unit tests prove final descriptor identity, existing-data replacement, accessor/data coexistence, insertion order, one-lock publication, and exact OOM rollback.
A no-GIL publication witness observes only absent or the complete final descriptor, never assignment-default attributes.
Function and built-in descriptor Test262 surfaces have exact nonzero before -> after accounting with zero flips.
Focused tests, full units, applicable TSan/threadfuzz, and docs/benchmark CI pass.
Exact-parent cold lifecycle evidence identifies the affected phase/RSS/finalizers; the warm Shape control does not regress materially.
Parents: #479, #532
Related: #662, #493
Problem
Fresh function and built-in initialization repeatedly publishes a data property with assignment-default attributes, releases
property_lock, reacquires it, and then installs the final descriptor. The post-#662 cold Context profile retainsObject.setOwnUnlocked,Object.setAttrUnlocked,installNativeProps, andsetNativeWithDataleaves along this exact path. Besides duplicate uncontended synchronization, a published object can transiently expose the wrong descriptor if initialization ever crosses a sharing boundary.Scope
property_lockcritical section.name/length, native method/static installation, constructorprototype, and other provably equivalent fresh data-descriptor initialization sites.Object.definePropertysemantics unchanged.No-workaround rules
Acceptance