Changeset 37812 in webkit for trunk/JavaScriptCore
- Timestamp:
- Oct 23, 2008, 8:55:41 AM (17 years ago)
- Location:
- trunk/JavaScriptCore
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/API/APICast.h
r37712 r37812 71 71 inline JSValueRef toRef(JSC::JSValuePtr v) 72 72 { 73 return reinterpret_cast<JSValueRef>(v .payload());73 return reinterpret_cast<JSValueRef>(v); 74 74 } 75 75 76 76 inline JSValueRef* toRef(JSC::JSValuePtr* v) 77 77 { 78 return reinterpret_cast<JSValueRef*>(const_cast<const JSC::JSValue**>(v ->payloadPtr()));78 return reinterpret_cast<JSValueRef*>(const_cast<const JSC::JSValue**>(v)); 79 79 } 80 80 -
trunk/JavaScriptCore/ChangeLog
r37804 r37812 1 2008-10-23 Darin Adler <[email protected]> 2 3 - roll out https://bugs.webkit.org/show_bug.cgi?id=21732 4 to remove the JSValuePtr class, to fix two problems 5 6 1) slowness under MSVC, since it doesn't handle a 7 class with a single pointer in it as efficiently 8 as a pointer 9 10 2) uninitialized pointers in Vector 11 12 * JavaScriptCore.exp: Updated. 13 14 * API/APICast.h: 15 (toRef): 16 * VM/CTI.cpp: 17 (JSC::CTI::asInteger): 18 * VM/CodeGenerator.cpp: 19 (JSC::CodeGenerator::addConstant): 20 * VM/CodeGenerator.h: 21 (JSC::CodeGenerator::JSValueHashTraits::constructDeletedValue): 22 (JSC::CodeGenerator::JSValueHashTraits::isDeletedValue): 23 * VM/Machine.cpp: 24 (JSC::Machine::cti_op_add): 25 (JSC::Machine::cti_op_pre_inc): 26 (JSC::Machine::cti_op_get_by_id): 27 (JSC::Machine::cti_op_get_by_id_second): 28 (JSC::Machine::cti_op_get_by_id_generic): 29 (JSC::Machine::cti_op_get_by_id_fail): 30 (JSC::Machine::cti_op_instanceof): 31 (JSC::Machine::cti_op_del_by_id): 32 (JSC::Machine::cti_op_mul): 33 (JSC::Machine::cti_op_call_NotJSFunction): 34 (JSC::Machine::cti_op_resolve): 35 (JSC::Machine::cti_op_construct_NotJSConstruct): 36 (JSC::Machine::cti_op_get_by_val): 37 (JSC::Machine::cti_op_sub): 38 (JSC::Machine::cti_op_lesseq): 39 (JSC::Machine::cti_op_negate): 40 (JSC::Machine::cti_op_resolve_base): 41 (JSC::Machine::cti_op_resolve_skip): 42 (JSC::Machine::cti_op_resolve_global): 43 (JSC::Machine::cti_op_div): 44 (JSC::Machine::cti_op_pre_dec): 45 (JSC::Machine::cti_op_not): 46 (JSC::Machine::cti_op_eq): 47 (JSC::Machine::cti_op_lshift): 48 (JSC::Machine::cti_op_bitand): 49 (JSC::Machine::cti_op_rshift): 50 (JSC::Machine::cti_op_bitnot): 51 (JSC::Machine::cti_op_mod): 52 (JSC::Machine::cti_op_less): 53 (JSC::Machine::cti_op_neq): 54 (JSC::Machine::cti_op_urshift): 55 (JSC::Machine::cti_op_bitxor): 56 (JSC::Machine::cti_op_bitor): 57 (JSC::Machine::cti_op_call_eval): 58 (JSC::Machine::cti_op_throw): 59 (JSC::Machine::cti_op_next_pname): 60 (JSC::Machine::cti_op_typeof): 61 (JSC::Machine::cti_op_is_undefined): 62 (JSC::Machine::cti_op_is_boolean): 63 (JSC::Machine::cti_op_is_number): 64 (JSC::Machine::cti_op_is_string): 65 (JSC::Machine::cti_op_is_object): 66 (JSC::Machine::cti_op_is_function): 67 (JSC::Machine::cti_op_stricteq): 68 (JSC::Machine::cti_op_nstricteq): 69 (JSC::Machine::cti_op_to_jsnumber): 70 (JSC::Machine::cti_op_in): 71 (JSC::Machine::cti_op_del_by_val): 72 (JSC::Machine::cti_vm_throw): 73 Removed calls to payload functions. 74 75 * VM/Register.h: 76 (JSC::Register::Register): Removed overload for JSCell and call 77 to payload function. 78 79 * kjs/JSCell.h: Changed JSCell to derive from JSValue again. 80 Removed JSValuePtr constructor. 81 (JSC::asCell): Changed cast from reinterpret_cast to static_cast. 82 83 * kjs/JSImmediate.h: Removed JSValuePtr class. Added typedef back. 84 85 * kjs/JSValue.h: 86 (JSC::JSValue::JSValue): Added empty protected inline constructor back. 87 (JSC::JSValue::~JSValue): Same for destructor. 88 Removed == and != operator for JSValuePtr. 89 90 * kjs/PropertySlot.h: 91 (JSC::PropertySlot::PropertySlot): Chnaged argument to const JSValue* 92 and added a const_cast. 93 94 * kjs/protect.h: Removed overloads and specialization for JSValuePtr. 95 1 96 2008-10-22 Oliver Hunt <[email protected]> 2 97 -
trunk/JavaScriptCore/JavaScriptCore.exp
r37799 r37812 103 103 __ZN3JSC11Interpreter21shouldPrintExceptionsEv 104 104 __ZN3JSC11Interpreter24setShouldPrintExceptionsEb 105 __ZN3JSC11Interpreter8evaluateEPNS_9ExecStateERNS_10ScopeChainERKNS_10SourceCodeE NS_10JSValuePtrE105 __ZN3JSC11Interpreter8evaluateEPNS_9ExecStateERNS_10ScopeChainERKNS_10SourceCodeEPNS_7JSValueE 106 106 __ZN3JSC11JSImmediate12nonInlineNaNEv 107 __ZN3JSC11JSImmediate8toObjectENS_10JSValuePtrEPNS_9ExecStateE 108 __ZN3JSC11JSImmediate8toStringENS_10JSValuePtrE 109 __ZN3JSC11JSImmediate9prototypeENS_10JSValuePtrEPNS_9ExecStateE 107 __ZN3JSC11JSImmediate8toObjectEPNS_7JSValueEPNS_9ExecStateE 108 __ZN3JSC11JSImmediate8toStringEPNS_7JSValueE 110 109 __ZN3JSC11ProfileNode4sortEPFbRKN3WTF6RefPtrIS0_EES5_E 111 110 __ZN3JSC11ProgramNode6createEPNS_12JSGlobalDataEPNS_14SourceElementsEPN3WTF6VectorISt4pairINS_10IdentifierEjELm16EEEPNS6_INS5_6RefPtrINS_12FuncDeclNodeEEELm16EEERKNS_10SourceCodeEji … … 118 117 __ZN3JSC11StructureID21clearEnumerationCacheEv 119 118 __ZN3JSC11StructureID24fromDictionaryTransitionEPS0_ 120 __ZN3JSC11StructureID25changePrototypeTransitionEPS0_NS_10JSValuePtrE121 119 __ZN3JSC11StructureID27growPropertyStorageCapacityEv 122 __ZN3JSC11StructureIDC1E NS_10JSValuePtrERKNS_8TypeInfoE120 __ZN3JSC11StructureIDC1EPNS_7JSValueERKNS_8TypeInfoE 123 121 __ZN3JSC11StructureIDD1Ev 124 122 __ZN3JSC12DateInstance4infoE … … 136 134 __ZN3JSC12StringObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE 137 135 __ZN3JSC12StringObject18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE 138 __ZN3JSC12StringObject3putEPNS_9ExecStateERKNS_10IdentifierENS_10JSValuePtrERNS_15PutPropertySlotE139 136 __ZN3JSC12StringObject4infoE 140 137 __ZN3JSC12StringObjectC2EPNS_9ExecStateEN3WTF10PassRefPtrINS_11StructureIDEEERKNS_7UStringE … … 148 145 __ZN3JSC14JSGlobalObject14setTimeoutTimeEj 149 146 __ZN3JSC14JSGlobalObject16stopTimeoutCheckEv 150 __ZN3JSC14JSGlobalObject17putWithAttributesEPNS_9ExecStateERKNS_10IdentifierE NS_10JSValuePtrEj147 __ZN3JSC14JSGlobalObject17putWithAttributesEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEj 151 148 __ZN3JSC14JSGlobalObject17startTimeoutCheckEv 152 149 __ZN3JSC14JSGlobalObject29markCrossHeapDependentObjectsEv 153 __ZN3JSC14JSGlobalObject3putEPNS_9ExecStateERKNS_10IdentifierE NS_10JSValuePtrERNS_15PutPropertySlotE150 __ZN3JSC14JSGlobalObject3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueERNS_15PutPropertySlotE 154 151 __ZN3JSC14JSGlobalObject4initEPNS_8JSObjectE 155 152 __ZN3JSC14JSGlobalObject4markEv … … 168 165 __ZN3JSC16ParserRefCounted5derefEv 169 166 __ZN3JSC17PropertyNameArray3addEPNS_7UString3RepE 170 __ZN3JSC17PrototypeFunctionC1EPNS_9ExecStateEN3WTF10PassRefPtrINS_11StructureIDEEEiRKNS_10IdentifierEPFNS_10JSValuePtrES2_PNS_8JSObjectESA_RKNS_7ArgListEE 171 __ZN3JSC17PrototypeFunctionC1EPNS_9ExecStateEiRKNS_10IdentifierEPFNS_10JSValuePtrES2_PNS_8JSObjectES6_RKNS_7ArgListEE 167 __ZN3JSC17PrototypeFunctionC1EPNS_9ExecStateEN3WTF10PassRefPtrINS_11StructureIDEEEiRKNS_10IdentifierEPFPNS_7JSValueES2_PNS_8JSObjectESB_RKNS_7ArgListEE 172 168 __ZN3JSC17constructFunctionEPNS_9ExecStateERKNS_7ArgListERKNS_10IdentifierERKNS_7UStringEi 173 169 __ZN3JSC19constructEmptyArrayEPNS_9ExecStateE 174 170 __ZN3JSC19initializeThreadingEv 175 171 __ZN3JSC20constructEmptyObjectEPNS_9ExecStateE 176 __ZN3JSC23objectProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectENS_10JSValuePtrERKNS_7ArgListE177 172 __ZN3JSC23setUpStaticFunctionSlotEPNS_9ExecStateEPKNS_9HashEntryEPNS_8JSObjectERKNS_10IdentifierERNS_12PropertySlotE 178 173 __ZN3JSC4Heap14allocateNumberEm … … 185 180 __ZN3JSC4Heap25protectedObjectTypeCountsEv 186 181 __ZN3JSC4Heap26protectedGlobalObjectCountEv 187 __ZN3JSC4Heap4heapE NS_10JSValuePtrE182 __ZN3JSC4Heap4heapEPNS_7JSValueE 188 183 __ZN3JSC4Heap4sizeEv 189 184 __ZN3JSC4Heap7collectEv 190 __ZN3JSC4Heap7protectE NS_10JSValuePtrE185 __ZN3JSC4Heap7protectEPNS_7JSValueE 191 186 __ZN3JSC4Heap8allocateEm 192 __ZN3JSC4Heap9unprotectE NS_10JSValuePtrE193 __ZN3JSC4callEPNS_9ExecStateE NS_10JSValuePtrENS_8CallTypeERKNS_8CallDataES2_RKNS_7ArgListE187 __ZN3JSC4Heap9unprotectEPNS_7JSValueE 188 __ZN3JSC4callEPNS_9ExecStateEPNS_7JSValueENS_8CallTypeERKNS_8CallDataES3_RKNS_7ArgListE 194 189 __ZN3JSC5equalEPKNS_7UString3RepES3_ 195 190 __ZN3JSC6JSCell11getCallDataERNS_8CallDataE … … 201 196 __ZN3JSC6JSCell18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE 202 197 __ZN3JSC6JSCell18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE 203 __ZN3JSC6JSCell3putEPNS_9ExecStateERKNS_10IdentifierE NS_10JSValuePtrERNS_15PutPropertySlotE204 __ZN3JSC6JSCell3putEPNS_9ExecStateEj NS_10JSValuePtrE198 __ZN3JSC6JSCell3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueERNS_15PutPropertySlotE 199 __ZN3JSC6JSCell3putEPNS_9ExecStateEjPNS_7JSValueE 205 200 __ZN3JSC6JSCell9getObjectEv 206 201 __ZN3JSC6JSCellnwEmPNS_9ExecStateE … … 214 209 __ZN3JSC6Parser5parseEPNS_12JSGlobalDataEPiPNS_7UStringE 215 210 __ZN3JSC6strtodEPKcPPc 216 __ZN3JSC7ArgList10slowAppendE NS_10JSValuePtrE211 __ZN3JSC7ArgList10slowAppendEPNS_7JSValueE 217 212 __ZN3JSC7CStringD1Ev 218 213 __ZN3JSC7CStringaSERKS0_ … … 236 231 __ZN3JSC8DebuggerC2Ev 237 232 __ZN3JSC8DebuggerD2Ev 238 __ZN3JSC8JSObject11hasInstanceEPNS_9ExecStateE NS_10JSValuePtrES3_233 __ZN3JSC8JSObject11hasInstanceEPNS_9ExecStateEPNS_7JSValueES4_ 239 234 __ZN3JSC8JSObject12defineGetterEPNS_9ExecStateERKNS_10IdentifierEPS0_ 240 235 __ZN3JSC8JSObject12defineSetterEPNS_9ExecStateERKNS_10IdentifierEPS0_ … … 246 241 __ZN3JSC8JSObject17createInheritorIDEv 247 242 __ZN3JSC8JSObject17putDirectFunctionEPNS_9ExecStateEPNS_16InternalFunctionEj 248 __ZN3JSC8JSObject17putWithAttributesEPNS_9ExecStateERKNS_10IdentifierE NS_10JSValuePtrEj249 __ZN3JSC8JSObject17putWithAttributesEPNS_9ExecStateEj NS_10JSValuePtrEj243 __ZN3JSC8JSObject17putWithAttributesEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueEj 244 __ZN3JSC8JSObject17putWithAttributesEPNS_9ExecStateEjPNS_7JSValueEj 250 245 __ZN3JSC8JSObject18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE 251 __ZN3JSC8JSObject18getPrimitiveNumberEPNS_9ExecStateERdR NS_10JSValuePtrE252 __ZN3JSC8JSObject22fillGetterPropertySlotERNS_12PropertySlotEP NS_10JSValuePtrE246 __ZN3JSC8JSObject18getPrimitiveNumberEPNS_9ExecStateERdRPNS_7JSValueE 247 __ZN3JSC8JSObject22fillGetterPropertySlotERNS_12PropertySlotEPPNS_7JSValueE 253 248 __ZN3JSC8JSObject23allocatePropertyStorageEmm 254 __ZN3JSC8JSObject3putEPNS_9ExecStateERKNS_10IdentifierE NS_10JSValuePtrERNS_15PutPropertySlotE255 __ZN3JSC8JSObject3putEPNS_9ExecStateEj NS_10JSValuePtrE249 __ZN3JSC8JSObject3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueERNS_15PutPropertySlotE 250 __ZN3JSC8JSObject3putEPNS_9ExecStateEjPNS_7JSValueE 256 251 __ZN3JSC8JSObject4markEv 257 252 __ZN3JSC8Profiler13stopProfilingEPNS_9ExecStateERKNS_7UStringE … … 261 256 __ZN3JSC9CodeBlockD1Ev 262 257 __ZN3JSC9CodeBlockD2Ev 263 __ZN3JSC9constructEPNS_9ExecStateENS_10JSValuePtrENS_13ConstructTypeERKNS_13ConstructDataERKNS_7ArgListE264 258 __ZN3JSCeqERKNS_7UStringEPKc 265 259 __ZN3JSCgtERKNS_7UStringES2_ … … 312 306 __ZNK3JSC17DebuggerCallFrame12functionNameEv 313 307 __ZNK3JSC17DebuggerCallFrame4typeEv 314 __ZNK3JSC17DebuggerCallFrame8evaluateERKNS_7UStringERNS_10JSValuePtrE315 308 __ZNK3JSC4Node8toStringEv 316 309 __ZNK3JSC6JSCell12toThisObjectEPNS_9ExecStateE … … 330 323 __ZNK3JSC7JSValue9toIntegerEPNS_9ExecStateE 331 324 __ZNK3JSC7Machine14retrieveCallerEPNS_9ExecStateEPNS_16InternalFunctionE 332 __ZNK3JSC7Machine18retrieveLastCallerEPNS_9ExecStateERiRlRNS_7UStringERNS_10JSValuePtrE333 325 __ZNK3JSC7UString10UTF8StringEb 334 326 __ZNK3JSC7UString14toStrictUInt32EPb … … 362 354 _jscore_fastmalloc_introspection 363 355 _kJSClassDefinitionEmpty 356 __ZN3JSC11JSImmediate9prototypeEPNS_7JSValueEPNS_9ExecStateE 357 __ZN3JSC11StructureID25changePrototypeTransitionEPS0_PNS_7JSValueE 358 __ZN3JSC12StringObject3putEPNS_9ExecStateERKNS_10IdentifierEPNS_7JSValueERNS_15PutPropertySlotE 359 __ZN3JSC17PrototypeFunctionC1EPNS_9ExecStateEiRKNS_10IdentifierEPFPNS_7JSValueES2_PNS_8JSObjectES7_RKNS_7ArgListEE 360 __ZN3JSC23objectProtoFuncToStringEPNS_9ExecStateEPNS_8JSObjectEPNS_7JSValueERKNS_7ArgListE 361 __ZN3JSC9constructEPNS_9ExecStateEPNS_7JSValueENS_13ConstructTypeERKNS_13ConstructDataERKNS_7ArgListE 362 __ZNK3JSC17DebuggerCallFrame8evaluateERKNS_7UStringERPNS_7JSValueE 363 __ZNK3JSC7Machine18retrieveLastCallerEPNS_9ExecStateERiRlRNS_7UStringERPNS_7JSValueE -
trunk/JavaScriptCore/VM/CTI.cpp
r37789 r37812 36 36 #include "ResultType.h" 37 37 38 #if PLATFORM(MAC)39 #include <sys/sysctl.h>40 #endif41 42 38 using namespace std; 43 39 … … 180 176 inline uintptr_t CTI::asInteger(JSValuePtr value) 181 177 { 182 return reinterpret_cast<uintptr_t>(value .payload());178 return reinterpret_cast<uintptr_t>(value); 183 179 } 184 180 -
trunk/JavaScriptCore/VM/CodeGenerator.cpp
r37789 r37812 675 675 RegisterID* CodeGenerator::addConstant(JSValuePtr v) 676 676 { 677 pair<JSValueMap::iterator, bool> result = m_jsValueMap.add(v .payload(), m_nextConstant);677 pair<JSValueMap::iterator, bool> result = m_jsValueMap.add(v, m_nextConstant); 678 678 if (result.second) { 679 679 RegisterID& constant = m_calleeRegisters[m_nextConstant]; -
trunk/JavaScriptCore/VM/CodeGenerator.h
r37730 r37812 332 332 333 333 struct JSValueHashTraits : HashTraits<JSValue*> { 334 static void constructDeletedValue(JSValue*& slot) { slot = JSImmediate::impossibleValue() .payload(); }335 static bool isDeletedValue(JSValue* value) { return value == JSImmediate::impossibleValue() .payload(); }334 static void constructDeletedValue(JSValue*& slot) { slot = JSImmediate::impossibleValue(); } 335 static bool isDeletedValue(JSValue* value) { return value == JSImmediate::impossibleValue(); } 336 336 }; 337 337 -
trunk/JavaScriptCore/VM/Machine.cpp
r37799 r37812 4386 4386 bool rightIsNumber = fastIsNumber(v2, right); 4387 4387 if (rightIsNumber && fastIsNumber(v1, left)) 4388 return jsNumber(ARG_globalData, left + right) .payload();4388 return jsNumber(ARG_globalData, left + right); 4389 4389 4390 4390 CallFrame* callFrame = ARG_callFrame; … … 4398 4398 } 4399 4399 4400 return JSValuePtr(jsString(ARG_globalData, value.release())) .payload();4400 return JSValuePtr(jsString(ARG_globalData, value.release())); 4401 4401 } 4402 4402 … … 4410 4410 VM_THROW_EXCEPTION(); 4411 4411 } 4412 return JSValuePtr(jsString(ARG_globalData, value.release())) .payload();4412 return JSValuePtr(jsString(ARG_globalData, value.release())); 4413 4413 } 4414 4414 … … 4416 4416 JSValuePtr result = jsAddSlowCase(callFrame, v1, v2); 4417 4417 VM_CHECK_EXCEPTION_AT_END(); 4418 return result .payload();4418 return result; 4419 4419 } 4420 4420 … … 4428 4428 JSValuePtr result = jsNumber(ARG_globalData, v->toNumber(callFrame) + 1); 4429 4429 VM_CHECK_EXCEPTION_AT_END(); 4430 return result .payload();4430 return result; 4431 4431 } 4432 4432 … … 4556 4556 4557 4557 VM_CHECK_EXCEPTION_AT_END(); 4558 return result .payload();4558 return result; 4559 4559 } 4560 4560 … … 4573 4573 4574 4574 VM_CHECK_EXCEPTION_AT_END(); 4575 return result .payload();4575 return result; 4576 4576 } 4577 4577 … … 4588 4588 4589 4589 VM_CHECK_EXCEPTION_AT_END(); 4590 return result .payload();4590 return result; 4591 4591 } 4592 4592 … … 4606 4606 4607 4607 VM_CHECK_EXCEPTION_AT_END(); 4608 return result .payload();4608 return result; 4609 4609 } 4610 4610 … … 4633 4633 4634 4634 if (!asObject(baseVal)->structureID()->typeInfo().implementsHasInstance()) 4635 return JSValuePtr(jsBoolean(false)) .payload();4635 return JSValuePtr(jsBoolean(false)); 4636 4636 4637 4637 if (!proto->isObject()) { … … 4641 4641 4642 4642 if (!value->isObject()) 4643 return JSValuePtr(jsBoolean(false)) .payload();4643 return JSValuePtr(jsBoolean(false)); 4644 4644 4645 4645 JSValuePtr result = jsBoolean(asObject(baseVal)->hasInstance(callFrame, value, proto)); 4646 4646 VM_CHECK_EXCEPTION_AT_END(); 4647 4647 4648 return result .payload();4648 return result; 4649 4649 } 4650 4650 … … 4660 4660 JSValuePtr result = jsBoolean(baseObj->deleteProperty(callFrame, ident)); 4661 4661 VM_CHECK_EXCEPTION_AT_END(); 4662 return result .payload();4662 return result; 4663 4663 } 4664 4664 … … 4673 4673 double right; 4674 4674 if (fastIsNumber(src1, left) && fastIsNumber(src2, right)) 4675 return jsNumber(ARG_globalData, left * right) .payload();4675 return jsNumber(ARG_globalData, left * right); 4676 4676 4677 4677 CallFrame* callFrame = ARG_callFrame; 4678 4678 JSValuePtr result = jsNumber(ARG_globalData, src1->toNumber(callFrame) * src2->toNumber(callFrame)); 4679 4679 VM_CHECK_EXCEPTION_AT_END(); 4680 return result .payload();4680 return result; 4681 4681 } 4682 4682 … … 4804 4804 VM_CHECK_EXCEPTION(); 4805 4805 4806 return returnValue .payload();4806 return returnValue; 4807 4807 } 4808 4808 … … 4897 4897 JSValuePtr result = slot.getValue(callFrame, ident); 4898 4898 VM_CHECK_EXCEPTION_AT_END(); 4899 return result .payload();4899 return result; 4900 4900 } 4901 4901 } while (++iter != end); … … 5008 5008 VM_CHECK_EXCEPTION(); 5009 5009 5010 return returnValue .payload();5010 return returnValue; 5011 5011 } 5012 5012 … … 5048 5048 5049 5049 VM_CHECK_EXCEPTION_AT_END(); 5050 return result .payload();5050 return result; 5051 5051 } 5052 5052 … … 5105 5105 double right; 5106 5106 if (fastIsNumber(src1, left) && fastIsNumber(src2, right)) 5107 return jsNumber(ARG_globalData, left - right) .payload();5107 return jsNumber(ARG_globalData, left - right); 5108 5108 5109 5109 CallFrame* callFrame = ARG_callFrame; 5110 5110 JSValuePtr result = jsNumber(ARG_globalData, src1->toNumber(callFrame) - src2->toNumber(callFrame)); 5111 5111 VM_CHECK_EXCEPTION_AT_END(); 5112 return result .payload();5112 return result; 5113 5113 } 5114 5114 … … 5180 5180 JSValuePtr result = jsBoolean(jsLessEq(callFrame, ARG_src1, ARG_src2)); 5181 5181 VM_CHECK_EXCEPTION_AT_END(); 5182 return result .payload();5182 return result; 5183 5183 } 5184 5184 … … 5204 5204 double v; 5205 5205 if (fastIsNumber(src, v)) 5206 return jsNumber(ARG_globalData, -v) .payload();5206 return jsNumber(ARG_globalData, -v); 5207 5207 5208 5208 CallFrame* callFrame = ARG_callFrame; 5209 5209 JSValuePtr result = jsNumber(ARG_globalData, -src->toNumber(callFrame)); 5210 5210 VM_CHECK_EXCEPTION_AT_END(); 5211 return result .payload();5211 return result; 5212 5212 } 5213 5213 … … 5216 5216 CTI_STACK_HACK(); 5217 5217 5218 return inlineResolveBase(ARG_callFrame, *ARG_id1, ARG_callFrame->scopeChain()) .payload();5218 return inlineResolveBase(ARG_callFrame, *ARG_id1, ARG_callFrame->scopeChain()); 5219 5219 } 5220 5220 … … 5242 5242 JSValuePtr result = slot.getValue(callFrame, ident); 5243 5243 VM_CHECK_EXCEPTION_AT_END(); 5244 return result .payload();5244 return result; 5245 5245 } 5246 5246 } while (++iter != end); … … 5272 5272 vPC[4] = globalObject->structureID(); 5273 5273 vPC[5] = slot.cachedOffset(); 5274 return result .payload();5274 return result; 5275 5275 } 5276 5276 5277 5277 VM_CHECK_EXCEPTION_AT_END(); 5278 return result .payload();5278 return result; 5279 5279 } 5280 5280 … … 5293 5293 double right; 5294 5294 if (fastIsNumber(src1, left) && fastIsNumber(src2, right)) 5295 return jsNumber(ARG_globalData, left / right) .payload();5295 return jsNumber(ARG_globalData, left / right); 5296 5296 5297 5297 CallFrame* callFrame = ARG_callFrame; 5298 5298 JSValuePtr result = jsNumber(ARG_globalData, src1->toNumber(callFrame) / src2->toNumber(callFrame)); 5299 5299 VM_CHECK_EXCEPTION_AT_END(); 5300 return result .payload();5300 return result; 5301 5301 } 5302 5302 … … 5310 5310 JSValuePtr result = jsNumber(ARG_globalData, v->toNumber(callFrame) - 1); 5311 5311 VM_CHECK_EXCEPTION_AT_END(); 5312 return result .payload();5312 return result; 5313 5313 } 5314 5314 … … 5336 5336 JSValuePtr result = jsBoolean(!src->toBoolean(callFrame)); 5337 5337 VM_CHECK_EXCEPTION_AT_END(); 5338 return result .payload();5338 return result; 5339 5339 } 5340 5340 … … 5379 5379 JSValuePtr result = jsBoolean(equalSlowCaseInline(callFrame, src1, src2)); 5380 5380 VM_CHECK_EXCEPTION_AT_END(); 5381 return result .payload();5381 return result; 5382 5382 } 5383 5383 … … 5392 5392 uint32_t right; 5393 5393 if (JSImmediate::areBothImmediateNumbers(val, shift)) 5394 return jsNumber(ARG_globalData, JSImmediate::getTruncatedInt32(val) << (JSImmediate::getTruncatedUInt32(shift) & 0x1f)) .payload();5394 return jsNumber(ARG_globalData, JSImmediate::getTruncatedInt32(val) << (JSImmediate::getTruncatedUInt32(shift) & 0x1f)); 5395 5395 if (fastToInt32(val, left) && fastToUInt32(shift, right)) 5396 return jsNumber(ARG_globalData, left << (right & 0x1f)) .payload();5396 return jsNumber(ARG_globalData, left << (right & 0x1f)); 5397 5397 5398 5398 CallFrame* callFrame = ARG_callFrame; 5399 5399 JSValuePtr result = jsNumber(ARG_globalData, (val->toInt32(callFrame)) << (shift->toUInt32(callFrame) & 0x1f)); 5400 5400 VM_CHECK_EXCEPTION_AT_END(); 5401 return result .payload();5401 return result; 5402 5402 } 5403 5403 … … 5412 5412 int32_t right; 5413 5413 if (fastToInt32(src1, left) && fastToInt32(src2, right)) 5414 return jsNumber(ARG_globalData, left & right) .payload();5414 return jsNumber(ARG_globalData, left & right); 5415 5415 5416 5416 CallFrame* callFrame = ARG_callFrame; 5417 5417 JSValuePtr result = jsNumber(ARG_globalData, src1->toInt32(callFrame) & src2->toInt32(callFrame)); 5418 5418 VM_CHECK_EXCEPTION_AT_END(); 5419 return result .payload();5419 return result; 5420 5420 } 5421 5421 … … 5430 5430 uint32_t right; 5431 5431 if (JSImmediate::areBothImmediateNumbers(val, shift)) 5432 return JSImmediate::rightShiftImmediateNumbers(val, shift) .payload();5432 return JSImmediate::rightShiftImmediateNumbers(val, shift); 5433 5433 if (fastToInt32(val, left) && fastToUInt32(shift, right)) 5434 return jsNumber(ARG_globalData, left >> (right & 0x1f)) .payload();5434 return jsNumber(ARG_globalData, left >> (right & 0x1f)); 5435 5435 5436 5436 CallFrame* callFrame = ARG_callFrame; 5437 5437 JSValuePtr result = jsNumber(ARG_globalData, (val->toInt32(callFrame)) >> (shift->toUInt32(callFrame) & 0x1f)); 5438 5438 VM_CHECK_EXCEPTION_AT_END(); 5439 return result .payload();5439 return result; 5440 5440 } 5441 5441 … … 5448 5448 int value; 5449 5449 if (fastToInt32(src, value)) 5450 return jsNumber(ARG_globalData, ~value) .payload();5450 return jsNumber(ARG_globalData, ~value); 5451 5451 5452 5452 CallFrame* callFrame = ARG_callFrame; 5453 5453 JSValuePtr result = jsNumber(ARG_globalData, ~src->toInt32(callFrame)); 5454 5454 VM_CHECK_EXCEPTION_AT_END(); 5455 return result .payload();5455 return result; 5456 5456 } 5457 5457 … … 5510 5510 JSValuePtr result = jsNumber(ARG_globalData, fmod(d, divisorValue->toNumber(callFrame))); 5511 5511 VM_CHECK_EXCEPTION_AT_END(); 5512 return result .payload();5512 return result; 5513 5513 } 5514 5514 … … 5520 5520 JSValuePtr result = jsBoolean(jsLess(callFrame, ARG_src1, ARG_src2)); 5521 5521 VM_CHECK_EXCEPTION_AT_END(); 5522 return result .payload();5522 return result; 5523 5523 } 5524 5524 … … 5535 5535 JSValuePtr result = jsBoolean(!equalSlowCaseInline(callFrame, src1, src2)); 5536 5536 VM_CHECK_EXCEPTION_AT_END(); 5537 return result .payload();5537 return result; 5538 5538 } 5539 5539 … … 5563 5563 5564 5564 if (JSImmediate::areBothImmediateNumbers(val, shift) && !JSImmediate::isNegative(val)) 5565 return JSImmediate::rightShiftImmediateNumbers(val, shift) .payload();5565 return JSImmediate::rightShiftImmediateNumbers(val, shift); 5566 5566 else { 5567 5567 JSValuePtr result = jsNumber(ARG_globalData, (val->toUInt32(callFrame)) >> (shift->toUInt32(callFrame) & 0x1f)); 5568 5568 VM_CHECK_EXCEPTION_AT_END(); 5569 return result .payload();5569 return result; 5570 5570 } 5571 5571 } … … 5582 5582 JSValuePtr result = jsNumber(ARG_globalData, src1->toInt32(callFrame) ^ src2->toInt32(callFrame)); 5583 5583 VM_CHECK_EXCEPTION_AT_END(); 5584 return result .payload();5584 return result; 5585 5585 } 5586 5586 … … 5603 5603 JSValuePtr result = jsNumber(ARG_globalData, src1->toInt32(callFrame) | src2->toInt32(callFrame)); 5604 5604 VM_CHECK_EXCEPTION_AT_END(); 5605 return result .payload();5605 return result; 5606 5606 } 5607 5607 … … 5630 5630 VM_THROW_EXCEPTION_AT_END(); 5631 5631 } 5632 return result .payload();5633 } 5634 5635 return JSImmediate::impossibleValue() .payload();5632 return result; 5633 } 5634 5635 return JSImmediate::impossibleValue(); 5636 5636 } 5637 5637 … … 5653 5653 if (!handlerVPC) { 5654 5654 *ARG_exception = exceptionValue; 5655 return JSImmediate::nullImmediate() .payload();5655 return JSImmediate::nullImmediate(); 5656 5656 } 5657 5657 … … 5660 5660 ASSERT(catchRoutine); 5661 5661 CTI_SET_RETURN_ADDRESS(catchRoutine); 5662 return exceptionValue .payload();5662 return exceptionValue; 5663 5663 } 5664 5664 … … 5678 5678 if (!temp) 5679 5679 it->invalidate(); 5680 return temp .payload();5680 return temp; 5681 5681 } 5682 5682 … … 5701 5701 CTI_STACK_HACK(); 5702 5702 5703 return jsTypeStringForValue(ARG_callFrame, ARG_src1) .payload();5703 return jsTypeStringForValue(ARG_callFrame, ARG_src1); 5704 5704 } 5705 5705 … … 5709 5709 5710 5710 JSValuePtr v = ARG_src1; 5711 return jsBoolean(JSImmediate::isImmediate(v) ? v->isUndefined() : v->asCell()->structureID()->typeInfo().masqueradesAsUndefined()) .payload();5711 return jsBoolean(JSImmediate::isImmediate(v) ? v->isUndefined() : v->asCell()->structureID()->typeInfo().masqueradesAsUndefined()); 5712 5712 } 5713 5713 … … 5716 5716 CTI_STACK_HACK(); 5717 5717 5718 return jsBoolean(ARG_src1->isBoolean()) .payload();5718 return jsBoolean(ARG_src1->isBoolean()); 5719 5719 } 5720 5720 … … 5723 5723 CTI_STACK_HACK(); 5724 5724 5725 return jsBoolean(ARG_src1->isNumber()) .payload();5725 return jsBoolean(ARG_src1->isNumber()); 5726 5726 } 5727 5727 … … 5730 5730 CTI_STACK_HACK(); 5731 5731 5732 return jsBoolean(ARG_globalData->machine->isJSString(ARG_src1)) .payload();5732 return jsBoolean(ARG_globalData->machine->isJSString(ARG_src1)); 5733 5733 } 5734 5734 … … 5737 5737 CTI_STACK_HACK(); 5738 5738 5739 return jsBoolean(jsIsObjectType(ARG_src1)) .payload();5739 return jsBoolean(jsIsObjectType(ARG_src1)); 5740 5740 } 5741 5741 … … 5744 5744 CTI_STACK_HACK(); 5745 5745 5746 return jsBoolean(jsIsFunctionType(ARG_src1)) .payload();5746 return jsBoolean(jsIsFunctionType(ARG_src1)); 5747 5747 } 5748 5748 … … 5758 5758 ASSERT(!(JSImmediate::isEitherImmediate(src1, src2) & (src1 != JSImmediate::zeroImmediate()) & (src2 != JSImmediate::zeroImmediate()))); 5759 5759 5760 return jsBoolean(strictEqualSlowCaseInline(src1, src2)) .payload();5760 return jsBoolean(strictEqualSlowCaseInline(src1, src2)); 5761 5761 } 5762 5762 … … 5772 5772 ASSERT(!(JSImmediate::isEitherImmediate(src1, src2) & (src1 != JSImmediate::zeroImmediate()) & (src2 != JSImmediate::zeroImmediate()))); 5773 5773 5774 return jsBoolean(!strictEqualSlowCaseInline(src1, src2)) .payload();5774 return jsBoolean(!strictEqualSlowCaseInline(src1, src2)); 5775 5775 } 5776 5776 … … 5784 5784 JSValuePtr result = src->toJSNumber(callFrame); 5785 5785 VM_CHECK_EXCEPTION_AT_END(); 5786 return result .payload();5786 return result; 5787 5787 } 5788 5788 … … 5808 5808 uint32_t i; 5809 5809 if (propName->getUInt32(i)) 5810 return jsBoolean(baseObj->hasProperty(callFrame, i)) .payload();5810 return jsBoolean(baseObj->hasProperty(callFrame, i)); 5811 5811 5812 5812 Identifier property(callFrame, propName->toString(callFrame)); 5813 5813 VM_CHECK_EXCEPTION(); 5814 return jsBoolean(baseObj->hasProperty(callFrame, property)) .payload();5814 return jsBoolean(baseObj->hasProperty(callFrame, property)); 5815 5815 } 5816 5816 … … 5927 5927 5928 5928 VM_CHECK_EXCEPTION_AT_END(); 5929 return result .payload();5929 return result; 5930 5930 } 5931 5931 … … 6000 6000 if (!handlerVPC) { 6001 6001 *ARG_exception = exceptionValue; 6002 return JSImmediate::nullImmediate() .payload();6002 return JSImmediate::nullImmediate(); 6003 6003 } 6004 6004 … … 6007 6007 ASSERT(catchRoutine); 6008 6008 CTI_SET_RETURN_ADDRESS(catchRoutine); 6009 return exceptionValue .payload();6009 return exceptionValue; 6010 6010 } 6011 6011 -
trunk/JavaScriptCore/VM/Register.h
r37712 r37812 51 51 Register(); 52 52 Register(JSValuePtr); 53 Register(JSCell*);54 53 55 54 JSValuePtr jsValue(CallFrame*) const; … … 144 143 { 145 144 SET_TYPE(ValueType); 146 u.value = v.payload(); 147 } 148 149 ALWAYS_INLINE Register::Register(JSCell* v) 150 { 151 SET_TYPE(ValueType); 152 u.value = JSValuePtr(v).payload(); 145 u.value = v; 153 146 } 154 147 -
trunk/JavaScriptCore/kjs/JSCell.h
r37799 r37812 30 30 namespace JSC { 31 31 32 class JSCell : Noncopyable {32 class JSCell : public JSValue { 33 33 friend class CTI; 34 34 friend class GetterSetter; … … 113 113 { 114 114 ASSERT(!JSImmediate::isImmediate(value)); 115 return reinterpret_cast<JSCell*>(value.payload());115 return static_cast<JSCell*>(value); 116 116 } 117 117 … … 168 168 return globalData->heap.allocate(size); 169 169 #endif 170 }171 172 // --- JSValuePtr inlines ----------------------------173 174 inline JSValuePtr::JSValuePtr(const JSCell* cell)175 : m_payload(reinterpret_cast<JSValue*>(const_cast<JSCell*>(cell)))176 {177 170 } 178 171 -
trunk/JavaScriptCore/kjs/JSImmediate.h
r37712 r37812 40 40 class UString; 41 41 42 class JSValuePtr { 43 public: 44 JSValuePtr() { } // uninitialized (not zero) 45 JSValuePtr(const JSValue* payload) : m_payload(const_cast<JSValue*>(payload)) { } 46 JSValuePtr(const JSCell*); 47 48 JSValue* payload() const { return m_payload; } 49 JSValue** payloadPtr() { return &m_payload; } 50 51 bool operator!() const { return !payload(); } 52 53 // This conversion operator allows implicit conversion to bool but not to other integer types. 54 typedef JSValue* JSValuePtr::*UnspecifiedBoolType; 55 operator UnspecifiedBoolType() const { return payload() ? &JSValuePtr::m_payload : 0; } 56 57 JSValue* operator->() const { return payload(); } 58 59 private: 60 JSValue* m_payload; 61 }; 42 typedef JSValue* JSValuePtr; 62 43 63 44 inline JSValuePtr noValue() { return static_cast<JSValue*>(0); } 64 inline void* asPointer(JSValuePtr value) { return value .payload(); }45 inline void* asPointer(JSValuePtr value) { return value; } 65 46 66 47 /* … … 322 303 static ALWAYS_INLINE uintptr_t rawValue(JSValuePtr v) 323 304 { 324 return reinterpret_cast<uintptr_t>(v .payload());305 return reinterpret_cast<uintptr_t>(v); 325 306 } 326 307 -
trunk/JavaScriptCore/kjs/JSValue.h
r37714 r37812 47 47 48 48 class JSValue : Noncopyable { 49 pr ivate:50 JSValue() ;51 ~JSValue();49 protected: 50 JSValue() { } 51 virtual ~JSValue() { } 52 52 53 53 public: … … 137 137 }; 138 138 139 bool operator==(JSValuePtr, JSValuePtr);140 bool operator!=(JSValuePtr, JSValuePtr);141 142 139 // These are identical logic to the JSValue functions above, and faster than jsNumber(number)->toInt32(). 143 140 int32_t toInt32(double); … … 242 239 } 243 240 244 inline bool operator==(JSValuePtr a, JSValuePtr b)245 {246 return a.payload() == b.payload();247 }248 249 inline bool operator!=(JSValuePtr a, JSValuePtr b)250 {251 return a.payload() != b.payload();252 }253 254 241 } // namespace JSC 255 242 -
trunk/JavaScriptCore/kjs/PropertySlot.h
r37712 r37812 45 45 } 46 46 47 explicit PropertySlot( JSValuePtrbase)48 : m_slotBase( base)47 explicit PropertySlot(const JSValue* base) 48 : m_slotBase(const_cast<JSValue*>(base)) 49 49 , m_offset(WTF::notFound) 50 50 { -
trunk/JavaScriptCore/kjs/protect.h
r37712 r37812 90 90 91 91 T* get() const { return m_ptr; } 92 operator JSValuePtr() const { return m_ptr; }93 92 operator T*() const { return m_ptr; } 94 93 T* operator->() const { return m_ptr; } … … 101 100 private: 102 101 T* m_ptr; 103 };104 105 template <> class ProtectedPtr<JSValuePtr> {106 public:107 ProtectedPtr() : m_ptr(0) { }108 ProtectedPtr(JSValuePtr);109 ProtectedPtr(const ProtectedPtr&);110 ~ProtectedPtr();111 112 template <class U> ProtectedPtr(const ProtectedPtr<U>&);113 114 JSValue* get() const { return m_ptr; }115 operator JSValuePtr() const { return m_ptr; }116 operator JSValue*() const { return m_ptr; }117 JSValue* operator->() const { return m_ptr; }118 119 bool operator!() const { return !m_ptr; }120 121 ProtectedPtr& operator=(JSValuePtr);122 ProtectedPtr& operator=(const ProtectedPtr&);123 124 private:125 JSValue* m_ptr;126 102 }; 127 103 … … 166 142 } 167 143 168 inline ProtectedPtr<JSValuePtr>::ProtectedPtr(JSValuePtr ptr)169 : m_ptr(ptr.payload())170 {171 gcProtectNullTolerant(m_ptr);172 }173 174 inline ProtectedPtr<JSValuePtr>::ProtectedPtr(const ProtectedPtr& o)175 : m_ptr(o.m_ptr)176 {177 gcProtectNullTolerant(m_ptr);178 }179 180 inline ProtectedPtr<JSValuePtr>::~ProtectedPtr()181 {182 gcUnprotectNullTolerant(m_ptr);183 }184 185 inline ProtectedPtr<JSValuePtr>& ProtectedPtr<JSValuePtr>::operator=(const ProtectedPtr& o)186 {187 JSValuePtr optr = o.m_ptr;188 gcProtectNullTolerant(optr);189 gcUnprotectNullTolerant(m_ptr);190 m_ptr = optr.payload();191 return *this;192 }193 194 inline ProtectedPtr<JSValuePtr>& ProtectedPtr<JSValuePtr>::operator=(JSValuePtr ptr)195 {196 gcProtectNullTolerant(ptr);197 gcUnprotectNullTolerant(m_ptr);198 m_ptr = ptr.payload();199 return *this;200 }201 202 144 template <class T> inline bool operator==(const ProtectedPtr<T>& a, const ProtectedPtr<T>& b) { return a.get() == b.get(); } 203 145 template <class T> inline bool operator==(const ProtectedPtr<T>& a, const T* b) { return a.get() == b; }
Note:
See TracChangeset
for help on using the changeset viewer.