diff --git a/packages/SwingSet/src/kernel/kernelSyscall.js b/packages/SwingSet/src/kernel/kernelSyscall.js index fa1ce165daf..56d51909ee4 100644 --- a/packages/SwingSet/src/kernel/kernelSyscall.js +++ b/packages/SwingSet/src/kernel/kernelSyscall.js @@ -178,16 +178,7 @@ export function makeKernelSyscallHandler(tools) { function retireExports(koids) { Array.isArray(koids) || Fail`retireExports given non-Array ${koids}`; - const newActions = []; - for (const koid of koids) { - const importers = kernelKeeper.getImporters(koid); - for (const vatID of importers) { - newActions.push(`${vatID} retireImport ${koid}`); - } - // TODO: decref and delete any #2069 auxdata - kernelKeeper.deleteKernelObject(koid); - } - kernelKeeper.addGCActions(newActions); + kernelKeeper.retireKernelObjects(koids); return OKNULL; } diff --git a/packages/SwingSet/src/kernel/state/kernelKeeper.js b/packages/SwingSet/src/kernel/state/kernelKeeper.js index 4e1cdbedd94..bd80c2ce59e 100644 --- a/packages/SwingSet/src/kernel/state/kernelKeeper.js +++ b/packages/SwingSet/src/kernel/state/kernelKeeper.js @@ -708,6 +708,19 @@ export default function makeKernelKeeper( return owner; } + function retireKernelObjects(koids) { + Array.isArray(koids) || Fail`retireExports given non-Array ${koids}`; + const newActions = []; + for (const koid of koids) { + const importers = getImporters(koid); + for (const vatID of importers) { + newActions.push(`${vatID} retireImport ${koid}`); + } + deleteKernelObject(koid); + } + addGCActions(newActions); + } + function orphanKernelObject(kref, oldVat) { const ownerKey = `${kref}.owner`; const ownerVat = kvStore.get(ownerKey); @@ -1823,6 +1836,7 @@ export default function makeKernelKeeper( kernelObjectExists, getImporters, orphanKernelObject, + retireKernelObjects, deleteKernelObject, pinObject,