[JAEGER] Fixed incorrect use of syncExit() in relational compare (bug 585391).

This commit is contained in:
David Anderson 2010-08-08 19:58:42 -07:00
Родитель 577971f245
Коммит 68ccb5f8f9
3 изменённых файлов: 13 добавлений и 3 удалений

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

@ -1404,7 +1404,7 @@ mjit::Compiler::jsop_relational_full(JSOp op, BoolStub stub, jsbytecode *target,
rhsNotNumber2.get().linkTo(stubcc.masm.label(), &stubcc.masm);
/* Emit the slow path - note full frame syncage. */
stubcc.syncExit(Uses(2));
frame.sync(stubcc.masm, Uses(2));
stubcc.leave();
stubcc.call(stub);
}

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

@ -337,8 +337,7 @@ mjit::Compiler::jsop_bitop(JSOp op)
}
/* We only want to handle integers here. */
if ((rhs->isTypeKnown() && rhs->getKnownType() != JSVAL_TYPE_INT32) ||
(lhs->isTypeKnown() && lhs->getKnownType() != JSVAL_TYPE_INT32)) {
if (rhs->isNotType(JSVAL_TYPE_INT32) || lhs->isNotType(JSVAL_TYPE_INT32)) {
prepareStubCall(Uses(2));
stubCall(stub);
frame.popn(2);

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

@ -0,0 +1,11 @@
var x = (function () {
return [, , ]
}());
(function () {
while (x > 7 & 0) {
return
}
}())
/* Don't assert. */