Backed out changeset c109ff711c09 (bug 1212183) for mass bustage CLOSED TREE
authorWes Kocher <wkocher@mozilla.com>
Wed, 07 Oct 2015 17:29:08 -0700
changeset 266701 5bc4d467648c0fd95b268cf01dc9d56e5b24c4af
parent 266700 d9a501cd1b1d786f79e7f15549b452ca3665c7af
child 266702 6aea4cfe56d505d0193e516375c3060472b9f3bf
push id66265
push userkwierso@gmail.com
push dateThu, 08 Oct 2015 00:29:18 +0000
treeherdermozilla-inbound@5bc4d467648c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1212183
milestone44.0a1
backs outc109ff711c0956424e160a4c0120609b23b08a10
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
Backed out changeset c109ff711c09 (bug 1212183) for mass bustage CLOSED TREE
js/src/jit/BaselineIC.cpp
js/src/jit/BaselineInspector.cpp
js/src/jit/IonBuilder.cpp
--- a/js/src/jit/BaselineIC.cpp
+++ b/js/src/jit/BaselineIC.cpp
@@ -4796,18 +4796,17 @@ ICIn_Dense::Compiler::generateStubCode(M
 static bool
 UpdateExistingGetPropCallStubs(ICFallbackStub* fallbackStub,
                                ICStub::Kind kind,
                                HandleNativeObject holder,
                                HandleObject receiver,
                                HandleFunction getter)
 {
     MOZ_ASSERT(kind == ICStub::GetProp_CallScripted ||
-               kind == ICStub::GetProp_CallNative ||
-               kind == ICStub::GetProp_CallNativeGlobal);
+               kind == ICStub::GetProp_CallNative);
     MOZ_ASSERT(fallbackStub->isGetName_Fallback() ||
                fallbackStub->isGetProp_Fallback());
     MOZ_ASSERT(holder);
     MOZ_ASSERT(receiver);
 
     bool isOwnGetter = (holder == receiver);
     bool foundMatchingStub = false;
     ReceiverGuard receiverGuard(receiver);
@@ -4829,23 +4828,16 @@ UpdateExistingGetPropCallStubs(ICFallbac
                 // We want to update the holder shape to match the new one no
                 // matter what, even if the receiver shape is different.
                 getPropStub->holderShape() = holder->lastProperty();
 
                 // Make sure to update the getter, since a shape change might
                 // have changed which getter we want to use.
                 getPropStub->getter() = getter;
 
-                if (getPropStub->isGetProp_CallNativeGlobal()) {
-                    ICGetProp_CallNativeGlobal* globalStub =
-                        getPropStub->toGetProp_CallNativeGlobal();
-                    globalStub->globalShape() =
-                        receiver->as<ClonedBlockObject>().global().lastProperty();
-                }
-
                 if (getPropStub->receiverGuard().matches(receiverGuard))
                     foundMatchingStub = true;
             }
         }
     }
 
     return foundMatchingStub;
 }
@@ -5008,31 +5000,19 @@ TryAttachGlobalNameAccessorStub(JSContex
     // requires a Baseline stub) handles non-outerized this objects correctly.
     bool isScripted;
     if (IsCacheableGetPropCall(cx, global, current, shape, &isScripted, isTemporarilyUnoptimizable) &&
         !isScripted)
     {
         ICStub* monitorStub = stub->fallbackMonitorStub()->firstMonitorStub();
         RootedFunction getter(cx, &shape->getterObject()->as<JSFunction>());
 
-        // The CallNativeGlobal stub needs to generate 3 shape checks:
-        //
-        // 1. The global lexical scope shape check.
-        // 2. The global object shape check.
-        // 3. The holder shape check.
-        //
-        // 1 is done as the receiver check, as for GETNAME the global lexical scope is in the
-        // receiver position. 2 is done as a manual check that other GetProp stubs don't do. 3 is
-        // done as the holder check per normal.
-        //
-        // In the case the holder is the global object, check 2 is redundant but is not yet
-        // optimized away.
         JitSpew(JitSpew_BaselineIC, "  Generating GetName(GlobalName/NativeGetter) stub");
-        if (UpdateExistingGetPropCallStubs(stub, ICStub::GetProp_CallNativeGlobal, current,
-                                           globalLexical, getter))
+        if (UpdateExistingGetPropCallStubs(stub, ICStub::GetProp_CallNative, current, global,
+                                           getter))
         {
             *attached = true;
             return true;
         }
         ICGetPropCallNativeCompiler compiler(cx, ICStub::GetProp_CallNativeGlobal,
                                              monitorStub, globalLexical, current,
                                              getter, script->pcToOffset(pc),
                                              /* outerClass = */ nullptr,
--- a/js/src/jit/BaselineInspector.cpp
+++ b/js/src/jit/BaselineInspector.cpp
@@ -589,26 +589,17 @@ GlobalShapeForGetPropFunction(ICStub* st
         if (nstub->isOwnGetter())
             return nullptr;
 
         const HeapReceiverGuard& guard = nstub->receiverGuard();
         if (Shape* shape = guard.shape()) {
             if (shape->getObjectClass()->flags & JSCLASS_IS_GLOBAL)
                 return shape;
         }
-    } else if (stub->isGetProp_CallNativeGlobal()) {
-        ICGetProp_CallNativeGlobal* nstub = stub->toGetProp_CallNativeGlobal();
-        if (nstub->isOwnGetter())
-            return nullptr;
-
-        Shape* shape = nstub->globalShape();
-        MOZ_ASSERT(shape->getObjectClass()->flags & JSCLASS_IS_GLOBAL);
-        return shape;
     }
-
     return nullptr;
 }
 
 bool
 BaselineInspector::commonGetPropFunction(jsbytecode* pc, JSObject** holder, Shape** holderShape,
                                          JSFunction** commonGetter, Shape** globalShape,
                                          bool* isOwnProperty,
                                          ReceiverVector& receivers,
@@ -620,18 +611,17 @@ BaselineInspector::commonGetPropFunction
     MOZ_ASSERT(receivers.empty());
     MOZ_ASSERT(convertUnboxedGroups.empty());
 
     *holder = nullptr;
     const ICEntry& entry = icEntryFromPC(pc);
 
     for (ICStub* stub = entry.firstStub(); stub; stub = stub->next()) {
         if (stub->isGetProp_CallScripted() ||
-            stub->isGetProp_CallNative() ||
-            stub->isGetProp_CallNativeGlobal())
+            stub->isGetProp_CallNative())
         {
             ICGetPropCallGetter* nstub = static_cast<ICGetPropCallGetter*>(stub);
             bool isOwn = nstub->isOwnGetter();
             if (!isOwn && !AddReceiver(nstub->receiverGuard(), receivers, convertUnboxedGroups))
                 return false;
 
             if (!*holder) {
                 *holder = nstub->holder();
--- a/js/src/jit/IonBuilder.cpp
+++ b/js/src/jit/IonBuilder.cpp
@@ -8194,17 +8194,17 @@ IonBuilder::testGlobalLexicalBinding(Pro
 bool
 IonBuilder::jsop_getgname(PropertyName* name)
 {
     JSObject* obj = testGlobalLexicalBinding(name);
     bool emitted = false;
     if (!getStaticName(obj, name, &emitted) || emitted)
         return emitted;
 
-    if (!forceInlineCaches() && obj->is<GlobalObject>()) {
+    if (!forceInlineCaches()) {
         TemporaryTypeSet* types = bytecodeTypes(pc);
         MDefinition* globalObj = constant(ObjectValue(*obj));
         if (!getPropTryCommonGetter(&emitted, globalObj, name, types) || emitted)
             return emitted;
     }
 
     return jsop_getname(name);
 }