Changeset 39958 in webkit for trunk/JavaScriptCore/runtime/Operations.h
- Timestamp:
- Jan 15, 2009, 7:20:35 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/runtime/Operations.h
r39851 r39958 32 32 inline bool JSValuePtr::equal(ExecState* exec, JSValuePtr v1, JSValuePtr v2) 33 33 { 34 if (JSImmediate::areBothImmediate Numbers(v1, v2))34 if (JSImmediate::areBothImmediateIntegerNumbers(v1, v2)) 35 35 return v1 == v2; 36 36 … … 40 40 ALWAYS_INLINE bool JSValuePtr::equalSlowCaseInline(ExecState* exec, JSValuePtr v1, JSValuePtr v2) 41 41 { 42 ASSERT(!JSImmediate::areBothImmediate Numbers(v1, v2));42 ASSERT(!JSImmediate::areBothImmediateIntegerNumbers(v1, v2)); 43 43 44 44 do { … … 72 72 return false; 73 73 v1 = p1; 74 if (JSImmediate::areBothImmediate Numbers(v1, v2))74 if (JSImmediate::areBothImmediateIntegerNumbers(v1, v2)) 75 75 return v1 == v2; 76 76 continue; … … 82 82 return false; 83 83 v2 = p2; 84 if (JSImmediate::areBothImmediate Numbers(v1, v2))84 if (JSImmediate::areBothImmediateIntegerNumbers(v1, v2)) 85 85 return v1 == v2; 86 86 continue; … … 108 108 inline bool JSValuePtr::strictEqual(JSValuePtr v1, JSValuePtr v2) 109 109 { 110 if (JSImmediate::areBothImmediate (v1, v2))110 if (JSImmediate::areBothImmediateIntegerNumbers(v1, v2)) 111 111 return v1 == v2; 112 112 113 if (JSImmediate::isEitherImmediate(v1, v2) & (v1 != js0()) & (v2 != js0())) 114 return false; 113 if (v1->isNumber() && v2->isNumber()) 114 return v1->uncheckedGetNumber() == v2->uncheckedGetNumber(); 115 116 if (JSImmediate::isEitherImmediate(v1, v2)) 117 return v1 == v2; 115 118 116 119 return strictEqualSlowCase(v1, v2); … … 119 122 ALWAYS_INLINE bool JSValuePtr::strictEqualSlowCaseInline(JSValuePtr v1, JSValuePtr v2) 120 123 { 121 ASSERT(!JSImmediate:: areBothImmediate(v1, v2));124 ASSERT(!JSImmediate::isEitherImmediate(v1, v2)); 122 125 123 if (JSImmediate::isEitherImmediate(v1, v2)) { 124 ASSERT(v1 == js0() || v2 == js0()); 125 ASSERT(v1 != v2); 126 127 // The reason we can't just return false here is that 0 === -0, 128 // and while the former is an immediate number, the latter is not. 129 if (v1 == js0()) 130 return v2->asCell()->isNumber() && v2->asNumberCell()->value() == 0; 131 return v1->asCell()->isNumber() && v1->asNumberCell()->value() == 0; 132 } 133 134 if (v1->asCell()->isNumber()) { 135 return v2->asCell()->isNumber() 136 && v1->asNumberCell()->value() == v2->asNumberCell()->value(); 137 } 138 139 if (v1->asCell()->isString()) { 140 return v2->asCell()->isString() 141 && asString(v1)->value() == asString(v2)->value(); 142 } 126 if (v1->asCell()->isString() && v2->asCell()->isString()) 127 return asString(v1)->value() == asString(v2)->value(); 143 128 144 129 return v1 == v2;
Note:
See TracChangeset
for help on using the changeset viewer.