adjustCallerTypes does not aggressively undemote globals anymore (bug 496482, r=dvander). relanding

This commit is contained in:
Andreas Gal 2009-06-12 17:26:56 -07:00
parent b43077c19f
commit 848b955635

View File

@ -2409,8 +2409,11 @@ TraceRecorder::adjustCallerTypes(Fragment* f)
FORALL_GLOBAL_SLOTS(cx, ngslots, gslots,
LIns* i = get(vp);
bool isPromote = isPromoteInt(i);
if (isPromote && *m == JSVAL_DOUBLE)
if (isPromote && *m == JSVAL_DOUBLE) {
lir->insStorei(get(vp), lirbuf->state, nativeGlobalOffset(vp));
/* Aggressively undo speculation so the inner tree will compile if this fails. */
oracle.markGlobalSlotUndemotable(cx, gslots[n]);
}
JS_ASSERT(!(!isPromote && *m == JSVAL_INT));
++m;
);