diff --git a/index.js b/index.js index 198bae65..246e88e0 100644 --- a/index.js +++ b/index.js @@ -214,29 +214,20 @@ class Runtime { const { vm, api } = this; const env = vm.getEnv(); - const classHandles = []; const addGlobalReference = api['art::JavaVMExt::AddGlobalRef']; const { vm: vmHandle } = api; withRunnableArtThread(vm, env, thread => { const collectClassHandles = makeArtClassVisitor(klass => { - classHandles.push(addGlobalReference(vmHandle, thread, klass)); + const handle = addGlobalReference(vmHandle, thread, klass); + const className = env.getClassName(handle); + callbacks.onMatch(className, handle); + env.deleteGlobalRef(handle); return true; }); api['art::ClassLinker::VisitClasses'](api.artClassLinker.address, collectClassHandles); }); - try { - classHandles.forEach(handle => { - const className = env.getClassName(handle); - callbacks.onMatch(className, handle); - }); - } finally { - classHandles.forEach(handle => { - env.deleteGlobalRef(handle); - }); - } - callbacks.onComplete(); }