X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/9dae56ea45a0f5f8136a5c93d6f3a7f99399ca73..ed1e77d3adeb83d26fd1dfb16dd84cabdcefd250:/runtime/NumberConstructor.h?ds=inline diff --git a/runtime/NumberConstructor.h b/runtime/NumberConstructor.h index 070be5f..f8b1f7f 100644 --- a/runtime/NumberConstructor.h +++ b/runtime/NumberConstructor.h @@ -25,30 +25,35 @@ namespace JSC { - class NumberPrototype; - - class NumberConstructor : public InternalFunction { - public: - NumberConstructor(ExecState*, PassRefPtr, NumberPrototype*); - - virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&); - JSValuePtr getValueProperty(ExecState*, int token) const; - - static const ClassInfo info; - - static PassRefPtr createStructure(JSValuePtr proto) - { - return Structure::create(proto, TypeInfo(ObjectType, ImplementsHasInstance)); - } - - enum { NaNValue, NegInfinity, PosInfinity, MaxValue, MinValue }; - - private: - virtual ConstructType getConstructData(ConstructData&); - virtual CallType getCallData(CallData&); - - virtual const ClassInfo* classInfo() const { return &info; } - }; +class NumberPrototype; + +class NumberConstructor : public InternalFunction { +public: + typedef InternalFunction Base; + static const unsigned StructureFlags = Base::StructureFlags | OverridesGetOwnPropertySlot | ImplementsHasInstance; + + static NumberConstructor* create(VM& vm, Structure* structure, NumberPrototype* numberPrototype) + { + NumberConstructor* constructor = new (NotNull, allocateCell(vm.heap)) NumberConstructor(vm, structure); + constructor->finishCreation(vm, numberPrototype); + return constructor; + } + + DECLARE_INFO; + + static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue proto) + { + return Structure::create(vm, globalObject, proto, TypeInfo(ObjectType, StructureFlags), info()); + } + +protected: + void finishCreation(VM&, NumberPrototype*); + +private: + NumberConstructor(VM&, Structure*); + static ConstructType getConstructData(JSCell*, ConstructData&); + static CallType getCallData(JSCell*, CallData&); +}; } // namespace JSC