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
diff --git a/compiler/optimizing/instruction_builder.cc b/compiler/optimizing/instruction_builder.cc
index 146eb1d..ee6113f 100644
--- a/compiler/optimizing/instruction_builder.cc
+++ b/compiler/optimizing/instruction_builder.cc
@@ -3560,37 +3560,10 @@
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 93270cd..11a2d97 100644
--- a/libdexfile/dex/dex_instruction.cc
+++ b/libdexfile/dex/dex_instruction.cc
@@ -281,15 +281,6 @@
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 @@
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 @@
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 @@
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 b9540a6..3672351 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 3f79abf..b0e3d6e 100644
--- a/libdexfile/dex/dex_instruction_test.cc
+++ b/libdexfile/dex/dex_instruction_test.cc
@@ -169,8 +169,6 @@
"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 49179be..53beb9f 100644
--- a/libdexfile/dex/dex_instruction_utils.h
+++ b/libdexfile/dex/dex_instruction_utils.h
@@ -68,11 +68,6 @@
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 @@
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 @@
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 d078d6f..eac2709 100644
--- a/runtime/dex_to_dex_decompiler.cc
+++ b/runtime/dex_to_dex_decompiler.cc
@@ -110,70 +110,6 @@
}
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 4b3f8c6..538ac12 100644
--- a/runtime/interpreter/interpreter_switch_impl-inl.h
+++ b/runtime/interpreter/interpreter_switch_impl-inl.h
@@ -917,34 +917,6 @@
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 @@
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 @@
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 @@
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 8e5ecd0..376c93b 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 adbd405..8414a1f 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 31b9354..20f1acf 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 2348608..4d75af6 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 73ce5e0..fb1dac9 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 eccd521..a8cf62e 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 4983201..39f2ea0 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 fafc2d2..00490a7 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 56a8086..ace1b09 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 6163322..d373147 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 992feeb..c56ec05 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 9100ed7..063be34 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 ec4f8f9..7f51880 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 e8f1dba..6ab1931 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 270ccb6..ec556b8 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 35fdbcd..a723096 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 afbcb50..643c6da 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 412389f..ec76b83 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 6ae43c9..2e3d297 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 cb81a91..2b4e12c 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 7d82c3b..bbbf663 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 d4b16b4..e101f9a 100644
--- a/runtime/jit/profiling_info.cc
+++ b/runtime/jit/profiling_info.cc
@@ -46,8 +46,6 @@
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 f7d0f28..ae71ad3 100644
--- a/runtime/verifier/method_verifier.cc
+++ b/runtime/verifier/method_verifier.cc
@@ -2844,61 +2844,47 @@
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 @@
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 @@
/* 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 ff43c7c..dfc57ac 100644
--- a/tools/dexfuzz/src/dexfuzz/program/mutators/RandomInstructionGenerator.java
+++ b/tools/dexfuzz/src/dexfuzz/program/mutators/RandomInstructionGenerator.java
@@ -133,14 +133,10 @@
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 adafa62..620ea85 100644
--- a/tools/dexfuzz/src/dexfuzz/rawdex/Instruction.java
+++ b/tools/dexfuzz/src/dexfuzz/rawdex/Instruction.java
@@ -547,19 +547,18 @@
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 f7c7788..5c2f081 100644
--- a/tools/dexfuzz/src/dexfuzz/rawdex/Opcode.java
+++ b/tools/dexfuzz/src/dexfuzz/rawdex/Opcode.java
@@ -244,18 +244,18 @@
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,