]> git.saurik.com Git - apple/javascriptcore.git/blobdiff - runtime/JSStaticScopeObject.cpp
JavaScriptCore-1097.3.tar.gz
[apple/javascriptcore.git] / runtime / JSStaticScopeObject.cpp
index 5206510d6cd2a7724a73b5bed12a1f2d6d8cc716..f8942b5f865db59e1542dc4e3b5c7cf279c17163 100644 (file)
 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
@@ -62,34 +66,30 @@ void JSStaticScopeObject::put(ExecState* exec, const Identifier& propertyName, J
         // 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);
 }
 
 }