bool JSGlobalObject::getOwnPropertySlot(JSCell* cell, ExecState* exec, PropertyName propertyName, PropertySlot& slot) { JSGlobalObject* thisObject = jsCast<JSGlobalObject*>(cell); if (getStaticFunctionSlot<Base>(exec, ExecState::globalObjectTable(exec), thisObject, propertyName, slot)) return true; return symbolTableGet(thisObject, propertyName, slot); }
bool JSGlobalObject::getOwnPropertyDescriptor(JSObject* object, ExecState* exec, PropertyName propertyName, PropertyDescriptor& descriptor) { JSGlobalObject* thisObject = jsCast<JSGlobalObject*>(object); if (getStaticFunctionDescriptor<Base>(exec, ExecState::globalObjectTable(exec), thisObject, propertyName, descriptor)) return true; return symbolTableGet(thisObject, propertyName, descriptor); }
bool JSGlobalObject::defineOwnProperty(JSObject* object, ExecState* exec, PropertyName propertyName, PropertyDescriptor& descriptor, bool shouldThrow) { JSGlobalObject* thisObject = jsCast<JSGlobalObject*>(object); PropertySlot slot; // silently ignore attempts to add accessors aliasing vars. if (descriptor.isAccessorDescriptor() && symbolTableGet(thisObject, propertyName, slot)) return false; return Base::defineOwnProperty(thisObject, exec, propertyName, descriptor, shouldThrow); }
bool JSLexicalEnvironment::getOwnPropertySlot(JSObject* object, ExecState* exec, PropertyName propertyName, PropertySlot& slot) { JSLexicalEnvironment* thisObject = jsCast<JSLexicalEnvironment*>(object); if (symbolTableGet(thisObject, propertyName, slot)) return true; unsigned attributes; if (JSValue value = thisObject->getDirect(exec->vm(), propertyName, attributes)) { slot.setValue(thisObject, attributes, value); return true; } // We don't call through to JSObject because there's no way to give a // lexical environment object getter properties or a prototype. ASSERT(!thisObject->hasGetterSetterProperties()); ASSERT(thisObject->getPrototypeDirect().isNull()); return false; }
bool JSActivation::getOwnPropertySlot(ExecState* exec, const Identifier& propertyName, PropertySlot& slot) { if (propertyName == exec->propertyNames().arguments) { slot.setCustom(this, getArgumentsGetter()); return true; } if (symbolTableGet(propertyName, slot)) return true; if (JSValue* location = getDirectLocation(propertyName)) { slot.setValueSlot(location); return true; } // We don't call through to JSObject because there's no way to give an // activation object getter properties or a prototype. ASSERT(!hasGetterSetterProperties()); ASSERT(prototype().isNull()); return false; }
void JSNameScope::put(JSCell* cell, ExecState* exec, PropertyName propertyName, JSValue value, PutPropertySlot& slot) { JSNameScope* thisObject = jsCast<JSNameScope*>(cell); if (slot.isStrictMode()) { // Double lookup in strict mode, but this only occurs when // a) indirectly writing to an exception slot // b) writing to a function expression name // (a) is unlikely, and (b) is an error. // Also with a single entry the symbol table lookup should simply be // a pointer compare. PropertySlot slot; bool isWritable = true; symbolTableGet(thisObject, propertyName, slot, isWritable); if (!isWritable) { throwError(exec, createTypeError(exec, StrictModeReadonlyPropertyWriteError)); return; } } if (symbolTablePut(thisObject, exec, propertyName, value, slot.isStrictMode())) return; RELEASE_ASSERT_NOT_REACHED(); }
bool JSNameScope::getOwnPropertySlot(JSCell* cell, ExecState*, PropertyName propertyName, PropertySlot& slot) { return symbolTableGet(jsCast<JSNameScope*>(cell), propertyName, slot); }
bool QScriptStaticScopeObject::getOwnPropertyDescriptor(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertyDescriptor& descriptor) { return symbolTableGet(propertyName, descriptor); }
bool QScriptStaticScopeObject::getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertySlot& slot) { return symbolTableGet(propertyName, slot); }
void JSGlobalObject::defineSetter(ExecState* exec, const Identifier& propertyName, JSObject* setterFunc) { PropertySlot slot; if (!symbolTableGet(propertyName, slot)) JSVariableObject::defineSetter(exec, propertyName, setterFunc); }
inline bool JSStaticScopeObject::getOwnPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot& slot, bool& slotIsWriteable) { return symbolTableGet(propertyName, slot, slotIsWriteable); }
void JSGlobalObject::defineGetter(ExecState* exec, const Identifier& propertyName, JSObject* getterFunc, unsigned attributes) { PropertySlot slot; if (!symbolTableGet(propertyName, slot)) JSVariableObject::defineGetter(exec, propertyName, getterFunc, attributes); }
bool JSNameScope::getOwnPropertySlot(JSObject* object, ExecState*, PropertyName propertyName, PropertySlot& slot) { return symbolTableGet(jsCast<JSNameScope*>(object), propertyName, slot); }