namespace JSC {
ASSERT_CLASS_FITS_IN_CELL(JSStaticScopeObject);
-void JSStaticScopeObject::visitChildren(SlotVisitor& visitor)
+const ClassInfo JSStaticScopeObject::s_info = { "Object", &Base::s_info, 0, 0, CREATE_METHOD_TABLE(JSStaticScopeObject) };
+
+void JSStaticScopeObject::destroy(JSCell* cell)
{
- ASSERT_GC_OBJECT_INHERITS(this, &s_info);
- COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag);
- ASSERT(structure()->typeInfo().overridesVisitChildren());
- JSVariableObject::visitChildren(visitor);
- visitor.append(&m_registerStore);
+ jsCast<JSStaticScopeObject*>(cell)->JSStaticScopeObject::~JSStaticScopeObject();
}
-JSObject* JSStaticScopeObject::toThisObject(ExecState* exec) const
+void JSStaticScopeObject::visitChildren(JSCell* cell, SlotVisitor& visitor)
{
- return exec->globalThisValue();
+ JSStaticScopeObject* thisObject = jsCast<JSStaticScopeObject*>(cell);
+ ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info);
+ COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag);
+ ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren());
+ JSVariableObject::visitChildren(thisObject, visitor);
+ visitor.append(&thisObject->m_registerStore);
}
-JSValue JSStaticScopeObject::toStrictThisObject(ExecState*) const
+JSObject* JSStaticScopeObject::toThisObject(JSCell*, ExecState* exec)
{
- return jsNull();
+ return exec->globalThisValue();
}
-void JSStaticScopeObject::put(ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
+void JSStaticScopeObject::put(JSCell* cell, ExecState* exec, const Identifier& propertyName, JSValue value, PutPropertySlot& slot)
{
+ JSStaticScopeObject* thisObject = jsCast<JSStaticScopeObject*>(cell);
if (slot.isStrictMode()) {
// Double lookup in strict mode, but this only occurs when
// a) indirectly writing to an exception slot
// a pointer compare.
PropertySlot slot;
bool isWritable = true;
- symbolTableGet(propertyName, slot, isWritable);
+ thisObject->symbolTableGet(propertyName, slot, isWritable);
if (!isWritable) {
throwError(exec, createTypeError(exec, StrictModeReadonlyPropertyWriteError));
return;
}
}
- if (symbolTablePut(exec->globalData(), propertyName, value))
+ if (thisObject->symbolTablePut(exec, propertyName, value, slot.isStrictMode()))
return;
ASSERT_NOT_REACHED();
}
-void JSStaticScopeObject::putWithAttributes(ExecState* exec, const Identifier& propertyName, JSValue value, unsigned attributes)
+void JSStaticScopeObject::putDirectVirtual(JSObject* object, ExecState* exec, const Identifier& propertyName, JSValue value, unsigned attributes)
{
- if (symbolTablePutWithAttributes(exec->globalData(), propertyName, value, attributes))
+ JSStaticScopeObject* thisObject = jsCast<JSStaticScopeObject*>(object);
+ if (thisObject->symbolTablePutWithAttributes(exec->globalData(), propertyName, value, attributes))
return;
ASSERT_NOT_REACHED();
}
-bool JSStaticScopeObject::isDynamicScope(bool&) const
-{
- return false;
-}
-
-bool JSStaticScopeObject::getOwnPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot& slot)
+bool JSStaticScopeObject::getOwnPropertySlot(JSCell* cell, ExecState*, const Identifier& propertyName, PropertySlot& slot)
{
- return symbolTableGet(propertyName, slot);
+ return jsCast<JSStaticScopeObject*>(cell)->symbolTableGet(propertyName, slot);
}
}