Open
Bug 659818
Opened 13 years ago
Updated 2 years ago
Behavior of Debug.Frame.prototype.eval closure is different if methodjit is disabled
Categories
(Core :: JavaScript Engine, defect)
Tracking
()
NEW
People
(Reporter: jorendorff, Unassigned)
References
(Blocks 1 open bug)
Details
To reproduce * create a closure using frame.eval * save it somewhere * call it later, after 'frame' has been popped from the JS stack. If the methodjit is enabled, it works fine. If the methodjit is disabled, js_PutCallObject does not copy all the necessary slots, because script->debugMode is false (even though we are in debug mode). Here is the jit-test: // |jit-test| debug // Closures created in frame.eval capture the environment even if the callee // is optimized. var g = newGlobal('new-compartment'); var dbg = new Debug(g); dbg.hooks = { debuggerHandler: function (frame) { frame.older.eval("f3 = function () { return [a, b, c]; };"); } }; g.eval("function f1(a, b) { var c = a + b; f2(); c++; }"); g.eval("function f2() { debugger; }"); g.f1(2, 3); assertEq(g.f3().join(), "2,3,6");
Reporter | ||
Updated•13 years ago
|
Assignee: general → nobody
Component: JavaScript Engine → JavaScript Debugging/Profiling APIs
QA Contact: general → jsd
Assignee | ||
Updated•13 years ago
|
Component: JavaScript Debugging/Profiling APIs → JavaScript Engine
Updated•2 years ago
|
Severity: normal → S3
You need to log in
before you can comment on or make changes to this bug.
Description
•