Closed
Bug 942810
Opened 12 years ago
Closed 9 years ago
Ion-compile scripts with aliased let-bound locals
Categories
(Core :: JavaScript Engine: JIT, defect)
Tracking
()
RESOLVED
DUPLICATE
of bug 1273858
People
(Reporter: wingo, Unassigned)
References
Details
Attachments
(1 file)
|
19.08 KB,
patch
|
Details | Diff | Splinter Review |
Compiling the PUSHBLOCKSCOPE and POPBLOCKSCOPE opcodes would allow block scopes with aliased let-bound variables to ion-compile.
Updated•12 years ago
|
| Reporter | ||
Comment 1•12 years ago
|
||
| Reporter | ||
Updated•12 years ago
|
Assignee: nobody → wingo
| Reporter | ||
Comment 2•12 years ago
|
||
Initial patch; not yet working. I suspect I am missing a resumeAfter, but for that I would probably need to add some new MIR type, to reflect the ability to set a scope chain inside the function. The BT I get at runtime, should anyone be interested, is this:
Catchpoint 1 (signal SIGSEGV), 0x0000000000749cfc in js::jit::MResumePoint::setOperand (this=0x7fffdc001878, index=5, operand=0x7fffdc001fd0) at /hack/mozilla-central/js/src/jit/MIR.h:9071
9071 JS_ASSERT(index < stackDepth_);
(gdb) p stackDepth_
$1 = 5
(gdb) bt
#0 0x0000000000749cfc in js::jit::MResumePoint::setOperand (this=0x7fffdc001878, index=5, operand=0x7fffdc001fd0) at /hack/mozilla-central/js/src/jit/MIR.h:9071
#1 0x0000000000728d0c in js::jit::MBasicBlock::initSlot (this=0x7fffdc0016e0, slot=5, ins=0x7fffdc001fd0) at /hack/mozilla-central/js/src/jit/MIRGraph.cpp:431
#2 0x00000000006cad59 in js::jit::IonBuilder::newOsrPreheader (this=0x1904ec8, predecessor=0x1905818, loopEntry=0x18f90a6 "\343\001\210") at /hack/mozilla-central/js/src/jit/IonBuilder.cpp:5832
#3 0x00000000006bfd5f in js::jit::IonBuilder::forLoop (this=0x1904ec8, op=JSOP_NOP, sn=0x18f90bc "&\026\006!\216\060\211\377\377\373Ј\377\377\371Ո*") at /hack/mozilla-central/js/src/jit/IonBuilder.cpp:2861
#4 0x00000000006bef99 in js::jit::IonBuilder::maybeLoop (this=0x1904ec8, op=JSOP_NOP, sn=0x18f90bc "&\026\006!\216\060\211\377\377\373Ј\377\377\371Ո*") at /hack/mozilla-central/js/src/jit/IonBuilder.cpp:2641
#5 0x00000000006baecf in js::jit::IonBuilder::snoopControlFlow (this=0x1904ec8, op=JSOP_NOP) at /hack/mozilla-central/js/src/jit/IonBuilder.cpp:1342
#6 0x00000000006ba8b1 in js::jit::IonBuilder::traverseBytecode (this=0x1904ec8) at /hack/mozilla-central/js/src/jit/IonBuilder.cpp:1241
#7 0x00000000006b8adf in js::jit::IonBuilder::build (this=0x1904ec8) at /hack/mozilla-central/js/src/jit/IonBuilder.cpp:706
#8 0x000000000094ae5e in js::WorkerThread::handleIonWorkload (this=0x18f2370, state=...) at /hack/mozilla-central/js/src/jsworkers.cpp:768
#9 0x000000000094bbe1 in js::WorkerThread::threadLoop (this=0x18f2370) at /hack/mozilla-central/js/src/jsworkers.cpp:1006
#10 0x000000000094a954 in js::WorkerThread::ThreadMain (arg=0x18f2370) at /hack/mozilla-central/js/src/jsworkers.cpp:694
#11 0x00007ffff75a0161 in ?? () from /usr/lib/x86_64-linux-gnu/libnspr4.so
#12 0x00007ffff7bc6e0e in start_thread (arg=0x7ffff567c700) at pthread_create.c:311
#13 0x00007ffff66820fd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:113
That's for this simple loop:
function foo(n) { { for (let x = 0; x < n; x++) if (false) (function() { x }); } }
foo(10000000000)
Comment 3•11 years ago
|
||
Andy, I assume you are no longer working on this? Anybody else who can pick this up?
Flags: needinfo?(wingo)
| Reporter | ||
Comment 4•11 years ago
|
||
Nope, I'm not working on this; sorry about that. It's probably not terribly useful to start from that patch, given the changes over the last year; if someone picks it up I would advise them to start anew :)
Flags: needinfo?(wingo)
Comment 7•9 years ago
|
||
(In reply to Benjamin Bouvier [:bbouvier] from comment #6)
> Dupe of bug 1273858 according to comment 0?
Yep.
Status: NEW → RESOLVED
Closed: 9 years ago
Flags: needinfo?(jdemooij)
Resolution: --- → DUPLICATE
You need to log in
before you can comment on or make changes to this bug.
Description
•