diff options
author | buzbee <buzbee@google.com> | 2011-05-23 10:59:33 -0700 |
---|---|---|
committer | buzbee <buzbee@google.com> | 2011-05-23 10:59:33 -0700 |
commit | 97b22b8d41742fa84812f46d1125e9735420782a (patch) | |
tree | 4a864196cd01441032b709a7510ae8f2e48539d1 /vm/mterp/config-armv7-a-neon | |
parent | fe108f779db4fb3bc720a92e69e58177983088c1 (diff) | |
download | android_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-neon | 2 |
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 |