Closed Bug 1623956 Opened 4 years ago Closed 4 years ago

Replace FunctionBox::finish with a system supported by stencil

Categories

(Core :: JavaScript Engine, enhancement, P3)

enhancement

Tracking

()

RESOLVED INCOMPLETE

People

(Reporter: mgaudet, Assigned: tcampbell)

References

Details

BCEScriptStencil relies on GCThingsList's FunctionBox linked list in order to set enclosing scopes.

This needs to be replaced with a system that doesn't depend on FunctionBoxes, as they're not going to survive the final version of stencil where we move the stencil to another thread.

(An aside: The semantics of stealGCThingList make GCThingList::finish quite confusing. This is because In BCEScriptStencil's constructor, the vector inside of GCThingList is moved into BCEScriptStencil, however, the linked list of functionboxes is still stored on the GCthingList; so it seems a bit funny to do that after the backing store of the GCThingList was taken, despite the fact that it just works out.

This is perhaps just a naming issue)

Priority: -- → P3
Assignee: nobody → tcampbell
Blocks: 1599858
No longer blocks: 1618631

Bug 1636795 is a half-step here. It batches the calls until the end of compilation, but still reads off the function box. The long-term will be to have that batch process generate a small vector of updates that can be applied by mutator.

See Also: → 1636795

This is no longer a blocker for BCE deferral. We will defer past BCE by using the FunctionBox to hold the bits. This bug will still need to exist to get away from the LifoAlloc lifetime.

Blocks: 1544117
No longer blocks: 1599858
See Also: → 1641202

The direct concern has been fixed by Bug 1641202. Future enhancements here can be done under Bug 1605101, but they are no longer blockers.

Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → INCOMPLETE
You need to log in before you can comment on or make changes to this bug.