Changeset 51801 in webkit for trunk/JavaScriptCore/runtime/Operations.h
- Timestamp:
- Dec 7, 2009, 3:14:04 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/runtime/Operations.h
r51671 r51801 54 54 bool s2 = v2.isString(); 55 55 if (s1 && s2) 56 return asString(v1)->value( ) == asString(v2)->value();56 return asString(v1)->value(exec) == asString(v2)->value(exec); 57 57 58 58 if (v1.isUndefinedOrNull()) { … … 111 111 112 112 // ECMA 11.9.3 113 ALWAYS_INLINE bool JSValue::strictEqualSlowCaseInline( JSValue v1, JSValue v2)113 ALWAYS_INLINE bool JSValue::strictEqualSlowCaseInline(ExecState* exec, JSValue v1, JSValue v2) 114 114 { 115 115 ASSERT(v1.isCell() && v2.isCell()); 116 116 117 117 if (v1.asCell()->isString() && v2.asCell()->isString()) 118 return asString(v1)->value( ) == asString(v2)->value();118 return asString(v1)->value(exec) == asString(v2)->value(exec); 119 119 120 120 return v1 == v2; 121 121 } 122 122 123 inline bool JSValue::strictEqual( JSValue v1, JSValue v2)123 inline bool JSValue::strictEqual(ExecState* exec, JSValue v1, JSValue v2) 124 124 { 125 125 if (v1.isInt32() && v2.isInt32()) … … 132 132 return v1 == v2; 133 133 134 return strictEqualSlowCaseInline( v1, v2);134 return strictEqualSlowCaseInline(exec, v1, v2); 135 135 } 136 136 … … 147 147 JSGlobalData* globalData = &callFrame->globalData(); 148 148 if (isJSString(globalData, v1) && isJSString(globalData, v2)) 149 return asString(v1)->value( ) < asString(v2)->value();149 return asString(v1)->value(callFrame) < asString(v2)->value(callFrame); 150 150 151 151 JSValue p1; … … 157 157 return n1 < n2; 158 158 159 return asString(p1)->value( ) < asString(p2)->value();159 return asString(p1)->value(callFrame) < asString(p2)->value(callFrame); 160 160 } 161 161 … … 172 172 JSGlobalData* globalData = &callFrame->globalData(); 173 173 if (isJSString(globalData, v1) && isJSString(globalData, v2)) 174 return !(asString(v2)->value( ) < asString(v1)->value());174 return !(asString(v2)->value(callFrame) < asString(v1)->value(callFrame)); 175 175 176 176 JSValue p1; … … 182 182 return n1 <= n2; 183 183 184 return !(asString(p2)->value( ) < asString(p1)->value());184 return !(asString(p2)->value(callFrame) < asString(p1)->value(callFrame)); 185 185 } 186 186 … … 206 206 if (leftIsString && v2.isString()) { 207 207 if (asString(v1)->isRope() || asString(v2)->isRope()) { 208 RefPtr<JSString::Rope> rope = JSString::Rope::create(2); 208 RefPtr<JSString::Rope> rope = JSString::Rope::createOrNull(2); 209 if (UNLIKELY(!rope)) 210 return throwOutOfMemoryError(callFrame); 209 211 rope->initializeFiber(0, asString(v1)); 210 212 rope->initializeFiber(1, asString(v2)); … … 213 215 } 214 216 215 RefPtr<UString::Rep> value = concatenate(asString(v1)->value( ).rep(), asString(v2)->value().rep());217 RefPtr<UString::Rep> value = concatenate(asString(v1)->value(callFrame).rep(), asString(v2)->value(callFrame).rep()); 216 218 if (!value) 217 219 return throwOutOfMemoryError(callFrame); … … 221 223 if (rightIsNumber & leftIsString) { 222 224 RefPtr<UString::Rep> value = v2.isInt32() ? 223 concatenate(asString(v1)->value( ).rep(), v2.asInt32()) :224 concatenate(asString(v1)->value( ).rep(), right);225 concatenate(asString(v1)->value(callFrame).rep(), v2.asInt32()) : 226 concatenate(asString(v1)->value(callFrame).rep(), right); 225 227 226 228 if (!value) … … 307 309 ASSERT(count >= 3); 308 310 309 RefPtr<JSString::Rope> rope = JSString::Rope::create(count); 311 RefPtr<JSString::Rope> rope = JSString::Rope::createOrNull(count); 312 if (UNLIKELY(!rope)) 313 return throwOutOfMemoryError(callFrame); 310 314 311 315 for (unsigned i = 0; i < count; ++i) {
Note:
See TracChangeset
for help on using the changeset viewer.