Closed
Bug 519947
Opened 15 years ago
Closed 14 years ago
TM: remove newborn pigeon hole
Categories
(Core :: JavaScript Engine, defect)
Tracking
()
RESOLVED
DUPLICATE
of bug 572057
People
(Reporter: gal, Assigned: gal)
References
Details
Attachments
(1 file)
23.28 KB,
patch
|
Details | Diff | Splinter Review |
We scan the native stack for reference now, so as long the value is held on the stack somewhere (or in a register), there is no need for pigeon holes any more. Igor, if you want to grab this go ahead. I think you are more qualified than me. Otherwise I will get to this in a couple days when the stack scanning patch is in.
Comment 1•15 years ago
|
||
I suspect that even with a conservative stack scanning we cannot just remove newborns. As with local roots, the problem is that we have to make sure that a newborn copy really lives on the native stack and not in some malloced structure. Monitoring all the code to check for that is not straightforward task.
Assignee | ||
Comment 2•15 years ago
|
||
Assignee: general → gal
Assignee | ||
Comment 3•15 years ago
|
||
Weak references are meant to ensure rooting until the call site of NewGCThing had a chance to root it. Code like #1 is completely unreasonable and must be fixed. Fuzzing and code review will hopefully reveal it (if it really exists). Though, I am pretty sure we don't do this kind of insanity and I spent quite some time looking at our rooting mechanisms. This patch is a 10ms speedup or so for SS.
Comment 4•15 years ago
|
||
Makes this crash with -j: for (let j = 0; j < 3; ++j) try { for(let y=0;y<3;++y) { } with(null) { } } catch(e) { } for each (let z in [false, false, false]) { } for (let m = 0; m < 4; ++m) { gc(); }
Assignee | ||
Comment 5•15 years ago
|
||
#4 actually crashes the conservative stack scanner. This patch isn't needed.
Assignee | ||
Updated•14 years ago
|
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → DUPLICATE
You need to log in
before you can comment on or make changes to this bug.
Description
•