[INFER] Fix orange.
authorBrian Hackett <bhackett1024@gmail.com>
Sun, 11 Sep 2011 00:21:15 -0700
changeset 77065 7c89b0ff453da8d3547278b50569497f920f8429
parent 77064 323595f354b119ccc91ea41ac7ab9ca25fc7c991
child 77066 048bb3f2c79b4fe14e5dac0ca58c80bacf7af2f1
push id3
push userfelipc@gmail.com
push dateFri, 30 Sep 2011 20:09:13 +0000
milestone9.0a1
[INFER] Fix orange.
js/src/jsinterp.cpp
--- a/js/src/jsinterp.cpp
+++ b/js/src/jsinterp.cpp
@@ -3916,17 +3916,17 @@ BEGIN_CASE(JSOP_GETELEM)
             id = INT_TO_JSID(i);
         } else {
           intern_big_int:
             if (!js_InternNonIntElementId(cx, obj, rref, &id))
                 goto error;
         }
     }
 
-    if (JSID_IS_STRING(id) && script->hasAnalysis())
+    if (JSID_IS_STRING(id) && script->hasAnalysis() && !regs.fp()->hasImacropc())
         script->analysis()->getCode(regs.pc).getStringElement = true;
 
     if (!obj->getProperty(cx, id, &rval))
         goto error;
     copyFrom = &rval;
 
   end_getelem:
     regs.sp--;
@@ -3986,17 +3986,17 @@ BEGIN_CASE(JSOP_SETELEM)
                     if (js_PrototypeHasIndexedProperties(cx, obj))
                         break;
                     if ((jsuint)i >= obj->getArrayLength())
                         obj->setArrayLength(cx, i + 1);
                 }
                 obj->setDenseArrayElementWithType(cx, i, regs.sp[-1]);
                 goto end_setelem;
             } else {
-                if (script->hasAnalysis())
+                if (script->hasAnalysis() && !regs.fp()->hasImacropc())
                     script->analysis()->getCode(regs.pc).arrayWriteHole = true;
             }
         }
     } while (0);
     rval = regs.sp[-1];
     if (!obj->setProperty(cx, id, &rval, script->strictModeCode))
         goto error;
   end_setelem:;