Backed out changeset 5f64a0d18e53
authorAndreas Gal <gal@mozilla.com>
Fri, 12 Dec 2008 17:04:32 -0800
changeset 23062 14a182ce44ce320469dc1917e0c0636414888e02
parent 23060 5f64a0d18e530c6389c11c649086bb7ba72524e6
child 23063 a5c631abee1f4056232044e9b4365c9ab870ea04
push id4346
push userrsayre@mozilla.com
push dateFri, 26 Dec 2008 01:26:36 +0000
treeherdermozilla-central@8eb5a5b83a93 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone1.9.2a1pre
backs out5f64a0d18e530c6389c11c649086bb7ba72524e6
Backed out changeset 5f64a0d18e53
js/src/jstracer.cpp
--- a/js/src/jstracer.cpp
+++ b/js/src/jstracer.cpp
@@ -5015,69 +5015,65 @@ TraceRecorder::test_property_cache(JSObj
 #ifdef JS_THREADSAFE
     // There's a potential race in any JS_THREADSAFE embedding that's nuts
     // enough to share mutable objects on the scope or proto chain, but we
     // don't care about such insane embeddings. Anyway, the (scope, proto)
     // entry->vcap coordinates must reach obj2 from aobj at this point.
     JS_ASSERT(cx->requestDepth);
 #endif
 
-    LIns* exit = snapshot(BRANCH_EXIT);
-    
     // Emit guard(s), common code for both hit and miss cases.
     // Check for first-level cache hit and guard on kshape if possible.
     // Otherwise guard on key object exact match.
     if (PCVCAP_TAG(entry->vcap) <= 1) {
         if (aobj != globalObj) {
             LIns* shape_ins = addName(lir->insLoad(LIR_ld, map_ins, offsetof(JSScope, shape)),
                                       "shape");
-            guard(true, 
-                  addName(lir->ins2i(LIR_eq, shape_ins, entry->kshape), "guard(kshape)"),
-                  exit);
+            guard(true, addName(lir->ins2i(LIR_eq, shape_ins, entry->kshape), "guard(kshape)"),
+                  MISMATCH_EXIT);
         }
     } else {
 #ifdef DEBUG
         JSOp op = JSOp(*pc);
         ptrdiff_t pcoff = (op == JSOP_GETARGPROP) ? ARGNO_LEN :
                           (op == JSOP_GETLOCALPROP) ? SLOTNO_LEN : 0;
         jsatomid index = js_GetIndexFromBytecode(cx, cx->fp->script, pc, pcoff);
         JS_ASSERT(entry->kpc == (jsbytecode*) atoms[index]);
         JS_ASSERT(entry->kshape == jsuword(aobj));
 #endif
         if (aobj != globalObj) {
-            guard(true, 
-                  addName(lir->ins2i(LIR_eq, obj_ins, entry->kshape), "guard(kobj)"),
-                  exit);
+            guard(true, addName(lir->ins2i(LIR_eq, obj_ins, entry->kshape), "guard(kobj)"),
+                  MISMATCH_EXIT);
         }
     }
 
     // For any hit that goes up the scope and/or proto chains, we will need to
     // guard on the shape of the object containing the property.
     if (PCVCAP_TAG(entry->vcap) >= 1) {
         jsuword vcap = entry->vcap;
         uint32 vshape = PCVCAP_SHAPE(vcap);
         JS_ASSERT(OBJ_SHAPE(obj2) == vshape);
 
         LIns* obj2_ins;
         if (PCVCAP_TAG(entry->vcap) == 1) {
             // Duplicate the special case in PROPERTY_CACHE_TEST.
             obj2_ins = stobj_get_fslot(obj_ins, JSSLOT_PROTO);
-            guard(false, lir->ins_eq0(obj2_ins), exit);
+            guard(false, lir->ins_eq0(obj2_ins), MISMATCH_EXIT);
         } else {
             obj2_ins = INS_CONSTPTR(obj2);
         }
         map_ins = lir->insLoad(LIR_ldp, obj2_ins, (int)offsetof(JSObject, map));
         if (!map_is_native(obj2->map, map_ins, ops_ins))
             return false;
 
         LIns* shape_ins = addName(lir->insLoad(LIR_ld, map_ins, offsetof(JSScope, shape)),
                                   "shape");
         guard(true,
               addName(lir->ins2i(LIR_eq, shape_ins, vshape), "guard(vshape)"),
-              exit);
+              MISMATCH_EXIT);
     }
 
     pcval = entry->vword;
     return true;
 }
 
 JS_REQUIRES_STACK bool
 TraceRecorder::test_property_cache_direct_slot(JSObject* obj, LIns* obj_ins, uint32& slot)