Changeset 237486 in webkit for trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
- Timestamp:
- Oct 26, 2018, 4:34:01 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
r237479 r237486 465 465 for (; n; n = n->next()) { 466 466 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())); 468 468 if (n->value()->isSpreadExpression()) { 469 469 SpreadExpressionNode* spread = static_cast<SpreadExpressionNode*>(n->value()); … … 476 476 477 477 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())); 479 479 generator.emitPutById(array.get(), generator.propertyNames().length, index.get()); 480 480 } … … 997 997 ASSERT(!m_args->m_listNode); 998 998 999 return generator.emit ArgumentCount(generator.finalDestination(dst));999 return generator.emitUnaryNoDstOp(op_argument_count, generator.finalDestination(dst)); 1000 1000 } 1001 1001 … … 1462 1462 Ref<Label> end = generator.newLabel(); 1463 1463 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())); 1465 1465 generator.emitJumpIfFalse(indexZeroCompareResult.get(), haveThis.get()); 1466 1466 generator.move(thisRegister.get(), value); … … 1468 1468 generator.emitJump(end.get()); 1469 1469 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())); 1471 1471 generator.emitJumpIfFalse(indexOneCompareResult.get(), end.get()); 1472 1472 generator.move(argumentsRegister.get(), value); … … 1897 1897 RefPtr<RegisterID> src2 = generator.emitLoad(nullptr, jsNumber(-1)); 1898 1898 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())); 1900 1900 } 1901 1901 … … 2165 2165 RefPtr<RegisterID> src = generator.tempDestination(dst); 2166 2166 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()); 2168 2168 } 2169 2169 } … … 2183 2183 RefPtr<RegisterID> tmp = generator.tempDestination(dst); 2184 2184 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()); 2186 2186 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()); 2188 2188 else 2189 2189 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()); 2191 2191 } 2192 2192 RegisterID* result = generator.emitBinaryOp(opcodeID, generator.finalDestination(dst, src1.get()), src1.get(), src2.get(), OperandTypes(left->resultDescriptor(), right->resultDescriptor())); 2193 2193 if (m_shouldToUnsignedResult) { 2194 2194 if (opcodeID == op_urshift && dst != generator.ignoredResult()) 2195 return generator.emitUnaryOp <OpUnsigned>(result, result);2195 return generator.emitUnaryOp(op_unsigned, result, result); 2196 2196 } 2197 2197 return result; … … 2203 2203 RefPtr<RegisterID> src = generator.tempDestination(dst); 2204 2204 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()); 2206 2206 } 2207 2207 … … 2213 2213 RefPtr<RegisterID> src1 = generator.emitNodeForLeftHandSide(left, m_rightHasAssignments, m_expr2->isPure(generator)); 2214 2214 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()); 2216 2216 } 2217 2217 … … 2225 2225 RefPtr<RegisterID> src1 = generator.emitNodeForLeftHandSide(left, m_rightHasAssignments, m_expr2->isPure(generator)); 2226 2226 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()); 2228 2228 } 2229 2229 … … 2418 2418 RegisterID* result = generator.emitBinaryOp(opcodeID, dst, src1, src2, types); 2419 2419 if (oper == OpURShift) 2420 return generator.emitUnaryOp <OpUnsigned>(result, result);2420 return generator.emitUnaryOp(op_unsigned, result, result); 2421 2421 return result; 2422 2422 } … … 3084 3084 generator.emitLoopHint(); 3085 3085 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()); 3087 3087 generator.emitJumpIfFalse(result.get(), loopEnd.get()); 3088 3088 generator.emitHasIndexedProperty(result.get(), base.get(), i.get()); … … 3125 3125 generator.emitLoopHint(); 3126 3126 3127 RefPtr<RegisterID> result = generator.emitUnaryOp <OpEqNull>(generator.newTemporary(), propertyName.get());3127 RefPtr<RegisterID> result = generator.emitUnaryOp(op_eq_null, generator.newTemporary(), propertyName.get()); 3128 3128 generator.emitJumpIfTrue(result.get(), loopEnd.get()); 3129 3129 generator.emitHasStructureProperty(result.get(), base.get(), propertyName.get(), enumerator.get()); … … 3166 3166 generator.emitLoopHint(); 3167 3167 3168 RefPtr<RegisterID> result = generator.emitUnaryOp <OpEqNull>(generator.newTemporary(), propertyName.get());3168 RefPtr<RegisterID> result = generator.emitUnaryOp(op_eq_null, generator.newTemporary(), propertyName.get()); 3169 3169 generator.emitJumpIfTrue(result.get(), loopEnd.get()); 3170 3170 … … 3490 3490 RefPtr<RegisterID> clauseVal = generator.newTemporary(); 3491 3491 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()); 3493 3493 labelVector.append(generator.newLabel()); 3494 3494 generator.emitJumpIfTrue(clauseVal.get(), labelVector[labelVector.size() - 1].get()); … … 3498 3498 RefPtr<RegisterID> clauseVal = generator.newTemporary(); 3499 3499 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()); 3501 3501 labelVector.append(generator.newLabel()); 3502 3502 generator.emitJumpIfTrue(clauseVal.get(), labelVector[labelVector.size() - 1].get()); … … 3846 3846 { 3847 3847 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)))); 3849 3849 generator.emitJumpIfTrue(condition.get(), generatorBodyLabel.get()); 3850 3850 3851 3851 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)))); 3853 3853 generator.emitJumpIfTrue(condition.get(), throwLabel.get()); 3854 3854 … … 4010 4010 4011 4011 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()); 4013 4013 4014 4014 Ref<Label> superclassIsObjectLabel = generator.newLabel(); … … 4020 4020 4021 4021 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()); 4024 4024 generator.emitThrowTypeError("The value of the superclass's prototype property is not an object."_s); 4025 4025 generator.emitLabel(protoParentIsObjectOrNullLabel.get());
Note:
See TracChangeset
for help on using the changeset viewer.