Changeset 51801 in webkit for trunk/JavaScriptCore/jit/JITStubs.cpp
- Timestamp:
- Dec 7, 2009, 3:14:04 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/jit/JITStubs.cpp
r51735 r51801 1045 1045 if (leftIsString && v2.isString()) { 1046 1046 if (asString(v1)->isRope() || asString(v2)->isRope()) { 1047 RefPtr<JSString::Rope> rope = JSString::Rope::create(2); 1047 RefPtr<JSString::Rope> rope = JSString::Rope::createOrNull(2); 1048 if (UNLIKELY(!rope)) { 1049 throwOutOfMemoryError(callFrame); 1050 VM_THROW_EXCEPTION(); 1051 } 1048 1052 rope->initializeFiber(0, asString(v1)); 1049 1053 rope->initializeFiber(1, asString(v2)); … … 1052 1056 } 1053 1057 1054 RefPtr<UString::Rep> value = concatenate(asString(v1)->value( ).rep(), asString(v2)->value().rep());1058 RefPtr<UString::Rep> value = concatenate(asString(v1)->value(callFrame).rep(), asString(v2)->value(callFrame).rep()); 1055 1059 if (UNLIKELY(!value)) { 1056 1060 throwOutOfMemoryError(callFrame); … … 1063 1067 if (rightIsNumber & leftIsString) { 1064 1068 RefPtr<UString::Rep> value = v2.isInt32() ? 1065 concatenate(asString(v1)->value( ).rep(), v2.asInt32()) :1066 concatenate(asString(v1)->value( ).rep(), right);1069 concatenate(asString(v1)->value(callFrame).rep(), v2.asInt32()) : 1070 concatenate(asString(v1)->value(callFrame).rep(), right); 1067 1071 1068 1072 if (UNLIKELY(!value)) { … … 1889 1893 // All fast byte array accesses are safe from exceptions so return immediately to avoid exception checks. 1890 1894 ctiPatchCallByReturnAddress(callFrame->codeBlock(), STUB_RETURN_ADDRESS, FunctionPtr(cti_op_get_by_val_string)); 1891 result = asString(baseValue)->getIndex( stackFrame.globalData, i);1895 result = asString(baseValue)->getIndex(callFrame, i); 1892 1896 } else if (isJSByteArray(globalData, baseValue) && asByteArray(baseValue)->canAccessIndex(i)) { 1893 1897 // All fast byte array accesses are safe from exceptions so return immediately to avoid exception checks. … … 1920 1924 uint32_t i = subscript.asUInt32(); 1921 1925 if (isJSString(globalData, baseValue) && asString(baseValue)->canGetIndex(i)) 1922 result = asString(baseValue)->getIndex( stackFrame.globalData, i);1926 result = asString(baseValue)->getIndex(callFrame, i); 1923 1927 else { 1924 1928 result = baseValue.get(callFrame, i); … … 2423 2427 if (cell1->isString()) { 2424 2428 if (src2.isInt32()) 2425 return static_cast<JSString*>(cell1)->value( ).toDouble() == src2.asInt32();2429 return static_cast<JSString*>(cell1)->value(stackFrame.callFrame).toDouble() == src2.asInt32(); 2426 2430 2427 2431 if (src2.isDouble()) 2428 return static_cast<JSString*>(cell1)->value( ).toDouble() == src2.asDouble();2432 return static_cast<JSString*>(cell1)->value(stackFrame.callFrame).toDouble() == src2.asDouble(); 2429 2433 2430 2434 if (src2.isTrue()) 2431 return static_cast<JSString*>(cell1)->value( ).toDouble() == 1.0;2435 return static_cast<JSString*>(cell1)->value(stackFrame.callFrame).toDouble() == 1.0; 2432 2436 2433 2437 if (src2.isFalse()) 2434 return static_cast<JSString*>(cell1)->value( ).toDouble() == 0.0;2438 return static_cast<JSString*>(cell1)->value(stackFrame.callFrame).toDouble() == 0.0; 2435 2439 2436 2440 JSCell* cell2 = asCell(src2); 2437 2441 if (cell2->isString()) 2438 return static_cast<JSString*>(cell1)->value( ) == static_cast<JSString*>(cell2)->value();2442 return static_cast<JSString*>(cell1)->value(stackFrame.callFrame) == static_cast<JSString*>(cell2)->value(stackFrame.callFrame); 2439 2443 2440 2444 src2 = asObject(cell2)->toPrimitive(stackFrame.callFrame); … … 2459 2463 ASSERT(string1->isString()); 2460 2464 ASSERT(string2->isString()); 2461 return string1->value( ) == string2->value();2465 return string1->value(stackFrame.callFrame) == string2->value(stackFrame.callFrame); 2462 2466 } 2463 2467 … … 2757 2761 JSObject* base = stackFrame.args[0].jsObject(); 2758 2762 JSString* property = stackFrame.args[1].jsString(); 2759 return base->hasProperty(stackFrame.callFrame, Identifier(stackFrame.callFrame, property->value( )));2763 return base->hasProperty(stackFrame.callFrame, Identifier(stackFrame.callFrame, property->value(stackFrame.callFrame))); 2760 2764 } 2761 2765 … … 2834 2838 JSValue src2 = stackFrame.args[1].jsValue(); 2835 2839 2836 return JSValue::encode(jsBoolean(JSValue::strictEqual(s rc1, src2)));2840 return JSValue::encode(jsBoolean(JSValue::strictEqual(stackFrame.callFrame, src1, src2))); 2837 2841 } 2838 2842 … … 2848 2852 STUB_INIT_STACK_FRAME(stackFrame); 2849 2853 2850 return JSValue::encode(concatenateStrings(stackFrame.callFrame, &stackFrame.callFrame->registers()[stackFrame.args[0].int32()], stackFrame.args[1].int32())); 2854 JSValue result = concatenateStrings(stackFrame.callFrame, &stackFrame.callFrame->registers()[stackFrame.args[0].int32()], stackFrame.args[1].int32()); 2855 CHECK_FOR_EXCEPTION_AT_END(); 2856 return JSValue::encode(result); 2851 2857 } 2852 2858 … … 2858 2864 JSValue src2 = stackFrame.args[1].jsValue(); 2859 2865 2860 return JSValue::encode(jsBoolean(!JSValue::strictEqual(s rc1, src2)));2866 return JSValue::encode(jsBoolean(!JSValue::strictEqual(stackFrame.callFrame, src1, src2))); 2861 2867 } 2862 2868 … … 2967 2973 2968 2974 if (scrutinee.isString()) { 2969 UString::Rep* value = asString(scrutinee)->value( ).rep();2975 UString::Rep* value = asString(scrutinee)->value(callFrame).rep(); 2970 2976 if (value->size() == 1) 2971 2977 result = codeBlock->characterSwitchJumpTable(tableIndex).ctiForValue(value->data()[0]).executableAddress(); … … 2987 2993 2988 2994 if (scrutinee.isString()) { 2989 UString::Rep* value = asString(scrutinee)->value( ).rep();2995 UString::Rep* value = asString(scrutinee)->value(callFrame).rep(); 2990 2996 result = codeBlock->stringSwitchJumpTable(tableIndex).ctiForValue(value).executableAddress(); 2991 2997 }
Note:
See TracChangeset
for help on using the changeset viewer.