Bug 839209 - Relax CanFakeSync, r=dvander.
--- a/js/src/methodjit/FrameState.cpp
+++ b/js/src/methodjit/FrameState.cpp
@@ -357,20 +357,17 @@ FrameState::bestEvictReg(uint32_t mask,
* Whether we can pretend the payload for a given entry is synced provided that
* the value in the entry is dead. The contents of dead variables can still be
* observed during stack scanning, so the payloads of values which might hold
* objects or strings must be preserved.
*/
static inline bool
CanFakeSync(FrameEntry *fe)
{
- return fe->isNotType(JSVAL_TYPE_OBJECT)
- && fe->isNotType(JSVAL_TYPE_STRING)
- && fe->isNotType(JSVAL_TYPE_DOUBLE)
- && fe->isNotType(JSVAL_TYPE_MAGIC);
+ return fe->isType(JSVAL_TYPE_INT32) || fe->isType(JSVAL_TYPE_BOOLEAN);
}
void
FrameState::evictDeadEntries(bool includePinned)
{
for (uint32_t i = 0; i < Registers::TotalAnyRegisters; i++) {
AnyRegisterID reg = AnyRegisterID::fromRaw(i);