mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-11-03 04:57:31 +09:00
Use ordinary objects for Error prototypes
This commit is contained in:
parent
b0fe82b857
commit
105cbadae7
4 changed files with 161 additions and 91 deletions
|
|
@ -38,9 +38,8 @@ class ErrorObject : public NativeObject
|
|||
ScopedJSFreePtr<JSErrorReport>* errorReport, HandleString fileName, HandleObject stack,
|
||||
uint32_t lineNumber, uint32_t columnNumber, HandleString message);
|
||||
|
||||
static const ClassSpec errorClassSpec_;
|
||||
static const ClassSpec subErrorClassSpec_;
|
||||
static const ClassSpec nonGlobalErrorClassSpec_;
|
||||
static const ClassSpec classSpecs[JSEXN_ERROR_LIMIT];
|
||||
static const Class protoClasses[JSEXN_ERROR_LIMIT];
|
||||
|
||||
protected:
|
||||
static const uint32_t EXNTYPE_SLOT = 0;
|
||||
|
|
@ -54,7 +53,7 @@ class ErrorObject : public NativeObject
|
|||
static const uint32_t RESERVED_SLOTS = MESSAGE_SLOT + 1;
|
||||
|
||||
public:
|
||||
static const Class classes[JSEXN_LIMIT];
|
||||
static const Class classes[JSEXN_ERROR_LIMIT];
|
||||
|
||||
static const Class * classForType(JSExnType type) {
|
||||
MOZ_ASSERT(type < JSEXN_WARN);
|
||||
|
|
|
|||
|
|
@ -427,6 +427,18 @@ class GlobalObject : public NativeObject
|
|||
return &global->getPrototype(key).toObject();
|
||||
}
|
||||
|
||||
static JSFunction*
|
||||
getOrCreateErrorConstructor(JSContext* cx, Handle<GlobalObject*> global) {
|
||||
if (!ensureConstructor(cx, global, JSProto_Error))
|
||||
return nullptr;
|
||||
return &global->getConstructor(JSProto_Error).toObject().as<JSFunction>();
|
||||
}
|
||||
|
||||
static JSObject*
|
||||
getOrCreateErrorPrototype(JSContext* cx, Handle<GlobalObject*> global) {
|
||||
return getOrCreateCustomErrorPrototype(cx, global, JSEXN_ERR);
|
||||
}
|
||||
|
||||
static NativeObject* getOrCreateSetPrototype(JSContext* cx, Handle<GlobalObject*> global) {
|
||||
if (!ensureConstructor(cx, global, JSProto_Set))
|
||||
return nullptr;
|
||||
|
|
@ -1003,10 +1015,7 @@ GenericCreatePrototype(JSContext* cx, JSProtoKey key)
|
|||
inline JSProtoKey
|
||||
StandardProtoKeyOrNull(const JSObject* obj)
|
||||
{
|
||||
JSProtoKey key = JSCLASS_CACHED_PROTO_KEY(obj->getClass());
|
||||
if (key == JSProto_Error)
|
||||
return GetExceptionProtoKey(obj->as<ErrorObject>().type());
|
||||
return key;
|
||||
return JSCLASS_CACHED_PROTO_KEY(obj->getClass());
|
||||
}
|
||||
|
||||
JSObject*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue