diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:13:27 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:13:27 +0000 |
commit | 40a355a42d4a9444dc753c04c6608dade2f06a23 (patch) | |
tree | 871fc667d2de662f171103ce5ec067014ef85e61 /js/src/jsapi.cpp | |
parent | Adding upstream version 124.0.1. (diff) | |
download | firefox-40a355a42d4a9444dc753c04c6608dade2f06a23.tar.xz firefox-40a355a42d4a9444dc753c04c6608dade2f06a23.zip |
Adding upstream version 125.0.1.upstream/125.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/jsapi.cpp')
-rw-r--r-- | js/src/jsapi.cpp | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/js/src/jsapi.cpp b/js/src/jsapi.cpp index 356a5687a2..77c3ae5f09 100644 --- a/js/src/jsapi.cpp +++ b/js/src/jsapi.cpp @@ -1289,7 +1289,7 @@ JS_PUBLIC_API void JS_RemoveExtraGCRootsTracer(JSContext* cx, } JS_PUBLIC_API JS::GCReason JS::WantEagerMinorGC(JSRuntime* rt) { - if (rt->gc.nursery().shouldCollect()) { + if (rt->gc.nursery().wantEagerCollection()) { return JS::GCReason::EAGER_NURSERY_COLLECTION; } return JS::GCReason::NO_REASON; @@ -1302,7 +1302,7 @@ JS_PUBLIC_API JS::GCReason JS::WantEagerMajorGC(JSRuntime* rt) { JS_PUBLIC_API void JS::MaybeRunNurseryCollection(JSRuntime* rt, JS::GCReason reason) { gc::GCRuntime& gc = rt->gc; - if (gc.nursery().shouldCollect()) { + if (gc.nursery().wantEagerCollection()) { gc.minorGC(reason); } } @@ -4966,7 +4966,25 @@ JS_PUBLIC_API bool JS::CopyAsyncStack(JSContext* cx, return true; } -JS_PUBLIC_API Zone* JS::GetObjectZone(JSObject* obj) { return obj->zone(); } +JS_PUBLIC_API Zone* JS::GetObjectZone(JSObject* obj) { + Zone* zone = obj->zone(); + + // Check zone pointer is valid and not a poison value. See bug 1878421. + MOZ_RELEASE_ASSERT(zone->runtimeFromMainThread()); + + return zone; +} + +JS_PUBLIC_API Zone* JS::GetTenuredGCThingZone(GCCellPtr thing) { + js::gc::Cell* cell = thing.asCell(); + MOZ_ASSERT(!js::gc::IsInsideNursery(cell)); + Zone* zone = js::gc::detail::GetTenuredGCThingZone(cell); + + // Check zone pointer is valid and not a poison value. See bug 1878421. + MOZ_RELEASE_ASSERT(zone->runtimeFromMainThread()); + + return zone; +} JS_PUBLIC_API Zone* JS::GetNurseryCellZone(gc::Cell* cell) { return cell->nurseryZone(); |