Fix a JIT bug where invoke-direct-empty is the last instruction in the trace.
diff --git a/vm/compiler/Frontend.c b/vm/compiler/Frontend.c
index c717975..66060a0 100644
--- a/vm/compiler/Frontend.c
+++ b/vm/compiler/Frontend.c
@@ -428,10 +428,14 @@
* currently only due to trace length constraint. In this case we need
* to generate an explicit branch at the end of the block to jump to
* the chaining cell.
+ *
+ * NOTE: INVOKE_DIRECT_EMPTY is actually not an invoke but a nop
*/
curBB->needFallThroughBranch =
- (flags & (kInstrCanBranch | kInstrCanSwitch | kInstrCanReturn |
- kInstrInvoke)) == 0;
+ ((flags & (kInstrCanBranch | kInstrCanSwitch | kInstrCanReturn |
+ kInstrInvoke)) == 0) ||
+ (lastInsn->dalvikInsn.opCode == OP_INVOKE_DIRECT_EMPTY);
+
/* Target block not included in the trace */
if (curBB->taken == NULL &&