[gjs/mozjs102: 8/11] js: Remove Gjs::maybe_get_private()
- From: Philip Chimento <pchimento src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gjs/mozjs102: 8/11] js: Remove Gjs::maybe_get_private()
- Date: Sun, 7 Aug 2022 19:21:03 +0000 (UTC)
commit d28be5ea746ef9435a55f85a7915cb093e502971
Author: Philip Chimento <philip chimento gmail com>
Date: Sat Aug 6 17:06:56 2022 -0700
js: Remove Gjs::maybe_get_private()
This function was necessary in SpiderMonkey 91, but now the same
functionality is part of the SpiderMonkey API. There is no longer any need
to define our own.
gi/cwrapper.h | 6 +++---
gi/param.cpp | 4 ++--
gjs/jsapi-util.h | 14 --------------
gjs/module.cpp | 2 +-
modules/cairo-pattern.cpp | 4 ++--
modules/cairo-surface.cpp | 4 ++--
test/gjs-test-rooting.cpp | 3 +--
7 files changed, 11 insertions(+), 26 deletions(-)
---
diff --git a/gi/cwrapper.h b/gi/cwrapper.h
index 47c8e29ae..cc13d6d68 100644
--- a/gi/cwrapper.h
+++ b/gi/cwrapper.h
@@ -86,7 +86,7 @@ class CWrapperPointerOps {
if (!JS_InstanceOf(cx, wrapper, &Base::klass, nullptr))
return nullptr;
- return Gjs::maybe_get_private<Wrapped>(wrapper, POINTER);
+ return JS::GetMaybePtrFromReservedSlot<Wrapped>(wrapper, POINTER);
}
/*
@@ -139,7 +139,7 @@ class CWrapperPointerOps {
* (It can return null if no private data has been set yet on the wrapper.)
*/
[[nodiscard]] static Wrapped* for_js_nocheck(JSObject* wrapper) {
- return Gjs::maybe_get_private<Wrapped>(wrapper, POINTER);
+ return JS::GetMaybePtrFromReservedSlot<Wrapped>(wrapper, POINTER);
}
protected:
@@ -153,7 +153,7 @@ class CWrapperPointerOps {
* wrapper object.
*/
[[nodiscard]] static bool has_private(JSObject* wrapper) {
- return !!Gjs::maybe_get_private<Wrapped>(wrapper, POINTER);
+ return !!JS::GetMaybePtrFromReservedSlot<Wrapped>(wrapper, POINTER);
}
/*
diff --git a/gi/param.cpp b/gi/param.cpp
index 089b7572e..93fff17e6 100644
--- a/gi/param.cpp
+++ b/gi/param.cpp
@@ -48,7 +48,7 @@ struct Param : GjsAutoParam {
if (!JS_InstanceOf(cx, obj, &gjs_param_class, nullptr))
return nullptr;
- auto* priv = Gjs::maybe_get_private<Param>(obj, POINTER);
+ auto* priv = JS::GetMaybePtrFromReservedSlot<Param>(obj, POINTER);
return priv ? priv->get() : nullptr;
}
@@ -124,7 +124,7 @@ static bool gjs_param_constructor(JSContext* cx, unsigned argc, JS::Value* vp) {
}
static void param_finalize(JS::GCContext*, JSObject* obj) {
- Param* priv = Gjs::maybe_get_private<Param>(obj, POINTER);
+ Param* priv = JS::GetMaybePtrFromReservedSlot<Param>(obj, POINTER);
gjs_debug_lifecycle(GJS_DEBUG_GPARAM, "finalize, obj %p priv %p", obj,
priv);
if (!priv)
diff --git a/gjs/jsapi-util.h b/gjs/jsapi-util.h
index a891fa42c..0724181e3 100644
--- a/gjs/jsapi-util.h
+++ b/gjs/jsapi-util.h
@@ -26,10 +26,8 @@
#include <js/GCAPI.h>
#include <js/GCPolicyAPI.h> // for IgnoreGCPolicy
#include <js/Id.h>
-#include <js/Object.h> // for GetReservedSlot
#include <js/TypeDecls.h>
#include <js/Utility.h> // for UniqueChars
-#include <js/Value.h>
#include <jspubtd.h> // for JSProtoKey
#include "gjs/macros.h"
@@ -636,18 +634,6 @@ template <typename T>
return true;
}
-/**
- * Helper function, backported from future SpiderMonkey's
- * JS::GetMaybePtrFromReservedSlot(), to get the pointer value (or nullptr if
- * not set) from an object's reserved slot. The slot must contain either a
- * JS::PrivateValue(T*) or JS::UndefinedValue.
- */
-template <typename T>
-inline T* maybe_get_private(JSObject* obj, size_t slot) {
- JS::Value v = JS::GetReservedSlot(obj, slot);
- return v.isUndefined() ? nullptr : static_cast<T*>(v.toPrivate());
-}
-
} // namespace Gjs
[[nodiscard]] const char* gjs_explain_gc_reason(JS::GCReason reason);
diff --git a/gjs/module.cpp b/gjs/module.cpp
index ccf20374c..c0422caf0 100644
--- a/gjs/module.cpp
+++ b/gjs/module.cpp
@@ -80,7 +80,7 @@ class GjsScriptModule {
/* Private data accessors */
[[nodiscard]] static inline GjsScriptModule* priv(JSObject* module) {
- return Gjs::maybe_get_private<GjsScriptModule>(
+ return JS::GetMaybePtrFromReservedSlot<GjsScriptModule>(
module, GjsScriptModule::POINTER);
}
diff --git a/modules/cairo-pattern.cpp b/modules/cairo-pattern.cpp
index 9d5a847ac..9e7e36929 100644
--- a/modules/cairo-pattern.cpp
+++ b/modules/cairo-pattern.cpp
@@ -136,6 +136,6 @@ cairo_pattern_t* CairoPattern::for_js(JSContext* cx,
return nullptr;
}
- return Gjs::maybe_get_private<cairo_pattern_t>(pattern_wrapper,
- CairoPattern::POINTER);
+ return JS::GetMaybePtrFromReservedSlot<cairo_pattern_t>(
+ pattern_wrapper, CairoPattern::POINTER);
}
diff --git a/modules/cairo-surface.cpp b/modules/cairo-surface.cpp
index abeca366b..877186439 100644
--- a/modules/cairo-surface.cpp
+++ b/modules/cairo-surface.cpp
@@ -271,8 +271,8 @@ cairo_surface_t* CairoSurface::for_js(JSContext* cx,
return nullptr;
}
- return Gjs::maybe_get_private<cairo_surface_t>(surface_wrapper,
- CairoSurface::POINTER);
+ return JS::GetMaybePtrFromReservedSlot<cairo_surface_t>(
+ surface_wrapper, CairoSurface::POINTER);
}
[[nodiscard]] static bool surface_to_g_argument(
diff --git a/test/gjs-test-rooting.cpp b/test/gjs-test-rooting.cpp
index ecf79f453..7a96ba1ed 100644
--- a/test/gjs-test-rooting.cpp
+++ b/test/gjs-test-rooting.cpp
@@ -16,7 +16,6 @@
#include "gjs/context-private.h"
#include "gjs/jsapi-util-root.h"
-#include "gjs/jsapi-util.h" // for maybe_get_private
#include "test/gjs-test-utils.h"
class JSTracer;
@@ -45,7 +44,7 @@ struct GjsRootingFixture {
};
static void test_obj_finalize(JS::GCContext*, JSObject* obj) {
- bool* finalized_p = Gjs::maybe_get_private<bool>(obj, POINTER);
+ bool* finalized_p = JS::GetMaybePtrFromReservedSlot<bool>(obj, POINTER);
g_assert_false(*finalized_p);
*finalized_p = true;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]