summaryrefslogtreecommitdiff
path: root/gi/object.cpp
diff options
context:
space:
mode:
authorEvan Welsh <contact@evanwelsh.com>2022-07-22 10:46:14 -0700
committerPhilip Chimento <philip.chimento@gmail.com>2022-08-07 16:42:03 -0700
commit1deacb549cc91a2e57aac0e484c4301a0a1b1e82 (patch)
tree83726201d779e05bf99cbe8545f68e017ba98702 /gi/object.cpp
parenta4f570f5fb76943b064e8867bacd3b4857841443 (diff)
downloadgjs-1deacb549cc91a2e57aac0e484c4301a0a1b1e82.tar.gz
js: Add JSTracer* argument to JS_UpdateWeakPointerAfterGC()
This has some cascade effects on the signatures of other methods, since we now need to pass the JSTracer in.
Diffstat (limited to 'gi/object.cpp')
-rw-r--r--gi/object.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/gi/object.cpp b/gi/object.cpp
index f0f5c497..ed98ac50 100644
--- a/gi/object.cpp
+++ b/gi/object.cpp
@@ -1584,7 +1584,7 @@ ObjectPrototype::ObjectPrototype(GIObjectInfo* info, GType gtype)
* Private callback, called after the JS engine finishes garbage collection, and
* notifies when weak pointers need to be either moved or swept.
*/
-void ObjectInstance::update_heap_wrapper_weak_pointers(JSContext*,
+void ObjectInstance::update_heap_wrapper_weak_pointers(JSTracer* trc,
JS::Compartment*,
void*) {
gjs_debug_lifecycle(GJS_DEBUG_GOBJECT, "Weak pointer update callback, "
@@ -1596,15 +1596,15 @@ void ObjectInstance::update_heap_wrapper_weak_pointers(JSContext*,
auto locked_queue = ToggleQueue::get_default();
ObjectInstance::remove_wrapped_gobjects_if(
- std::mem_fn(&ObjectInstance::weak_pointer_was_finalized),
+ [&trc](ObjectInstance* instance) -> bool {
+ return instance->weak_pointer_was_finalized(trc);
+ },
std::mem_fn(&ObjectInstance::disassociate_js_gobject));
s_wrapped_gobject_list.shrink_to_fit();
}
-bool
-ObjectInstance::weak_pointer_was_finalized(void)
-{
+bool ObjectInstance::weak_pointer_was_finalized(JSTracer* trc) {
if (has_wrapper() && !wrapper_is_rooted()) {
bool toggle_down_queued, toggle_up_queued;
@@ -1615,7 +1615,7 @@ ObjectInstance::weak_pointer_was_finalized(void)
if (!toggle_down_queued && toggle_up_queued)
return false;
- if (!update_after_gc())
+ if (!update_after_gc(trc))
return false;
if (toggle_down_queued)