зеркало из https://github.com/mozilla/gecko-dev.git
Bug 787309 - Fallback on try notes after continuing on a goto. r=luke
This commit is contained in:
Родитель
c55c29c7bc
Коммит
c18dbbb18f
|
@ -0,0 +1,7 @@
|
|||
// |jit-test| error: TypeError
|
||||
try {
|
||||
h
|
||||
} catch (x
|
||||
if gc()) {} finally {
|
||||
this.z.z
|
||||
}
|
|
@ -6437,6 +6437,27 @@ ReconstructPCStack(JSContext *cx, JSScript *script, jsbytecode *target,
|
|||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!script->hasTrynotes())
|
||||
continue;
|
||||
|
||||
// If we do not follow a goto we look for another mean to continue
|
||||
// at the next PC.
|
||||
JSTryNote *tn = script->trynotes()->vector;
|
||||
JSTryNote *tnEnd = tn + script->trynotes()->length;
|
||||
for (; tn != tnEnd; tn++) {
|
||||
jsbytecode *start = script->main() + tn->start;
|
||||
jsbytecode *end = start + tn->length;
|
||||
if (start < pc && pc <= end && end <= target)
|
||||
break;
|
||||
}
|
||||
if (tn != tnEnd) {
|
||||
pcdepth = tn->stackDepth;
|
||||
hpcdepth = unsigned(-1);
|
||||
oplen = 0;
|
||||
pc = script->main() + tn->start + tn->length;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Загрузка…
Ссылка в новой задаче