Ignore:
Timestamp:
Oct 26, 2018, 4:34:01 PM (7 years ago)
Author:
[email protected]
Message:

Unreviewed, rolling out r237479 and r237484.
https://bugs.webkit.org/show_bug.cgi?id=190978

broke JSC on iOS (Requested by tadeuzagallo on #webkit).

Reverted changesets:

"New bytecode format for JSC"
https://bugs.webkit.org/show_bug.cgi?id=187373
https://trac.webkit.org/changeset/237479

"Gardening: Build fix after r237479."
https://bugs.webkit.org/show_bug.cgi?id=187373
https://trac.webkit.org/changeset/237484

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp

    r237479 r237486  
    465465    for (; n; n = n->next()) {
    466466        if (n->elision())
    467             generator.emitBinaryOp<OpAdd>(index.get(), index.get(), generator.emitLoad(0, jsNumber(n->elision())), OperandTypes(ResultType::numberTypeIsInt32(), ResultType::numberTypeIsInt32()));
     467            generator.emitBinaryOp(op_add, index.get(), index.get(), generator.emitLoad(0, jsNumber(n->elision())), OperandTypes(ResultType::numberTypeIsInt32(), ResultType::numberTypeIsInt32()));
    468468        if (n->value()->isSpreadExpression()) {
    469469            SpreadExpressionNode* spread = static_cast<SpreadExpressionNode*>(n->value());
     
    476476   
    477477    if (m_elision) {
    478         generator.emitBinaryOp<OpAdd>(index.get(), index.get(), generator.emitLoad(0, jsNumber(m_elision)), OperandTypes(ResultType::numberTypeIsInt32(), ResultType::numberTypeIsInt32()));
     478        generator.emitBinaryOp(op_add, index.get(), index.get(), generator.emitLoad(0, jsNumber(m_elision)), OperandTypes(ResultType::numberTypeIsInt32(), ResultType::numberTypeIsInt32()));
    479479        generator.emitPutById(array.get(), generator.propertyNames().length, index.get());
    480480    }
     
    997997    ASSERT(!m_args->m_listNode);
    998998
    999     return generator.emitArgumentCount(generator.finalDestination(dst));
     999    return generator.emitUnaryNoDstOp(op_argument_count, generator.finalDestination(dst));
    10001000}
    10011001
     
    14621462                    Ref<Label> end = generator.newLabel();
    14631463                    RefPtr<RegisterID> compareResult = generator.newTemporary();
    1464                     RefPtr<RegisterID> indexZeroCompareResult = generator.emitBinaryOp<OpEq>(compareResult.get(), index.get(), generator.emitLoad(0, jsNumber(0)), OperandTypes(ResultType::numberTypeIsInt32(), ResultType::numberTypeIsInt32()));
     1464                    RefPtr<RegisterID> indexZeroCompareResult = generator.emitBinaryOp(op_eq, compareResult.get(), index.get(), generator.emitLoad(0, jsNumber(0)), OperandTypes(ResultType::numberTypeIsInt32(), ResultType::numberTypeIsInt32()));
    14651465                    generator.emitJumpIfFalse(indexZeroCompareResult.get(), haveThis.get());
    14661466                    generator.move(thisRegister.get(), value);
     
    14681468                    generator.emitJump(end.get());
    14691469                    generator.emitLabel(haveThis.get());
    1470                     RefPtr<RegisterID> indexOneCompareResult = generator.emitBinaryOp<OpEq>(compareResult.get(), index.get(), generator.emitLoad(0, jsNumber(1)), OperandTypes(ResultType::numberTypeIsInt32(), ResultType::numberTypeIsInt32()));
     1470                    RefPtr<RegisterID> indexOneCompareResult = generator.emitBinaryOp(op_eq, compareResult.get(), index.get(), generator.emitLoad(0, jsNumber(1)), OperandTypes(ResultType::numberTypeIsInt32(), ResultType::numberTypeIsInt32()));
    14711471                    generator.emitJumpIfFalse(indexOneCompareResult.get(), end.get());
    14721472                    generator.move(argumentsRegister.get(), value);
     
    18971897    RefPtr<RegisterID> src2 = generator.emitLoad(nullptr, jsNumber(-1));
    18981898    RefPtr<RegisterID> src1 = generator.emitNode(m_expr);
    1899     return generator.emitBinaryOp<OpBitxor>(generator.finalDestination(dst, src1.get()), src1.get(), src2.get(), OperandTypes(m_expr->resultDescriptor(), ResultType::numberTypeIsInt32()));
     1899    return generator.emitBinaryOp(op_bitxor, generator.finalDestination(dst, src1.get()), src1.get(), src2.get(), OperandTypes(m_expr->resultDescriptor(), ResultType::numberTypeIsInt32()));
    19001900}
    19011901 
     
    21652165            RefPtr<RegisterID> src = generator.tempDestination(dst);
    21662166            generator.emitNode(src.get(), m_expr1->isNull() ? m_expr2 : m_expr1);
    2167             return generator.emitUnaryOp<OpNeqNull>(generator.finalDestination(dst, src.get()), src.get());
     2167            return generator.emitUnaryOp(op_neq_null, generator.finalDestination(dst, src.get()), src.get());
    21682168        }
    21692169    }
     
    21832183        RefPtr<RegisterID> tmp = generator.tempDestination(dst);
    21842184        if (opcodeID == op_neq)
    2185             generator.emitEqualityOp<OpEq>(generator.finalDestination(tmp.get(), src1.get()), src1.get(), src2.get());
     2185            generator.emitEqualityOp(op_eq, generator.finalDestination(tmp.get(), src1.get()), src1.get(), src2.get());
    21862186        else if (opcodeID == op_nstricteq)
    2187             generator.emitEqualityOp<OpStricteq>(generator.finalDestination(tmp.get(), src1.get()), src1.get(), src2.get());
     2187            generator.emitEqualityOp(op_stricteq, generator.finalDestination(tmp.get(), src1.get()), src1.get(), src2.get());
    21882188        else
    21892189            RELEASE_ASSERT_NOT_REACHED();
    2190         return generator.emitUnaryOp<OpNot>(generator.finalDestination(dst, tmp.get()), tmp.get());
     2190        return generator.emitUnaryOp(op_not, generator.finalDestination(dst, tmp.get()), tmp.get());
    21912191    }
    21922192    RegisterID* result = generator.emitBinaryOp(opcodeID, generator.finalDestination(dst, src1.get()), src1.get(), src2.get(), OperandTypes(left->resultDescriptor(), right->resultDescriptor()));
    21932193    if (m_shouldToUnsignedResult) {
    21942194        if (opcodeID == op_urshift && dst != generator.ignoredResult())
    2195             return generator.emitUnaryOp<OpUnsigned>(result, result);
     2195            return generator.emitUnaryOp(op_unsigned, result, result);
    21962196    }
    21972197    return result;
     
    22032203        RefPtr<RegisterID> src = generator.tempDestination(dst);
    22042204        generator.emitNode(src.get(), m_expr1->isNull() ? m_expr2 : m_expr1);
    2205         return generator.emitUnaryOp<OpEqNull>(generator.finalDestination(dst, src.get()), src.get());
     2205        return generator.emitUnaryOp(op_eq_null, generator.finalDestination(dst, src.get()), src.get());
    22062206    }
    22072207
     
    22132213    RefPtr<RegisterID> src1 = generator.emitNodeForLeftHandSide(left, m_rightHasAssignments, m_expr2->isPure(generator));
    22142214    RefPtr<RegisterID> src2 = generator.emitNode(right);
    2215     return generator.emitEqualityOp<OpEq>(generator.finalDestination(dst, src1.get()), src1.get(), src2.get());
     2215    return generator.emitEqualityOp(op_eq, generator.finalDestination(dst, src1.get()), src1.get(), src2.get());
    22162216}
    22172217
     
    22252225    RefPtr<RegisterID> src1 = generator.emitNodeForLeftHandSide(left, m_rightHasAssignments, m_expr2->isPure(generator));
    22262226    RefPtr<RegisterID> src2 = generator.emitNode(right);
    2227     return generator.emitEqualityOp<OpStricteq>(generator.finalDestination(dst, src1.get()), src1.get(), src2.get());
     2227    return generator.emitEqualityOp(op_stricteq, generator.finalDestination(dst, src1.get()), src1.get(), src2.get());
    22282228}
    22292229
     
    24182418    RegisterID* result = generator.emitBinaryOp(opcodeID, dst, src1, src2, types);
    24192419    if (oper == OpURShift)
    2420         return generator.emitUnaryOp<OpUnsigned>(result, result);
     2420        return generator.emitUnaryOp(op_unsigned, result, result);
    24212421    return result;
    24222422}
     
    30843084        generator.emitLoopHint();
    30853085
    3086         RefPtr<RegisterID> result = generator.emitEqualityOp<OpLess>(generator.newTemporary(), i.get(), length.get());
     3086        RefPtr<RegisterID> result = generator.emitEqualityOp(op_less, generator.newTemporary(), i.get(), length.get());
    30873087        generator.emitJumpIfFalse(result.get(), loopEnd.get());
    30883088        generator.emitHasIndexedProperty(result.get(), base.get(), i.get());
     
    31253125        generator.emitLoopHint();
    31263126
    3127         RefPtr<RegisterID> result = generator.emitUnaryOp<OpEqNull>(generator.newTemporary(), propertyName.get());
     3127        RefPtr<RegisterID> result = generator.emitUnaryOp(op_eq_null, generator.newTemporary(), propertyName.get());
    31283128        generator.emitJumpIfTrue(result.get(), loopEnd.get());
    31293129        generator.emitHasStructureProperty(result.get(), base.get(), propertyName.get(), enumerator.get());
     
    31663166        generator.emitLoopHint();
    31673167
    3168         RefPtr<RegisterID> result = generator.emitUnaryOp<OpEqNull>(generator.newTemporary(), propertyName.get());
     3168        RefPtr<RegisterID> result = generator.emitUnaryOp(op_eq_null, generator.newTemporary(), propertyName.get());
    31693169        generator.emitJumpIfTrue(result.get(), loopEnd.get());
    31703170
     
    34903490            RefPtr<RegisterID> clauseVal = generator.newTemporary();
    34913491            generator.emitNode(clauseVal.get(), list->getClause()->expr());
    3492             generator.emitBinaryOp<OpStricteq>(clauseVal.get(), clauseVal.get(), switchExpression, OperandTypes());
     3492            generator.emitBinaryOp(op_stricteq, clauseVal.get(), clauseVal.get(), switchExpression, OperandTypes());
    34933493            labelVector.append(generator.newLabel());
    34943494            generator.emitJumpIfTrue(clauseVal.get(), labelVector[labelVector.size() - 1].get());
     
    34983498            RefPtr<RegisterID> clauseVal = generator.newTemporary();
    34993499            generator.emitNode(clauseVal.get(), list->getClause()->expr());
    3500             generator.emitBinaryOp<OpStricteq>(clauseVal.get(), clauseVal.get(), switchExpression, OperandTypes());
     3500            generator.emitBinaryOp(op_stricteq, clauseVal.get(), clauseVal.get(), switchExpression, OperandTypes());
    35013501            labelVector.append(generator.newLabel());
    35023502            generator.emitJumpIfTrue(clauseVal.get(), labelVector[labelVector.size() - 1].get());
     
    38463846        {
    38473847            RefPtr<RegisterID> condition = generator.newTemporary();
    3848             generator.emitEqualityOp<OpStricteq>(condition.get(), generator.generatorResumeModeRegister(), generator.emitLoad(nullptr, jsNumber(static_cast<int32_t>(JSGeneratorFunction::GeneratorResumeMode::NormalMode))));
     3848            generator.emitEqualityOp(op_stricteq, condition.get(), generator.generatorResumeModeRegister(), generator.emitLoad(nullptr, jsNumber(static_cast<int32_t>(JSGeneratorFunction::GeneratorResumeMode::NormalMode))));
    38493849            generator.emitJumpIfTrue(condition.get(), generatorBodyLabel.get());
    38503850
    38513851            Ref<Label> throwLabel = generator.newLabel();
    3852             generator.emitEqualityOp<OpStricteq>(condition.get(), generator.generatorResumeModeRegister(), generator.emitLoad(nullptr, jsNumber(static_cast<int32_t>(JSGeneratorFunction::GeneratorResumeMode::ThrowMode))));
     3852            generator.emitEqualityOp(op_stricteq, condition.get(), generator.generatorResumeModeRegister(), generator.emitLoad(nullptr, jsNumber(static_cast<int32_t>(JSGeneratorFunction::GeneratorResumeMode::ThrowMode))));
    38533853            generator.emitJumpIfTrue(condition.get(), throwLabel.get());
    38543854
     
    40104010
    40114011        Ref<Label> superclassIsNullLabel = generator.newLabel();
    4012         generator.emitJumpIfTrue(generator.emitUnaryOp<OpEqNull>(tempRegister.get(), superclass.get()), superclassIsNullLabel.get());
     4012        generator.emitJumpIfTrue(generator.emitUnaryOp(op_eq_null, tempRegister.get(), superclass.get()), superclassIsNullLabel.get());
    40134013
    40144014        Ref<Label> superclassIsObjectLabel = generator.newLabel();
     
    40204020
    40214021        Ref<Label> protoParentIsObjectOrNullLabel = generator.newLabel();
    4022         generator.emitJumpIfTrue(generator.emitUnaryOp<OpIsObjectOrNull>(tempRegister.get(), protoParent.get()), protoParentIsObjectOrNullLabel.get());
    4023         generator.emitJumpIfTrue(generator.emitUnaryOp<OpIsFunction>(tempRegister.get(), protoParent.get()), protoParentIsObjectOrNullLabel.get());
     4022        generator.emitJumpIfTrue(generator.emitUnaryOp(op_is_object_or_null, tempRegister.get(), protoParent.get()), protoParentIsObjectOrNullLabel.get());
     4023        generator.emitJumpIfTrue(generator.emitUnaryOp(op_is_function, tempRegister.get(), protoParent.get()), protoParentIsObjectOrNullLabel.get());
    40244024        generator.emitThrowTypeError("The value of the superclass's prototype property is not an object."_s);
    40254025        generator.emitLabel(protoParentIsObjectOrNullLabel.get());
Note: See TracChangeset for help on using the changeset viewer.