From 689d8c14446db5084a0902ffae7774e675a1b155 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20Andr=C3=A9=20Vadla=20Ravn=C3=A5s?= Date: Tue, 16 Jul 2024 22:33:48 +0200 Subject: [PATCH] Tweak style and refactor slightly --- lib/android.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/android.js b/lib/android.js index 775383e..cf739d5 100644 --- a/lib/android.js +++ b/lib/android.js @@ -618,6 +618,7 @@ function _getArtRuntimeSpec (api) { const apiLevel = getAndroidApiLevel(); const codename = getAndroidCodename(); + const isApiLevel34OrApexEquivalent = Module.findExportByName('libart.so', '_ZN3art7AppInfo29GetPrimaryApkReferenceProfileEv') !== null; let spec = null; @@ -645,7 +646,7 @@ function _getArtRuntimeSpec (api) { const threadListOffset = internTableOffset - pointerSize; let heapOffset; - if (Module.findExportByName('libart.so', '_ZN3art7AppInfo29GetPrimaryApkReferenceProfileEv') !== null) { // with apex updates apiLevel!=libart version + if (isApiLevel34OrApexEquivalent) { heapOffset = threadListOffset - (9 * pointerSize); } else if (apiLevel >= 24) { heapOffset = threadListOffset - (8 * pointerSize); @@ -1887,21 +1888,20 @@ function ensureArtKnowsHowToHandleReplacementMethods (vm) { const apiLevel = getAndroidApiLevel(); - let exportName = null; - const api = getApi(); + const mayUseCollector = (apiLevel > 28) + ? new NativeFunction(Module.getExportByName('libart.so', '_ZNK3art2gc4Heap15MayUseCollectorENS0_13CollectorTypeE'), 'bool', ['pointer', 'int']) + : () => false; const kCollectorTypeCMC = 3; - const mayUseCollector = new NativeFunction(Module.findExportByName('libart.so', '_ZNK3art2gc4Heap15MayUseCollectorENS0_13CollectorTypeE'), 'int', ['pointer', 'int']); - if (mayUseCollector !== null && apiLevel > 28 && mayUseCollector(api.artHeap, kCollectorTypeCMC)) { - exportName = '_ZN3art6Thread15RunFlipFunctionEPS0_b'; - Interceptor.attach(Module.getExportByName('libart.so', exportName), artController.hooks.Gc.runFlip); + if (mayUseCollector(getApi().artHeap, kCollectorTypeCMC)) { + Interceptor.attach(Module.getExportByName('libart.so', '_ZN3art6Thread15RunFlipFunctionEPS0_b'), artController.hooks.Gc.runFlip); } else { + let exportName = null; if (apiLevel > 28) { exportName = '_ZN3art2gc9collector17ConcurrentCopying12CopyingPhaseEv'; } else if (apiLevel > 22) { exportName = '_ZN3art2gc9collector17ConcurrentCopying12MarkingPhaseEv'; } - if (exportName !== null) { Interceptor.attach(Module.getExportByName('libart.so', exportName), artController.hooks.Gc.copyingPhase); }