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