зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1255954 - Odin: move asserts so they only run on successful validation (r=bbouvier)
MozReview-Commit-ID: 9moOBWvSs7b
This commit is contained in:
Родитель
cf925792db
Коммит
583a2d7b8f
|
@ -2630,16 +2630,6 @@ class MOZ_STACK_CLASS FunctionValidator
|
|||
hasAlreadyReturned_(false)
|
||||
{}
|
||||
|
||||
~FunctionValidator() {
|
||||
if (m_.hasAlreadyFailed())
|
||||
return;
|
||||
MOZ_ASSERT(!blockDepth_);
|
||||
MOZ_ASSERT(breakableStack_.empty());
|
||||
MOZ_ASSERT(continuableStack_.empty());
|
||||
MOZ_ASSERT(breakLabels_.empty());
|
||||
MOZ_ASSERT(continueLabels_.empty());
|
||||
}
|
||||
|
||||
ModuleValidator& m() const { return m_; }
|
||||
ExclusiveContext* cx() const { return m_.cx(); }
|
||||
ParseNode* fn() const { return fn_; }
|
||||
|
@ -2656,6 +2646,11 @@ class MOZ_STACK_CLASS FunctionValidator
|
|||
}
|
||||
|
||||
bool finish(uint32_t funcIndex, unsigned generateTime) {
|
||||
MOZ_ASSERT(!blockDepth_);
|
||||
MOZ_ASSERT(breakableStack_.empty());
|
||||
MOZ_ASSERT(continuableStack_.empty());
|
||||
MOZ_ASSERT(breakLabels_.empty());
|
||||
MOZ_ASSERT(continueLabels_.empty());
|
||||
return m_.mg().finishFuncDef(funcIndex, generateTime, &fg_);
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
const USE_ASM = '"use asm";';
|
||||
function asmCompile() {
|
||||
var f = Function.apply(null, arguments);
|
||||
}
|
||||
oomTest(() => {
|
||||
try {
|
||||
function f(b) {}
|
||||
} catch (exc0) {}
|
||||
f(asmCompile(USE_ASM + "function f() { var i=42; return i|0; for(;1;) {} return 0 } return f"));
|
||||
});
|
Загрузка…
Ссылка в новой задаче