Changeset 165098 in webkit for trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h
- Timestamp:
- Mar 4, 2014, 11:25:02 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h
r165085 r165098 918 918 SpeculatedType leftType = forNode(node->child1()).m_type; 919 919 SpeculatedType rightType = forNode(node->child2()).m_type; 920 if (!valuesCouldBeEqual(leftType, rightType)) { 920 if ((isInt32Speculation(leftType) && isOtherSpeculation(rightType)) 921 || (isOtherSpeculation(leftType) && isInt32Speculation(rightType))) { 921 922 setConstant(node, jsBoolean(false)); 922 923 break; … … 943 944 JSValue right = forNode(rightNode).value(); 944 945 if (left && right) { 946 if (left.isNumber() && right.isNumber()) { 947 setConstant(node, jsBoolean(left.asNumber() == right.asNumber())); 948 break; 949 } 945 950 if (left.isString() && right.isString()) { 946 // We need this case because JSValue::strictEqual is otherwise too racy for947 // string comparisons.948 951 const StringImpl* a = asString(left)->tryGetValueImpl(); 949 952 const StringImpl* b = asString(right)->tryGetValueImpl(); … … 952 955 break; 953 956 } 954 } else { 955 setConstant(node, jsBoolean(JSValue::strictEqual(0, left, right))); 956 break; 957 } 958 } 959 960 SpeculatedType leftLUB = leastUpperBoundOfStrictlyEquivalentSpeculations(forNode(leftNode).m_type); 961 SpeculatedType rightLUB = leastUpperBoundOfStrictlyEquivalentSpeculations(forNode(rightNode).m_type); 962 if (!(leftLUB & rightLUB)) { 963 setConstant(node, jsBoolean(false)); 964 break; 965 } 966 957 } 958 } 967 959 forNode(node).setType(SpecBoolean); 968 960 node->setCanExit(true); // This is overly conservative.
Note:
See TracChangeset
for help on using the changeset viewer.