зеркало из 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)
|
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_; }
|
ModuleValidator& m() const { return m_; }
|
||||||
ExclusiveContext* cx() const { return m_.cx(); }
|
ExclusiveContext* cx() const { return m_.cx(); }
|
||||||
ParseNode* fn() const { return fn_; }
|
ParseNode* fn() const { return fn_; }
|
||||||
|
@ -2656,6 +2646,11 @@ class MOZ_STACK_CLASS FunctionValidator
|
||||||
}
|
}
|
||||||
|
|
||||||
bool finish(uint32_t funcIndex, unsigned generateTime) {
|
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_);
|
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"));
|
||||||
|
});
|
Загрузка…
Ссылка в новой задаче