Backed out changeset 851347e26940 (bug 1038839) for spidermonkey failures CLOSED TREE
authorWes Kocher <wkocher@mozilla.com>
Wed, 11 Mar 2015 14:52:14 -0700
changeset 263465 4bdf782dda8221f5eb626f0e9c7b2f0f6698104c
parent 263464 392c688134bd99e9585664bde62dc808994457e9
child 263466 fe6afb4a5cc56c4a711934c96805d93e84fdcbc0
push id830
push userraliiev@mozilla.com
push dateFri, 19 Jun 2015 19:24:37 +0000
treeherdermozilla-release@932614382a68 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1038839
milestone39.0a1
backs out851347e26940f7449afc1d740bf1e3c1d1b62c2a
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 851347e26940 (bug 1038839) for spidermonkey failures CLOSED TREE
js/src/jit/MIR.cpp
js/src/jit/MIR.h
js/src/vm/TypeInference.cpp
js/src/vm/TypeInference.h
--- a/js/src/jit/MIR.cpp
+++ b/js/src/jit/MIR.cpp
@@ -4103,67 +4103,16 @@ MLoadElement::foldsTo(TempAllocator &all
         return this;
 
     if (store->index() != index())
         return this;
 
     return foldsToStoredValue(alloc, store->value());
 }
 
-static inline const MDefinition *
-GetStoreObject(const MDefinition *store)
-{
-    switch (store->op()) {
-      case MDefinition::Op_StoreElement:
-        return store->toStoreElement()->elements()->toElements()->input();
-
-      case MDefinition::Op_StoreElementHole:
-        return store->toStoreElementHole()->object();
-
-      default:
-        return nullptr;
-    }
-}
-
-static inline const MElements *
-MaybeUnwrapElements(const MDefinition *elements)
-{
-    if (elements->isConvertElementsToDoubles())
-        return elements->toConvertElementsToDoubles()->elements()->toElements();
-
-    return elements->toElements();
-}
-
-bool
-MElements::mightAlias(const MDefinition *store) const
-{
-    if (!input()->resultTypeSet())
-        return true;
-
-    const MDefinition *storeObj = GetStoreObject(store);
-    if (!storeObj)
-        return true;
-    if (!storeObj->resultTypeSet())
-        return true;
-
-    return input()->resultTypeSet()->objectsIntersect(storeObj->resultTypeSet());
-}
-
-bool
-MLoadElement::mightAlias(const MDefinition *store) const
-{
-    return MaybeUnwrapElements(elements())->mightAlias(store);
-}
-
-bool
-MInitializedLength::mightAlias(const MDefinition *store) const
-{
-    return MaybeUnwrapElements(elements())->mightAlias(store);
-}
-
 bool
 MGuardReceiverPolymorphic::congruentTo(const MDefinition *ins) const
 {
     if (!ins->isGuardReceiverPolymorphic())
         return false;
 
     const MGuardReceiverPolymorphic *other = ins->toGuardReceiverPolymorphic();
 
--- a/js/src/jit/MIR.h
+++ b/js/src/jit/MIR.h
@@ -7483,17 +7483,16 @@ class MElements
         return getOperand(0);
     }
     bool congruentTo(const MDefinition *ins) const MOZ_OVERRIDE {
         return congruentIfOperandsEqual(ins);
     }
     AliasSet getAliasSet() const MOZ_OVERRIDE {
         return AliasSet::Load(AliasSet::ObjectFields);
     }
-    bool mightAlias(const MDefinition *store) const;
 
     ALLOW_CLONE(MElements)
 };
 
 // A constant value for some object's array elements or typed array elements.
 class MConstantElements : public MNullaryInstruction
 {
     void *value_;
@@ -7671,17 +7670,16 @@ class MInitializedLength
         return getOperand(0);
     }
     bool congruentTo(const MDefinition *ins) const MOZ_OVERRIDE {
         return congruentIfOperandsEqual(ins);
     }
     AliasSet getAliasSet() const MOZ_OVERRIDE {
         return AliasSet::Load(AliasSet::ObjectFields);
     }
-    bool mightAlias(const MDefinition *store) const;
 
     void computeRange(TempAllocator &alloc) MOZ_OVERRIDE;
 
     ALLOW_CLONE(MInitializedLength)
 };
 
 // Store to the initialized length in an elements header. Note the input is an
 // *index*, one less than the desired length.
@@ -8175,17 +8173,16 @@ class MLoadElement
         if (offsetAdjustment() != other->offsetAdjustment())
             return false;
         return congruentIfOperandsEqual(other);
     }
     MDefinition *foldsTo(TempAllocator &alloc) MOZ_OVERRIDE;
     AliasSet getAliasSet() const MOZ_OVERRIDE {
         return AliasSet::Load(AliasSet::Element);
     }
-    bool mightAlias(const MDefinition *store) const;
 
     ALLOW_CLONE(MLoadElement)
 };
 
 // Load a value from a dense array's element vector. If the index is
 // out-of-bounds, or the indexed slot has a hole, undefined is returned
 // instead.
 class MLoadElementHole
--- a/js/src/vm/TypeInference.cpp
+++ b/js/src/vm/TypeInference.cpp
@@ -414,33 +414,16 @@ TypeSet::isSubset(const TypeSet *other) 
             if (!other->hasType(ObjectType(key)))
                 return false;
         }
     }
 
     return true;
 }
 
-bool
-TypeSet::objectsIntersect(const TypeSet *other) const
-{
-    if (unknownObject() || other->unknownObject())
-        return true;
-
-    for (unsigned i = 0; i < getObjectCount(); i++) {
-        ObjectKey *key = getObject(i);
-        if (!key)
-            continue;
-        if (other->hasType(ObjectType(key)))
-            return true;
-    }
-
-    return false;
-}
-
 template <class TypeListT>
 bool
 TypeSet::enumerateTypes(TypeListT *list) const
 {
     /* If any type is possible, there's no need to worry about specifics. */
     if (flags & TYPE_FLAG_UNKNOWN)
         return list->append(UnknownType());
 
--- a/js/src/vm/TypeInference.h
+++ b/js/src/vm/TypeInference.h
@@ -487,18 +487,16 @@ class TypeSet
      */
     bool objectsAreSubset(TypeSet *other);
 
     /* Whether this TypeSet contains exactly the same types as other. */
     bool equals(const TypeSet *other) const {
         return this->isSubset(other) && other->isSubset(this);
     }
 
-    bool objectsIntersect(const TypeSet *other) const;
-
     /* Forward all types in this set to the specified constraint. */
     bool addTypesToConstraint(JSContext *cx, TypeConstraint *constraint);
 
     // Clone a type set into an arbitrary allocator.
     TemporaryTypeSet *clone(LifoAlloc *alloc) const;
     bool clone(LifoAlloc *alloc, TemporaryTypeSet *result) const;
 
     // Create a new TemporaryTypeSet where undefined and/or null has been filtered out.