Home | History | Annotate | Download | only in quick

Lines Matching full:instruction

36 static_assert(InlineMethodAnalyser::IsInstructionIGet(Instruction::IGET), "iget type");
37 static_assert(InlineMethodAnalyser::IsInstructionIGet(Instruction::IGET_WIDE), "iget_wide type");
38 static_assert(InlineMethodAnalyser::IsInstructionIGet(Instruction::IGET_OBJECT),
40 static_assert(InlineMethodAnalyser::IsInstructionIGet(Instruction::IGET_BOOLEAN),
42 static_assert(InlineMethodAnalyser::IsInstructionIGet(Instruction::IGET_BYTE), "iget_byte type");
43 static_assert(InlineMethodAnalyser::IsInstructionIGet(Instruction::IGET_CHAR), "iget_char type");
44 static_assert(InlineMethodAnalyser::IsInstructionIGet(Instruction::IGET_SHORT), "iget_short type");
45 static_assert(InlineMethodAnalyser::IsInstructionIPut(Instruction::IPUT), "iput type");
46 static_assert(InlineMethodAnalyser::IsInstructionIPut(Instruction::IPUT_WIDE), "iput_wide type");
47 static_assert(InlineMethodAnalyser::IsInstructionIPut(Instruction::IPUT_OBJECT),
49 static_assert(InlineMethodAnalyser::IsInstructionIPut(Instruction::IPUT_BOOLEAN),
51 static_assert(InlineMethodAnalyser::IsInstructionIPut(Instruction::IPUT_BYTE), "iput_byte type");
52 static_assert(InlineMethodAnalyser::IsInstructionIPut(Instruction::IPUT_CHAR), "iput_char type");
53 static_assert(InlineMethodAnalyser::IsInstructionIPut(Instruction::IPUT_SHORT), "iput_short type");
54 static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET) ==
55 InlineMethodAnalyser::IPutVariant(Instruction::IPUT), "iget/iput variant");
56 static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET_WIDE) ==
57 InlineMethodAnalyser::IPutVariant(Instruction::IPUT_WIDE), "iget/iput_wide variant");
58 static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET_OBJECT) ==
59 InlineMethodAnalyser::IPutVariant(Instruction::IPUT_OBJECT), "iget/iput_object variant");
60 static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET_BOOLEAN) ==
61 InlineMethodAnalyser::IPutVariant(Instruction::IPUT_BOOLEAN), "iget/iput_boolean variant");
62 static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET_BYTE) ==
63 InlineMethodAnalyser::IPutVariant(Instruction::IPUT_BYTE), "iget/iput_byte variant");
64 static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET_CHAR) ==
65 InlineMethodAnalyser::IPutVariant(Instruction::IPUT_CHAR), "iget/iput_char variant");
66 static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET_SHORT) ==
67 InlineMethodAnalyser::IPutVariant(Instruction::IPUT_SHORT), "iget/iput_short variant");
80 // We currently support only plain return or 2-instruction methods.
84 const Instruction* instruction = Instruction::At(code_item->insns_);
85 Instruction::Code opcode = instruction->Opcode();
88 case Instruction::RETURN_VOID:
95 case Instruction::RETURN:
96 case Instruction::RETURN_OBJECT:
97 case Instruction::RETURN_WIDE:
99 case Instruction::CONST:
100 case Instruction::CONST_4:
101 case Instruction::CONST_16:
102 case Instruction::CONST_HIGH16:
105 case Instruction::IGET:
106 case Instruction::IGET_OBJECT:
107 case Instruction::IGET_BOOLEAN:
108 case Instruction::IGET_BYTE:
109 case Instruction::IGET_CHAR:
110 case Instruction::IGET_SHORT:
111 case Instruction::IGET_WIDE:
113 // case Instruction::IGET_QUICK:
114 // case Instruction::IGET_WIDE_QUICK:
115 // case Instruction::IGET_OBJECT_QUICK:
117 case Instruction::IPUT:
118 case Instruction::IPUT_OBJECT:
119 case Instruction::IPUT_BOOLEAN:
120 case Instruction::IPUT_BYTE:
121 case Instruction::IPUT_CHAR:
122 case Instruction::IPUT_SHORT:
123 case Instruction::IPUT_WIDE:
125 // case Instruction::IPUT_QUICK:
126 // case Instruction::IPUT_WIDE_QUICK:
127 // case Instruction::IPUT_OBJECT_QUICK:
145 const Instruction* return_instruction = Instruction::At(code_item->insns_);
146 Instruction::Code return_opcode = return_instruction->Opcode();
150 DCHECK_LT((return_opcode == Instruction::RETURN_WIDE) ? reg + 1 : reg,
158 data->is_wide = (return_opcode == Instruction::RETURN_WIDE) ? 1u : 0u;
159 data->is_object = (return_opcode == Instruction::RETURN_OBJECT) ? 1u : 0u;
168 const Instruction* instruction = Instruction::At(code_item->insns_);
169 const Instruction* return_instruction = instruction->Next();
170 Instruction::Code return_opcode = return_instruction->Opcode();
171 if (return_opcode != Instruction::RETURN &&
172 return_opcode != Instruction::RETURN_OBJECT) {
179 int32_t const_value = instruction->VRegB();
180 if (instruction->Opcode() == Instruction::CONST_HIGH16) {
183 DCHECK_LT(instruction->VRegA(), code_item->registers_size_);
184 if (instruction->VRegA() != return_reg) {
187 if (return_opcode == Instruction::RETURN_OBJECT && const_value != 0) {
201 const Instruction* instruction = Instruction::At(code_item->insns_);
202 Instruction::Code opcode = instruction->Opcode();
205 const Instruction* return_instruction = instruction->Next();
206 Instruction::Code return_opcode = return_instruction->Opcode();
207 if (!(return_opcode == Instruction::RETURN_WIDE && opcode == Instruction::IGET_WIDE) &&
208 !(return_opcode == Instruction::RETURN_OBJECT && opcode == Instruction::IGET_OBJECT) &&
209 !(return_opcode == Instruction::RETURN && opcode != Instruction::IGET_WIDE &&
210 opcode != Instruction::IGET_OBJECT)) {
215 DCHECK_LT(return_opcode == Instruction::RETURN_WIDE ? return_reg + 1 : return_reg,
218 uint32_t dst_reg = instruction->VRegA_22c();
219 uint32_t object_reg = instruction->VRegB_22c();
220 uint32_t field_idx = instruction->VRegC_22c();
226 DCHECK_LT(opcode == Instruction::IGET_WIDE ? dst_reg + 1 : dst_reg, code_item->registers_size_);
264 const Instruction* instruction = Instruction::At(code_item->insns_);
265 Instruction::Code opcode = instruction->Opcode();
268 const Instruction* return_instruction = instruction->Next();
269 Instruction::Code return_opcode = return_instruction->Opcode();
272 if (return_opcode != Instruction::RETURN_VOID) {
273 if (return_opcode != Instruction::RETURN &&
274 return_opcode != Instruction::RETURN_OBJECT &&
275 return_opcode != Instruction::RETURN_WIDE) {
281 DCHECK_LT(return_opcode == Instruction::RETURN_WIDE ? return_reg + 1u : return_reg,
286 uint32_t src_reg = instruction->VRegA_22c();
287 uint32_t object_reg = instruction->VRegB_22c();
288 uint32_t field_idx = instruction->VRegC_22c();
292 DCHECK_LT(opcode == Instruction::IPUT_WIDE ? src_reg + 1 : src_reg, code_item->registers_size_);