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
deepclone_from_array: hydrate closure-bearing nodes as native lazy ghosts
On PHP 8.4+, object nodes whose payload slots carry a named-closure or
const-expr-closure marker are created as uninitialized lazy ghosts whose
hydration, closure resolution included, is deferred until the engine first
touches them. Resolving closures (fake-closure creation, attribute-args
re-evaluation) is the measurably expensive part of hydration; nodes without
such markers keep hydrating eagerly, as does everything on PHP 8.2/8.3.
Also fixes two pre-existing issues that lazy hydration would have amplified:
binding a shared &-reference to a typed declared property now registers the
property as a type source instead of tripping the engine's deref assertion,
and object-ref markers resolved against ref slots are now order-independent
by-value snapshots.
0 commit comments