bool JSVariableObject::symbolTableGet(const Identifier& propertyName, PropertyDescriptor& descriptor) { SymbolTableEntry entry = symbolTable().inlineGet(propertyName.impl()); if (!entry.isNull()) { descriptor.setDescriptor(registerAt(entry.getIndex()).jsValue(), entry.getAttributes() | DontDelete); return true; } return false; }
bool JSVariableObject::getPropertyAttributes(ExecState* exec, const Identifier& propertyName, unsigned& attributes) const { SymbolTableEntry entry = symbolTable().get(propertyName.ustring().rep()); if (!entry.isNull()) { attributes = entry.getAttributes() | DontDelete; return true; } return JSObject::getPropertyAttributes(exec, propertyName, attributes); }
inline bool JSActivation::symbolTableGet(PropertyName propertyName, PropertyDescriptor& descriptor) { SymbolTableEntry entry = symbolTable()->inlineGet(propertyName.publicName()); if (entry.isNull()) return false; // Defend against the inspector asking for a var after it has been optimized out. if (isTornOff() && !isValid(entry)) return false; descriptor.setDescriptor(registerAt(entry.getIndex()).get(), entry.getAttributes()); return true; }
inline bool JSLexicalEnvironment::symbolTableGet(PropertyName propertyName, PropertyDescriptor& descriptor) { SymbolTableEntry entry = symbolTable()->inlineGet(propertyName.uid()); if (entry.isNull()) return false; // Defend against the inspector asking for a var after it has been optimized out. if (!isValid(entry)) return false; descriptor.setDescriptor(registerAt(entry.getIndex()).get(), entry.getAttributes()); return true; }