X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/4be4e30906bcb8ee30b4d189205cb70bad6707ce..81345200c95645a1b0d2635520f96ad55dfde63f:/runtime/NativeErrorConstructor.h?ds=sidebyside diff --git a/runtime/NativeErrorConstructor.h b/runtime/NativeErrorConstructor.h index 0a6ef6e..438a3af 100644 --- a/runtime/NativeErrorConstructor.h +++ b/runtime/NativeErrorConstructor.h @@ -34,39 +34,27 @@ namespace JSC { public: typedef InternalFunction Base; - static NativeErrorConstructor* create(ExecState* exec, JSGlobalObject* globalObject, Structure* structure, Structure* prototypeStructure, const String& name) + static NativeErrorConstructor* create(VM& vm, JSGlobalObject* globalObject, Structure* structure, Structure* prototypeStructure, const String& name) { - NativeErrorConstructor* constructor = new (NotNull, allocateCell(*exec->heap())) NativeErrorConstructor(globalObject, structure); - constructor->finishCreation(exec, globalObject, prototypeStructure, name); + NativeErrorConstructor* constructor = new (NotNull, allocateCell(vm.heap)) NativeErrorConstructor(vm, structure); + constructor->finishCreation(vm, globalObject, prototypeStructure, name); return constructor; } - static const ClassInfo s_info; + DECLARE_INFO; static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype) { - return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info); + return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), info()); } Structure* errorStructure() { return m_errorStructure.get(); } protected: - void finishCreation(ExecState* exec, JSGlobalObject* globalObject, Structure* prototypeStructure, const String& name) - { - Base::finishCreation(exec->vm(), name); - ASSERT(inherits(&s_info)); - - NativeErrorPrototype* prototype = NativeErrorPrototype::create(exec, globalObject, prototypeStructure, name, this); - - putDirect(exec->vm(), exec->propertyNames().length, jsNumber(1), DontDelete | ReadOnly | DontEnum); // ECMA 15.11.7.5 - putDirect(exec->vm(), exec->propertyNames().prototype, prototype, DontDelete | ReadOnly | DontEnum); - m_errorStructure.set(exec->vm(), this, ErrorInstance::createStructure(exec->vm(), globalObject, prototype)); - ASSERT(m_errorStructure); - ASSERT(m_errorStructure->isObject()); - } + void finishCreation(VM&, JSGlobalObject*, Structure* prototypeStructure, const String& name); private: - NativeErrorConstructor(JSGlobalObject*, Structure*); + NativeErrorConstructor(VM&, Structure*); static const unsigned StructureFlags = OverridesVisitChildren | InternalFunction::StructureFlags; static ConstructType getConstructData(JSCell*, ConstructData&); static CallType getCallData(JSCell*, CallData&);