OSDN Git Service

Fix alt handling for Jumbo ops
authorbuzbee <buzbee@google.com>
Mon, 23 May 2011 17:59:33 +0000 (10:59 -0700)
committerbuzbee <buzbee@google.com>
Mon, 23 May 2011 17:59:33 +0000 (10:59 -0700)
commit97b22b8d41742fa84812f46d1125e9735420782a
tree4a864196cd01441032b709a7510ae8f2e48539d1
parentfe108f779db4fb3bc720a92e69e58177983088c1
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
12 files changed:
vm/mterp/armv5te/ALT_OP_DISPATCH_FF.S [new file with mode: 0644]
vm/mterp/config-armv5te
vm/mterp/config-armv5te-vfp
vm/mterp/config-armv7-a
vm/mterp/config-armv7-a-neon
vm/mterp/config-x86
vm/mterp/out/InterpAsm-armv5te-vfp.S
vm/mterp/out/InterpAsm-armv5te.S
vm/mterp/out/InterpAsm-armv7-a-neon.S
vm/mterp/out/InterpAsm-armv7-a.S
vm/mterp/out/InterpAsm-x86.S
vm/mterp/x86/ALT_OP_DISPATCH_FF.S [new file with mode: 0644]