diff --git a/dom/bindings/BindingUtils.h b/dom/bindings/BindingUtils.h index 08c50f80de51..ab9f9d61ebb5 100644 --- a/dom/bindings/BindingUtils.h +++ b/dom/bindings/BindingUtils.h @@ -241,12 +241,12 @@ IsNotDateOrRegExp(JSContext* cx, JS::Handle obj, { MOZ_ASSERT(obj); - js::ESClassValue cls; + js::ESClass cls; if (!js::GetBuiltinClass(cx, obj, &cls)) { return false; } - *notDateOrRegExp = cls != js::ESClass_Date && cls != js::ESClass_RegExp; + *notDateOrRegExp = cls != js::ESClass::Date && cls != js::ESClass::RegExp; return true; } diff --git a/dom/indexedDB/IDBKeyRange.cpp b/dom/indexedDB/IDBKeyRange.cpp index 7038252a6047..619c5239d55d 100644 --- a/dom/indexedDB/IDBKeyRange.cpp +++ b/dom/indexedDB/IDBKeyRange.cpp @@ -111,11 +111,11 @@ IDBKeyRange::FromJSVal(JSContext* aCx, JS::Rooted obj(aCx, aVal.isObject() ? &aVal.toObject() : nullptr); bool isValidKey = aVal.isPrimitive(); if (!isValidKey) { - js::ESClassValue cls; + js::ESClass cls; if (!js::GetBuiltinClass(aCx, obj, &cls)) { return NS_ERROR_UNEXPECTED; } - isValidKey = cls == js::ESClass_Array || cls == js::ESClass_Date; + isValidKey = cls == js::ESClass::Array || cls == js::ESClass::Date; } if (isValidKey) { // A valid key returns an 'only' IDBKeyRange. diff --git a/dom/indexedDB/Key.cpp b/dom/indexedDB/Key.cpp index 6b168710bb69..bba20a58ab8e 100644 --- a/dom/indexedDB/Key.cpp +++ b/dom/indexedDB/Key.cpp @@ -232,12 +232,12 @@ Key::EncodeJSValInternal(JSContext* aCx, JS::Handle aVal, if (aVal.isObject()) { JS::Rooted obj(aCx, &aVal.toObject()); - js::ESClassValue cls; + js::ESClass cls; if (!js::GetBuiltinClass(aCx, obj, &cls)) { IDB_REPORT_INTERNAL_ERR(); return NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR; } - if (cls == js::ESClass_Array) { + if (cls == js::ESClass::Array) { aTypeOffset += eMaxType; if (aTypeOffset == eMaxType * kMaxArrayCollapse) { @@ -275,7 +275,7 @@ Key::EncodeJSValInternal(JSContext* aCx, JS::Handle aVal, return NS_OK; } - if (cls == js::ESClass_Date) { + if (cls == js::ESClass::Date) { bool valid; if (!js::DateIsValid(aCx, obj, &valid)) { IDB_REPORT_INTERNAL_ERR(); diff --git a/js/ipc/WrapperAnswer.cpp b/js/ipc/WrapperAnswer.cpp index bb1013ef2610..a8cd45ef5b6f 100644 --- a/js/ipc/WrapperAnswer.cpp +++ b/js/ipc/WrapperAnswer.cpp @@ -490,7 +490,7 @@ bool WrapperAnswer::RecvGetBuiltinClass(const ObjectId& objId, ReturnStatus* rs, uint32_t* classValue) { - *classValue = js::ESClass_Other; + *classValue = uint32_t(js::ESClass::Other); AutoJSAPI jsapi; if (NS_WARN_IF(!jsapi.Init(scopeForTargetObjects()))) @@ -503,11 +503,11 @@ WrapperAnswer::RecvGetBuiltinClass(const ObjectId& objId, ReturnStatus* rs, LOG("%s.getBuiltinClass()", ReceiverObj(objId)); - js::ESClassValue cls; + js::ESClass cls; if (!js::GetBuiltinClass(cx, obj, &cls)) return fail(jsapi, rs); - *classValue = cls; + *classValue = uint32_t(cls); return ok(rs); } diff --git a/js/ipc/WrapperOwner.cpp b/js/ipc/WrapperOwner.cpp index 6031916e5910..af5ea4e08d95 100644 --- a/js/ipc/WrapperOwner.cpp +++ b/js/ipc/WrapperOwner.cpp @@ -126,8 +126,7 @@ class CPOWProxyHandler : public BaseProxyHandler AutoIdVector& props) const override; virtual bool hasInstance(JSContext* cx, HandleObject proxy, MutableHandleValue v, bool* bp) const override; - virtual bool getBuiltinClass(JSContext* cx, HandleObject obj, - js::ESClassValue* classValue) const override; + virtual bool getBuiltinClass(JSContext* cx, HandleObject obj, js::ESClass* cls) const override; virtual bool isArray(JSContext* cx, HandleObject obj, IsArrayAnswer* answer) const override; virtual const char* className(JSContext* cx, HandleObject proxy) const override; @@ -729,23 +728,21 @@ WrapperOwner::hasInstance(JSContext* cx, HandleObject proxy, MutableHandleValue } bool -CPOWProxyHandler::getBuiltinClass(JSContext* cx, HandleObject proxy, - js::ESClassValue* classValue) const +CPOWProxyHandler::getBuiltinClass(JSContext* cx, HandleObject proxy, ESClass* cls) const { - FORWARD(getBuiltinClass, (cx, proxy, classValue)); + FORWARD(getBuiltinClass, (cx, proxy, cls)); } bool -WrapperOwner::getBuiltinClass(JSContext* cx, HandleObject proxy, - js::ESClassValue* classValue) +WrapperOwner::getBuiltinClass(JSContext* cx, HandleObject proxy, ESClass* cls) { ObjectId objId = idOf(proxy); - uint32_t cls = ESClass_Other; + uint32_t classValue = uint32_t(ESClass::Other); ReturnStatus status; - if (!SendGetBuiltinClass(objId, &status, &cls)) + if (!SendGetBuiltinClass(objId, &status, &classValue)) return ipcfail(cx); - *classValue = ESClassValue(cls); + *cls = ESClass(classValue); LOG_STACK(); diff --git a/js/ipc/WrapperOwner.h b/js/ipc/WrapperOwner.h index 4f0a8f266c85..3c2e4c52d01d 100644 --- a/js/ipc/WrapperOwner.h +++ b/js/ipc/WrapperOwner.h @@ -54,7 +54,7 @@ class WrapperOwner : public virtual JavaScriptShared bool getOwnEnumerablePropertyKeys(JSContext* cx, JS::HandleObject proxy, JS::AutoIdVector& props); bool hasInstance(JSContext* cx, JS::HandleObject proxy, JS::MutableHandleValue v, bool* bp); - bool getBuiltinClass(JSContext* cx, JS::HandleObject proxy, js::ESClassValue* classValue); + bool getBuiltinClass(JSContext* cx, JS::HandleObject proxy, js::ESClass* cls); bool isArray(JSContext* cx, JS::HandleObject proxy, JS::IsArrayAnswer* answer); const char* className(JSContext* cx, JS::HandleObject proxy); bool getPrototype(JSContext* cx, JS::HandleObject proxy, JS::MutableHandleObject protop); diff --git a/js/public/Class.h b/js/public/Class.h index c21726cc030c..66b69d947cfe 100644 --- a/js/public/Class.h +++ b/js/public/Class.h @@ -958,14 +958,26 @@ Valueify(const JSClass* c) * Enumeration describing possible values of the [[Class]] internal property * value of objects. */ -enum ESClassValue { - ESClass_Object, ESClass_Array, ESClass_Number, ESClass_String, - ESClass_Boolean, ESClass_RegExp, ESClass_ArrayBuffer, ESClass_SharedArrayBuffer, - ESClass_Date, ESClass_Set, ESClass_Map, ESClass_Promise, ESClass_MapIterator, - ESClass_SetIterator, +enum class ESClass { + Object, + Array, + Number, + String, + Boolean, + RegExp, + ArrayBuffer, + SharedArrayBuffer, + Date, + Set, + Map, + Promise, + MapIterator, + SetIterator, + Arguments, + Error, /** None of the above. */ - ESClass_Other + Other }; /* Fills |vp| with the unboxed value for boxed types, or undefined otherwise. */ diff --git a/js/public/Proxy.h b/js/public/Proxy.h index d7c3ff5145bb..38a0cef7a212 100644 --- a/js/public/Proxy.h +++ b/js/public/Proxy.h @@ -316,7 +316,7 @@ class JS_FRIEND_API(BaseProxyHandler) const CallArgs& args) const; virtual bool hasInstance(JSContext* cx, HandleObject proxy, MutableHandleValue v, bool* bp) const; virtual bool getBuiltinClass(JSContext* cx, HandleObject proxy, - ESClassValue* classValue) const; + ESClass* cls) const; virtual bool isArray(JSContext* cx, HandleObject proxy, JS::IsArrayAnswer* answer) const; virtual const char* className(JSContext* cx, HandleObject proxy) const; virtual JSString* fun_toString(JSContext* cx, HandleObject proxy, unsigned indent) const; diff --git a/js/src/builtin/RegExp.cpp b/js/src/builtin/RegExp.cpp index 4f02c42333be..1ef8de0293d5 100644 --- a/js/src/builtin/RegExp.cpp +++ b/js/src/builtin/RegExp.cpp @@ -290,11 +290,11 @@ js::IsRegExp(JSContext* cx, HandleValue value, bool* result) } /* Steps 5-6. */ - ESClassValue cls; + ESClass cls; if (!GetClassOfValue(cx, value, &cls)) return false; - *result = cls == ESClass_RegExp; + *result = cls == ESClass::RegExp; return true; } @@ -308,10 +308,10 @@ regexp_compile_impl(JSContext* cx, const CallArgs& args) // Step 3. RootedValue patternValue(cx, args.get(0)); - ESClassValue cls; + ESClass cls; if (!GetClassOfValue(cx, patternValue, &cls)) return false; - if (cls == ESClass_RegExp) { + if (cls == ESClass::RegExp) { // Step 3a. if (args.hasDefined(1)) { JS_ReportErrorNumber(cx, GetErrorMessage, nullptr, JSMSG_NEWREGEXP_FLAGGED); @@ -405,10 +405,10 @@ js::regexp_construct(JSContext* cx, unsigned argc, Value* vp) RootedValue patternValue(cx, args.get(0)); // Step 4. - ESClassValue cls; + ESClass cls; if (!GetClassOfValue(cx, patternValue, &cls)) return false; - if (cls == ESClass_RegExp) { + if (cls == ESClass::RegExp) { // Beware! |patternObj| might be a proxy into another compartment, so // don't assume |patternObj.is()|. For the same reason, // don't reuse the RegExpShared below. diff --git a/js/src/ctypes/CTypes.cpp b/js/src/ctypes/CTypes.cpp index 94d9a282a182..9a69f7299ef8 100644 --- a/js/src/ctypes/CTypes.cpp +++ b/js/src/ctypes/CTypes.cpp @@ -3649,11 +3649,11 @@ ImplicitConvert(JSContext* cx, arrObj, arrIndex); } } else { - ESClassValue cls; + ESClass cls; if (!GetClassOfValue(cx, val, &cls)) return false; - if (cls == ESClass_Array) { + if (cls == ESClass::Array) { // Convert each element of the array by calling ImplicitConvert. uint32_t sourceLength; if (!JS_GetArrayLength(cx, valObj, &sourceLength) || @@ -3684,10 +3684,10 @@ ImplicitConvert(JSContext* cx, } memcpy(buffer, intermediate.get(), arraySize); - } else if (cls == ESClass_ArrayBuffer || cls == ESClass_SharedArrayBuffer) { + } else if (cls == ESClass::ArrayBuffer || cls == ESClass::SharedArrayBuffer) { // Check that array is consistent with type, then // copy the array. - const bool bufferShared = cls == ESClass_SharedArrayBuffer; + const bool bufferShared = cls == ESClass::SharedArrayBuffer; uint32_t sourceLength = bufferShared ? JS_GetSharedArrayBufferByteLength(valObj) : JS_GetArrayBufferByteLength(valObj); size_t elementSize = CType::GetSize(baseType); diff --git a/js/src/jsapi-tests/testIteratorObject.cpp b/js/src/jsapi-tests/testIteratorObject.cpp index 8437f81ff1a7..097b3eb5f242 100644 --- a/js/src/jsapi-tests/testIteratorObject.cpp +++ b/js/src/jsapi-tests/testIteratorObject.cpp @@ -13,17 +13,17 @@ BEGIN_TEST(testIteratorObject) CHECK(result.isObject()); JS::RootedObject obj1(cx, &result.toObject()); - ESClassValue class1 = ESClass_Other; + ESClass class1 = ESClass::Other; CHECK(GetBuiltinClass(cx, obj1, &class1)); - CHECK(class1 == ESClass_MapIterator); + CHECK(class1 == ESClass::MapIterator); EVAL("new Set(['value1', 'value2']).entries()", &result); CHECK(result.isObject()); JS::RootedObject obj2(cx, &result.toObject()); - ESClassValue class2 = ESClass_Other; + ESClass class2 = ESClass::Other; CHECK(GetBuiltinClass(cx, obj2, &class2)); - CHECK(class2 == ESClass_SetIterator); + CHECK(class2 == ESClass::SetIterator); return true; } diff --git a/js/src/jsapi.cpp b/js/src/jsapi.cpp index a74c20f416a6..cc27681e7eb6 100644 --- a/js/src/jsapi.cpp +++ b/js/src/jsapi.cpp @@ -3222,11 +3222,11 @@ JS_IsArrayObject(JSContext* cx, JS::HandleObject obj, bool* isArray) { assertSameCompartment(cx, obj); - ESClassValue cls; + ESClass cls; if (!GetBuiltinClass(cx, obj, &cls)) return false; - *isArray = cls == ESClass_Array; + *isArray = cls == ESClass::Array; return true; } @@ -5670,11 +5670,11 @@ JS_ObjectIsDate(JSContext* cx, HandleObject obj, bool* isDate) { assertSameCompartment(cx, obj); - ESClassValue cls; + ESClass cls; if (!GetBuiltinClass(cx, obj, &cls)) return false; - *isDate = cls == ESClass_Date; + *isDate = cls == ESClass::Date; return true; } @@ -5774,11 +5774,11 @@ JS_ObjectIsRegExp(JSContext* cx, HandleObject obj, bool* isRegExp) { assertSameCompartment(cx, obj); - ESClassValue cls; + ESClass cls; if (!GetBuiltinClass(cx, obj, &cls)) return false; - *isRegExp = cls == ESClass_RegExp; + *isRegExp = cls == ESClass::RegExp; return true; } diff --git a/js/src/jsdate.cpp b/js/src/jsdate.cpp index 8431b1756b18..ade54bd604ec 100644 --- a/js/src/jsdate.cpp +++ b/js/src/jsdate.cpp @@ -2927,12 +2927,12 @@ date_toString_impl(JSContext* cx, const CallArgs& args) RootedObject obj(cx, &args.thisv().toObject()); // Step 2. - ESClassValue cls; + ESClass cls; if (!GetBuiltinClass(cx, obj, &cls)) return false; double tv; - if (cls != ESClass_Date) { + if (cls != ESClass::Date) { // Step 2. tv = GenericNaN(); } else { @@ -3108,11 +3108,11 @@ DateOneArgument(JSContext* cx, const CallArgs& args) if (args[0].isObject()) { RootedObject obj(cx, &args[0].toObject()); - ESClassValue cls; + ESClass cls; if (!GetBuiltinClass(cx, obj, &cls)) return false; - if (cls == ESClass_Date) { + if (cls == ESClass::Date) { RootedValue unboxed(cx); if (!Unbox(cx, obj, &unboxed)) return false; @@ -3319,11 +3319,11 @@ js::NewDateObject(JSContext* cx, int year, int mon, int mday, JS_FRIEND_API(bool) js::DateIsValid(JSContext* cx, HandleObject obj, bool* isValid) { - ESClassValue cls; + ESClass cls; if (!GetBuiltinClass(cx, obj, &cls)) return false; - if (cls != ESClass_Date) { + if (cls != ESClass::Date) { *isValid = false; return true; } @@ -3339,11 +3339,11 @@ js::DateIsValid(JSContext* cx, HandleObject obj, bool* isValid) JS_FRIEND_API(bool) js::DateGetMsecSinceEpoch(JSContext* cx, HandleObject obj, double* msecsSinceEpoch) { - ESClassValue cls; + ESClass cls; if (!GetBuiltinClass(cx, obj, &cls)) return false; - if (cls != ESClass_Date) { + if (cls != ESClass::Date) { *msecsSinceEpoch = 0; return true; } diff --git a/js/src/jsexn.cpp b/js/src/jsexn.cpp index bcf29d523918..da81673c0123 100644 --- a/js/src/jsexn.cpp +++ b/js/src/jsexn.cpp @@ -1022,13 +1022,13 @@ js::ValueToSourceForError(JSContext* cx, HandleValue val, JSAutoByteString& byte StringBuffer sb(cx); if (val.isObject()) { RootedObject valObj(cx, val.toObjectOrNull()); - ESClassValue cls; + ESClass cls; if (!GetBuiltinClass(cx, valObj, &cls)) return "<>"; const char* s; - if (cls == ESClass_Array) + if (cls == ESClass::Array) s = "the array "; - else if (cls == ESClass_ArrayBuffer) + else if (cls == ESClass::ArrayBuffer) s = "the array buffer "; else if (JS_IsArrayBufferViewObject(valObj)) s = "the typed array "; diff --git a/js/src/jsfriendapi.cpp b/js/src/jsfriendapi.cpp index 809afa5b63d7..437d79aeef74 100644 --- a/js/src/jsfriendapi.cpp +++ b/js/src/jsfriendapi.cpp @@ -266,41 +266,45 @@ JS_DefineFunctionsWithHelp(JSContext* cx, HandleObject obj, const JSFunctionSpec } JS_FRIEND_API(bool) -js::GetBuiltinClass(JSContext* cx, HandleObject obj, ESClassValue* classValue) +js::GetBuiltinClass(JSContext* cx, HandleObject obj, ESClass* cls) { if (MOZ_UNLIKELY(obj->is())) - return Proxy::getBuiltinClass(cx, obj, classValue); + return Proxy::getBuiltinClass(cx, obj, cls); if (obj->is() || obj->is()) - *classValue = ESClass_Object; + *cls = ESClass::Object; else if (obj->is() || obj->is()) - *classValue = ESClass_Array; + *cls = ESClass::Array; else if (obj->is()) - *classValue = ESClass_Number; + *cls = ESClass::Number; else if (obj->is()) - *classValue = ESClass_String; + *cls = ESClass::String; else if (obj->is()) - *classValue = ESClass_Boolean; + *cls = ESClass::Boolean; else if (obj->is()) - *classValue = ESClass_RegExp; + *cls = ESClass::RegExp; else if (obj->is()) - *classValue = ESClass_ArrayBuffer; + *cls = ESClass::ArrayBuffer; else if (obj->is()) - *classValue = ESClass_SharedArrayBuffer; + *cls = ESClass::SharedArrayBuffer; else if (obj->is()) - *classValue = ESClass_Date; + *cls = ESClass::Date; else if (obj->is()) - *classValue = ESClass_Set; + *cls = ESClass::Set; else if (obj->is()) - *classValue = ESClass_Map; + *cls = ESClass::Map; else if (obj->is()) - *classValue = ESClass_Promise; + *cls = ESClass::Promise; else if (obj->is()) - *classValue = ESClass_MapIterator; + *cls = ESClass::MapIterator; else if (obj->is()) - *classValue = ESClass_SetIterator; + *cls = ESClass::SetIterator; + else if (obj->is()) + *cls = ESClass::Arguments; + else if (obj->is()) + *cls = ESClass::Error; else - *classValue = ESClass_Other; + *cls = ESClass::Other; return true; } diff --git a/js/src/jsfriendapi.h b/js/src/jsfriendapi.h index d170437b3dbd..12b79c8479c9 100644 --- a/js/src/jsfriendapi.h +++ b/js/src/jsfriendapi.h @@ -189,7 +189,7 @@ JS_BasicObjectToString(JSContext* cx, JS::HandleObject obj); namespace js { JS_FRIEND_API(bool) -GetBuiltinClass(JSContext* cx, JS::HandleObject obj, ESClassValue* classValue); +GetBuiltinClass(JSContext* cx, JS::HandleObject obj, ESClass* cls); JS_FRIEND_API(const char*) ObjectClassName(JSContext* cx, JS::HandleObject obj); diff --git a/js/src/jsobjinlines.h b/js/src/jsobjinlines.h index 06c34bcb4da0..d03dc2e35db6 100644 --- a/js/src/jsobjinlines.h +++ b/js/src/jsobjinlines.h @@ -810,19 +810,19 @@ GuessArrayGCKind(size_t numElements) return gc::AllocKind::OBJECT8; } -// Returns ESClass_Other if the value isn't an object, or if the object +// Returns ESClass::Other if the value isn't an object, or if the object // isn't of one of the enumerated classes. Otherwise returns the appropriate // class. inline bool -GetClassOfValue(JSContext* cx, HandleValue v, ESClassValue* classValue) +GetClassOfValue(JSContext* cx, HandleValue v, ESClass* cls) { if (!v.isObject()) { - *classValue = ESClass_Other; + *cls = ESClass::Other; return true; } RootedObject obj(cx, &v.toObject()); - return GetBuiltinClass(cx, obj, classValue); + return GetBuiltinClass(cx, obj, cls); } extern NativeObject* diff --git a/js/src/json.cpp b/js/src/json.cpp index 4150e9fe4f2e..3f4ba5330e25 100644 --- a/js/src/json.cpp +++ b/js/src/json.cpp @@ -261,21 +261,21 @@ PreprocessValue(JSContext* cx, HandleObject holder, KeyType key, MutableHandleVa if (vp.get().isObject()) { RootedObject obj(cx, &vp.get().toObject()); - ESClassValue cls; + ESClass cls; if (!GetBuiltinClass(cx, obj, &cls)) return false; - if (cls == ESClass_Number) { + if (cls == ESClass::Number) { double d; if (!ToNumber(cx, vp, &d)) return false; vp.setNumber(d); - } else if (cls == ESClass_String) { + } else if (cls == ESClass::String) { JSString* str = ToStringSlow(cx, vp); if (!str) return false; vp.setString(str); - } else if (cls == ESClass_Boolean) { + } else if (cls == ESClass::Boolean) { if (!Unbox(cx, obj, vp)) return false; } @@ -657,11 +657,11 @@ js::Stringify(JSContext* cx, MutableHandleValue vp, JSObject* replacer_, Value s } else { bool shouldAdd = item.isString(); if (!shouldAdd) { - ESClassValue cls; + ESClass cls; if (!GetClassOfValue(cx, item, &cls)) return false; - shouldAdd = cls == ESClass_String || cls == ESClass_Number; + shouldAdd = cls == ESClass::String || cls == ESClass::Number; } if (shouldAdd) { @@ -691,16 +691,16 @@ js::Stringify(JSContext* cx, MutableHandleValue vp, JSObject* replacer_, Value s if (space.isObject()) { RootedObject spaceObj(cx, &space.toObject()); - ESClassValue cls; + ESClass cls; if (!GetBuiltinClass(cx, spaceObj, &cls)) return false; - if (cls == ESClass_Number) { + if (cls == ESClass::Number) { double d; if (!ToNumber(cx, space, &d)) return false; space = NumberValue(d); - } else if (cls == ESClass_String) { + } else if (cls == ESClass::String) { JSString* str = ToStringSlow(cx, space); if (!str) return false; diff --git a/js/src/jswrapper.h b/js/src/jswrapper.h index 73b7d939c5d6..47e8d9ac4960 100644 --- a/js/src/jswrapper.h +++ b/js/src/jswrapper.h @@ -111,8 +111,7 @@ class JS_FRIEND_API(Wrapper) : public BaseProxyHandler const CallArgs& args) const override; virtual bool hasInstance(JSContext* cx, HandleObject proxy, MutableHandleValue v, bool* bp) const override; - virtual bool getBuiltinClass(JSContext* cx, HandleObject proxy, - ESClassValue* classValue) const override; + virtual bool getBuiltinClass(JSContext* cx, HandleObject proxy, ESClass* cls) const override; virtual bool isArray(JSContext* cx, HandleObject proxy, JS::IsArrayAnswer* answer) const override; virtual const char* className(JSContext* cx, HandleObject proxy) const override; @@ -265,8 +264,7 @@ class JS_FRIEND_API(OpaqueCrossCompartmentWrapper) : public CrossCompartmentWrap bool* bp) const override; virtual bool getOwnEnumerablePropertyKeys(JSContext* cx, HandleObject wrapper, AutoIdVector& props) const override; - virtual bool getBuiltinClass(JSContext* cx, HandleObject wrapper, - ESClassValue* classValue) const override; + virtual bool getBuiltinClass(JSContext* cx, HandleObject wrapper, ESClass* cls) const override; virtual bool isArray(JSContext* cx, HandleObject obj, JS::IsArrayAnswer* answer) const override; virtual const char* className(JSContext* cx, HandleObject wrapper) const override; @@ -307,8 +305,7 @@ class JS_FRIEND_API(SecurityWrapper) : public Base virtual bool nativeCall(JSContext* cx, IsAcceptableThis test, NativeImpl impl, const CallArgs& args) const override; - virtual bool getBuiltinClass(JSContext* cx, HandleObject wrapper, - ESClassValue* classValue) const override; + virtual bool getBuiltinClass(JSContext* cx, HandleObject wrapper, ESClass* cls) const override; virtual bool isArray(JSContext* cx, HandleObject wrapper, JS::IsArrayAnswer* answer) const override; virtual bool regexp_toShared(JSContext* cx, HandleObject proxy, RegExpGuard* g) const override; virtual bool boxedValue_unbox(JSContext* cx, HandleObject proxy, MutableHandleValue vp) const override; diff --git a/js/src/proxy/BaseProxyHandler.cpp b/js/src/proxy/BaseProxyHandler.cpp index d56d566866ec..a628b65b6f1c 100644 --- a/js/src/proxy/BaseProxyHandler.cpp +++ b/js/src/proxy/BaseProxyHandler.cpp @@ -359,10 +359,9 @@ BaseProxyHandler::hasInstance(JSContext* cx, HandleObject proxy, MutableHandleVa } bool -BaseProxyHandler::getBuiltinClass(JSContext* cx, HandleObject proxy, - ESClassValue* classValue) const +BaseProxyHandler::getBuiltinClass(JSContext* cx, HandleObject proxy, ESClass* cls) const { - *classValue = ESClass_Other; + *cls = ESClass::Other; return true; } diff --git a/js/src/proxy/DeadObjectProxy.cpp b/js/src/proxy/DeadObjectProxy.cpp index 8cc19849e361..ab6c417ca853 100644 --- a/js/src/proxy/DeadObjectProxy.cpp +++ b/js/src/proxy/DeadObjectProxy.cpp @@ -115,8 +115,7 @@ DeadObjectProxy::hasInstance(JSContext* cx, HandleObject proxy, MutableHandleVal } bool -DeadObjectProxy::getBuiltinClass(JSContext* cx, HandleObject proxy, - ESClassValue* classValue) const +DeadObjectProxy::getBuiltinClass(JSContext* cx, HandleObject proxy, ESClass* cls) const { ReportDead(cx); return false; diff --git a/js/src/proxy/DeadObjectProxy.h b/js/src/proxy/DeadObjectProxy.h index a06083cf6796..82da2e09ab58 100644 --- a/js/src/proxy/DeadObjectProxy.h +++ b/js/src/proxy/DeadObjectProxy.h @@ -45,8 +45,7 @@ class DeadObjectProxy : public BaseProxyHandler const CallArgs& args) const override; virtual bool hasInstance(JSContext* cx, HandleObject proxy, MutableHandleValue v, bool* bp) const override; - virtual bool getBuiltinClass(JSContext* cx, HandleObject proxy, - ESClassValue* classValue) const override; + virtual bool getBuiltinClass(JSContext* cx, HandleObject proxy, ESClass* cls) const override; virtual bool isArray(JSContext* cx, HandleObject proxy, JS::IsArrayAnswer* answer) const override; virtual const char* className(JSContext* cx, HandleObject proxy) const override; virtual JSString* fun_toString(JSContext* cx, HandleObject proxy, unsigned indent) const override; diff --git a/js/src/proxy/OpaqueCrossCompartmentWrapper.cpp b/js/src/proxy/OpaqueCrossCompartmentWrapper.cpp index 3603aa53b1ac..b2fb446943b9 100644 --- a/js/src/proxy/OpaqueCrossCompartmentWrapper.cpp +++ b/js/src/proxy/OpaqueCrossCompartmentWrapper.cpp @@ -161,9 +161,9 @@ OpaqueCrossCompartmentWrapper::getOwnEnumerablePropertyKeys(JSContext* cx, Handl bool OpaqueCrossCompartmentWrapper::getBuiltinClass(JSContext* cx, HandleObject wrapper, - ESClassValue* classValue) const + ESClass* cls) const { - *classValue = ESClass_Other; + *cls = ESClass::Other; return true; } diff --git a/js/src/proxy/Proxy.cpp b/js/src/proxy/Proxy.cpp index 7d1e470acbad..aba573206483 100644 --- a/js/src/proxy/Proxy.cpp +++ b/js/src/proxy/Proxy.cpp @@ -444,10 +444,10 @@ Proxy::hasInstance(JSContext* cx, HandleObject proxy, MutableHandleValue v, bool } bool -Proxy::getBuiltinClass(JSContext* cx, HandleObject proxy, ESClassValue* classValue) +Proxy::getBuiltinClass(JSContext* cx, HandleObject proxy, ESClass* cls) { JS_CHECK_RECURSION(cx, return false); - return proxy->as().handler()->getBuiltinClass(cx, proxy, classValue); + return proxy->as().handler()->getBuiltinClass(cx, proxy, cls); } bool diff --git a/js/src/proxy/Proxy.h b/js/src/proxy/Proxy.h index 4319ebba63d8..dd9cdef6507d 100644 --- a/js/src/proxy/Proxy.h +++ b/js/src/proxy/Proxy.h @@ -58,7 +58,7 @@ class Proxy static bool nativeCall(JSContext* cx, IsAcceptableThis test, NativeImpl impl, const CallArgs& args); static bool hasInstance(JSContext* cx, HandleObject proxy, MutableHandleValue v, bool* bp); - static bool getBuiltinClass(JSContext* cx, HandleObject proxy, ESClassValue* classValue); + static bool getBuiltinClass(JSContext* cx, HandleObject proxy, ESClass* cls); static bool isArray(JSContext* cx, HandleObject proxy, JS::IsArrayAnswer* answer); static const char* className(JSContext* cx, HandleObject proxy); static JSString* fun_toString(JSContext* cx, HandleObject proxy, unsigned indent); diff --git a/js/src/proxy/ScriptedProxyHandler.cpp b/js/src/proxy/ScriptedProxyHandler.cpp index f5154f921e6a..d4051c6a6351 100644 --- a/js/src/proxy/ScriptedProxyHandler.cpp +++ b/js/src/proxy/ScriptedProxyHandler.cpp @@ -1240,9 +1240,9 @@ ScriptedProxyHandler::hasInstance(JSContext* cx, HandleObject proxy, MutableHand bool ScriptedProxyHandler::getBuiltinClass(JSContext* cx, HandleObject proxy, - ESClassValue* classValue) const + ESClass* cls) const { - *classValue = ESClass_Other; + *cls = ESClass::Other; return true; } diff --git a/js/src/proxy/ScriptedProxyHandler.h b/js/src/proxy/ScriptedProxyHandler.h index 275ba507298b..b21b1aca4601 100644 --- a/js/src/proxy/ScriptedProxyHandler.h +++ b/js/src/proxy/ScriptedProxyHandler.h @@ -63,8 +63,7 @@ class ScriptedProxyHandler : public BaseProxyHandler const CallArgs& args) const override; virtual bool hasInstance(JSContext* cx, HandleObject proxy, MutableHandleValue v, bool* bp) const override; - virtual bool getBuiltinClass(JSContext* cx, HandleObject proxy, - ESClassValue* classValue) const override; + virtual bool getBuiltinClass(JSContext* cx, HandleObject proxy, ESClass* cls) const override; virtual bool isArray(JSContext* cx, HandleObject proxy, JS::IsArrayAnswer* answer) const override; virtual const char* className(JSContext* cx, HandleObject proxy) const override; diff --git a/js/src/proxy/SecurityWrapper.cpp b/js/src/proxy/SecurityWrapper.cpp index b920e5e35e6f..a8de73fb313a 100644 --- a/js/src/proxy/SecurityWrapper.cpp +++ b/js/src/proxy/SecurityWrapper.cpp @@ -77,9 +77,9 @@ SecurityWrapper::isExtensible(JSContext* cx, HandleObject wrapper, bool* e template bool SecurityWrapper::getBuiltinClass(JSContext* cx, HandleObject wrapper, - ESClassValue* classValue) const + ESClass* cls) const { - *classValue = ESClass_Other; + *cls = ESClass::Other; return true; } diff --git a/js/src/proxy/Wrapper.cpp b/js/src/proxy/Wrapper.cpp index 46505282a479..9655c709a055 100644 --- a/js/src/proxy/Wrapper.cpp +++ b/js/src/proxy/Wrapper.cpp @@ -238,10 +238,10 @@ Wrapper::hasInstance(JSContext* cx, HandleObject proxy, MutableHandleValue v, } bool -Wrapper::getBuiltinClass(JSContext* cx, HandleObject proxy, ESClassValue* classValue) const +Wrapper::getBuiltinClass(JSContext* cx, HandleObject proxy, ESClass* cls) const { RootedObject target(cx, proxy->as().target()); - return GetBuiltinClass(cx, target, classValue); + return GetBuiltinClass(cx, target, cls); } bool diff --git a/js/src/vm/RegExpObject.h b/js/src/vm/RegExpObject.h index 8ad02b308649..c02c9e746ce8 100644 --- a/js/src/vm/RegExpObject.h +++ b/js/src/vm/RegExpObject.h @@ -509,7 +509,7 @@ class RegExpObject : public NativeObject bool ParseRegExpFlags(JSContext* cx, JSString* flagStr, RegExpFlag* flagsOut); -/* Assuming GetBuiltinClass(obj) is ESClass_RegExp, return a RegExpShared for obj. */ +/* Assuming GetBuiltinClass(obj) is ESClass::RegExp, return a RegExpShared for obj. */ inline bool RegExpToShared(JSContext* cx, HandleObject obj, RegExpGuard* g) { diff --git a/js/src/vm/StructuredClone.cpp b/js/src/vm/StructuredClone.cpp index 4f82c9ea8376..015572634ad6 100644 --- a/js/src/vm/StructuredClone.cpp +++ b/js/src/vm/StructuredClone.cpp @@ -1005,10 +1005,10 @@ JSStructuredCloneWriter::traverseObject(HandleObject obj) checkStack(); /* Write the header for obj. */ - ESClassValue cls; + ESClass cls; if (!GetBuiltinClass(context(), obj, &cls)) return false; - return out.writePair(cls == ESClass_Array ? SCTAG_ARRAY_OBJECT : SCTAG_OBJECT_OBJECT, 0); + return out.writePair(cls == ESClass::Array ? SCTAG_ARRAY_OBJECT : SCTAG_OBJECT_OBJECT, 0); } bool @@ -1194,17 +1194,17 @@ JSStructuredCloneWriter::startWrite(HandleValue v) if (backref) return true; - ESClassValue cls; + ESClass cls; if (!GetBuiltinClass(context(), obj, &cls)) return false; - if (cls == ESClass_RegExp) { + if (cls == ESClass::RegExp) { RegExpGuard re(context()); if (!RegExpToShared(context(), obj, &re)) return false; return out.writePair(SCTAG_REGEXP_OBJECT, re->getFlags()) && writeString(SCTAG_STRING, re->getSource()); - } else if (cls == ESClass_Date) { + } else if (cls == ESClass::Date) { RootedValue unboxed(context()); if (!Unbox(context(), obj, &unboxed)) return false; @@ -1217,28 +1217,28 @@ JSStructuredCloneWriter::startWrite(HandleValue v) return writeArrayBuffer(obj); } else if (JS_IsSharedArrayBufferObject(obj)) { return writeSharedArrayBuffer(obj); - } else if (cls == ESClass_Object) { + } else if (cls == ESClass::Object) { return traverseObject(obj); - } else if (cls == ESClass_Array) { + } else if (cls == ESClass::Array) { return traverseObject(obj); - } else if (cls == ESClass_Boolean) { + } else if (cls == ESClass::Boolean) { RootedValue unboxed(context()); if (!Unbox(context(), obj, &unboxed)) return false; return out.writePair(SCTAG_BOOLEAN_OBJECT, unboxed.toBoolean()); - } else if (cls == ESClass_Number) { + } else if (cls == ESClass::Number) { RootedValue unboxed(context()); if (!Unbox(context(), obj, &unboxed)) return false; return out.writePair(SCTAG_NUMBER_OBJECT, 0) && out.writeDouble(unboxed.toNumber()); - } else if (cls == ESClass_String) { + } else if (cls == ESClass::String) { RootedValue unboxed(context()); if (!Unbox(context(), obj, &unboxed)) return false; return writeString(SCTAG_STRING_OBJECT, unboxed.toString()); - } else if (cls == ESClass_Map) { + } else if (cls == ESClass::Map) { return traverseMap(obj); - } else if (cls == ESClass_Set) { + } else if (cls == ESClass::Set) { return traverseSet(obj); } else if (SavedFrame::isSavedFrameOrWrapperAndNotProto(*obj)) { return traverseSavedFrame(obj); @@ -1314,11 +1314,11 @@ JSStructuredCloneWriter::transferOwnership() MOZ_ASSERT(ownership == JS::SCTAG_TMO_UNFILLED); #endif - ESClassValue cls; + ESClass cls; if (!GetBuiltinClass(context(), obj, &cls)) return false; - if (cls == ESClass_ArrayBuffer) { + if (cls == ESClass::ArrayBuffer) { // The current setup of the array buffer inheritance hierarchy doesn't // lend itself well to generic manipulation via proxies. Rooted arrayBuffer(context(), &CheckedUnwrap(obj)->as()); @@ -1341,7 +1341,7 @@ JSStructuredCloneWriter::transferOwnership() else ownership = JS::SCTAG_TMO_ALLOC_DATA; extraData = nbytes; - } else if (cls == ESClass_SharedArrayBuffer) { + } else if (cls == ESClass::SharedArrayBuffer) { Rooted sharedArrayBuffer(context(), &CheckedUnwrap(obj)->as()); SharedArrayRawBuffer* rawbuf = sharedArrayBuffer->rawBufferObject(); @@ -1388,11 +1388,11 @@ JSStructuredCloneWriter::write(HandleValue v) entries.popBack(); checkStack(); - ESClassValue cls; + ESClass cls; if (!GetBuiltinClass(context(), obj, &cls)) return false; - if (cls == ESClass_Map) { + if (cls == ESClass::Map) { counts.back()--; RootedValue val(context(), entries.back()); entries.popBack(); @@ -1400,7 +1400,7 @@ JSStructuredCloneWriter::write(HandleValue v) if (!startWrite(key) || !startWrite(val)) return false; - } else if (cls == ESClass_Set || SavedFrame::isSavedFrameOrWrapperAndNotProto(*obj)) { + } else if (cls == ESClass::Set || SavedFrame::isSavedFrameOrWrapperAndNotProto(*obj)) { if (!startWrite(key)) return false; } else { diff --git a/js/src/vm/TypedArrayObject.cpp b/js/src/vm/TypedArrayObject.cpp index 87821eda4fdd..d135c006a03b 100644 --- a/js/src/vm/TypedArrayObject.cpp +++ b/js/src/vm/TypedArrayObject.cpp @@ -532,10 +532,10 @@ class TypedArrayObjectTemplate : public TypedArrayObject fromBufferWithProto(JSContext* cx, HandleObject bufobj, uint32_t byteOffset, int32_t lengthInt, HandleObject proto) { - ESClassValue cls; + ESClass cls; if (!GetBuiltinClass(cx, bufobj, &cls)) return nullptr; - if (cls != ESClass_ArrayBuffer && cls != ESClass_SharedArrayBuffer) { + if (cls != ESClass::ArrayBuffer && cls != ESClass::SharedArrayBuffer) { JS_ReportErrorNumber(cx, GetErrorMessage, nullptr, JSMSG_TYPED_ARRAY_BAD_ARGS); return nullptr; }