Changeset 35807 in webkit for trunk/JavaScriptCore/API/JSCallbackObjectFunctions.h
- Timestamp:
- Aug 17, 2008, 1:23:49 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/API/JSCallbackObjectFunctions.h
r35775 r35807 43 43 JSCallbackObject<Base>::JSCallbackObject(ExecState* exec, JSClassRef jsClass, JSValue* prototype, void* data) 44 44 : Base(prototype) 45 , m_privateData(data) 46 , m_class(JSClassRetain(jsClass)) 45 , m_callbackObjectData(new JSCallbackObjectData(data, jsClass)) 47 46 { 48 47 init(exec); … … 53 52 template <class Base> 54 53 JSCallbackObject<Base>::JSCallbackObject(JSClassRef jsClass) 55 : m_privateData(0) 56 , m_class(JSClassRetain(jsClass)) 54 : m_callbackObjectData(new JSCallbackObjectData(0, jsClass)) 57 55 { 58 56 ASSERT(Base::isGlobalObject()); … … 66 64 67 65 Vector<JSObjectInitializeCallback, 16> initRoutines; 68 JSClassRef jsClass = m_class;66 JSClassRef jsClass = classRef(); 69 67 do { 70 68 if (JSObjectInitializeCallback initialize = jsClass->initialize) … … 84 82 JSObjectRef thisRef = toRef(this); 85 83 86 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass)87 if (JSObjectFinalizeCallback finalize = jsClass->finalize) {84 for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass) 85 if (JSObjectFinalizeCallback finalize = jsClass->finalize) 88 86 finalize(thisRef); 89 }90 91 JSClassRelease(m_class);92 87 } 93 88 … … 95 90 UString JSCallbackObject<Base>::className() const 96 91 { 97 UString thisClassName = m_class->className();92 UString thisClassName = classRef()->className(); 98 93 if (!thisClassName.isNull()) 99 94 return thisClassName; … … 109 104 RefPtr<OpaqueJSString> propertyNameRef; 110 105 111 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) {106 for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass) { 112 107 // optional optimization to bypass getProperty in cases when we only need to know if the property exists 113 108 if (JSObjectHasPropertyCallback hasProperty = jsClass->hasProperty) { … … 162 157 JSValueRef valueRef = toRef(value); 163 158 164 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) {159 for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass) { 165 160 if (JSObjectSetPropertyCallback setProperty = jsClass->setProperty) { 166 161 if (!propertyNameRef) … … 210 205 RefPtr<OpaqueJSString> propertyNameRef; 211 206 212 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) {207 for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass) { 213 208 if (JSObjectDeletePropertyCallback deleteProperty = jsClass->deleteProperty) { 214 209 if (!propertyNameRef) … … 247 242 ConstructType JSCallbackObject<Base>::getConstructData(ConstructData& constructData) 248 243 { 249 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) {244 for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass) { 250 245 if (jsClass->callAsConstructor) { 251 246 constructData.native.function = construct; … … 279 274 bool JSCallbackObject<Base>::implementsHasInstance() const 280 275 { 281 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass)276 for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass) 282 277 if (jsClass->hasInstance) 283 278 return true; … … 292 287 JSObjectRef thisRef = toRef(this); 293 288 294 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) {289 for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass) { 295 290 if (JSObjectHasInstanceCallback hasInstance = jsClass->hasInstance) 296 291 return hasInstance(execRef, thisRef, toRef(value), toRef(exec->exceptionSlot())); … … 303 298 CallType JSCallbackObject<Base>::getCallData(CallData& callData) 304 299 { 305 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) {300 for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass) { 306 301 if (jsClass->callAsFunction) { 307 302 callData.native.function = call; … … 319 314 JSObjectRef thisObjRef = toRef(thisValue->toThisObject(exec)); 320 315 321 for (JSClassRef jsClass = static_cast<JSCallbackObject<Base>*>(functionObject)-> m_class; jsClass; jsClass = jsClass->parentClass) {316 for (JSClassRef jsClass = static_cast<JSCallbackObject<Base>*>(functionObject)->classRef(); jsClass; jsClass = jsClass->parentClass) { 322 317 if (JSObjectCallAsFunctionCallback callAsFunction = jsClass->callAsFunction) { 323 318 int argumentCount = static_cast<int>(args.size()); … … 339 334 JSObjectRef thisRef = toRef(this); 340 335 341 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) {336 for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass) { 342 337 if (JSObjectGetPropertyNamesCallback getPropertyNames = jsClass->getPropertyNames) 343 338 getPropertyNames(execRef, thisRef, toRef(&propertyNames)); … … 380 375 JSObjectRef thisRef = toRef(this); 381 376 382 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass)377 for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass) 383 378 if (JSObjectConvertToTypeCallback convertToType = jsClass->convertToType) { 384 379 if (JSValueRef value = convertToType(ctx, thisRef, kJSTypeNumber, toRef(exec->exceptionSlot()))) … … 395 390 JSObjectRef thisRef = toRef(this); 396 391 397 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass)392 for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass) 398 393 if (JSObjectConvertToTypeCallback convertToType = jsClass->convertToType) { 399 394 JSValueRef value = convertToType(ctx, thisRef, kJSTypeString, toRef(exec->exceptionSlot())); … … 408 403 void JSCallbackObject<Base>::setPrivate(void* data) 409 404 { 410 m_ privateData = data;405 m_callbackObjectData->privateData = data; 411 406 } 412 407 … … 414 409 void* JSCallbackObject<Base>::getPrivate() 415 410 { 416 return m_ privateData;411 return m_callbackObjectData->privateData; 417 412 } 418 413 … … 420 415 bool JSCallbackObject<Base>::inherits(JSClassRef c) const 421 416 { 422 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass)417 for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass) 423 418 if (jsClass == c) 424 419 return true; … … 444 439 RefPtr<OpaqueJSString> propertyNameRef; 445 440 446 for (JSClassRef jsClass = thisObj-> m_class; jsClass; jsClass = jsClass->parentClass)441 for (JSClassRef jsClass = thisObj->classRef(); jsClass; jsClass = jsClass->parentClass) 447 442 if (OpaqueJSClassStaticValuesTable* staticValues = jsClass->staticValues(exec)) 448 443 if (StaticValueEntry* entry = staticValues->get(propertyName.ustring().rep())) … … 468 463 return slot2.getValue(exec, propertyName); 469 464 470 for (JSClassRef jsClass = thisObj-> m_class; jsClass; jsClass = jsClass->parentClass) {465 for (JSClassRef jsClass = thisObj->classRef(); jsClass; jsClass = jsClass->parentClass) { 471 466 if (OpaqueJSClassStaticFunctionsTable* staticFunctions = jsClass->staticFunctions(exec)) { 472 467 if (StaticFunctionEntry* entry = staticFunctions->get(propertyName.ustring().rep())) { … … 492 487 RefPtr<OpaqueJSString> propertyNameRef; 493 488 494 for (JSClassRef jsClass = thisObj-> m_class; jsClass; jsClass = jsClass->parentClass)489 for (JSClassRef jsClass = thisObj->classRef(); jsClass; jsClass = jsClass->parentClass) 495 490 if (JSObjectGetPropertyCallback getProperty = jsClass->getProperty) { 496 491 if (!propertyNameRef)
Note:
See TracChangeset
for help on using the changeset viewer.