summaryrefslogtreecommitdiff
path: root/runtime/interpreter/interpreter_switch_impl.cc
diff options
context:
space:
mode:
author Narayan Kamath <narayan@google.com> 2016-08-03 12:46:23 +0100
committer Narayan Kamath <narayan@google.com> 2016-08-10 14:00:16 +0100
commit8ec3bd2b31ccbc9027b8e9b1949dd1804bb6d30f (patch)
tree6cc457a060c7faade49229010bfe3119e55b254d /runtime/interpreter/interpreter_switch_impl.cc
parentc218427ab96e521e0c4e9a3ffeb87e6c57eea0a5 (diff)
Instruction: Add new formats 45cc and 4rcc.
These are new 4 byte formats with the following properties. - The first three (16 bit) words of these instructions have the same format as 35c and 3rc respectively. - The fourth 16 bit word encodes an additional constant index reference. This change includes placeholder opcodes for invoke-polymorphic and invoke-polymorphic/range which will be the first dex instructions that use this new format. In addition to a method_idx that gives the invoked method, these instructions also provide a proto_idx which gives the (static) type signature of the call site. The only reason these are included in this change is because we need an instruction with a given format to write a unit_test using the Instruction API. bug: 30550796 test: make test-art-host Change-Id: I02612ddee47169757175a8079d82f811f6545945
Diffstat (limited to 'runtime/interpreter/interpreter_switch_impl.cc')
-rw-r--r--runtime/interpreter/interpreter_switch_impl.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/runtime/interpreter/interpreter_switch_impl.cc b/runtime/interpreter/interpreter_switch_impl.cc
index 3623db2a35..a6349fcf88 100644
--- a/runtime/interpreter/interpreter_switch_impl.cc
+++ b/runtime/interpreter/interpreter_switch_impl.cc
@@ -2322,9 +2322,12 @@ JValue ExecuteSwitchImpl(Thread* self, const DexFile::CodeItem* code_item,
inst = inst->Next_2xx();
break;
case Instruction::UNUSED_3E ... Instruction::UNUSED_43:
- case Instruction::UNUSED_F3 ... Instruction::UNUSED_FF:
+ case Instruction::UNUSED_F3 ... Instruction::UNUSED_F9:
+ case Instruction::UNUSED_FC ... Instruction::UNUSED_FF:
case Instruction::UNUSED_79:
case Instruction::UNUSED_7A:
+ case Instruction::INVOKE_POLYMORPHIC:
+ case Instruction::INVOKE_POLYMORPHIC_RANGE:
UnexpectedOpcode(inst, shadow_frame);
}
} while (!interpret_one_instruction);