Bug 1255954 - Odin: move asserts so they only run on successful validation (r=bbouvier)

MozReview-Commit-ID: 9moOBWvSs7b
This commit is contained in:
Luke Wagner 2016-03-14 10:19:30 -05:00
Родитель cf925792db
Коммит 583a2d7b8f
2 изменённых файлов: 15 добавлений и 10 удалений

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

@ -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"));
});