Provide private name access in Debugger.frame.eval
Categories
(Core :: JavaScript: Debugger API, defect, P3)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox-esr78 | --- | unaffected |
| firefox87 | --- | unaffected |
| firefox88 | --- | unaffected |
| firefox89 | --- | fix-optional |
People
(Reporter: mgaudet, Unassigned)
References
(Blocks 1 open bug, Regression)
Details
(Keywords: regression)
Bug 1662559 improved the storage mechanism for private methods quite substantially. However, we chose in this patch to defer implementing support for Debugger.frame.eval in this patch, regressing our previous support.
There are two major problems:
-
Debug.Frame.evalhas a problematic scope chain, as described in Bug 1638309, Comment 1. We are able to mostly work around this (seeScopeContext::cachePrivateFieldsForEval), and correctly determine which bindings are private fields and which are private methods (and require brand checking), as well as the appropriate environment coordinate.However, the environment chain includes
DebugEnvironmentProxyobjects which our current implementation ofGetAliasedVarcannot see through. It seems likely to me that correctly handling this will require a 1-of bytecode to be able to correctly handle this case. -
The other problem is that we do not populate the private field eval cache for delazifications, because populating this cache requires walking scope chains. So in order to handle this we need to store the required information in the delazified script representation to avoid having to walk the scope chain again on delazification.
Fixing this bug will allow us to remove the cases where we throw JSMSG_DEBUG_NO_PRIVATE_METHOD
| Reporter | ||
Updated•5 years ago
|
Comment 1•5 years ago
|
||
Comment 2•5 years ago
|
||
Set release status flags based on info from the regressing bug 1662559
Updated•5 years ago
|
Updated•5 years ago
|
Updated•5 years ago
|
| Reporter | ||
Comment 3•1 year ago
|
||
This might actually work today, but I am not building a test case at the moment.
Comment 4•2 months ago
|
||
Moving bugs to Debugger API component. Use castle-terms-potato to filter out.
Description
•