+void scanExternalRememberedSet(JSC::VM& vm, JSC::SlotVisitor& visitor)
+{
+ @autoreleasepool {
+ JSVirtualMachine *virtualMachine = [JSVMWrapperCache wrapperForJSContextGroupRef:toRef(&vm)];
+ if (!virtualMachine)
+ return;
+ NSMapTable *externalObjectGraph = [virtualMachine externalObjectGraph];
+ NSMapTable *externalRememberedSet = [virtualMachine externalRememberedSet];
+ for (id key in externalRememberedSet) {
+ NSMapTable *ownedObjects = [externalObjectGraph objectForKey:key];
+ for (id ownedObject in ownedObjects)
+ scanExternalObjectGraph(vm, visitor, ownedObject);
+ }
+ [externalRememberedSet removeAllObjects];
+ }
+}