Bug 787309 - Fallback on try notes after continuing on a goto. r=luke

This commit is contained in:
Nicolas B. Pierron 2012-09-29 00:43:20 -07:00
Родитель c55c29c7bc
Коммит c18dbbb18f
2 изменённых файлов: 28 добавлений и 0 удалений

Просмотреть файл

@ -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; 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;
} }
/* /*