#include "JSFunction.h"
#include "JSString.h"
#include "NativeErrorPrototype.h"
+#include "Operations.h"
namespace JSC {
-ASSERT_CLASS_FITS_IN_CELL(NativeErrorConstructor);
+ASSERT_HAS_TRIVIAL_DESTRUCTOR(NativeErrorConstructor);
-const ClassInfo NativeErrorConstructor::s_info = { "Function", &InternalFunction::s_info, 0, 0 };
+const ClassInfo NativeErrorConstructor::s_info = { "Function", &InternalFunction::s_info, 0, 0, CREATE_METHOD_TABLE(NativeErrorConstructor) };
-NativeErrorConstructor::NativeErrorConstructor(ExecState* exec, JSGlobalObject* globalObject, Structure* structure, Structure* prototypeStructure, const UString& nameAndMessage)
- : InternalFunction(&exec->globalData(), globalObject, structure, Identifier(exec, nameAndMessage))
+NativeErrorConstructor::NativeErrorConstructor(JSGlobalObject* globalObject, Structure* structure)
+ : InternalFunction(globalObject, structure)
{
- ASSERT(inherits(&s_info));
-
- NativeErrorPrototype* prototype = new (exec) NativeErrorPrototype(exec, globalObject, prototypeStructure, nameAndMessage, this);
-
- putDirect(exec->globalData(), exec->propertyNames().length, jsNumber(1), DontDelete | ReadOnly | DontEnum); // ECMA 15.11.7.5
- putDirect(exec->globalData(), exec->propertyNames().prototype, prototype, DontDelete | ReadOnly | DontEnum);
- m_errorStructure.set(exec->globalData(), this, ErrorInstance::createStructure(exec->globalData(), prototype));
- ASSERT(m_errorStructure);
- ASSERT(m_errorStructure->typeInfo().type() == ObjectType);
}
-void NativeErrorConstructor::visitChildren(SlotVisitor& visitor)
+void NativeErrorConstructor::visitChildren(JSCell* cell, SlotVisitor& visitor)
{
- ASSERT_GC_OBJECT_INHERITS(this, &s_info);
+ NativeErrorConstructor* thisObject = jsCast<NativeErrorConstructor*>(cell);
+ ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info);
COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag);
- ASSERT(structure()->typeInfo().overridesVisitChildren());
- InternalFunction::visitChildren(visitor);
- if (m_errorStructure)
- visitor.append(&m_errorStructure);
+ ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren());
+
+ InternalFunction::visitChildren(thisObject, visitor);
+ visitor.append(&thisObject->m_errorStructure);
}
static EncodedJSValue JSC_HOST_CALL constructWithNativeErrorConstructor(ExecState* exec)
return JSValue::encode(ErrorInstance::create(exec, errorStructure, message));
}
-ConstructType NativeErrorConstructor::getConstructData(ConstructData& constructData)
+ConstructType NativeErrorConstructor::getConstructData(JSCell*, ConstructData& constructData)
{
constructData.native.function = constructWithNativeErrorConstructor;
return ConstructTypeHost;
return JSValue::encode(ErrorInstance::create(exec, errorStructure, message));
}
-CallType NativeErrorConstructor::getCallData(CallData& callData)
+CallType NativeErrorConstructor::getCallData(JSCell*, CallData& callData)
{
callData.native.function = callNativeErrorConstructor;
return CallTypeHost;