diff options
author | 2021-03-23 08:09:15 +0000 | |
---|---|---|
committer | 2021-03-27 13:19:58 +0000 | |
commit | c5cd58914325c7fcfd89b1a5bf4daa475c2d83ef (patch) | |
tree | 847a50eaa8331baf617f0fc3161cf36b7fc28680 | |
parent | b3f5c5008770d22a24db6a66bf97bd5a9d32b4ff (diff) |
Remove QUICK bytecodes.
Remove the deprecated unofficial (not part of the spec) bytecodes.
This frees the 16 bytecodes for future use.
Bug: 170086509
Test: m test-art-host-gtest
Test: test.py -r -b --host
Change-Id: I9f6d8a2c21b88f883c8fdc1eb67b24620f313d56
33 files changed, 449 insertions, 634 deletions
diff --git a/compiler/optimizing/instruction_builder.cc b/compiler/optimizing/instruction_builder.cc index 146eb1d223..ee6113f780 100644 --- a/compiler/optimizing/instruction_builder.cc +++ b/compiler/optimizing/instruction_builder.cc @@ -3560,37 +3560,10 @@ bool HInstructionBuilder::ProcessDexInstruction(const Instruction& instruction, break; } - case Instruction::IGET_QUICK: - case Instruction::IGET_BOOLEAN_QUICK: - case Instruction::IGET_BYTE_QUICK: - case Instruction::IGET_SHORT_QUICK: - case Instruction::IGET_CHAR_QUICK: - case Instruction::IGET_WIDE_QUICK: - case Instruction::IGET_OBJECT_QUICK: - case Instruction::IPUT_QUICK: - case Instruction::IPUT_BOOLEAN_QUICK: - case Instruction::IPUT_BYTE_QUICK: - case Instruction::IPUT_SHORT_QUICK: - case Instruction::IPUT_CHAR_QUICK: - case Instruction::IPUT_WIDE_QUICK: - case Instruction::IPUT_OBJECT_QUICK: - case Instruction::INVOKE_VIRTUAL_QUICK: - case Instruction::INVOKE_VIRTUAL_RANGE_QUICK: - case Instruction::UNUSED_3E: - case Instruction::UNUSED_3F: - case Instruction::UNUSED_40: - case Instruction::UNUSED_41: - case Instruction::UNUSED_42: - case Instruction::UNUSED_43: + case Instruction::UNUSED_3E ... Instruction::UNUSED_43: case Instruction::UNUSED_79: case Instruction::UNUSED_7A: - case Instruction::UNUSED_F3: - case Instruction::UNUSED_F4: - case Instruction::UNUSED_F5: - case Instruction::UNUSED_F6: - case Instruction::UNUSED_F7: - case Instruction::UNUSED_F8: - case Instruction::UNUSED_F9: { + case Instruction::UNUSED_E3 ... Instruction::UNUSED_F9: { VLOG(compiler) << "Did not compile " << dex_file_->PrettyMethod(dex_compilation_unit_->GetDexMethodIndex()) << " because of unhandled instruction " diff --git a/libdexfile/dex/dex_instruction.cc b/libdexfile/dex/dex_instruction.cc index 93270cd9cb..11a2d97691 100644 --- a/libdexfile/dex/dex_instruction.cc +++ b/libdexfile/dex/dex_instruction.cc @@ -281,15 +281,6 @@ std::string Instruction::DumpString(const DexFile* file) const { break; } FALLTHROUGH_INTENDED; - case IGET_QUICK: - case IGET_OBJECT_QUICK: - if (file != nullptr) { - uint32_t field_idx = VRegC_22c(); - os << opcode << " v" << static_cast<int>(VRegA_22c()) << ", v" << static_cast<int>(VRegB_22c()) << ", " - << "// offset@" << field_idx; - break; - } - FALLTHROUGH_INTENDED; case IPUT: case IPUT_WIDE: case IPUT_OBJECT: @@ -304,15 +295,6 @@ std::string Instruction::DumpString(const DexFile* file) const { break; } FALLTHROUGH_INTENDED; - case IPUT_QUICK: - case IPUT_OBJECT_QUICK: - if (file != nullptr) { - uint32_t field_idx = VRegC_22c(); - os << opcode << " v" << static_cast<int>(VRegA_22c()) << ", v" << static_cast<int>(VRegB_22c()) << ", " - << "// offset@" << field_idx; - break; - } - FALLTHROUGH_INTENDED; case INSTANCE_OF: if (file != nullptr) { dex::TypeIndex type_idx(VRegC_22c()); @@ -399,15 +381,6 @@ std::string Instruction::DumpString(const DexFile* file) const { break; } FALLTHROUGH_INTENDED; - case INVOKE_VIRTUAL_QUICK: - if (file != nullptr) { - os << opcode << " {"; - uint32_t vtable_offset = VRegB_35c(); - DumpArgs(VRegA_35c()); - os << "}, // vtable@" << vtable_offset; - break; - } - FALLTHROUGH_INTENDED; case INVOKE_CUSTOM: if (file != nullptr) { os << opcode << " {"; @@ -441,14 +414,6 @@ std::string Instruction::DumpString(const DexFile* file) const { break; } FALLTHROUGH_INTENDED; - case INVOKE_VIRTUAL_RANGE_QUICK: - if (file != nullptr) { - uint32_t method_idx = VRegB_3rc(); - os << StringPrintf("%s, {v%d .. v%d}, ", opcode, first_reg, last_reg) - << "// vtable@" << method_idx; - break; - } - FALLTHROUGH_INTENDED; case INVOKE_CUSTOM_RANGE: if (file != nullptr) { uint32_t call_site_idx = VRegB_3rc(); diff --git a/libdexfile/dex/dex_instruction_list.h b/libdexfile/dex/dex_instruction_list.h index b9540a6e6f..36723517f6 100644 --- a/libdexfile/dex/dex_instruction_list.h +++ b/libdexfile/dex/dex_instruction_list.h @@ -246,22 +246,22 @@ V(0xE0, SHL_INT_LIT8, "shl-int/lit8", k22b, kIndexNone, kContinue, kShl | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB) \ V(0xE1, SHR_INT_LIT8, "shr-int/lit8", k22b, kIndexNone, kContinue, kShr | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB) \ V(0xE2, USHR_INT_LIT8, "ushr-int/lit8", k22b, kIndexNone, kContinue, kUshr | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB) \ - V(0xE3, IGET_QUICK, "iget-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kLoad | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \ - V(0xE4, IGET_WIDE_QUICK, "iget-wide-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kLoad | kRegCFieldOrConstant, kVerifyRegAWide | kVerifyRegB | kVerifyRuntimeOnly) \ - V(0xE5, IGET_OBJECT_QUICK, "iget-object-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kLoad | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \ - V(0xE6, IPUT_QUICK, "iput-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kStore | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \ - V(0xE7, IPUT_WIDE_QUICK, "iput-wide-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kStore | kRegCFieldOrConstant, kVerifyRegAWide | kVerifyRegB | kVerifyRuntimeOnly) \ - V(0xE8, IPUT_OBJECT_QUICK, "iput-object-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kStore | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \ - V(0xE9, INVOKE_VIRTUAL_QUICK, "invoke-virtual-quick", k35c, kIndexVtableOffset, kContinue | kThrow | kInvoke, 0, kVerifyVarArgNonZero | kVerifyRuntimeOnly) \ - V(0xEA, INVOKE_VIRTUAL_RANGE_QUICK, "invoke-virtual/range-quick", k3rc, kIndexVtableOffset, kContinue | kThrow | kInvoke, 0, kVerifyVarArgRangeNonZero | kVerifyRuntimeOnly) \ - V(0xEB, IPUT_BOOLEAN_QUICK, "iput-boolean-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kStore | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \ - V(0xEC, IPUT_BYTE_QUICK, "iput-byte-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kStore | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \ - V(0xED, IPUT_CHAR_QUICK, "iput-char-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kStore | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \ - V(0xEE, IPUT_SHORT_QUICK, "iput-short-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kStore | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \ - V(0xEF, IGET_BOOLEAN_QUICK, "iget-boolean-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kLoad | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \ - V(0xF0, IGET_BYTE_QUICK, "iget-byte-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kLoad | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \ - V(0xF1, IGET_CHAR_QUICK, "iget-char-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kLoad | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \ - V(0xF2, IGET_SHORT_QUICK, "iget-short-quick", k22c, kIndexFieldOffset, kContinue | kThrow, kLoad | kRegCFieldOrConstant, kVerifyRegA | kVerifyRegB | kVerifyRuntimeOnly) \ + V(0xE3, UNUSED_E3, "unused-e3", k10x, kIndexUnknown, 0, 0, kVerifyError) \ + V(0xE4, UNUSED_E4, "unused-e4", k10x, kIndexUnknown, 0, 0, kVerifyError) \ + V(0xE5, UNUSED_E5, "unused-e5", k10x, kIndexUnknown, 0, 0, kVerifyError) \ + V(0xE6, UNUSED_E6, "unused-e6", k10x, kIndexUnknown, 0, 0, kVerifyError) \ + V(0xE7, UNUSED_E7, "unused-e7", k10x, kIndexUnknown, 0, 0, kVerifyError) \ + V(0xE8, UNUSED_E8, "unused-e8", k10x, kIndexUnknown, 0, 0, kVerifyError) \ + V(0xE9, UNUSED_E9, "unused-e9", k10x, kIndexUnknown, 0, 0, kVerifyError) \ + V(0xEA, UNUSED_EA, "unused-ea", k10x, kIndexUnknown, 0, 0, kVerifyError) \ + V(0xEB, UNUSED_EB, "unused-eb", k10x, kIndexUnknown, 0, 0, kVerifyError) \ + V(0xEC, UNUSED_EC, "unused-ec", k10x, kIndexUnknown, 0, 0, kVerifyError) \ + V(0xED, UNUSED_ED, "unused-ed", k10x, kIndexUnknown, 0, 0, kVerifyError) \ + V(0xEE, UNUSED_EE, "unused-ee", k10x, kIndexUnknown, 0, 0, kVerifyError) \ + V(0xEF, UNUSED_EF, "unused-ef", k10x, kIndexUnknown, 0, 0, kVerifyError) \ + V(0xF0, UNUSED_F0, "unused-f0", k10x, kIndexUnknown, 0, 0, kVerifyError) \ + V(0xF1, UNUSED_F1, "unused-f1", k10x, kIndexUnknown, 0, 0, kVerifyError) \ + V(0xF2, UNUSED_F2, "unused-f2", k10x, kIndexUnknown, 0, 0, kVerifyError) \ V(0xF3, UNUSED_F3, "unused-f3", k10x, kIndexUnknown, 0, 0, kVerifyError) \ V(0xF4, UNUSED_F4, "unused-f4", k10x, kIndexUnknown, 0, 0, kVerifyError) \ V(0xF5, UNUSED_F5, "unused-f5", k10x, kIndexUnknown, 0, 0, kVerifyError) \ diff --git a/libdexfile/dex/dex_instruction_test.cc b/libdexfile/dex/dex_instruction_test.cc index 3f79abf1d8..b0e3d6ea8b 100644 --- a/libdexfile/dex/dex_instruction_test.cc +++ b/libdexfile/dex/dex_instruction_test.cc @@ -169,8 +169,6 @@ TEST(Instruction, DumpString) { "filled-new-array {v3, v2}, type@1234"); EXPECT_EQ(DumpInst35c(Instruction::INVOKE_VIRTUAL, 1234, {3, 2, 1, 5, 6}), "invoke-virtual {v3, v2, v1, v5, v6}, thing@1234"); - EXPECT_EQ(DumpInst35c(Instruction::INVOKE_VIRTUAL_QUICK, 1234, {3, 2, 1, 5}), - "invoke-virtual-quick {v3, v2, v1, v5}, thing@1234"); EXPECT_EQ(DumpInst35c(Instruction::INVOKE_CUSTOM, 1234, {3, 2, 1}), "invoke-custom {v3, v2, v1}, thing@1234"); } diff --git a/libdexfile/dex/dex_instruction_utils.h b/libdexfile/dex/dex_instruction_utils.h index 49179be815..53beb9ff1f 100644 --- a/libdexfile/dex/dex_instruction_utils.h +++ b/libdexfile/dex/dex_instruction_utils.h @@ -68,11 +68,6 @@ constexpr bool IsInstructionInvoke(Instruction::Code opcode) { opcode != Instruction::RETURN_VOID_NO_BARRIER; } -constexpr bool IsInstructionQuickInvoke(Instruction::Code opcode) { - return opcode == Instruction::INVOKE_VIRTUAL_QUICK || - opcode == Instruction::INVOKE_VIRTUAL_RANGE_QUICK; -} - constexpr bool IsInstructionInvokeStatic(Instruction::Code opcode) { return opcode == Instruction::INVOKE_STATIC || opcode == Instruction::INVOKE_STATIC_RANGE; } @@ -117,11 +112,6 @@ constexpr bool IsInstructionIGetOrIPut(Instruction::Code code) { return Instruction::IGET <= code && code <= Instruction::IPUT_SHORT; } -constexpr bool IsInstructionIGetQuickOrIPutQuick(Instruction::Code code) { - return (code >= Instruction::IGET_QUICK && code <= Instruction::IPUT_OBJECT_QUICK) || - (code >= Instruction::IPUT_BOOLEAN_QUICK && code <= Instruction::IGET_SHORT_QUICK); -} - constexpr bool IsInstructionSGetOrSPut(Instruction::Code code) { return Instruction::SGET <= code && code <= Instruction::SPUT_SHORT; } @@ -181,29 +171,6 @@ constexpr DexMemAccessType IGetOrIPutMemAccessType(Instruction::Code code) { return (code >= Instruction::IPUT) ? IPutMemAccessType(code) : IGetMemAccessType(code); } -inline DexMemAccessType IGetQuickOrIPutQuickMemAccessType(Instruction::Code code) { - DCHECK(IsInstructionIGetQuickOrIPutQuick(code)); - switch (code) { - case Instruction::IGET_QUICK: case Instruction::IPUT_QUICK: - return kDexMemAccessWord; - case Instruction::IGET_WIDE_QUICK: case Instruction::IPUT_WIDE_QUICK: - return kDexMemAccessWide; - case Instruction::IGET_OBJECT_QUICK: case Instruction::IPUT_OBJECT_QUICK: - return kDexMemAccessObject; - case Instruction::IGET_BOOLEAN_QUICK: case Instruction::IPUT_BOOLEAN_QUICK: - return kDexMemAccessBoolean; - case Instruction::IGET_BYTE_QUICK: case Instruction::IPUT_BYTE_QUICK: - return kDexMemAccessByte; - case Instruction::IGET_CHAR_QUICK: case Instruction::IPUT_CHAR_QUICK: - return kDexMemAccessChar; - case Instruction::IGET_SHORT_QUICK: case Instruction::IPUT_SHORT_QUICK: - return kDexMemAccessShort; - default: - LOG(FATAL) << code; - UNREACHABLE(); - } -} - constexpr DexMemAccessType SGetOrSPutMemAccessType(Instruction::Code code) { DCHECK(IsInstructionSGetOrSPut(code)); return (code >= Instruction::SPUT) ? SPutMemAccessType(code) : SGetMemAccessType(code); diff --git a/runtime/dex_to_dex_decompiler.cc b/runtime/dex_to_dex_decompiler.cc index d078d6f438..eac270998f 100644 --- a/runtime/dex_to_dex_decompiler.cc +++ b/runtime/dex_to_dex_decompiler.cc @@ -110,70 +110,6 @@ bool DexDecompiler::Decompile() { } break; - case Instruction::IGET_QUICK: - DecompileInstanceFieldAccess(inst, Instruction::IGET); - break; - - case Instruction::IGET_WIDE_QUICK: - DecompileInstanceFieldAccess(inst, Instruction::IGET_WIDE); - break; - - case Instruction::IGET_OBJECT_QUICK: - DecompileInstanceFieldAccess(inst, Instruction::IGET_OBJECT); - break; - - case Instruction::IGET_BOOLEAN_QUICK: - DecompileInstanceFieldAccess(inst, Instruction::IGET_BOOLEAN); - break; - - case Instruction::IGET_BYTE_QUICK: - DecompileInstanceFieldAccess(inst, Instruction::IGET_BYTE); - break; - - case Instruction::IGET_CHAR_QUICK: - DecompileInstanceFieldAccess(inst, Instruction::IGET_CHAR); - break; - - case Instruction::IGET_SHORT_QUICK: - DecompileInstanceFieldAccess(inst, Instruction::IGET_SHORT); - break; - - case Instruction::IPUT_QUICK: - DecompileInstanceFieldAccess(inst, Instruction::IPUT); - break; - - case Instruction::IPUT_BOOLEAN_QUICK: - DecompileInstanceFieldAccess(inst, Instruction::IPUT_BOOLEAN); - break; - - case Instruction::IPUT_BYTE_QUICK: - DecompileInstanceFieldAccess(inst, Instruction::IPUT_BYTE); - break; - - case Instruction::IPUT_CHAR_QUICK: - DecompileInstanceFieldAccess(inst, Instruction::IPUT_CHAR); - break; - - case Instruction::IPUT_SHORT_QUICK: - DecompileInstanceFieldAccess(inst, Instruction::IPUT_SHORT); - break; - - case Instruction::IPUT_WIDE_QUICK: - DecompileInstanceFieldAccess(inst, Instruction::IPUT_WIDE); - break; - - case Instruction::IPUT_OBJECT_QUICK: - DecompileInstanceFieldAccess(inst, Instruction::IPUT_OBJECT); - break; - - case Instruction::INVOKE_VIRTUAL_QUICK: - DecompileInvokeVirtual(inst, Instruction::INVOKE_VIRTUAL, false); - break; - - case Instruction::INVOKE_VIRTUAL_RANGE_QUICK: - DecompileInvokeVirtual(inst, Instruction::INVOKE_VIRTUAL_RANGE, true); - break; - default: break; } diff --git a/runtime/interpreter/interpreter_switch_impl-inl.h b/runtime/interpreter/interpreter_switch_impl-inl.h index 4b3f8c6c1a..538ac12bf6 100644 --- a/runtime/interpreter/interpreter_switch_impl-inl.h +++ b/runtime/interpreter/interpreter_switch_impl-inl.h @@ -917,34 +917,6 @@ class InstructionHandler { return HandleGet<InstanceObjectRead, Primitive::kPrimNot>(); } - HANDLER_ATTRIBUTES bool IGET_QUICK() { - return HandleUnused(); - } - - HANDLER_ATTRIBUTES bool IGET_WIDE_QUICK() { - return HandleUnused(); - } - - HANDLER_ATTRIBUTES bool IGET_OBJECT_QUICK() { - return HandleUnused(); - } - - HANDLER_ATTRIBUTES bool IGET_BOOLEAN_QUICK() { - return HandleUnused(); - } - - HANDLER_ATTRIBUTES bool IGET_BYTE_QUICK() { - return HandleUnused(); - } - - HANDLER_ATTRIBUTES bool IGET_CHAR_QUICK() { - return HandleUnused(); - } - - HANDLER_ATTRIBUTES bool IGET_SHORT_QUICK() { - return HandleUnused(); - } - HANDLER_ATTRIBUTES bool SGET_BOOLEAN() { return HandleGet<StaticPrimitiveRead, Primitive::kPrimBoolean>(); } @@ -1001,34 +973,6 @@ class InstructionHandler { return HandlePut<InstanceObjectWrite, Primitive::kPrimNot>(); } - HANDLER_ATTRIBUTES bool IPUT_QUICK() { - return HandleUnused(); - } - - HANDLER_ATTRIBUTES bool IPUT_BOOLEAN_QUICK() { - return HandleUnused(); - } - - HANDLER_ATTRIBUTES bool IPUT_BYTE_QUICK() { - return HandleUnused(); - } - - HANDLER_ATTRIBUTES bool IPUT_CHAR_QUICK() { - return HandleUnused(); - } - - HANDLER_ATTRIBUTES bool IPUT_SHORT_QUICK() { - return HandleUnused(); - } - - HANDLER_ATTRIBUTES bool IPUT_WIDE_QUICK() { - return HandleUnused(); - } - - HANDLER_ATTRIBUTES bool IPUT_OBJECT_QUICK() { - return HandleUnused(); - } - HANDLER_ATTRIBUTES bool SPUT_BOOLEAN() { return HandlePut<StaticPrimitiveWrite, Primitive::kPrimBoolean>(); } @@ -1097,14 +1041,6 @@ class InstructionHandler { return HandleInvoke<kStatic, /*is_range=*/ true>(); } - HANDLER_ATTRIBUTES bool INVOKE_VIRTUAL_QUICK() { - return HandleUnused(); - } - - HANDLER_ATTRIBUTES bool INVOKE_VIRTUAL_RANGE_QUICK() { - return HandleUnused(); - } - HANDLER_ATTRIBUTES bool INVOKE_POLYMORPHIC() { DCHECK(Runtime::Current()->IsMethodHandlesEnabled()); bool success = DoInvokePolymorphic</* is_range= */ false>( @@ -1673,6 +1609,70 @@ class InstructionHandler { return HandleUnused(); } + HANDLER_ATTRIBUTES bool UNUSED_E3() { + return HandleUnused(); + } + + HANDLER_ATTRIBUTES bool UNUSED_E4() { + return HandleUnused(); + } + + HANDLER_ATTRIBUTES bool UNUSED_E5() { + return HandleUnused(); + } + + HANDLER_ATTRIBUTES bool UNUSED_E6() { + return HandleUnused(); + } + + HANDLER_ATTRIBUTES bool UNUSED_E7() { + return HandleUnused(); + } + + HANDLER_ATTRIBUTES bool UNUSED_E8() { + return HandleUnused(); + } + + HANDLER_ATTRIBUTES bool UNUSED_E9() { + return HandleUnused(); + } + + HANDLER_ATTRIBUTES bool UNUSED_EA() { + return HandleUnused(); + } + + HANDLER_ATTRIBUTES bool UNUSED_EB() { + return HandleUnused(); + } + + HANDLER_ATTRIBUTES bool UNUSED_EC() { + return HandleUnused(); + } + + HANDLER_ATTRIBUTES bool UNUSED_ED() { + return HandleUnused(); + } + + HANDLER_ATTRIBUTES bool UNUSED_EE() { + return HandleUnused(); + } + + HANDLER_ATTRIBUTES bool UNUSED_EF() { + return HandleUnused(); + } + + HANDLER_ATTRIBUTES bool UNUSED_F0() { + return HandleUnused(); + } + + HANDLER_ATTRIBUTES bool UNUSED_F1() { + return HandleUnused(); + } + + HANDLER_ATTRIBUTES bool UNUSED_F2() { + return HandleUnused(); + } + HANDLER_ATTRIBUTES bool UNUSED_F3() { return HandleUnused(); } diff --git a/runtime/interpreter/mterp/arm/invoke.S b/runtime/interpreter/mterp/arm/invoke.S index 8e5ecd086f..376c93befb 100644 --- a/runtime/interpreter/mterp/arm/invoke.S +++ b/runtime/interpreter/mterp/arm/invoke.S @@ -111,11 +111,5 @@ /* op vB, {vD, vE, vF, vG, vA}, class@CCCC */ /* op vAA, {vCCCC..v(CCCC+AA-1)}, meth@BBBB */ -%def op_invoke_virtual_quick(): -% unused() - %def op_invoke_virtual_range(): % invoke(helper="MterpInvokeVirtualRange") - -%def op_invoke_virtual_range_quick(): -% unused() diff --git a/runtime/interpreter/mterp/arm/object.S b/runtime/interpreter/mterp/arm/object.S index adbd40527f..8414a1f173 100644 --- a/runtime/interpreter/mterp/arm/object.S +++ b/runtime/interpreter/mterp/arm/object.S @@ -87,42 +87,21 @@ %def op_iget_boolean(): % op_iget(load="ldrb", helper="MterpIGetU8") -%def op_iget_boolean_quick(): -% unused() - %def op_iget_byte(): % op_iget(load="ldrsb", helper="MterpIGetI8") -%def op_iget_byte_quick(): -% unused() - %def op_iget_char(): % op_iget(load="ldrh", helper="MterpIGetU16") -%def op_iget_char_quick(): -% unused() - %def op_iget_object(): % op_iget(is_object=True, helper="MterpIGetObj") -%def op_iget_object_quick(): -% unused() - -%def op_iget_quick(load="ldr"): -% unused() - %def op_iget_short(): % op_iget(load="ldrsh", helper="MterpIGetI16") -%def op_iget_short_quick(): -% unused() - %def op_iget_wide(): % op_iget(is_wide=True, helper="MterpIGetU64") -%def op_iget_wide_quick(): -% unused() - %def op_instance_of(): /* * Check to see if an object reference is an instance of a class. @@ -154,42 +133,21 @@ %def op_iput_boolean(): % op_iput(helper="MterpIPutU8") -%def op_iput_boolean_quick(): -% unused() - %def op_iput_byte(): % op_iput(helper="MterpIPutI8") -%def op_iput_byte_quick(): -% unused() - %def op_iput_char(): % op_iput(helper="MterpIPutU16") -%def op_iput_char_quick(): -% unused() - %def op_iput_object(): % op_iput(helper="MterpIPutObj") -%def op_iput_object_quick(): -% unused() - -%def op_iput_quick(store="str"): -% unused() - %def op_iput_short(): % op_iput(helper="MterpIPutI16") -%def op_iput_short_quick(): -% unused() - %def op_iput_wide(): % op_iput(helper="MterpIPutU64") -%def op_iput_wide_quick(): -% unused() - %def op_new_instance(): /* * Create a new instance of a class. diff --git a/runtime/interpreter/mterp/arm/other.S b/runtime/interpreter/mterp/arm/other.S index 31b9354530..20f1acf97f 100644 --- a/runtime/interpreter/mterp/arm/other.S +++ b/runtime/interpreter/mterp/arm/other.S @@ -357,6 +357,54 @@ %def op_unused_7a(): % unused() +%def op_unused_e3(): +% unused() + +%def op_unused_e4(): +% unused() + +%def op_unused_e5(): +% unused() + +%def op_unused_e6(): +% unused() + +%def op_unused_e7(): +% unused() + +%def op_unused_e8(): +% unused() + +%def op_unused_e9(): +% unused() + +%def op_unused_ea(): +% unused() + +%def op_unused_eb(): +% unused() + +%def op_unused_ec(): +% unused() + +%def op_unused_ed(): +% unused() + +%def op_unused_ee(): +% unused() + +%def op_unused_ef(): +% unused() + +%def op_unused_f0(): +% unused() + +%def op_unused_f1(): +% unused() + +%def op_unused_f2(): +% unused() + %def op_unused_f3(): % unused() diff --git a/runtime/interpreter/mterp/arm64/invoke.S b/runtime/interpreter/mterp/arm64/invoke.S index 2348608bc1..4d75af60e1 100644 --- a/runtime/interpreter/mterp/arm64/invoke.S +++ b/runtime/interpreter/mterp/arm64/invoke.S @@ -100,11 +100,5 @@ /* op vB, {vD, vE, vF, vG, vA}, class@CCCC */ /* op vAA, {vCCCC..v(CCCC+AA-1)}, meth@BBBB */ -%def op_invoke_virtual_quick(): -% unused() - %def op_invoke_virtual_range(): % invoke(helper="MterpInvokeVirtualRange") - -%def op_invoke_virtual_range_quick(): -% unused() diff --git a/runtime/interpreter/mterp/arm64/object.S b/runtime/interpreter/mterp/arm64/object.S index 73ce5e0d76..fb1dac9363 100644 --- a/runtime/interpreter/mterp/arm64/object.S +++ b/runtime/interpreter/mterp/arm64/object.S @@ -83,42 +83,21 @@ %def op_iget_boolean(): % op_iget(load="ldrb", helper="MterpIGetU8") -%def op_iget_boolean_quick(): -% unused() - %def op_iget_byte(): % op_iget(load="ldrsb", helper="MterpIGetI8") -%def op_iget_byte_quick(): -% unused() - %def op_iget_char(): % op_iget(load="ldrh", helper="MterpIGetU16") -%def op_iget_char_quick(): -% unused() - %def op_iget_object(): % op_iget(is_object=True, helper="MterpIGetObj") -%def op_iget_object_quick(): -% unused() - -%def op_iget_quick(load="ldr", extend=""): -% unused() - %def op_iget_short(): % op_iget(load="ldrsh", helper="MterpIGetI16") -%def op_iget_short_quick(): -% unused() - %def op_iget_wide(): % op_iget(is_wide=True, helper="MterpIGetU64") -%def op_iget_wide_quick(): -% unused() - %def op_instance_of(): /* * Check to see if an object reference is an instance of a class. @@ -149,42 +128,21 @@ %def op_iput_boolean(): % op_iput(helper="MterpIPutU8") -%def op_iput_boolean_quick(): -% unused() - %def op_iput_byte(): % op_iput(helper="MterpIPutI8") -%def op_iput_byte_quick(): -% unused() - %def op_iput_char(): % op_iput(helper="MterpIPutU16") -%def op_iput_char_quick(): -% unused() - %def op_iput_object(): % op_iput(helper="MterpIPutObj") -%def op_iput_object_quick(): -% unused() - -%def op_iput_quick(store="str"): -% unused() - %def op_iput_short(): % op_iput(helper="MterpIPutI16") -%def op_iput_short_quick(): -% unused() - %def op_iput_wide(): % op_iput(helper="MterpIPutU64") -%def op_iput_wide_quick(): -% unused() - %def op_new_instance(): /* * Create a new instance of a class. diff --git a/runtime/interpreter/mterp/arm64/other.S b/runtime/interpreter/mterp/arm64/other.S index eccd521372..a8cf62e4fa 100644 --- a/runtime/interpreter/mterp/arm64/other.S +++ b/runtime/interpreter/mterp/arm64/other.S @@ -331,6 +331,54 @@ %def op_unused_7a(): % unused() +%def op_unused_e3(): +% unused() + +%def op_unused_e4(): +% unused() + +%def op_unused_e5(): +% unused() + +%def op_unused_e6(): +% unused() + +%def op_unused_e7(): +% unused() + +%def op_unused_e8(): +% unused() + +%def op_unused_e9(): +% unused() + +%def op_unused_ea(): +% unused() + +%def op_unused_eb(): +% unused() + +%def op_unused_ec(): +% unused() + +%def op_unused_ed(): +% unused() + +%def op_unused_ee(): +% unused() + +%def op_unused_ef(): +% unused() + +%def op_unused_f0(): +% unused() + +%def op_unused_f1(): +% unused() + +%def op_unused_f2(): +% unused() + %def op_unused_f3(): % unused() diff --git a/runtime/interpreter/mterp/arm64ng/invoke.S b/runtime/interpreter/mterp/arm64ng/invoke.S index 4983201b90..39f2ea04af 100644 --- a/runtime/interpreter/mterp/arm64ng/invoke.S +++ b/runtime/interpreter/mterp/arm64ng/invoke.S @@ -171,9 +171,3 @@ %def op_invoke_virtual_range(): % invoke_virtual(helper="NterpCommonInvokeInstanceRange", range="1") - -%def op_invoke_virtual_quick(): -% unused() - -%def op_invoke_virtual_range_quick(): -% unused() diff --git a/runtime/interpreter/mterp/arm64ng/object.S b/runtime/interpreter/mterp/arm64ng/object.S index fafc2d2f37..00490a7bcd 100644 --- a/runtime/interpreter/mterp/arm64ng/object.S +++ b/runtime/interpreter/mterp/arm64ng/object.S @@ -129,27 +129,6 @@ %def op_iget_object(): % op_iget(load="ldr", volatile_load="ldar", maybe_extend="", wide="0", is_object="1") -%def op_iget_boolean_quick(): -% unused() - -%def op_iget_byte_quick(): -% unused() - -%def op_iget_char_quick(): -% unused() - -%def op_iget_object_quick(): -% unused() - -%def op_iget_quick(load="ldr", wide="0"): -% unused() - -%def op_iget_short_quick(): -% unused() - -%def op_iget_wide_quick(): -% unused() - %def op_iput_boolean(): % op_iput(store="strb", volatile_store="stlrb", wide="0", is_object="0") @@ -227,27 +206,6 @@ %def op_iput_object(): % op_iput(store="str", volatile_store="stlr", wide="0", is_object="1") -%def op_iput_boolean_quick(): -% unused() - -%def op_iput_byte_quick(): -% unused() - -%def op_iput_char_quick(): -% unused() - -%def op_iput_quick(store="str", wide="0", is_object="0"): -% unused() - -%def op_iput_object_quick(): -% unused() - -%def op_iput_short_quick(): -% unused() - -%def op_iput_wide_quick(): -% unused() - %def op_sget_boolean(): % op_sget(load="ldrb", volatile_load="ldarb", maybe_extend="", wide="0", is_object="0") diff --git a/runtime/interpreter/mterp/arm64ng/other.S b/runtime/interpreter/mterp/arm64ng/other.S index 56a8086d39..ace1b0959a 100644 --- a/runtime/interpreter/mterp/arm64ng/other.S +++ b/runtime/interpreter/mterp/arm64ng/other.S @@ -308,6 +308,54 @@ %def op_unused_7a(): % unused() +%def op_unused_e3(): +% unused() + +%def op_unused_e4(): +% unused() + +%def op_unused_e5(): +% unused() + +%def op_unused_e6(): +% unused() + +%def op_unused_e7(): +% unused() + +%def op_unused_e8(): +% unused() + +%def op_unused_e9(): +% unused() + +%def op_unused_ea(): +% unused() + +%def op_unused_eb(): +% unused() + +%def op_unused_ec(): +% unused() + +%def op_unused_ed(): +% unused() + +%def op_unused_ee(): +% unused() + +%def op_unused_ef(): +% unused() + +%def op_unused_f0(): +% unused() + +%def op_unused_f1(): +% unused() + +%def op_unused_f2(): +% unused() + %def op_unused_f3(): % unused() diff --git a/runtime/interpreter/mterp/armng/invoke.S b/runtime/interpreter/mterp/armng/invoke.S index 616332289a..d37314766d 100644 --- a/runtime/interpreter/mterp/armng/invoke.S +++ b/runtime/interpreter/mterp/armng/invoke.S @@ -178,9 +178,3 @@ %def op_invoke_virtual_range(): % invoke_virtual(helper="NterpCommonInvokeInstanceRange", range="1") - -%def op_invoke_virtual_quick(): -% unused() - -%def op_invoke_virtual_range_quick(): -% unused() diff --git a/runtime/interpreter/mterp/armng/object.S b/runtime/interpreter/mterp/armng/object.S index 992feeb8d4..c56ec05b7d 100644 --- a/runtime/interpreter/mterp/armng/object.S +++ b/runtime/interpreter/mterp/armng/object.S @@ -145,27 +145,6 @@ %def op_iget_object(): % op_iget(load="ldr", wide="0", is_object="1") -%def op_iget_boolean_quick(): -% unused() - -%def op_iget_byte_quick(): -% unused() - -%def op_iget_char_quick(): -% unused() - -%def op_iget_object_quick(): -% unused() - -%def op_iget_quick(load="ldr", wide="0"): -% unused() - -%def op_iget_short_quick(): -% unused() - -%def op_iget_wide_quick(): -% unused() - %def op_iput_boolean(): % op_iput(store="strb", wide="0", is_object="0") @@ -259,27 +238,6 @@ %def op_iput_object(): % op_iput(store="str", wide="0", is_object="1") -%def op_iput_boolean_quick(): -% unused() - -%def op_iput_byte_quick(): -% unused() - -%def op_iput_char_quick(): -% unused() - -%def op_iput_object_quick(): -% unused() - -%def op_iput_quick(store="str", wide="0", is_object="0"): -% unused() - -%def op_iput_short_quick(): -% unused() - -%def op_iput_wide_quick(): -% unused() - %def op_sget_boolean(): % op_sget(load="ldrb", wide="0", is_object="0") diff --git a/runtime/interpreter/mterp/armng/other.S b/runtime/interpreter/mterp/armng/other.S index 9100ed73db..063be341ef 100644 --- a/runtime/interpreter/mterp/armng/other.S +++ b/runtime/interpreter/mterp/armng/other.S @@ -333,6 +333,54 @@ %def op_unused_7a(): % unused() +%def op_unused_e3(): +% unused() + +%def op_unused_e4(): +% unused() + +%def op_unused_e5(): +% unused() + +%def op_unused_e6(): +% unused() + +%def op_unused_e7(): +% unused() + +%def op_unused_e8(): +% unused() + +%def op_unused_e9(): +% unused() + +%def op_unused_ea(): +% unused() + +%def op_unused_eb(): +% unused() + +%def op_unused_ec(): +% unused() + +%def op_unused_ed(): +% unused() + +%def op_unused_ee(): +% unused() + +%def op_unused_ef(): +% unused() + +%def op_unused_f0(): +% unused() + +%def op_unused_f1(): +% unused() + +%def op_unused_f2(): +% unused() + %def op_unused_f3(): % unused() diff --git a/runtime/interpreter/mterp/x86/invoke.S b/runtime/interpreter/mterp/x86/invoke.S index ec4f8f9ad2..7f51880c5a 100644 --- a/runtime/interpreter/mterp/x86/invoke.S +++ b/runtime/interpreter/mterp/x86/invoke.S @@ -111,11 +111,5 @@ /* op vB, {vD, vE, vF, vG, vA}, class@CCCC */ /* op vAA, {vCCCC..v(CCCC+AA-1)}, meth@BBBB */ -%def op_invoke_virtual_quick(): -% unused() - %def op_invoke_virtual_range(): % invoke(helper="MterpInvokeVirtualRange") - -%def op_invoke_virtual_range_quick(): -% unused() diff --git a/runtime/interpreter/mterp/x86/object.S b/runtime/interpreter/mterp/x86/object.S index e8f1dbaad4..6ab1931783 100644 --- a/runtime/interpreter/mterp/x86/object.S +++ b/runtime/interpreter/mterp/x86/object.S @@ -42,42 +42,21 @@ %def op_iget_boolean(): % op_iget(helper="MterpIGetU8") -%def op_iget_boolean_quick(): -% unused() - %def op_iget_byte(): % op_iget(helper="MterpIGetI8") -%def op_iget_byte_quick(): -% unused() - %def op_iget_char(): % op_iget(helper="MterpIGetU16") -%def op_iget_char_quick(): -% unused() - %def op_iget_object(): % op_iget(is_object="1", helper="MterpIGetObj") -%def op_iget_object_quick(): -% unused() - -%def op_iget_quick(load="movl"): -% unused() - %def op_iget_short(): % op_iget(helper="MterpIGetI16") -%def op_iget_short_quick(): -% unused() - %def op_iget_wide(): % op_iget(helper="MterpIGetU64") -%def op_iget_wide_quick(): -% unused() - %def op_instance_of(): /* * Check to see if an object reference is an instance of a class. @@ -112,42 +91,21 @@ %def op_iput_boolean(): % op_iput(helper="MterpIPutU8") -%def op_iput_boolean_quick(): -% unused() - %def op_iput_byte(): % op_iput(helper="MterpIPutI8") -%def op_iput_byte_quick(): -% unused() - %def op_iput_char(): % op_iput(helper="MterpIPutU16") -%def op_iput_char_quick(): -% unused() - %def op_iput_object(): % op_iput(is_object="1", helper="MterpIPutObj") -%def op_iput_object_quick(): -% unused() - -%def op_iput_quick(reg="rINST", store="movl"): -% unused() - %def op_iput_short(): % op_iput(helper="MterpIPutI16") -%def op_iput_short_quick(): -% unused() - %def op_iput_wide(): % op_iput(helper="MterpIPutU64") -%def op_iput_wide_quick(): -% unused() - %def op_new_instance(): /* * Create a new instance of a class. diff --git a/runtime/interpreter/mterp/x86/other.S b/runtime/interpreter/mterp/x86/other.S index 270ccb688c..ec556b85b8 100644 --- a/runtime/interpreter/mterp/x86/other.S +++ b/runtime/interpreter/mterp/x86/other.S @@ -300,6 +300,54 @@ %def op_unused_7a(): % unused() +%def op_unused_e3(): +% unused() + +%def op_unused_e4(): +% unused() + +%def op_unused_e5(): +% unused() + +%def op_unused_e6(): +% unused() + +%def op_unused_e7(): +% unused() + +%def op_unused_e8(): +% unused() + +%def op_unused_e9(): +% unused() + +%def op_unused_ea(): +% unused() + +%def op_unused_eb(): +% unused() + +%def op_unused_ec(): +% unused() + +%def op_unused_ed(): +% unused() + +%def op_unused_ee(): +% unused() + +%def op_unused_ef(): +% unused() + +%def op_unused_f0(): +% unused() + +%def op_unused_f1(): +% unused() + +%def op_unused_f2(): +% unused() + %def op_unused_f3(): % unused() diff --git a/runtime/interpreter/mterp/x86_64/invoke.S b/runtime/interpreter/mterp/x86_64/invoke.S index 35fdbcd3ef..a7230962c1 100644 --- a/runtime/interpreter/mterp/x86_64/invoke.S +++ b/runtime/interpreter/mterp/x86_64/invoke.S @@ -105,11 +105,5 @@ /* op vB, {vD, vE, vF, vG, vA}, class@CCCC */ /* op vAA, {vCCCC..v(CCCC+AA-1)}, meth@BBBB */ -%def op_invoke_virtual_quick(): -% unused() - %def op_invoke_virtual_range(): % invoke(helper="MterpInvokeVirtualRange") - -%def op_invoke_virtual_range_quick(): -% unused() diff --git a/runtime/interpreter/mterp/x86_64/object.S b/runtime/interpreter/mterp/x86_64/object.S index afbcb5066d..643c6dafe2 100644 --- a/runtime/interpreter/mterp/x86_64/object.S +++ b/runtime/interpreter/mterp/x86_64/object.S @@ -34,42 +34,21 @@ %def op_iget_boolean(): % op_iget(helper="MterpIGetU8") -%def op_iget_boolean_quick(): -% unused() - %def op_iget_byte(): % op_iget(helper="MterpIGetI8") -%def op_iget_byte_quick(): -% unused() - %def op_iget_char(): % op_iget(helper="MterpIGetU16") -%def op_iget_char_quick(): -% unused() - %def op_iget_object(): % op_iget(is_object="1", helper="MterpIGetObj") -%def op_iget_object_quick(): -% unused() - -%def op_iget_quick(load="movl", wide="0"): -% unused() - %def op_iget_short(): % op_iget(helper="MterpIGetI16") -%def op_iget_short_quick(): -% unused() - %def op_iget_wide(): % op_iget(helper="MterpIGetU64") -%def op_iget_wide_quick(): -% unused() - %def op_instance_of(): /* * Check to see if an object reference is an instance of a class. @@ -100,42 +79,21 @@ %def op_iput_boolean(): % op_iput(helper="MterpIPutU8") -%def op_iput_boolean_quick(): -% unused() - %def op_iput_byte(): % op_iput(helper="MterpIPutI8") -%def op_iput_byte_quick(): -% unused() - %def op_iput_char(): % op_iput(helper="MterpIPutU16") -%def op_iput_char_quick(): -% unused() - %def op_iput_object(): % op_iput(is_object="1", helper="MterpIPutObj") -%def op_iput_object_quick(): -% unused() - -%def op_iput_quick(reg="rINST", store="movl"): -% unused() - %def op_iput_short(): % op_iput(helper="MterpIPutI16") -%def op_iput_short_quick(): -% unused() - %def op_iput_wide(): % op_iput(helper="MterpIPutU64") -%def op_iput_wide_quick(): -% unused() - %def op_new_instance(): /* * Create a new instance of a class. diff --git a/runtime/interpreter/mterp/x86_64/other.S b/runtime/interpreter/mterp/x86_64/other.S index 412389f3ed..ec76b83cfd 100644 --- a/runtime/interpreter/mterp/x86_64/other.S +++ b/runtime/interpreter/mterp/x86_64/other.S @@ -269,6 +269,54 @@ %def op_unused_7a(): % unused() +%def op_unused_e3(): +% unused() + +%def op_unused_e4(): +% unused() + +%def op_unused_e5(): +% unused() + +%def op_unused_e6(): +% unused() + +%def op_unused_e7(): +% unused() + +%def op_unused_e8(): +% unused() + +%def op_unused_e9(): +% unused() + +%def op_unused_ea(): +% unused() + +%def op_unused_eb(): +% unused() + +%def op_unused_ec(): +% unused() + +%def op_unused_ed(): +% unused() + +%def op_unused_ee(): +% unused() + +%def op_unused_ef(): +% unused() + +%def op_unused_f0(): +% unused() + +%def op_unused_f1(): +% unused() + +%def op_unused_f2(): +% unused() + %def op_unused_f3(): % unused() diff --git a/runtime/interpreter/mterp/x86_64ng/invoke.S b/runtime/interpreter/mterp/x86_64ng/invoke.S index 6ae43c9172..2e3d297cc5 100644 --- a/runtime/interpreter/mterp/x86_64ng/invoke.S +++ b/runtime/interpreter/mterp/x86_64ng/invoke.S @@ -171,11 +171,5 @@ %def op_invoke_virtual(): % invoke_virtual(helper="NterpCommonInvokeInstance", range="0") -%def op_invoke_virtual_quick(): -% unused() - %def op_invoke_virtual_range(): % invoke_virtual(helper="NterpCommonInvokeInstanceRange", range="1") - -%def op_invoke_virtual_range_quick(): -% unused() diff --git a/runtime/interpreter/mterp/x86_64ng/object.S b/runtime/interpreter/mterp/x86_64ng/object.S index cb81a919f6..2b4e12c457 100644 --- a/runtime/interpreter/mterp/x86_64ng/object.S +++ b/runtime/interpreter/mterp/x86_64ng/object.S @@ -4,42 +4,21 @@ %def op_iget_boolean(): jmp NterpGetBooleanInstanceField -%def op_iget_boolean_quick(): -% unused() - %def op_iget_byte(): jmp NterpGetByteInstanceField -%def op_iget_byte_quick(): -% unused() - %def op_iget_char(): jmp NterpGetCharInstanceField -%def op_iget_char_quick(): -% unused() - %def op_iget_object(): jmp NterpGetObjectInstanceField -%def op_iget_object_quick(): -% unused() - -%def op_iget_quick(load="movl", wide="0"): -% unused() - %def op_iget_short(): jmp NterpGetShortInstanceField -%def op_iget_short_quick(): -% unused() - %def op_iget_wide(): jmp NterpGetWideInstanceField -%def op_iget_wide_quick(): -% unused() - %def op_instance_of(): jmp NterpInstanceOf @@ -52,42 +31,21 @@ %def op_iput_boolean(): jmp NterpPutBooleanInstanceField -%def op_iput_boolean_quick(): -% unused() - %def op_iput_byte(): jmp NterpPutByteInstanceField -%def op_iput_byte_quick(): -% unused() - %def op_iput_char(): jmp NterpPutCharInstanceField -%def op_iput_char_quick(): -% unused() - %def op_iput_object(): jmp NterpPutObjectInstanceField -%def op_iput_object_quick(): -% unused() - -%def op_iput_quick(reg="rINST", store="movl"): -% unused() - %def op_iput_short(): jmp NterpPutShortInstanceField -%def op_iput_short_quick(): -% unused() - %def op_iput_wide(): jmp NterpPutWideInstanceField -%def op_iput_wide_quick(): -% unused() - %def op_sget(load="movl", wide="0"): jmp NterpGetIntStaticField diff --git a/runtime/interpreter/mterp/x86_64ng/other.S b/runtime/interpreter/mterp/x86_64ng/other.S index 7d82c3b8cc..bbbf6637b0 100644 --- a/runtime/interpreter/mterp/x86_64ng/other.S +++ b/runtime/interpreter/mterp/x86_64ng/other.S @@ -245,6 +245,54 @@ %def op_unused_7a(): % unused() +%def op_unused_e3(): +% unused() + +%def op_unused_e4(): +% unused() + +%def op_unused_e5(): +% unused() + +%def op_unused_e6(): +% unused() + +%def op_unused_e7(): +% unused() + +%def op_unused_e8(): +% unused() + +%def op_unused_e9(): +% unused() + +%def op_unused_ea(): +% unused() + +%def op_unused_eb(): +% unused() + +%def op_unused_ec(): +% unused() + +%def op_unused_ed(): +% unused() + +%def op_unused_ee(): +% unused() + +%def op_unused_ef(): +% unused() + +%def op_unused_f0(): +% unused() + +%def op_unused_f1(): +% unused() + +%def op_unused_f2(): +% unused() + %def op_unused_f3(): % unused() diff --git a/runtime/jit/profiling_info.cc b/runtime/jit/profiling_info.cc index d4b16b4a46..e101f9a016 100644 --- a/runtime/jit/profiling_info.cc +++ b/runtime/jit/profiling_info.cc @@ -46,8 +46,6 @@ ProfilingInfo* ProfilingInfo::Create(Thread* self, ArtMethod* method) { switch (inst->Opcode()) { case Instruction::INVOKE_VIRTUAL: case Instruction::INVOKE_VIRTUAL_RANGE: - case Instruction::INVOKE_VIRTUAL_QUICK: - case Instruction::INVOKE_VIRTUAL_RANGE_QUICK: case Instruction::INVOKE_INTERFACE: case Instruction::INVOKE_INTERFACE_RANGE: entries.push_back(inst.DexPc()); diff --git a/runtime/verifier/method_verifier.cc b/runtime/verifier/method_verifier.cc index f7d0f28f75..ae71ad39b3 100644 --- a/runtime/verifier/method_verifier.cc +++ b/runtime/verifier/method_verifier.cc @@ -2844,61 +2844,47 @@ bool MethodVerifier<kVerifierDebug>::CodeFlowVerifyInstruction(uint32_t* start_g break; case Instruction::IGET_BOOLEAN: - case Instruction::IGET_BOOLEAN_QUICK: VerifyISFieldAccess<FieldAccessType::kAccGet>(inst, reg_types_.Boolean(), true, false); break; case Instruction::IGET_BYTE: - case Instruction::IGET_BYTE_QUICK: VerifyISFieldAccess<FieldAccessType::kAccGet>(inst, reg_types_.Byte(), true, false); break; case Instruction::IGET_CHAR: - case Instruction::IGET_CHAR_QUICK: VerifyISFieldAccess<FieldAccessType::kAccGet>(inst, reg_types_.Char(), true, false); break; case Instruction::IGET_SHORT: - case Instruction::IGET_SHORT_QUICK: VerifyISFieldAccess<FieldAccessType::kAccGet>(inst, reg_types_.Short(), true, false); break; case Instruction::IGET: - case Instruction::IGET_QUICK: VerifyISFieldAccess<FieldAccessType::kAccGet>(inst, reg_types_.Integer(), true, false); break; case Instruction::IGET_WIDE: - case Instruction::IGET_WIDE_QUICK: VerifyISFieldAccess<FieldAccessType::kAccGet>(inst, reg_types_.LongLo(), true, false); break; case Instruction::IGET_OBJECT: - case Instruction::IGET_OBJECT_QUICK: VerifyISFieldAccess<FieldAccessType::kAccGet>(inst, reg_types_.JavaLangObject(false), false, false); break; case Instruction::IPUT_BOOLEAN: - case Instruction::IPUT_BOOLEAN_QUICK: VerifyISFieldAccess<FieldAccessType::kAccPut>(inst, reg_types_.Boolean(), true, false); break; case Instruction::IPUT_BYTE: - case Instruction::IPUT_BYTE_QUICK: VerifyISFieldAccess<FieldAccessType::kAccPut>(inst, reg_types_.Byte(), true, false); break; case Instruction::IPUT_CHAR: - case Instruction::IPUT_CHAR_QUICK: VerifyISFieldAccess<FieldAccessType::kAccPut>(inst, reg_types_.Char(), true, false); break; case Instruction::IPUT_SHORT: - case Instruction::IPUT_SHORT_QUICK: VerifyISFieldAccess<FieldAccessType::kAccPut>(inst, reg_types_.Short(), true, false); break; case Instruction::IPUT: - case Instruction::IPUT_QUICK: VerifyISFieldAccess<FieldAccessType::kAccPut>(inst, reg_types_.Integer(), true, false); break; case Instruction::IPUT_WIDE: - case Instruction::IPUT_WIDE_QUICK: VerifyISFieldAccess<FieldAccessType::kAccPut>(inst, reg_types_.LongLo(), true, false); break; case Instruction::IPUT_OBJECT: - case Instruction::IPUT_OBJECT_QUICK: VerifyISFieldAccess<FieldAccessType::kAccPut>(inst, reg_types_.JavaLangObject(false), false, false); break; @@ -2952,12 +2938,9 @@ bool MethodVerifier<kVerifierDebug>::CodeFlowVerifyInstruction(uint32_t* start_g case Instruction::INVOKE_VIRTUAL: case Instruction::INVOKE_VIRTUAL_RANGE: case Instruction::INVOKE_SUPER: - case Instruction::INVOKE_SUPER_RANGE: - case Instruction::INVOKE_VIRTUAL_QUICK: - case Instruction::INVOKE_VIRTUAL_RANGE_QUICK: { + case Instruction::INVOKE_SUPER_RANGE: { bool is_range = (inst->Opcode() == Instruction::INVOKE_VIRTUAL_RANGE || - inst->Opcode() == Instruction::INVOKE_SUPER_RANGE || - inst->Opcode() == Instruction::INVOKE_VIRTUAL_RANGE_QUICK); + inst->Opcode() == Instruction::INVOKE_SUPER_RANGE); bool is_super = (inst->Opcode() == Instruction::INVOKE_SUPER || inst->Opcode() == Instruction::INVOKE_SUPER_RANGE); MethodType type = is_super ? METHOD_SUPER : METHOD_VIRTUAL; @@ -3469,7 +3452,7 @@ bool MethodVerifier<kVerifierDebug>::CodeFlowVerifyInstruction(uint32_t* start_g /* These should never appear during verification. */ case Instruction::UNUSED_3E ... Instruction::UNUSED_43: - case Instruction::UNUSED_F3 ... Instruction::UNUSED_F9: + case Instruction::UNUSED_E3 ... Instruction::UNUSED_F9: case Instruction::UNUSED_79: case Instruction::UNUSED_7A: Fail(VERIFY_ERROR_BAD_CLASS_HARD) << "Unexpected opcode " << inst->DumpString(dex_file_); diff --git a/tools/dexfuzz/src/dexfuzz/program/mutators/RandomInstructionGenerator.java b/tools/dexfuzz/src/dexfuzz/program/mutators/RandomInstructionGenerator.java index ff43c7c510..dfc57ac442 100644 --- a/tools/dexfuzz/src/dexfuzz/program/mutators/RandomInstructionGenerator.java +++ b/tools/dexfuzz/src/dexfuzz/program/mutators/RandomInstructionGenerator.java @@ -133,14 +133,10 @@ public class RandomInstructionGenerator extends CodeMutator { if (Opcode.isBetween(newOpcode, Opcode.FILLED_NEW_ARRAY, Opcode.FILL_ARRAY_DATA) || Opcode.isBetween(newOpcode, Opcode.PACKED_SWITCH, Opcode.SPARSE_SWITCH) || Opcode.isBetween(newOpcode, Opcode.INVOKE_VIRTUAL, Opcode.INVOKE_INTERFACE) - || Opcode.isBetween(newOpcode, - Opcode.INVOKE_VIRTUAL_RANGE, Opcode.INVOKE_INTERFACE_RANGE) - // Can never accept these instructions at compile time. - || Opcode.isBetween(newOpcode, Opcode.IGET_QUICK, Opcode.IPUT_SHORT_QUICK) - // Unused opcodes... - || Opcode.isBetween(newOpcode, Opcode.UNUSED_3E, Opcode.UNUSED_43) - || Opcode.isBetween(newOpcode, Opcode.UNUSED_79, Opcode.UNUSED_7A) - || Opcode.isBetween(newOpcode, Opcode.UNUSED_EF, Opcode.UNUSED_FF)) { + || Opcode.isBetween(newOpcode, Opcode.INVOKE_VIRTUAL_RANGE, Opcode.INVOKE_INTERFACE_RANGE) + || Opcode.isBetween(newOpcode, Opcode.UNUSED_3E, Opcode.UNUSED_43) + || Opcode.isBetween(newOpcode, Opcode.UNUSED_79, Opcode.UNUSED_7A) + || Opcode.isBetween(newOpcode, Opcode.UNUSED_E3, Opcode.UNUSED_FF)) { foundOpcode = false; } } diff --git a/tools/dexfuzz/src/dexfuzz/rawdex/Instruction.java b/tools/dexfuzz/src/dexfuzz/rawdex/Instruction.java index adafa6288e..620ea858c0 100644 --- a/tools/dexfuzz/src/dexfuzz/rawdex/Instruction.java +++ b/tools/dexfuzz/src/dexfuzz/rawdex/Instruction.java @@ -547,19 +547,18 @@ public class Instruction implements RawDexObject { addOpcodeInfo(Opcode.SHL_INT_LIT8, "shl-int/lit8", 0xe0, new Format22b()); addOpcodeInfo(Opcode.SHR_INT_LIT8, "shr-int/lit8", 0xe1, new Format22b()); addOpcodeInfo(Opcode.USHR_INT_LIT8, "ushr-int/lit8", 0xe2, new Format22b()); - addOpcodeInfo(Opcode.IGET_QUICK, "+iget-quick", 0xe3, new Format22c()); - addOpcodeInfo(Opcode.IGET_WIDE_QUICK, "+iget-wide-quick", 0xe4, new Format22c()); - addOpcodeInfo(Opcode.IGET_OBJECT_QUICK, "+iget-object-quick", 0xe5, new Format22c()); - addOpcodeInfo(Opcode.IPUT_QUICK, "+iput-quick", 0xe6, new Format22c()); - addOpcodeInfo(Opcode.IPUT_WIDE_QUICK, "+iput-wide-quick", 0xe7, new Format22c()); - addOpcodeInfo(Opcode.IPUT_OBJECT_QUICK, "+iput-object-quick", 0xe8, new Format22c()); - addOpcodeInfo(Opcode.INVOKE_VIRTUAL_QUICK, "+invoke-virtual-quick", 0xe9, new Format35c()); - addOpcodeInfo(Opcode.INVOKE_VIRTUAL_QUICK_RANGE, "+invoke-virtual-quick/range", - 0xea, new Format3rc()); - addOpcodeInfo(Opcode.IPUT_BOOLEAN_QUICK, "+iput-boolean-quick", 0xeb, new Format22c()); - addOpcodeInfo(Opcode.IPUT_BYTE_QUICK, "+iput-byte-quick", 0xec, new Format22c()); - addOpcodeInfo(Opcode.IPUT_CHAR_QUICK, "+iput-char-quick", 0xed, new Format22c()); - addOpcodeInfo(Opcode.IPUT_SHORT_QUICK, "+iput-short-quick", 0xee, new Format22c()); + addOpcodeInfo(Opcode.UNUSED_E3, "unused-e3", 0xe3, new Format10x()); + addOpcodeInfo(Opcode.UNUSED_E4, "unused-e4", 0xe4, new Format10x()); + addOpcodeInfo(Opcode.UNUSED_E5, "unused-e5", 0xe5, new Format10x()); + addOpcodeInfo(Opcode.UNUSED_E6, "unused-e6", 0xe6, new Format10x()); + addOpcodeInfo(Opcode.UNUSED_E7, "unused-e7", 0xe7, new Format10x()); + addOpcodeInfo(Opcode.UNUSED_E8, "unused-e8", 0xe8, new Format10x()); + addOpcodeInfo(Opcode.UNUSED_E9, "unused-e9", 0xe9, new Format10x()); + addOpcodeInfo(Opcode.UNUSED_EA, "unused-ea", 0xea, new Format10x()); + addOpcodeInfo(Opcode.UNUSED_EB, "unused-eb", 0xeb, new Format10x()); + addOpcodeInfo(Opcode.UNUSED_EC, "unused-ec", 0xec, new Format10x()); + addOpcodeInfo(Opcode.UNUSED_ED, "unused-ed", 0xed, new Format10x()); + addOpcodeInfo(Opcode.UNUSED_EE, "unused-ee", 0xee, new Format10x()); addOpcodeInfo(Opcode.UNUSED_EF, "unused-ef", 0xef, new Format10x()); addOpcodeInfo(Opcode.UNUSED_F0, "unused-f0", 0xf0, new Format10x()); addOpcodeInfo(Opcode.UNUSED_F1, "unused-f1", 0xf1, new Format10x()); diff --git a/tools/dexfuzz/src/dexfuzz/rawdex/Opcode.java b/tools/dexfuzz/src/dexfuzz/rawdex/Opcode.java index f7c7788d0d..5c2f08140c 100644 --- a/tools/dexfuzz/src/dexfuzz/rawdex/Opcode.java +++ b/tools/dexfuzz/src/dexfuzz/rawdex/Opcode.java @@ -244,18 +244,18 @@ public enum Opcode { SHL_INT_LIT8, SHR_INT_LIT8, USHR_INT_LIT8, - IGET_QUICK, - IGET_WIDE_QUICK, - IGET_OBJECT_QUICK, - IPUT_QUICK, - IPUT_WIDE_QUICK, - IPUT_OBJECT_QUICK, - INVOKE_VIRTUAL_QUICK, - INVOKE_VIRTUAL_QUICK_RANGE, - IPUT_BOOLEAN_QUICK, - IPUT_BYTE_QUICK, - IPUT_CHAR_QUICK, - IPUT_SHORT_QUICK, + UNUSED_E3, + UNUSED_E4, + UNUSED_E5, + UNUSED_E6, + UNUSED_E7, + UNUSED_E8, + UNUSED_E9, + UNUSED_EA, + UNUSED_EB, + UNUSED_EC, + UNUSED_ED, + UNUSED_EE, UNUSED_EF, UNUSED_F0, UNUSED_F1, |