diff options
| author | 2018-05-30 12:04:26 -0700 | |
|---|---|---|
| committer | 2018-05-30 16:45:18 -0700 | |
| commit | ecec8284f56d01f360762402d572740d88c244c6 (patch) | |
| tree | fdaed0717c52099d14942ae82e4469d015399804 | |
| parent | f5fc6bcdd98f50807756347ac19e8565bce3b6b5 (diff) | |
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
43 files changed, 232 insertions, 28 deletions
diff --git a/runtime/interpreter/mterp/arm/instruction_end.S b/runtime/interpreter/mterp/arm/instruction_end.S new file mode 100644 index 0000000000..32c725c7d9 --- /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 0000000000..f90916fc02 --- /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 0000000000..c5f4886697 --- /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 0000000000..8874c20540 --- /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 0000000000..0c9ffdb7d6 --- /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 0000000000..2ec51f7261 --- /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 0000000000..32c725c7d9 --- /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 0000000000..f90916fc02 --- /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 0000000000..c5f4886697 --- /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 0000000000..8874c20540 --- /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 0000000000..0c9ffdb7d6 --- /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 0000000000..2ec51f7261 --- /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 64114d747a..75c5174bcb 100755 --- a/runtime/interpreter/mterp/gen_mterp.py +++ b/runtime/interpreter/mterp/gen_mterp.py @@ -279,13 +279,8 @@ def loadAndEmitOpcodes(): 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 @@ def loadAndEmitOpcodes(): 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 @@ def loadAndEmitAltOpcodes(): 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 @@ def loadAndEmitAltOpcodes(): 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 @@ def loadAndEmitAsm(location, opindex, sister_list): 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 0000000000..32c725c7d9 --- /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 0000000000..f90916fc02 --- /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 0000000000..c5f4886697 --- /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 0000000000..8874c20540 --- /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 0000000000..0c9ffdb7d6 --- /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 0000000000..2ec51f7261 --- /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 0000000000..32c725c7d9 --- /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 0000000000..f90916fc02 --- /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 0000000000..c5f4886697 --- /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 0000000000..8874c20540 --- /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 0000000000..0c9ffdb7d6 --- /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 0000000000..2ec51f7261 --- /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 7ea79821b4..b2702a9ffc 100644 --- a/runtime/interpreter/mterp/out/mterp_arm.S +++ b/runtime/interpreter/mterp/out/mterp_arm.S @@ -396,6 +396,7 @@ ENTRY ExecuteMterpImpl 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 @@ constvalop_long_to_double: .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 @@ d2l_maybeNaN: 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 @@ artMterpAsmAltInstructionStart = .L_ALT_op_nop 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 70f71ff2bc..2a0c4df3e2 100644 --- a/runtime/interpreter/mterp/out/mterp_arm64.S +++ b/runtime/interpreter/mterp/out/mterp_arm64.S @@ -427,6 +427,7 @@ ENTRY ExecuteMterpImpl 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 @@ artMterpAsmInstructionStart = .L_op_nop .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 @@ MterpProfileActive: 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 @@ artMterpAsmAltInstructionStart = .L_ALT_op_nop 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 69568eaf44..3b86279b47 100644 --- a/runtime/interpreter/mterp/out/mterp_mips.S +++ b/runtime/interpreter/mterp/out/mterp_mips.S @@ -810,6 +810,7 @@ ExecuteMterpImpl: 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 @@ artMterpAsmInstructionStart = .L_op_nop .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 @@ artMterpAsmSisterStart: .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 @@ artMterpAsmAltInstructionStart = .L_ALT_op_nop 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 83a6613e37..58f98dfabb 100644 --- a/runtime/interpreter/mterp/out/mterp_mips64.S +++ b/runtime/interpreter/mterp/out/mterp_mips64.S @@ -430,6 +430,7 @@ ExecuteMterpImpl: /* NOTE: no fallthrough */ +/* File: mips64/instruction_start.S */ .global artMterpAsmInstructionStart artMterpAsmInstructionStart = .L_op_nop @@ -7299,26 +7300,35 @@ artMterpAsmInstructionStart = .L_op_nop .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 @@ artMterpAsmAltInstructionStart = .L_ALT_op_nop 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 1eacfe8736..6be70cce4c 100644 --- a/runtime/interpreter/mterp/out/mterp_x86.S +++ b/runtime/interpreter/mterp/out/mterp_x86.S @@ -405,6 +405,7 @@ SYMBOL(ExecuteMterpImpl): GOTO_NEXT /* NOTE: no fallthrough */ +/* File: x86/instruction_start.S */ .global SYMBOL(artMterpAsmInstructionStart) SYMBOL(artMterpAsmInstructionStart) = .L_op_nop @@ -6470,26 +6471,35 @@ SYMBOL(artMterpAsmInstructionStart) = .L_op_nop .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 @@ SYMBOL(artMterpAsmAltInstructionStart) = .L_ALT_op_nop 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 ea8f483e95..562cf7ceb6 100644 --- a/runtime/interpreter/mterp/out/mterp_x86_64.S +++ b/runtime/interpreter/mterp/out/mterp_x86_64.S @@ -387,6 +387,7 @@ SYMBOL(ExecuteMterpImpl): GOTO_NEXT /* NOTE: no fallthrough */ +/* File: x86_64/instruction_start.S */ .global SYMBOL(artMterpAsmInstructionStart) SYMBOL(artMterpAsmInstructionStart) = .L_op_nop @@ -6217,26 +6218,35 @@ movswl %ax, %eax .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 @@ SYMBOL(artMterpAsmAltInstructionStart) = .L_ALT_op_nop 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 0000000000..3a02a212e6 --- /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 0000000000..33c2b8e2a0 --- /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 0000000000..ea14b11ede --- /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 0000000000..ca711de00c --- /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 0000000000..9272a6a7b0 --- /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 0000000000..b9ac994d32 --- /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 0000000000..3a02a212e6 --- /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 0000000000..33c2b8e2a0 --- /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 0000000000..ea14b11ede --- /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 0000000000..ca711de00c --- /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 0000000000..9272a6a7b0 --- /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 0000000000..b9ac994d32 --- /dev/null +++ b/runtime/interpreter/mterp/x86_64/instruction_start_sister.S @@ -0,0 +1,5 @@ + + .global SYMBOL(artMterpAsmSisterStart) + .text + .balign 4 +SYMBOL(artMterpAsmSisterStart): |