Bug 839209 - Relax CanFakeSync, r=dvander.
authorBrian Hackett <bhackett1024@gmail.com>
Tue, 19 Mar 2013 20:53:47 -0600
changeset 131993 4bb793ac828d774696733ebd507a685d9a644500
parent 131992 3924eba670bb2dd1d9f5e5f3dfe2b71d7ba8d7e7
child 131994 893a57ee94bfb94b9b00f2d19886304056604f0f
push idunknown
push userunknown
push dateunknown
reviewersdvander
bugs839209
milestone22.0a1
Bug 839209 - Relax CanFakeSync, r=dvander.
js/src/methodjit/FrameState.cpp
--- 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);