Profile
The frozen representative_temporal row spends the hottest sampled portion of both Temporal.PlainDate.prototype.add and Temporal.Instant.prototype.add inside durationFromArg, which performs ten independent ordinary [[Get]] operations for each one-field duration literal. A 100-job attribution records 90,315 property-lock acquisitions, 24,741 Shape transitions, 80,824 backing allocations, and 47,788 GC cells.
Scope
- Add one reusable, synchronization-correct snapshot primitive for a fixed ordered set of ordinary named data properties.
- Use it only for exact ordinary duration bags whose receiver/prototype descriptors prove that every duration field is an own or inherited data property with a conversion-safe primitive value.
- Fall back to the existing spec path before any user-observable operation for accessors, Proxies, host objects, exotic receivers, cross-realm/custom prototype chains, and object-valued conversions.
- Preserve Temporal field
Getorder, per-field conversion order, TypeError/RangeError order, prototype shadowing, and concurrent mutation linearizability.
Acceptance
- Focused tests cover own/inherited data, getters, Proxies, object-valued conversion, field order, errors, and prototype mutation.
- Focused normal and TSan gates pass without leaks or engine-state races.
- Temporal test262 subtrees remain exact.
- Exact-parent attribution shows the retained path reduces work without checksum drift.
- Full sharded unit suite passes.
No-workaround rules
No skipped observable Get, cached user bag, immutable-Object.prototype assumption, hidden mutation, broad exotic fast path, or weakening of no-GIL synchronization.