Changeset 15462 in webkit for trunk/JavaScriptCore/API/JSCallbackObject.cpp
- Timestamp:
- Jul 15, 2006, 6:28:25 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/API/JSCallbackObject.cpp
r15444 r15462 60 60 61 61 do { 62 if (JSObjectInitializeCallback initialize = jsClass-> callbacks.initialize)62 if (JSObjectInitializeCallback initialize = jsClass->initialize) 63 63 initialize(context, thisRef, toRef(exec->exceptionSlot())); 64 } while ((jsClass = jsClass->parent ));64 } while ((jsClass = jsClass->parentClass)); 65 65 } 66 66 … … 69 69 JSObjectRef thisRef = toRef(this); 70 70 71 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parent )72 if (JSObjectFinalizeCallback finalize = jsClass-> callbacks.finalize)71 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) 72 if (JSObjectFinalizeCallback finalize = jsClass->finalize) 73 73 finalize(thisRef); 74 74 … … 78 78 UString JSCallbackObject::className() const 79 79 { 80 return classInfo()->className; 80 if (!m_class->className.isNull()) 81 return m_class->className; 82 83 return JSObject::className(); 81 84 } 82 85 … … 87 90 JSStringRef propertyNameRef = toRef(propertyName.ustring().rep()); 88 91 89 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parent ) {92 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) { 90 93 // optional optimization to bypass getProperty in cases when we only need to know if the property exists 91 if (JSObjectHasPropertyCallback hasProperty = jsClass-> callbacks.hasProperty) {94 if (JSObjectHasPropertyCallback hasProperty = jsClass->hasProperty) { 92 95 if (hasProperty(context, thisRef, propertyNameRef)) { 93 96 slot.setCustom(this, callbackGetter); 94 97 return true; 95 98 } 96 } else if (JSObjectGetPropertyCallback getProperty = jsClass-> callbacks.getProperty) {99 } else if (JSObjectGetPropertyCallback getProperty = jsClass->getProperty) { 97 100 if (JSValueRef value = getProperty(context, thisRef, propertyNameRef, toRef(exec->exceptionSlot()))) { 98 101 // cache the value so we don't have to compute it again … … 136 139 JSValueRef valueRef = toRef(value); 137 140 138 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parent ) {139 if (JSObjectSetPropertyCallback setProperty = jsClass-> callbacks.setProperty) {141 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) { 142 if (JSObjectSetPropertyCallback setProperty = jsClass->setProperty) { 140 143 if (setProperty(context, thisRef, propertyNameRef, valueRef, toRef(exec->exceptionSlot()))) 141 144 return; … … 177 180 JSStringRef propertyNameRef = toRef(propertyName.ustring().rep()); 178 181 179 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parent ) {180 if (JSObjectDeletePropertyCallback deleteProperty = jsClass-> callbacks.deleteProperty) {182 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) { 183 if (JSObjectDeletePropertyCallback deleteProperty = jsClass->deleteProperty) { 181 184 if (deleteProperty(context, thisRef, propertyNameRef, toRef(exec->exceptionSlot()))) 182 185 return true; … … 210 213 bool JSCallbackObject::implementsConstruct() const 211 214 { 212 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parent )213 if (jsClass->call backs.callAsConstructor)215 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) 216 if (jsClass->callAsConstructor) 214 217 return true; 215 218 … … 222 225 JSObjectRef thisRef = toRef(this); 223 226 224 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parent ) {225 if (JSObjectCallAsConstructorCallback callAsConstructor = jsClass->call backs.callAsConstructor) {227 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) { 228 if (JSObjectCallAsConstructorCallback callAsConstructor = jsClass->callAsConstructor) { 226 229 size_t argumentCount = args.size(); 227 230 JSValueRef arguments[argumentCount]; … … 238 241 bool JSCallbackObject::implementsHasInstance() const 239 242 { 240 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parent )241 if (jsClass-> callbacks.hasInstance)243 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) 244 if (jsClass->hasInstance) 242 245 return true; 243 246 … … 250 253 JSObjectRef thisRef = toRef(this); 251 254 252 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parent )253 if (JSObjectHasInstanceCallback hasInstance = jsClass-> callbacks.hasInstance)255 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) 256 if (JSObjectHasInstanceCallback hasInstance = jsClass->hasInstance) 254 257 return hasInstance(execRef, thisRef, toRef(value), toRef(exec->exceptionSlot())); 255 258 … … 261 264 bool JSCallbackObject::implementsCall() const 262 265 { 263 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parent )264 if (jsClass->call backs.callAsFunction)266 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) 267 if (jsClass->callAsFunction) 265 268 return true; 266 269 … … 274 277 JSObjectRef thisObjRef = toRef(thisObj); 275 278 276 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parent ) {277 if (JSObjectCallAsFunctionCallback callAsFunction = jsClass->call backs.callAsFunction) {279 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) { 280 if (JSObjectCallAsFunctionCallback callAsFunction = jsClass->callAsFunction) { 278 281 size_t argumentCount = args.size(); 279 282 JSValueRef arguments[argumentCount]; … … 292 295 JSObjectRef thisRef = toRef(this); 293 296 294 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parent ) {295 if (JSObjectAddPropertiesToListCallback addPropertiesToList = jsClass-> callbacks.addPropertiesToList)297 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) { 298 if (JSObjectAddPropertiesToListCallback addPropertiesToList = jsClass->addPropertiesToList) 296 299 addPropertiesToList(thisRef, toRef(&propertyList)); 297 300 … … 327 330 JSObjectRef thisRef = toRef(this); 328 331 329 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parent )330 if (JSObjectConvertToTypeCallback convertToType = jsClass->c allbacks.convertToType)332 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) 333 if (JSObjectConvertToTypeCallback convertToType = jsClass->convertToType) 331 334 if (JSValueRef value = convertToType(context, thisRef, kJSTypeNumber, toRef(exec->exceptionSlot()))) 332 335 return toJS(value)->getNumber(); … … 340 343 JSObjectRef thisRef = toRef(this); 341 344 342 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parent )343 if (JSObjectConvertToTypeCallback convertToType = jsClass->c allbacks.convertToType)345 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) 346 if (JSObjectConvertToTypeCallback convertToType = jsClass->convertToType) 344 347 if (JSValueRef value = convertToType(context, thisRef, kJSTypeString, toRef(exec->exceptionSlot()))) 345 348 return toJS(value)->getString(); … … 360 363 bool JSCallbackObject::inherits(JSClassRef c) const 361 364 { 362 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parent )365 for (JSClassRef jsClass = m_class; jsClass; jsClass = jsClass->parentClass) 363 366 if (jsClass == c) 364 367 return true; … … 382 385 JSStringRef propertyNameRef = toRef(propertyName.ustring().rep()); 383 386 384 for (JSClassRef jsClass = thisObj->m_class; jsClass; jsClass = jsClass->parent )387 for (JSClassRef jsClass = thisObj->m_class; jsClass; jsClass = jsClass->parentClass) 385 388 if (__JSClass::StaticValuesTable* staticValues = jsClass->staticValues) 386 389 if (StaticValueEntry* entry = staticValues->get(propertyName.ustring().rep())) … … 400 403 return cachedOrOverrideValue; 401 404 402 for (JSClassRef jsClass = thisObj->m_class; jsClass; jsClass = jsClass->parent ) {405 for (JSClassRef jsClass = thisObj->m_class; jsClass; jsClass = jsClass->parentClass) { 403 406 if (__JSClass::StaticFunctionsTable* staticFunctions = jsClass->staticFunctions) { 404 407 if (StaticFunctionEntry* entry = staticFunctions->get(propertyName.ustring().rep())) { … … 421 424 JSStringRef propertyNameRef = toRef(propertyName.ustring().rep()); 422 425 423 for (JSClassRef jsClass = thisObj->m_class; jsClass; jsClass = jsClass->parent )424 if (JSObjectGetPropertyCallback getProperty = jsClass-> callbacks.getProperty)426 for (JSClassRef jsClass = thisObj->m_class; jsClass; jsClass = jsClass->parentClass) 427 if (JSObjectGetPropertyCallback getProperty = jsClass->getProperty) 425 428 if (JSValueRef value = getProperty(toRef(exec), thisRef, propertyNameRef, toRef(exec->exceptionSlot()))) 426 429 return toJS(value);
Note:
See TracChangeset
for help on using the changeset viewer.