From 97b22b8d41742fa84812f46d1125e9735420782a Mon Sep 17 00:00:00 2001 From: buzbee Date: Mon, 23 May 2011 10:59:33 -0700 Subject: Fix alt handling for Jumbo ops The mterp alt mechanism allows us to break out of the fast interpreter loop to handle debugging, JIT trace selection and other non-standard behavior. It does this by replacing the base pointer to the instruction handlers with an alternate base that references a set of dummy handlers that first call out the dvmCheckBefore() to handle special actions before routing control to the real handlers. This mechanism was slightly broken for the Jumbo ops - which have a first opcode byte of 0xFF (Dispatch), followed by the Jumbo opcode byte. In short, when the altHandlerBase was active dvmCheckBefore() was getting called for both the dispatch opcode byte and the Jumbo byte. This change adds special ALT_OP_DISPATCH_FF handlers which skip the dvmCheckBefore() call. Change-Id: If57c298a33404cdaca7456bc8fe1159c70240bea --- vm/mterp/config-armv7-a-neon | 2 ++ 1 file changed, 2 insertions(+) (limited to 'vm/mterp/config-armv7-a-neon') diff --git a/vm/mterp/config-armv7-a-neon b/vm/mterp/config-armv7-a-neon index 5f91365e0..fc98d9631 100644 --- a/vm/mterp/config-armv7-a-neon +++ b/vm/mterp/config-armv7-a-neon @@ -156,6 +156,8 @@ op-start armv5te op OP_SUB_DOUBLE_2ADDR arm-vfp op OP_SUB_FLOAT arm-vfp op OP_SUB_FLOAT_2ADDR arm-vfp + + alt OP_DISPATCH_FF armv5te op-end # "helper" code for C; include if you use any of the C stubs (this generates -- cgit v1.2.3