summaryrefslogtreecommitdiffstats
path: root/vm/mterp/config-armv7-a-neon
diff options
context:
space:
mode:
authorbuzbee <buzbee@google.com>2011-05-23 10:59:33 -0700
committerbuzbee <buzbee@google.com>2011-05-23 10:59:33 -0700
commit97b22b8d41742fa84812f46d1125e9735420782a (patch)
tree4a864196cd01441032b709a7510ae8f2e48539d1 /vm/mterp/config-armv7-a-neon
parentfe108f779db4fb3bc720a92e69e58177983088c1 (diff)
downloadandroid_dalvik-97b22b8d41742fa84812f46d1125e9735420782a.tar.gz
android_dalvik-97b22b8d41742fa84812f46d1125e9735420782a.tar.bz2
android_dalvik-97b22b8d41742fa84812f46d1125e9735420782a.zip
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
Diffstat (limited to 'vm/mterp/config-armv7-a-neon')
-rw-r--r--vm/mterp/config-armv7-a-neon2
1 files changed, 2 insertions, 0 deletions
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