diff --git a/lib/android.js b/lib/android.js index 11daebe..62c9c9f 100644 --- a/lib/android.js +++ b/lib/android.js @@ -1187,7 +1187,7 @@ function _getArtMethodSpec (vm) { const entrypointFieldSize = (apiLevel <= 21) ? 8 : pointerSize; const expectedAccessFlags = kAccPublic | kAccStatic | kAccFinal | kAccNative; - const relevantAccessFlagsMask = ~(kAccFastInterpreterToInterpreterInvoke | kAccPublicApi | kAccNterpInvokeFastPathFlag) >>> 0; + const relevantAccessFlagsMask = ~(kAccFastInterpreterToInterpreterInvoke | kAccPublicApi | kAccNterpInvokeFastPathFlag | kAccNterpEntryPointFastPathFlag) >>> 0; let jniCodeOffset = null; let accessFlagsOffset = null; @@ -4866,15 +4866,14 @@ function recompileExceptionClearForArm64 (buffer, pc, exceptionClearImpl, nextFu const writer = new Arm64Writer(buffer, { pc }); - writer.putBLabel('performTransition'); - const invokeCallback = pc.add(writer.offset); writer.putPushAllXRegisters(); writer.putCallAddressWithArguments(callback, ['x0']); writer.putPopAllXRegisters(); writer.putRet(); + writer.flush(); - writer.putLabel('performTransition'); + const performEntry = pc.add(writer.offset); let foundCore = false; let threadReg = null; @@ -5004,7 +5003,7 @@ function recompileExceptionClearForArm64 (buffer, pc, exceptionClearImpl, nextFu throwThreadStateTransitionParseError(); } - return new NativeFunction(pc, 'void', ['pointer'], nativeFunctionOptions); + return new NativeFunction(performEntry, 'void', ['pointer'], nativeFunctionOptions); } function throwThreadStateTransitionParseError () {