Bug 454044 - TM: JSOP_NOT needs isPromoteInt/::demote help.
--- a/js/src/jstracer.cpp
+++ b/js/src/jstracer.cpp
@@ -3933,17 +3933,20 @@ bool
TraceRecorder::record_JSOP_NOT()
{
jsval& v = stackval(-1);
if (JSVAL_TAG(v) == JSVAL_BOOLEAN) {
set(&v, lir->ins_eq0(lir->ins2i(LIR_eq, get(&v), 1)));
return true;
}
if (JSVAL_IS_INT(v) || JSVAL_IS_OBJECT(v)) {
- set(&v, lir->ins_eq0(get(&v)));
+ LIns* a = get(&v);
+ if (JSVAL_IS_INT(v) && isPromoteInt(a))
+ a = ::demote(lir, a);
+ set(&v, lir->ins_eq0(a));
return true;
}
return false;
}
bool
TraceRecorder::record_JSOP_BITNOT()
{