Skip to content

Commit cb94269

Browse files
committed
docs: note the finalizer patch's JS-execution lift
From v8-14.9.207.39-2 the shared patch also lifts the DisallowJavascriptExecution scope V8 14.9 holds across a collection. This runtime does not depend on it, but it shares the patch, so the note says which release carries it and why iOS needs it.
1 parent 5f02a2b commit cb94269

1 file changed

Lines changed: 11 additions & 1 deletion

File tree

docs/knowledge/v8-14-migration.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,17 @@ read the flags out of the Java config by then.
189189
- **Resurrecting finalizers.** `ObjectManager` uses
190190
`WeakCallbackType::kFinalizer` in four places. Upstream removed it right after
191191
10.3.22; buildscripts' `v8_resurrecting_finalizers.patch` restores it. See
192-
the iOS runtime's `V8_RESURRECTING_FINALIZERS.md` for the patch design.
192+
the iOS runtime's `docs/knowledge/v8-resurrecting-finalizers.md` for the patch
193+
design.
194+
195+
From `v8-14.9.207.39-2` that patch also lifts the
196+
`DisallowJavascriptExecution` scope `Heap::CollectGarbage` now holds across
197+
the whole collection, because entering JS from a GC callback is a
198+
`GRACEFUL_FATAL` in 14.9 where 10.3 allowed it. This runtime does not depend
199+
on the lift — `JSObjectFinalizer` makes one runtime-internal JNI call
200+
(`makeInstanceWeakAndCheckIfAlive`) and Java has no synchronous destructor
201+
that could re-enter JS — but it shares the patch, so pin a release that
202+
carries it.
193203
- **Teardown disposal.** The runtime never used
194204
`Isolate::VisitHandlesWithClassIds` or `SetWrapperClassId`, so the registry
195205
the iOS runtime had to grow is not needed here.

0 commit comments

Comments
 (0)