ART: Refactor mterp slightly

Move marker labels to assembly to allow simpler machine-dependent
changes. Update the generator script. Regenerate the output.

Test: mmma art
Test: m test-art-host
Change-Id: Id32e060af9b2ef3ba5558a89e05ca0edfe4974c6
diff --git a/runtime/interpreter/mterp/arm/instruction_end.S b/runtime/interpreter/mterp/arm/instruction_end.S
new file mode 100644
index 0000000..32c725c
--- /dev/null
+++ b/runtime/interpreter/mterp/arm/instruction_end.S
@@ -0,0 +1,3 @@
+
+    .global artMterpAsmInstructionEnd
+artMterpAsmInstructionEnd:
diff --git a/runtime/interpreter/mterp/arm/instruction_end_alt.S b/runtime/interpreter/mterp/arm/instruction_end_alt.S
new file mode 100644
index 0000000..f90916f
--- /dev/null
+++ b/runtime/interpreter/mterp/arm/instruction_end_alt.S
@@ -0,0 +1,3 @@
+
+    .global artMterpAsmAltInstructionEnd
+artMterpAsmAltInstructionEnd:
diff --git a/runtime/interpreter/mterp/arm/instruction_end_sister.S b/runtime/interpreter/mterp/arm/instruction_end_sister.S
new file mode 100644
index 0000000..c5f4886
--- /dev/null
+++ b/runtime/interpreter/mterp/arm/instruction_end_sister.S
@@ -0,0 +1,3 @@
+
+    .global artMterpAsmSisterEnd
+artMterpAsmSisterEnd:
diff --git a/runtime/interpreter/mterp/arm/instruction_start.S b/runtime/interpreter/mterp/arm/instruction_start.S
new file mode 100644
index 0000000..8874c20
--- /dev/null
+++ b/runtime/interpreter/mterp/arm/instruction_start.S
@@ -0,0 +1,4 @@
+
+    .global artMterpAsmInstructionStart
+artMterpAsmInstructionStart = .L_op_nop
+    .text
diff --git a/runtime/interpreter/mterp/arm/instruction_start_alt.S b/runtime/interpreter/mterp/arm/instruction_start_alt.S
new file mode 100644
index 0000000..0c9ffdb
--- /dev/null
+++ b/runtime/interpreter/mterp/arm/instruction_start_alt.S
@@ -0,0 +1,4 @@
+
+    .global artMterpAsmAltInstructionStart
+artMterpAsmAltInstructionStart = .L_ALT_op_nop
+    .text
diff --git a/runtime/interpreter/mterp/arm/instruction_start_sister.S b/runtime/interpreter/mterp/arm/instruction_start_sister.S
new file mode 100644
index 0000000..2ec51f7
--- /dev/null
+++ b/runtime/interpreter/mterp/arm/instruction_start_sister.S
@@ -0,0 +1,5 @@
+
+    .global artMterpAsmSisterStart
+    .text
+    .balign 4
+artMterpAsmSisterStart:
diff --git a/runtime/interpreter/mterp/arm64/instruction_end.S b/runtime/interpreter/mterp/arm64/instruction_end.S
new file mode 100644
index 0000000..32c725c
--- /dev/null
+++ b/runtime/interpreter/mterp/arm64/instruction_end.S
@@ -0,0 +1,3 @@
+
+    .global artMterpAsmInstructionEnd
+artMterpAsmInstructionEnd:
diff --git a/runtime/interpreter/mterp/arm64/instruction_end_alt.S b/runtime/interpreter/mterp/arm64/instruction_end_alt.S
new file mode 100644
index 0000000..f90916f
--- /dev/null
+++ b/runtime/interpreter/mterp/arm64/instruction_end_alt.S
@@ -0,0 +1,3 @@
+
+    .global artMterpAsmAltInstructionEnd
+artMterpAsmAltInstructionEnd:
diff --git a/runtime/interpreter/mterp/arm64/instruction_end_sister.S b/runtime/interpreter/mterp/arm64/instruction_end_sister.S
new file mode 100644
index 0000000..c5f4886
--- /dev/null
+++ b/runtime/interpreter/mterp/arm64/instruction_end_sister.S
@@ -0,0 +1,3 @@
+
+    .global artMterpAsmSisterEnd
+artMterpAsmSisterEnd:
diff --git a/runtime/interpreter/mterp/arm64/instruction_start.S b/runtime/interpreter/mterp/arm64/instruction_start.S
new file mode 100644
index 0000000..8874c20
--- /dev/null
+++ b/runtime/interpreter/mterp/arm64/instruction_start.S
@@ -0,0 +1,4 @@
+
+    .global artMterpAsmInstructionStart
+artMterpAsmInstructionStart = .L_op_nop
+    .text
diff --git a/runtime/interpreter/mterp/arm64/instruction_start_alt.S b/runtime/interpreter/mterp/arm64/instruction_start_alt.S
new file mode 100644
index 0000000..0c9ffdb
--- /dev/null
+++ b/runtime/interpreter/mterp/arm64/instruction_start_alt.S
@@ -0,0 +1,4 @@
+
+    .global artMterpAsmAltInstructionStart
+artMterpAsmAltInstructionStart = .L_ALT_op_nop
+    .text
diff --git a/runtime/interpreter/mterp/arm64/instruction_start_sister.S b/runtime/interpreter/mterp/arm64/instruction_start_sister.S
new file mode 100644
index 0000000..2ec51f7
--- /dev/null
+++ b/runtime/interpreter/mterp/arm64/instruction_start_sister.S
@@ -0,0 +1,5 @@
+
+    .global artMterpAsmSisterStart
+    .text
+    .balign 4
+artMterpAsmSisterStart:
diff --git a/runtime/interpreter/mterp/gen_mterp.py b/runtime/interpreter/mterp/gen_mterp.py
index 64114d7..75c5174 100755
--- a/runtime/interpreter/mterp/gen_mterp.py
+++ b/runtime/interpreter/mterp/gen_mterp.py
@@ -279,13 +279,8 @@
     sister_list = []
     assert len(opcodes) == kNumPackedOpcodes
     need_dummy_start = False
-    start_label = global_name_format % "artMterpAsmInstructionStart"
-    end_label = global_name_format % "artMterpAsmInstructionEnd"
 
-    # point MterpAsmInstructionStart at the first handler or stub
-    asm_fp.write("\n    .global %s\n" % start_label)
-    asm_fp.write("%s = " % start_label + label_prefix + "_op_nop\n")
-    asm_fp.write("    .text\n\n")
+    loadAndEmitGenericAsm("instruction_start")
 
     for i in xrange(kNumPackedOpcodes):
         op = opcodes[i]
@@ -309,20 +304,14 @@
         asm_fp.write(label_prefix + "_op_nop:   /* dummy */\n");
 
     emitAlign()
-    asm_fp.write("    .global %s\n" % end_label)
-    asm_fp.write("%s:\n" % end_label)
+
+    loadAndEmitGenericAsm("instruction_end")
 
     if style == "computed-goto":
-        start_sister_label = global_name_format % "artMterpAsmSisterStart"
-        end_sister_label = global_name_format % "artMterpAsmSisterEnd"
         emitSectionComment("Sister implementations", asm_fp)
-        asm_fp.write("    .global %s\n" % start_sister_label)
-        asm_fp.write("    .text\n")
-        asm_fp.write("    .balign 4\n")
-        asm_fp.write("%s:\n" % start_sister_label)
+        loadAndEmitGenericAsm("instruction_start_sister")
         asm_fp.writelines(sister_list)
-        asm_fp.write("    .global %s\n" % end_sister_label)
-        asm_fp.write("%s:\n\n" % end_sister_label)
+        loadAndEmitGenericAsm("instruction_end_sister")
 
 #
 # Load an alternate entry stub
@@ -345,10 +334,7 @@
     start_label = global_name_format % "artMterpAsmAltInstructionStart"
     end_label = global_name_format % "artMterpAsmAltInstructionEnd"
 
-    # point MterpAsmInstructionStart at the first handler or stub
-    asm_fp.write("\n    .global %s\n" % start_label)
-    asm_fp.write("    .text\n\n")
-    asm_fp.write("%s = " % start_label + label_prefix + "_ALT_op_nop\n")
+    loadAndEmitGenericAsm("instruction_start_alt")
 
     for i in xrange(kNumPackedOpcodes):
         op = opcodes[i]
@@ -359,8 +345,8 @@
         loadAndEmitAltStub(source, i)
 
     emitAlign()
-    asm_fp.write("    .global %s\n" % end_label)
-    asm_fp.write("%s:\n" % end_label)
+
+    loadAndEmitGenericAsm("instruction_end_alt")
 
 #
 # Load an assembly fragment and emit it.
@@ -377,6 +363,14 @@
     appendSourceFile(source, dict, asm_fp, sister_list)
 
 #
+# Load a non-handler assembly fragment and emit it.
+#
+def loadAndEmitGenericAsm(name):
+    source = "%s/%s.S" % (default_op_dir, name)
+    dict = getGlobalSubDict()
+    appendSourceFile(source, dict, asm_fp, None)
+
+#
 # Emit fallback fragment
 #
 def emitFallback(opindex):
diff --git a/runtime/interpreter/mterp/mips/instruction_end.S b/runtime/interpreter/mterp/mips/instruction_end.S
new file mode 100644
index 0000000..32c725c
--- /dev/null
+++ b/runtime/interpreter/mterp/mips/instruction_end.S
@@ -0,0 +1,3 @@
+
+    .global artMterpAsmInstructionEnd
+artMterpAsmInstructionEnd:
diff --git a/runtime/interpreter/mterp/mips/instruction_end_alt.S b/runtime/interpreter/mterp/mips/instruction_end_alt.S
new file mode 100644
index 0000000..f90916f
--- /dev/null
+++ b/runtime/interpreter/mterp/mips/instruction_end_alt.S
@@ -0,0 +1,3 @@
+
+    .global artMterpAsmAltInstructionEnd
+artMterpAsmAltInstructionEnd:
diff --git a/runtime/interpreter/mterp/mips/instruction_end_sister.S b/runtime/interpreter/mterp/mips/instruction_end_sister.S
new file mode 100644
index 0000000..c5f4886
--- /dev/null
+++ b/runtime/interpreter/mterp/mips/instruction_end_sister.S
@@ -0,0 +1,3 @@
+
+    .global artMterpAsmSisterEnd
+artMterpAsmSisterEnd:
diff --git a/runtime/interpreter/mterp/mips/instruction_start.S b/runtime/interpreter/mterp/mips/instruction_start.S
new file mode 100644
index 0000000..8874c20
--- /dev/null
+++ b/runtime/interpreter/mterp/mips/instruction_start.S
@@ -0,0 +1,4 @@
+
+    .global artMterpAsmInstructionStart
+artMterpAsmInstructionStart = .L_op_nop
+    .text
diff --git a/runtime/interpreter/mterp/mips/instruction_start_alt.S b/runtime/interpreter/mterp/mips/instruction_start_alt.S
new file mode 100644
index 0000000..0c9ffdb
--- /dev/null
+++ b/runtime/interpreter/mterp/mips/instruction_start_alt.S
@@ -0,0 +1,4 @@
+
+    .global artMterpAsmAltInstructionStart
+artMterpAsmAltInstructionStart = .L_ALT_op_nop
+    .text
diff --git a/runtime/interpreter/mterp/mips/instruction_start_sister.S b/runtime/interpreter/mterp/mips/instruction_start_sister.S
new file mode 100644
index 0000000..2ec51f7
--- /dev/null
+++ b/runtime/interpreter/mterp/mips/instruction_start_sister.S
@@ -0,0 +1,5 @@
+
+    .global artMterpAsmSisterStart
+    .text
+    .balign 4
+artMterpAsmSisterStart:
diff --git a/runtime/interpreter/mterp/mips64/instruction_end.S b/runtime/interpreter/mterp/mips64/instruction_end.S
new file mode 100644
index 0000000..32c725c
--- /dev/null
+++ b/runtime/interpreter/mterp/mips64/instruction_end.S
@@ -0,0 +1,3 @@
+
+    .global artMterpAsmInstructionEnd
+artMterpAsmInstructionEnd:
diff --git a/runtime/interpreter/mterp/mips64/instruction_end_alt.S b/runtime/interpreter/mterp/mips64/instruction_end_alt.S
new file mode 100644
index 0000000..f90916f
--- /dev/null
+++ b/runtime/interpreter/mterp/mips64/instruction_end_alt.S
@@ -0,0 +1,3 @@
+
+    .global artMterpAsmAltInstructionEnd
+artMterpAsmAltInstructionEnd:
diff --git a/runtime/interpreter/mterp/mips64/instruction_end_sister.S b/runtime/interpreter/mterp/mips64/instruction_end_sister.S
new file mode 100644
index 0000000..c5f4886
--- /dev/null
+++ b/runtime/interpreter/mterp/mips64/instruction_end_sister.S
@@ -0,0 +1,3 @@
+
+    .global artMterpAsmSisterEnd
+artMterpAsmSisterEnd:
diff --git a/runtime/interpreter/mterp/mips64/instruction_start.S b/runtime/interpreter/mterp/mips64/instruction_start.S
new file mode 100644
index 0000000..8874c20
--- /dev/null
+++ b/runtime/interpreter/mterp/mips64/instruction_start.S
@@ -0,0 +1,4 @@
+
+    .global artMterpAsmInstructionStart
+artMterpAsmInstructionStart = .L_op_nop
+    .text
diff --git a/runtime/interpreter/mterp/mips64/instruction_start_alt.S b/runtime/interpreter/mterp/mips64/instruction_start_alt.S
new file mode 100644
index 0000000..0c9ffdb
--- /dev/null
+++ b/runtime/interpreter/mterp/mips64/instruction_start_alt.S
@@ -0,0 +1,4 @@
+
+    .global artMterpAsmAltInstructionStart
+artMterpAsmAltInstructionStart = .L_ALT_op_nop
+    .text
diff --git a/runtime/interpreter/mterp/mips64/instruction_start_sister.S b/runtime/interpreter/mterp/mips64/instruction_start_sister.S
new file mode 100644
index 0000000..2ec51f7
--- /dev/null
+++ b/runtime/interpreter/mterp/mips64/instruction_start_sister.S
@@ -0,0 +1,5 @@
+
+    .global artMterpAsmSisterStart
+    .text
+    .balign 4
+artMterpAsmSisterStart:
diff --git a/runtime/interpreter/mterp/out/mterp_arm.S b/runtime/interpreter/mterp/out/mterp_arm.S
index 7ea7982..b2702a9 100644
--- a/runtime/interpreter/mterp/out/mterp_arm.S
+++ b/runtime/interpreter/mterp/out/mterp_arm.S
@@ -396,6 +396,7 @@
     GOTO_OPCODE ip                      @ jump to next instruction
     /* NOTE: no fallthrough */
 
+/* File: arm/instruction_start.S */
 
     .global artMterpAsmInstructionStart
 artMterpAsmInstructionStart = .L_op_nop
@@ -7509,19 +7510,25 @@
 
 
     .balign 128
+/* File: arm/instruction_end.S */
+
     .global artMterpAsmInstructionEnd
 artMterpAsmInstructionEnd:
 
+
 /*
  * ===========================================================================
  *  Sister implementations
  * ===========================================================================
  */
+/* File: arm/instruction_start_sister.S */
+
     .global artMterpAsmSisterStart
     .text
     .balign 4
 artMterpAsmSisterStart:
 
+
 /* continuation for op_float_to_long */
 /*
  * Convert the float in r0 to a long in r0/r1.
@@ -7583,14 +7590,17 @@
     mov     r0, #0
     mov     r1, #0
     bx      lr                          @ return 0 for NaN
+/* File: arm/instruction_end_sister.S */
+
     .global artMterpAsmSisterEnd
 artMterpAsmSisterEnd:
 
+/* File: arm/instruction_start_alt.S */
 
     .global artMterpAsmAltInstructionStart
+artMterpAsmAltInstructionStart = .L_ALT_op_nop
     .text
 
-artMterpAsmAltInstructionStart = .L_ALT_op_nop
 /* ------------------------------ */
     .balign 128
 .L_ALT_op_nop: /* 0x00 */
@@ -11944,8 +11954,11 @@
     b      MterpCheckBefore     @ (self, shadow_frame, dex_pc_ptr)  @ Tail call.
 
     .balign 128
+/* File: arm/instruction_end_alt.S */
+
     .global artMterpAsmAltInstructionEnd
 artMterpAsmAltInstructionEnd:
+
 /* File: arm/footer.S */
 /*
  * ===========================================================================
diff --git a/runtime/interpreter/mterp/out/mterp_arm64.S b/runtime/interpreter/mterp/out/mterp_arm64.S
index 70f71ff..2a0c4df 100644
--- a/runtime/interpreter/mterp/out/mterp_arm64.S
+++ b/runtime/interpreter/mterp/out/mterp_arm64.S
@@ -427,6 +427,7 @@
     GOTO_OPCODE ip                      // jump to next instruction
     /* NOTE: no fallthrough */
 
+/* File: arm64/instruction_start.S */
 
     .global artMterpAsmInstructionStart
 artMterpAsmInstructionStart = .L_op_nop
@@ -7075,18 +7076,26 @@
 
 
     .balign 128
+/* File: arm64/instruction_end.S */
+
     .global artMterpAsmInstructionEnd
 artMterpAsmInstructionEnd:
 
+
 /*
  * ===========================================================================
  *  Sister implementations
  * ===========================================================================
  */
+/* File: arm64/instruction_start_sister.S */
+
     .global artMterpAsmSisterStart
     .text
     .balign 4
 artMterpAsmSisterStart:
+
+/* File: arm64/instruction_end_sister.S */
+
     .global artMterpAsmSisterEnd
 artMterpAsmSisterEnd:
 
@@ -7398,11 +7407,12 @@
     ret
 
 
+/* File: arm64/instruction_start_alt.S */
 
     .global artMterpAsmAltInstructionStart
+artMterpAsmAltInstructionStart = .L_ALT_op_nop
     .text
 
-artMterpAsmAltInstructionStart = .L_ALT_op_nop
 /* ------------------------------ */
     .balign 128
 .L_ALT_op_nop: /* 0x00 */
@@ -11756,8 +11766,11 @@
     b      MterpCheckBefore     // (self, shadow_frame, dex_pc_ptr) Note: tail call.
 
     .balign 128
+/* File: arm64/instruction_end_alt.S */
+
     .global artMterpAsmAltInstructionEnd
 artMterpAsmAltInstructionEnd:
+
 /* File: arm64/close_cfi.S */
 // Close out the cfi info.  We're treating mterp as a single function.
 
diff --git a/runtime/interpreter/mterp/out/mterp_mips.S b/runtime/interpreter/mterp/out/mterp_mips.S
index 69568ea..3b86279 100644
--- a/runtime/interpreter/mterp/out/mterp_mips.S
+++ b/runtime/interpreter/mterp/out/mterp_mips.S
@@ -810,6 +810,7 @@
     GOTO_OPCODE(t0)                        # jump to next instruction
     /* NOTE: no fallthrough */
 
+/* File: mips/instruction_start.S */
 
     .global artMterpAsmInstructionStart
 artMterpAsmInstructionStart = .L_op_nop
@@ -7873,19 +7874,25 @@
 
 
     .balign 128
+/* File: mips/instruction_end.S */
+
     .global artMterpAsmInstructionEnd
 artMterpAsmInstructionEnd:
 
+
 /*
  * ===========================================================================
  *  Sister implementations
  * ===========================================================================
  */
+/* File: mips/instruction_start_sister.S */
+
     .global artMterpAsmSisterStart
     .text
     .balign 4
 artMterpAsmSisterStart:
 
+
 /* continuation for op_float_to_long */
 
 #ifndef MIPS32REVGE6
@@ -7941,14 +7948,17 @@
 
 .Lop_ushr_long_2addr_finish:
     SET_VREG64_GOTO(v1, zero, t3, t0)      #  vA/vA+1 <- rlo/rhi
+/* File: mips/instruction_end_sister.S */
+
     .global artMterpAsmSisterEnd
 artMterpAsmSisterEnd:
 
+/* File: mips/instruction_start_alt.S */
 
     .global artMterpAsmAltInstructionStart
+artMterpAsmAltInstructionStart = .L_ALT_op_nop
     .text
 
-artMterpAsmAltInstructionStart = .L_ALT_op_nop
 /* ------------------------------ */
     .balign 128
 .L_ALT_op_nop: /* 0x00 */
@@ -12558,8 +12568,11 @@
     jalr   zero, t9                     # Tail call to Mterp(self, shadow_frame, dex_pc_ptr)
 
     .balign 128
+/* File: mips/instruction_end_alt.S */
+
     .global artMterpAsmAltInstructionEnd
 artMterpAsmAltInstructionEnd:
+
 /* File: mips/footer.S */
 /*
  * ===========================================================================
diff --git a/runtime/interpreter/mterp/out/mterp_mips64.S b/runtime/interpreter/mterp/out/mterp_mips64.S
index 83a6613..58f98df 100644
--- a/runtime/interpreter/mterp/out/mterp_mips64.S
+++ b/runtime/interpreter/mterp/out/mterp_mips64.S
@@ -430,6 +430,7 @@
 
     /* NOTE: no fallthrough */
 
+/* File: mips64/instruction_start.S */
 
     .global artMterpAsmInstructionStart
 artMterpAsmInstructionStart = .L_op_nop
@@ -7299,26 +7300,35 @@
 
 
     .balign 128
+/* File: mips64/instruction_end.S */
+
     .global artMterpAsmInstructionEnd
 artMterpAsmInstructionEnd:
 
+
 /*
  * ===========================================================================
  *  Sister implementations
  * ===========================================================================
  */
+/* File: mips64/instruction_start_sister.S */
+
     .global artMterpAsmSisterStart
     .text
     .balign 4
 artMterpAsmSisterStart:
+
+/* File: mips64/instruction_end_sister.S */
+
     .global artMterpAsmSisterEnd
 artMterpAsmSisterEnd:
 
+/* File: mips64/instruction_start_alt.S */
 
     .global artMterpAsmAltInstructionStart
+artMterpAsmAltInstructionStart = .L_ALT_op_nop
     .text
 
-artMterpAsmAltInstructionStart = .L_ALT_op_nop
 /* ------------------------------ */
     .balign 128
 .L_ALT_op_nop: /* 0x00 */
@@ -12184,8 +12194,11 @@
     jalr    zero, t9                            # (self, shadow_frame, dex_pc_ptr) Note: tail call.
 
     .balign 128
+/* File: mips64/instruction_end_alt.S */
+
     .global artMterpAsmAltInstructionEnd
 artMterpAsmAltInstructionEnd:
+
 /* File: mips64/footer.S */
 /*
  * We've detected a condition that will result in an exception, but the exception
diff --git a/runtime/interpreter/mterp/out/mterp_x86.S b/runtime/interpreter/mterp/out/mterp_x86.S
index 1eacfe8..6be70cc 100644
--- a/runtime/interpreter/mterp/out/mterp_x86.S
+++ b/runtime/interpreter/mterp/out/mterp_x86.S
@@ -405,6 +405,7 @@
     GOTO_NEXT
     /* NOTE: no fallthrough */
 
+/* File: x86/instruction_start.S */
 
     .global SYMBOL(artMterpAsmInstructionStart)
 SYMBOL(artMterpAsmInstructionStart) = .L_op_nop
@@ -6470,26 +6471,35 @@
 
 
     .balign 128
+/* File: x86/instruction_end.S */
+
     .global SYMBOL(artMterpAsmInstructionEnd)
 SYMBOL(artMterpAsmInstructionEnd):
 
+
 /*
  * ===========================================================================
  *  Sister implementations
  * ===========================================================================
  */
+/* File: x86/instruction_start_sister.S */
+
     .global SYMBOL(artMterpAsmSisterStart)
     .text
     .balign 4
 SYMBOL(artMterpAsmSisterStart):
+
+/* File: x86/instruction_end_sister.S */
+
     .global SYMBOL(artMterpAsmSisterEnd)
 SYMBOL(artMterpAsmSisterEnd):
 
+/* File: x86/instruction_start_alt.S */
 
     .global SYMBOL(artMterpAsmAltInstructionStart)
     .text
-
 SYMBOL(artMterpAsmAltInstructionStart) = .L_ALT_op_nop
+
 /* ------------------------------ */
     .balign 128
 .L_ALT_op_nop: /* 0x00 */
@@ -12635,8 +12645,11 @@
     jmp     .L_op_nop+(255*128)
 
     .balign 128
+/* File: x86/instruction_end_alt.S */
+
     .global SYMBOL(artMterpAsmAltInstructionEnd)
 SYMBOL(artMterpAsmAltInstructionEnd):
+
 /* File: x86/footer.S */
 /*
  * ===========================================================================
diff --git a/runtime/interpreter/mterp/out/mterp_x86_64.S b/runtime/interpreter/mterp/out/mterp_x86_64.S
index ea8f483..562cf7c 100644
--- a/runtime/interpreter/mterp/out/mterp_x86_64.S
+++ b/runtime/interpreter/mterp/out/mterp_x86_64.S
@@ -387,6 +387,7 @@
     GOTO_NEXT
     /* NOTE: no fallthrough */
 
+/* File: x86_64/instruction_start.S */
 
     .global SYMBOL(artMterpAsmInstructionStart)
 SYMBOL(artMterpAsmInstructionStart) = .L_op_nop
@@ -6217,26 +6218,35 @@
 
 
     .balign 128
+/* File: x86_64/instruction_end.S */
+
     .global SYMBOL(artMterpAsmInstructionEnd)
 SYMBOL(artMterpAsmInstructionEnd):
 
+
 /*
  * ===========================================================================
  *  Sister implementations
  * ===========================================================================
  */
+/* File: x86_64/instruction_start_sister.S */
+
     .global SYMBOL(artMterpAsmSisterStart)
     .text
     .balign 4
 SYMBOL(artMterpAsmSisterStart):
+
+/* File: x86_64/instruction_end_sister.S */
+
     .global SYMBOL(artMterpAsmSisterEnd)
 SYMBOL(artMterpAsmSisterEnd):
 
+/* File: x86_64/instruction_start_alt.S */
 
     .global SYMBOL(artMterpAsmAltInstructionStart)
     .text
-
 SYMBOL(artMterpAsmAltInstructionStart) = .L_ALT_op_nop
+
 /* ------------------------------ */
     .balign 128
 .L_ALT_op_nop: /* 0x00 */
@@ -11870,8 +11880,11 @@
     jmp     .L_op_nop+(255*128)
 
     .balign 128
+/* File: x86_64/instruction_end_alt.S */
+
     .global SYMBOL(artMterpAsmAltInstructionEnd)
 SYMBOL(artMterpAsmAltInstructionEnd):
+
 /* File: x86_64/footer.S */
 /*
  * ===========================================================================
diff --git a/runtime/interpreter/mterp/x86/instruction_end.S b/runtime/interpreter/mterp/x86/instruction_end.S
new file mode 100644
index 0000000..3a02a21
--- /dev/null
+++ b/runtime/interpreter/mterp/x86/instruction_end.S
@@ -0,0 +1,3 @@
+
+    .global SYMBOL(artMterpAsmInstructionEnd)
+SYMBOL(artMterpAsmInstructionEnd):
diff --git a/runtime/interpreter/mterp/x86/instruction_end_alt.S b/runtime/interpreter/mterp/x86/instruction_end_alt.S
new file mode 100644
index 0000000..33c2b8e
--- /dev/null
+++ b/runtime/interpreter/mterp/x86/instruction_end_alt.S
@@ -0,0 +1,3 @@
+
+    .global SYMBOL(artMterpAsmAltInstructionEnd)
+SYMBOL(artMterpAsmAltInstructionEnd):
diff --git a/runtime/interpreter/mterp/x86/instruction_end_sister.S b/runtime/interpreter/mterp/x86/instruction_end_sister.S
new file mode 100644
index 0000000..ea14b11
--- /dev/null
+++ b/runtime/interpreter/mterp/x86/instruction_end_sister.S
@@ -0,0 +1,3 @@
+
+    .global SYMBOL(artMterpAsmSisterEnd)
+SYMBOL(artMterpAsmSisterEnd):
diff --git a/runtime/interpreter/mterp/x86/instruction_start.S b/runtime/interpreter/mterp/x86/instruction_start.S
new file mode 100644
index 0000000..ca711de
--- /dev/null
+++ b/runtime/interpreter/mterp/x86/instruction_start.S
@@ -0,0 +1,4 @@
+
+    .global SYMBOL(artMterpAsmInstructionStart)
+SYMBOL(artMterpAsmInstructionStart) = .L_op_nop
+    .text
diff --git a/runtime/interpreter/mterp/x86/instruction_start_alt.S b/runtime/interpreter/mterp/x86/instruction_start_alt.S
new file mode 100644
index 0000000..9272a6a
--- /dev/null
+++ b/runtime/interpreter/mterp/x86/instruction_start_alt.S
@@ -0,0 +1,4 @@
+
+    .global SYMBOL(artMterpAsmAltInstructionStart)
+    .text
+SYMBOL(artMterpAsmAltInstructionStart) = .L_ALT_op_nop
diff --git a/runtime/interpreter/mterp/x86/instruction_start_sister.S b/runtime/interpreter/mterp/x86/instruction_start_sister.S
new file mode 100644
index 0000000..b9ac994
--- /dev/null
+++ b/runtime/interpreter/mterp/x86/instruction_start_sister.S
@@ -0,0 +1,5 @@
+
+    .global SYMBOL(artMterpAsmSisterStart)
+    .text
+    .balign 4
+SYMBOL(artMterpAsmSisterStart):
diff --git a/runtime/interpreter/mterp/x86_64/instruction_end.S b/runtime/interpreter/mterp/x86_64/instruction_end.S
new file mode 100644
index 0000000..3a02a21
--- /dev/null
+++ b/runtime/interpreter/mterp/x86_64/instruction_end.S
@@ -0,0 +1,3 @@
+
+    .global SYMBOL(artMterpAsmInstructionEnd)
+SYMBOL(artMterpAsmInstructionEnd):
diff --git a/runtime/interpreter/mterp/x86_64/instruction_end_alt.S b/runtime/interpreter/mterp/x86_64/instruction_end_alt.S
new file mode 100644
index 0000000..33c2b8e
--- /dev/null
+++ b/runtime/interpreter/mterp/x86_64/instruction_end_alt.S
@@ -0,0 +1,3 @@
+
+    .global SYMBOL(artMterpAsmAltInstructionEnd)
+SYMBOL(artMterpAsmAltInstructionEnd):
diff --git a/runtime/interpreter/mterp/x86_64/instruction_end_sister.S b/runtime/interpreter/mterp/x86_64/instruction_end_sister.S
new file mode 100644
index 0000000..ea14b11
--- /dev/null
+++ b/runtime/interpreter/mterp/x86_64/instruction_end_sister.S
@@ -0,0 +1,3 @@
+
+    .global SYMBOL(artMterpAsmSisterEnd)
+SYMBOL(artMterpAsmSisterEnd):
diff --git a/runtime/interpreter/mterp/x86_64/instruction_start.S b/runtime/interpreter/mterp/x86_64/instruction_start.S
new file mode 100644
index 0000000..ca711de
--- /dev/null
+++ b/runtime/interpreter/mterp/x86_64/instruction_start.S
@@ -0,0 +1,4 @@
+
+    .global SYMBOL(artMterpAsmInstructionStart)
+SYMBOL(artMterpAsmInstructionStart) = .L_op_nop
+    .text
diff --git a/runtime/interpreter/mterp/x86_64/instruction_start_alt.S b/runtime/interpreter/mterp/x86_64/instruction_start_alt.S
new file mode 100644
index 0000000..9272a6a
--- /dev/null
+++ b/runtime/interpreter/mterp/x86_64/instruction_start_alt.S
@@ -0,0 +1,4 @@
+
+    .global SYMBOL(artMterpAsmAltInstructionStart)
+    .text
+SYMBOL(artMterpAsmAltInstructionStart) = .L_ALT_op_nop
diff --git a/runtime/interpreter/mterp/x86_64/instruction_start_sister.S b/runtime/interpreter/mterp/x86_64/instruction_start_sister.S
new file mode 100644
index 0000000..b9ac994
--- /dev/null
+++ b/runtime/interpreter/mterp/x86_64/instruction_start_sister.S
@@ -0,0 +1,5 @@
+
+    .global SYMBOL(artMterpAsmSisterStart)
+    .text
+    .balign 4
+SYMBOL(artMterpAsmSisterStart):