Changeset 210824 in webkit for trunk/Source/JavaScriptCore/API/JSObjectRef.cpp
- Timestamp:
- Jan 17, 2017, 12:25:36 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/API/JSObjectRef.cpp
r210821 r210824 381 381 } 382 382 383 // API objects have private properties, which may get accessed during destruction. This384 // helper lets us get the ClassInfo of an API object from a function that may get called385 // during destruction.386 static const ClassInfo* classInfoPrivate(JSObject* jsObject)387 {388 VM* vm = jsObject->vm();389 390 if (vm->currentlyDestructingCallbackObject != jsObject)391 return jsObject->classInfo();392 393 return vm->currentlyDestructingCallbackObjectClassInfo;394 }395 396 383 void* JSObjectGetPrivate(JSObjectRef object) 397 384 { 398 385 JSObject* jsObject = uncheckedToJS(object); 399 386 400 const ClassInfo* classInfo = classInfoPrivate(jsObject);401 402 387 // Get wrapped object if proxied 403 if (classInfo->isSubClassOf(JSProxy::info())) { 404 jsObject = static_cast<JSProxy*>(jsObject)->target(); 405 classInfo = jsObject->classInfo(); 406 } 407 408 if (classInfo->isSubClassOf(JSCallbackObject<JSGlobalObject>::info())) 409 return static_cast<JSCallbackObject<JSGlobalObject>*>(jsObject)->getPrivate(); 410 if (classInfo->isSubClassOf(JSCallbackObject<JSDestructibleObject>::info())) 411 return static_cast<JSCallbackObject<JSDestructibleObject>*>(jsObject)->getPrivate(); 388 if (jsObject->inherits(JSProxy::info())) 389 jsObject = jsCast<JSProxy*>(jsObject)->target(); 390 391 if (jsObject->inherits(JSCallbackObject<JSGlobalObject>::info())) 392 return jsCast<JSCallbackObject<JSGlobalObject>*>(jsObject)->getPrivate(); 393 if (jsObject->inherits(JSCallbackObject<JSDestructibleObject>::info())) 394 return jsCast<JSCallbackObject<JSDestructibleObject>*>(jsObject)->getPrivate(); 412 395 #if JSC_OBJC_API_ENABLED 413 if ( classInfo->isSubClassOf(JSCallbackObject<JSAPIWrapperObject>::info()))414 return static_cast<JSCallbackObject<JSAPIWrapperObject>*>(jsObject)->getPrivate();396 if (jsObject->inherits(JSCallbackObject<JSAPIWrapperObject>::info())) 397 return jsCast<JSCallbackObject<JSAPIWrapperObject>*>(jsObject)->getPrivate(); 415 398 #endif 416 399 … … 422 405 JSObject* jsObject = uncheckedToJS(object); 423 406 424 const ClassInfo* classInfo = classInfoPrivate(jsObject);425 426 407 // Get wrapped object if proxied 427 if ( classInfo->isSubClassOf(JSProxy::info())) {408 if (jsObject->inherits(JSProxy::info())) 428 409 jsObject = jsCast<JSProxy*>(jsObject)->target(); 429 classInfo = jsObject->classInfo(); 430 } 431 432 if (classInfo->isSubClassOf(JSCallbackObject<JSGlobalObject>::info())) { 410 411 if (jsObject->inherits(JSCallbackObject<JSGlobalObject>::info())) { 433 412 jsCast<JSCallbackObject<JSGlobalObject>*>(jsObject)->setPrivate(data); 434 413 return true; 435 414 } 436 if ( classInfo->isSubClassOf(JSCallbackObject<JSDestructibleObject>::info())) {415 if (jsObject->inherits(JSCallbackObject<JSDestructibleObject>::info())) { 437 416 jsCast<JSCallbackObject<JSDestructibleObject>*>(jsObject)->setPrivate(data); 438 417 return true; 439 418 } 440 419 #if JSC_OBJC_API_ENABLED 441 if ( classInfo->isSubClassOf(JSCallbackObject<JSAPIWrapperObject>::info())) {420 if (jsObject->inherits(JSCallbackObject<JSAPIWrapperObject>::info())) { 442 421 jsCast<JSCallbackObject<JSAPIWrapperObject>*>(jsObject)->setPrivate(data); 443 422 return true;
Note:
See TracChangeset
for help on using the changeset viewer.