Changeset 130303 in webkit for trunk/Source/JavaScriptCore/API
- Timestamp:
- Oct 3, 2012, 10:51:28 AM (13 years ago)
- Location:
- trunk/Source/JavaScriptCore/API
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/API/JSCallbackConstructor.cpp
r128851 r130303 37 37 namespace JSC { 38 38 39 const ClassInfo JSCallbackConstructor::s_info = { "CallbackConstructor", & JSNonFinalObject::s_info, 0, 0, CREATE_METHOD_TABLE(JSCallbackConstructor) };39 const ClassInfo JSCallbackConstructor::s_info = { "CallbackConstructor", &Base::s_info, 0, 0, CREATE_METHOD_TABLE(JSCallbackConstructor) }; 40 40 41 41 JSCallbackConstructor::JSCallbackConstructor(JSGlobalObject* globalObject, Structure* structure, JSClassRef jsClass, JSObjectCallAsConstructorCallback callback) 42 : JS NonFinalObject(globalObject->globalData(), structure)42 : JSDestructibleObject(globalObject->globalData(), structure) 43 43 , m_class(jsClass) 44 44 , m_callback(callback) -
trunk/Source/JavaScriptCore/API/JSCallbackConstructor.h
r128851 r130303 28 28 29 29 #include "JSObjectRef.h" 30 #include <runtime/JSObject.h>30 #include "runtime/JSDestructibleObject.h" 31 31 32 32 namespace JSC { 33 33 34 class JSCallbackConstructor : public JS NonFinalObject {34 class JSCallbackConstructor : public JSDestructibleObject { 35 35 public: 36 typedef JS NonFinalObject Base;36 typedef JSDestructibleObject Base; 37 37 38 38 static JSCallbackConstructor* create(ExecState* exec, JSGlobalObject* globalObject, Structure* structure, JSClassRef classRef, JSObjectCallAsConstructorCallback callback) -
trunk/Source/JavaScriptCore/API/JSCallbackObject.cpp
r128851 r130303 33 33 namespace JSC { 34 34 35 ASSERT_CLASS_FITS_IN_CELL(JSCallbackObject<JS NonFinalObject>);35 ASSERT_CLASS_FITS_IN_CELL(JSCallbackObject<JSDestructibleObject>); 36 36 ASSERT_CLASS_FITS_IN_CELL(JSCallbackObject<JSGlobalObject>); 37 37 38 38 // Define the two types of JSCallbackObjects we support. 39 template <> const ClassInfo JSCallbackObject<JSNonFinalObject>::s_info = { "CallbackObject", &JSNonFinalObject::s_info, 0, 0, CREATE_METHOD_TABLE(JSCallbackObject) }; 40 template <> const ClassInfo JSCallbackObject<JSGlobalObject>::s_info = { "CallbackGlobalObject", &JSGlobalObject::s_info, 0, 0, CREATE_METHOD_TABLE(JSCallbackObject) }; 39 template <> const ClassInfo JSCallbackObject<JSDestructibleObject>::s_info = { "CallbackObject", &Base::s_info, 0, 0, CREATE_METHOD_TABLE(JSCallbackObject) }; 40 template <> const ClassInfo JSCallbackObject<JSGlobalObject>::s_info = { "CallbackGlobalObject", &Base::s_info, 0, 0, CREATE_METHOD_TABLE(JSCallbackObject) }; 41 42 template<> const bool JSCallbackObject<JSDestructibleObject>::needsDestruction = true; 43 template<> const bool JSCallbackObject<JSGlobalObject>::needsDestruction = false; 44 45 template<> 46 JSCallbackObject<JSGlobalObject>* JSCallbackObject<JSGlobalObject>::create(JSGlobalData& globalData, JSClassRef classRef, Structure* structure) 47 { 48 JSCallbackObject<JSGlobalObject>* callbackObject = new (NotNull, allocateCell<JSCallbackObject<JSGlobalObject> >(globalData.heap)) JSCallbackObject(globalData, classRef, structure); 49 callbackObject->finishCreation(globalData); 50 globalData.heap.addFinalizer(callbackObject, destroy); 51 return callbackObject; 52 } 41 53 42 54 template <> 43 Structure* JSCallbackObject<JS NonFinalObject>::createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)55 Structure* JSCallbackObject<JSDestructibleObject>::createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto) 44 56 { 45 57 return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), &s_info); -
trunk/Source/JavaScriptCore/API/JSCallbackObject.h
r129281 r130303 134 134 return callbackObject; 135 135 } 136 static JSCallbackObject* create(JSGlobalData& globalData, JSClassRef classRef, Structure* structure) 137 { 138 JSCallbackObject* callbackObject = new (NotNull, allocateCell<JSCallbackObject>(globalData.heap)) JSCallbackObject(globalData, classRef, structure); 139 callbackObject->finishCreation(globalData); 140 return callbackObject; 141 } 136 static JSCallbackObject<Parent>* create(JSGlobalData&, JSClassRef, Structure*); 137 138 static const bool needsDestruction; 139 static void destroy(JSCell*); 142 140 143 141 void setPrivate(void* data); … … 173 171 private: 174 172 static String className(const JSObject*); 175 176 static void destroy(JSCell*);177 173 178 174 static JSValue defaultValue(const JSObject*, ExecState*, PreferredPrimitiveType); -
trunk/Source/JavaScriptCore/API/JSClassRef.cpp
r128851 r130303 200 200 201 201 // Recursive, but should be good enough for our purposes 202 JSObject* prototype = JSCallbackObject<JS NonFinalObject>::create(exec, exec->lexicalGlobalObject(), exec->lexicalGlobalObject()->callbackObjectStructure(), prototypeClass, &jsClassData); // set jsClassData as the object's private data, so it can clear our reference on destruction202 JSObject* prototype = JSCallbackObject<JSDestructibleObject>::create(exec, exec->lexicalGlobalObject(), exec->lexicalGlobalObject()->callbackObjectStructure(), prototypeClass, &jsClassData); // set jsClassData as the object's private data, so it can clear our reference on destruction 203 203 if (parentClass) { 204 204 if (JSObject* parentPrototype = parentClass->prototype(exec)) -
trunk/Source/JavaScriptCore/API/JSObjectRef.cpp
r128851 r130303 84 84 return toRef(constructEmptyObject(exec)); 85 85 86 JSCallbackObject<JS NonFinalObject>* object = JSCallbackObject<JSNonFinalObject>::create(exec, exec->lexicalGlobalObject(), exec->lexicalGlobalObject()->callbackObjectStructure(), jsClass, data);86 JSCallbackObject<JSDestructibleObject>* object = JSCallbackObject<JSDestructibleObject>::create(exec, exec->lexicalGlobalObject(), exec->lexicalGlobalObject()->callbackObjectStructure(), jsClass, data); 87 87 if (JSObject* prototype = jsClass->prototype(exec)) 88 88 object->setPrototype(exec->globalData(), prototype); … … 342 342 if (jsObject->inherits(&JSCallbackObject<JSGlobalObject>::s_info)) 343 343 return jsCast<JSCallbackObject<JSGlobalObject>*>(jsObject)->getPrivate(); 344 if (jsObject->inherits(&JSCallbackObject<JS NonFinalObject>::s_info))345 return jsCast<JSCallbackObject<JS NonFinalObject>*>(jsObject)->getPrivate();344 if (jsObject->inherits(&JSCallbackObject<JSDestructibleObject>::s_info)) 345 return jsCast<JSCallbackObject<JSDestructibleObject>*>(jsObject)->getPrivate(); 346 346 347 347 return 0; … … 356 356 return true; 357 357 } 358 if (jsObject->inherits(&JSCallbackObject<JS NonFinalObject>::s_info)) {359 jsCast<JSCallbackObject<JS NonFinalObject>*>(jsObject)->setPrivate(data);358 if (jsObject->inherits(&JSCallbackObject<JSDestructibleObject>::s_info)) { 359 jsCast<JSCallbackObject<JSDestructibleObject>*>(jsObject)->setPrivate(data); 360 360 return true; 361 361 } … … 373 373 if (jsObject->inherits(&JSCallbackObject<JSGlobalObject>::s_info)) 374 374 result = jsCast<JSCallbackObject<JSGlobalObject>*>(jsObject)->getPrivateProperty(name); 375 else if (jsObject->inherits(&JSCallbackObject<JS NonFinalObject>::s_info))376 result = jsCast<JSCallbackObject<JS NonFinalObject>*>(jsObject)->getPrivateProperty(name);375 else if (jsObject->inherits(&JSCallbackObject<JSDestructibleObject>::s_info)) 376 result = jsCast<JSCallbackObject<JSDestructibleObject>*>(jsObject)->getPrivateProperty(name); 377 377 return toRef(exec, result); 378 378 } … … 389 389 return true; 390 390 } 391 if (jsObject->inherits(&JSCallbackObject<JS NonFinalObject>::s_info)) {392 jsCast<JSCallbackObject<JS NonFinalObject>*>(jsObject)->setPrivateProperty(exec->globalData(), name, jsValue);391 if (jsObject->inherits(&JSCallbackObject<JSDestructibleObject>::s_info)) { 392 jsCast<JSCallbackObject<JSDestructibleObject>*>(jsObject)->setPrivateProperty(exec->globalData(), name, jsValue); 393 393 return true; 394 394 } … … 406 406 return true; 407 407 } 408 if (jsObject->inherits(&JSCallbackObject<JS NonFinalObject>::s_info)) {409 jsCast<JSCallbackObject<JS NonFinalObject>*>(jsObject)->deletePrivateProperty(name);408 if (jsObject->inherits(&JSCallbackObject<JSDestructibleObject>::s_info)) { 409 jsCast<JSCallbackObject<JSDestructibleObject>*>(jsObject)->deletePrivateProperty(name); 410 410 return true; 411 411 } -
trunk/Source/JavaScriptCore/API/JSValueRef.cpp
r129281 r130303 132 132 if (o->inherits(&JSCallbackObject<JSGlobalObject>::s_info)) 133 133 return jsCast<JSCallbackObject<JSGlobalObject>*>(o)->inherits(jsClass); 134 if (o->inherits(&JSCallbackObject<JS NonFinalObject>::s_info))135 return jsCast<JSCallbackObject<JS NonFinalObject>*>(o)->inherits(jsClass);134 if (o->inherits(&JSCallbackObject<JSDestructibleObject>::s_info)) 135 return jsCast<JSCallbackObject<JSDestructibleObject>*>(o)->inherits(jsClass); 136 136 } 137 137 return false; -
trunk/Source/JavaScriptCore/API/JSWeakObjectMapRefPrivate.cpp
r128851 r130303 58 58 if (!obj) 59 59 return; 60 ASSERT(obj->inherits(&JSCallbackObject<JSGlobalObject>::s_info) || obj->inherits(&JSCallbackObject<JS NonFinalObject>::s_info));60 ASSERT(obj->inherits(&JSCallbackObject<JSGlobalObject>::s_info) || obj->inherits(&JSCallbackObject<JSDestructibleObject>::s_info)); 61 61 map->map().set(exec->globalData(), key, obj); 62 62 }
Note:
See TracChangeset
for help on using the changeset viewer.