[JAEGER] Enabled SETPROP PIC, slow path now takes property cache.
authorDavid Anderson <danderson@mozilla.com>
Mon, 21 Jun 2010 19:41:29 -0700
changeset 52888 9793943d8efc55203519e966cd8f70f36fdece40
parent 52887 48f71ddbbbac502b36a234a4bb791a845242bd61
child 52889 e72115e30fa1e0964c156c2744bf52f383ee77d6
push id1
push userroot
push dateTue, 26 Apr 2011 22:38:44 +0000
treeherdermozilla-beta@bfdb6e623a36 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone1.9.3a5pre
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
[JAEGER] Enabled SETPROP PIC, slow path now takes property cache.
js/src/methodjit/Compiler.cpp
js/src/methodjit/PolyIC.cpp
--- a/js/src/methodjit/Compiler.cpp
+++ b/js/src/methodjit/Compiler.cpp
@@ -1962,19 +1962,16 @@ mjit::Compiler::jsop_getprop(uint32 atom
     stubcc.rejoin(1);
 
     pics.append(pic);
 }
 
 void
 mjit::Compiler::jsop_setprop(uint32 atomIndex)
 {
-    jsop_setprop_slow(atomIndex);
-
-#if 0
     FrameEntry *lhs = frame.peek(-2);
     FrameEntry *rhs = frame.peek(-1);
 
     /* If the incoming type will never PIC, take slow path. */
     if (lhs->isTypeKnown() &&
         (lhs->getTypeTag() != JSVAL_MASK32_FUNOBJ &&
          lhs->getTypeTag() != JSVAL_MASK32_NONFUNOBJ))
     {
@@ -2083,17 +2080,16 @@ mjit::Compiler::jsop_setprop(uint32 atom
     /* Finish slow path. */
     {
         if (pic.hasTypeCheck)
             typeCheck.linkTo(stubcc.masm.label(), &stubcc.masm);
         stubcc.rejoin(1);
     }
 
     pics.append(pic);
-#endif
 }
 
 #else /* ENABLE_PIC */
 
 void
 mjit::Compiler::jsop_getprop(uint32 atomIndex)
 {
     jsop_getprop_slow(atomIndex);
--- a/js/src/methodjit/PolyIC.cpp
+++ b/js/src/methodjit/PolyIC.cpp
@@ -768,29 +768,22 @@ ic::GetProp(VMFrame &f, uint32 index)
     if (!obj->getProperty(f.cx, ATOM_TO_JSID(atom), &v))
         THROW();
     f.regs.sp[-1] = v;
 }
 
 static void JS_FASTCALL
 SetPropSlow(VMFrame &f, uint32 index)
 {
-    JSObject *obj = ValueToObject(f.cx, &f.regs.sp[-2]);
-    if  (!obj)
-        THROW();
-
     JSScript *script = f.fp->script;
     ic::PICInfo &pic = script->pics[index];
     JS_ASSERT(pic.kind == ic::PICInfo::SET);
 
-    Value rval = f.regs.sp[-1];
     JSAtom *atom = script->getAtom(pic.atomIndex);
-    if (!obj->setProperty(f.cx, ATOM_TO_JSID(atom), &f.regs.sp[-1]))
-        THROW();
-    f.regs.sp[-2] = rval;
+    stubs::SetName(f, atom);
 }
 
 void
 ic::SetProp(VMFrame &f, uint32 index)
 {
     JSObject *obj = ValueToObject(f.cx, &f.regs.sp[-2]);
     if (!obj)
         THROW();