Back out cbf65998682c (bug 1112934) for SM(r) orange
authorPhil Ringnalda <philringnalda@gmail.com>
Sat, 03 Jan 2015 01:24:44 -0800
changeset 247760 6c4b30ffe4d400adb94b16453c838ede151bc49b
parent 247759 b2acfbc039a02cfa6722080f6d9532e6bd776e95
child 247761 5dba1e33ab69724d2eb973c578f9b520dc78f759
push id4489
push userraliiev@mozilla.com
push dateMon, 23 Feb 2015 15:17:55 +0000
treeherdermozilla-beta@fd7c3dc24146 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1112934
milestone37.0a1
backs outcbf65998682c1a1ed036652c25d9f0f9193be085
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
Back out cbf65998682c (bug 1112934) for SM(r) orange CLOSED TREE
js/src/jit/CodeGenerator.cpp
js/src/jit/CodeGenerator.h
js/src/jit/LIR-Common.h
js/src/jit/LOpcodes.h
js/src/jit/Lowering.cpp
js/src/jit/MIR.h
--- a/js/src/jit/CodeGenerator.cpp
+++ b/js/src/jit/CodeGenerator.cpp
@@ -9327,47 +9327,31 @@ CodeGenerator::visitGetDOMProperty(LGetD
     masm.adjustStack(IonDOMExitFrameLayout::Size());
 
     masm.bind(&haveValue);
 
     MOZ_ASSERT(masm.framePushed() == initialStack);
 }
 
 void
-CodeGenerator::visitGetDOMMemberV(LGetDOMMemberV *ins)
-{
-    // It's simpler to duplicate visitLoadFixedSlotV here than it is to try to
+CodeGenerator::visitGetDOMMember(LGetDOMMember *ins)
+{
+    // It's simple to duplicate visitLoadFixedSlotV here than it is to try to
     // use an LLoadFixedSlotV or some subclass of it for this case: that would
     // require us to have MGetDOMMember inherit from MLoadFixedSlot, and then
     // we'd have to duplicate a bunch of stuff we now get for free from
     // MGetDOMProperty.
     Register object = ToRegister(ins->object());
     size_t slot = ins->mir()->domMemberSlotIndex();
     ValueOperand result = GetValueOutput(ins);
 
     masm.loadValue(Address(object, NativeObject::getFixedSlotOffset(slot)), result);
 }
 
 void
-CodeGenerator::visitGetDOMMemberT(LGetDOMMemberT *ins)
-{
-    // It's simpler to duplicate visitLoadFixedSlotT here than it is to try to
-    // use an LLoadFixedSlotT or some subclass of it for this case: that would
-    // require us to have MGetDOMMember inherit from MLoadFixedSlot, and then
-    // we'd have to duplicate a bunch of stuff we now get for free from
-    // MGetDOMProperty.
-    Register object = ToRegister(ins->object());
-    size_t slot = ins->mir()->domMemberSlotIndex();
-    AnyRegister result = ToAnyRegister(ins->getDef(0));
-    MIRType type = ins->mir()->type();
-
-    masm.loadUnboxedValue(Address(object, NativeObject::getFixedSlotOffset(slot)), type, result);
-}
-
-void
 CodeGenerator::visitSetDOMProperty(LSetDOMProperty *ins)
 {
     const Register JSContextReg = ToRegister(ins->getJSContextReg());
     const Register ObjectReg = ToRegister(ins->getObjectReg());
     const Register PrivateReg = ToRegister(ins->getPrivReg());
     const Register ValueReg = ToRegister(ins->getValueReg());
 
     DebugOnly<uint32_t> initialStack = masm.framePushed();
--- a/js/src/jit/CodeGenerator.h
+++ b/js/src/jit/CodeGenerator.h
@@ -300,18 +300,17 @@ class CodeGenerator : public CodeGenerat
     void emitInstanceOf(LInstruction *ins, JSObject *prototypeObject);
     void visitIn(LIn *ins);
     void visitInArray(LInArray *ins);
     void visitInstanceOfO(LInstanceOfO *ins);
     void visitInstanceOfV(LInstanceOfV *ins);
     void visitCallInstanceOf(LCallInstanceOf *ins);
     void visitProfilerStackOp(LProfilerStackOp *lir);
     void visitGetDOMProperty(LGetDOMProperty *lir);
-    void visitGetDOMMemberV(LGetDOMMemberV *lir);
-    void visitGetDOMMemberT(LGetDOMMemberT *lir);
+    void visitGetDOMMember(LGetDOMMember *lir);
     void visitSetDOMProperty(LSetDOMProperty *lir);
     void visitCallDOMNative(LCallDOMNative *lir);
     void visitCallGetIntrinsicValue(LCallGetIntrinsicValue *lir);
     void visitIsCallable(LIsCallable *lir);
     void visitOutOfLineIsCallable(OutOfLineIsCallable *ool);
     void visitIsObject(LIsObject *lir);
     void visitIsObjectAndBranch(LIsObjectAndBranch *lir);
     void visitHasClass(LHasClass *lir);
--- a/js/src/jit/LIR-Common.h
+++ b/js/src/jit/LIR-Common.h
@@ -1745,38 +1745,21 @@ class LGetDOMProperty : public LDOMPrope
                                                      PrivReg, ValueReg)
     { }
 
     MGetDOMProperty *mir() const {
         return mir_->toGetDOMProperty();
     }
 };
 
-class LGetDOMMemberV : public LInstructionHelper<BOX_PIECES, 1, 0>
-{
-  public:
-    LIR_HEADER(GetDOMMemberV);
-    explicit LGetDOMMemberV(const LAllocation &object) {
-        setOperand(0, object);
-    }
-
-    const LAllocation *object() {
-        return getOperand(0);
-    }
-
-    MGetDOMMember *mir() const {
-        return mir_->toGetDOMMember();
-    }
-};
-
-class LGetDOMMemberT : public LInstructionHelper<1, 1, 0>
-{
-  public:
-    LIR_HEADER(GetDOMMemberT);
-    explicit LGetDOMMemberT(const LAllocation &object) {
+class LGetDOMMember : public LInstructionHelper<BOX_PIECES, 1, 0>
+{
+  public:
+    LIR_HEADER(GetDOMMember);
+    explicit LGetDOMMember(const LAllocation &object) {
         setOperand(0, object);
     }
 
     const LAllocation *object() {
         return getOperand(0);
     }
 
     MGetDOMMember *mir() const {
--- a/js/src/jit/LOpcodes.h
+++ b/js/src/jit/LOpcodes.h
@@ -311,18 +311,17 @@
     _(InstanceOfO)                  \
     _(InstanceOfV)                  \
     _(CallInstanceOf)               \
     _(InterruptCheck)               \
     _(AsmJSInterruptCheck)          \
     _(InterruptCheckImplicit)       \
     _(ProfilerStackOp)              \
     _(GetDOMProperty)               \
-    _(GetDOMMemberV)                \
-    _(GetDOMMemberT)                \
+    _(GetDOMMember)                 \
     _(SetDOMProperty)               \
     _(CallDOMNative)                \
     _(IsCallable)                   \
     _(IsObject)                     \
     _(IsObjectAndBranch)            \
     _(HasClass)                     \
     _(AsmJSLoadHeap)                \
     _(AsmJSStoreHeap)               \
--- a/js/src/jit/Lowering.cpp
+++ b/js/src/jit/Lowering.cpp
@@ -3819,29 +3819,19 @@ void
 LIRGenerator::visitGetDOMMember(MGetDOMMember *ins)
 {
     MOZ_ASSERT(ins->isDomMovable(), "Members had better be movable");
     // We wish we could assert that ins->domAliasSet() == JSJitInfo::AliasNone,
     // but some MGetDOMMembers are for [Pure], not [Constant] properties, whose
     // value can in fact change as a result of DOM setters and method calls.
     MOZ_ASSERT(ins->domAliasSet() != JSJitInfo::AliasEverything,
                "Member gets had better not alias the world");
-
-    MDefinition *obj = ins->object();
-    MOZ_ASSERT(obj->type() == MIRType_Object);
-
-    MIRType type = ins->type();
-
-    if (type == MIRType_Value) {
-        LGetDOMMemberV *lir = new(alloc()) LGetDOMMemberV(useRegisterAtStart(obj));
-        defineBox(lir, ins);
-    } else {
-        LGetDOMMemberT *lir = new(alloc()) LGetDOMMemberT(useRegisterForTypedLoad(obj, type));
-        define(lir, ins);
-    }
+    LGetDOMMember *lir =
+        new(alloc()) LGetDOMMember(useRegisterAtStart(ins->object()));
+    defineBox(lir, ins);
 }
 
 void
 LIRGenerator::visitRecompileCheck(MRecompileCheck *ins)
 {
     LRecompileCheck *lir = new(alloc()) LRecompileCheck(temp());
     add(lir, ins);
     assignSafepoint(lir, ins);
--- a/js/src/jit/MIR.h
+++ b/js/src/jit/MIR.h
@@ -10639,17 +10639,16 @@ class MGetDOMProperty
 
 class MGetDOMMember : public MGetDOMProperty
 {
     // We inherit everything from MGetDOMProperty except our
     // possiblyCalls value and the congruentTo behavior.
     explicit MGetDOMMember(const JSJitInfo *jitinfo)
         : MGetDOMProperty(jitinfo)
     {
-        setResultType(MIRTypeFromValueType(jitinfo->returnType()));
     }
 
   public:
     INSTRUCTION_HEADER(GetDOMMember)
 
     static MGetDOMMember *New(TempAllocator &alloc, const JSJitInfo *info, MDefinition *obj,
                               MDefinition *guard, MDefinition *globalGuard)
     {