The ARM interpreter uses a form of computed goto to transition between handlers for each Dalvik byte code. Each handler gets a fixed-size 128-byte region (which is sufficient for most). However, if an opcode handler needs more than 128 bytes, it must explicitly branch to the "sister" region. For example, take a look at dalvik/vm/mterp/armv5te/OP_INVOKE_VIRTUAL.S. All code following the "%break" pseudo-op goes into the syster region (note: this is handled by rebuild.sh). It is customary to place the fast-path code within the fixed 128-byte region, and branch out to the sister region for uncommon paths.
The error you are seeing means that one of the instruction handlers has been modified such that it no longer fits within the fixed 128-byte region. You must either rewrite the handler to fit by either being more efficient, or by moving code out of the 128-byte region to the sister region. -- unsubscribe: [email protected] website: http://groups.google.com/group/android-porting
