Lines Matching refs:Instruction
61 template <Instruction::Code opcode> bool Opcode();
111 template <Instruction::Code opcode>
119 (instruction_->Opcode() == Instruction::CONST_WIDE ? instruction_->VRegB_51l() == 0 in Const0()
141 ArtMethod* GetTargetConstructor(ArtMethod* method, const Instruction* invoke_direct) in GetTargetConstructor()
143 DCHECK_EQ(invoke_direct->Opcode(), Instruction::INVOKE_DIRECT); in GetTargetConstructor()
164 const Instruction* invoke_direct, in CountForwardedConstructorArguments()
166 DCHECK_EQ(invoke_direct->Opcode(), Instruction::INVOKE_DIRECT); in CountForwardedConstructorArguments()
169 uint32_t args[Instruction::kMaxVarArgRegs]; in CountForwardedConstructorArguments()
187 uint16_t GetZeroVRegMask(const Instruction* const0) { in GetZeroVRegMask()
189 DCHECK((const0->Opcode() == Instruction::CONST_WIDE) ? const0->VRegB_51l() == 0u in GetZeroVRegMask()
211 const Instruction* new_iput, in RecordConstructorIPut()
285 &Matcher::Required<&Matcher::Opcode<Instruction::INVOKE_DIRECT>>, in DoAnalyseConstructor()
289 &Matcher::Required<&Matcher::Opcode<Instruction::RETURN_VOID>>, in DoAnalyseConstructor()
308 const Instruction& instruction = pair.Inst(); in DoAnalyseConstructor()
309 if (instruction.Opcode() == Instruction::RETURN_VOID) { in DoAnalyseConstructor()
311 } else if (instruction.Opcode() == Instruction::INVOKE_DIRECT) { in DoAnalyseConstructor()
327 DCHECK_EQ(target_method->DexInstructionData().begin()->Opcode(), Instruction::RETURN_VOID); in DoAnalyseConstructor()
399 static_assert(InlineMethodAnalyser::IsInstructionIGet(Instruction::IGET), "iget type");
400 static_assert(InlineMethodAnalyser::IsInstructionIGet(Instruction::IGET_WIDE), "iget_wide type");
401 static_assert(InlineMethodAnalyser::IsInstructionIGet(Instruction::IGET_OBJECT),
403 static_assert(InlineMethodAnalyser::IsInstructionIGet(Instruction::IGET_BOOLEAN),
405 static_assert(InlineMethodAnalyser::IsInstructionIGet(Instruction::IGET_BYTE), "iget_byte type");
406 static_assert(InlineMethodAnalyser::IsInstructionIGet(Instruction::IGET_CHAR), "iget_char type");
407 static_assert(InlineMethodAnalyser::IsInstructionIGet(Instruction::IGET_SHORT), "iget_short type");
408 static_assert(InlineMethodAnalyser::IsInstructionIPut(Instruction::IPUT), "iput type");
409 static_assert(InlineMethodAnalyser::IsInstructionIPut(Instruction::IPUT_WIDE), "iput_wide type");
410 static_assert(InlineMethodAnalyser::IsInstructionIPut(Instruction::IPUT_OBJECT),
412 static_assert(InlineMethodAnalyser::IsInstructionIPut(Instruction::IPUT_BOOLEAN),
414 static_assert(InlineMethodAnalyser::IsInstructionIPut(Instruction::IPUT_BYTE), "iput_byte type");
415 static_assert(InlineMethodAnalyser::IsInstructionIPut(Instruction::IPUT_CHAR), "iput_char type");
416 static_assert(InlineMethodAnalyser::IsInstructionIPut(Instruction::IPUT_SHORT), "iput_short type");
417 static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET) ==
418 InlineMethodAnalyser::IPutVariant(Instruction::IPUT), "iget/iput variant");
419 static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET_WIDE) ==
420 InlineMethodAnalyser::IPutVariant(Instruction::IPUT_WIDE), "iget/iput_wide variant");
421 static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET_OBJECT) ==
422 InlineMethodAnalyser::IPutVariant(Instruction::IPUT_OBJECT), "iget/iput_object variant");
423 static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET_BOOLEAN) ==
424 InlineMethodAnalyser::IPutVariant(Instruction::IPUT_BOOLEAN), "iget/iput_boolean variant");
425 static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET_BYTE) ==
426 InlineMethodAnalyser::IPutVariant(Instruction::IPUT_BYTE), "iget/iput_byte variant");
427 static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET_CHAR) ==
428 InlineMethodAnalyser::IPutVariant(Instruction::IPUT_CHAR), "iget/iput_char variant");
429 static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET_SHORT) ==
430 InlineMethodAnalyser::IPutVariant(Instruction::IPUT_SHORT), "iget/iput_short variant");
453 Instruction::Code opcode = code_item->begin()->Opcode(); in AnalyseMethodCode()
456 case Instruction::RETURN_VOID: in AnalyseMethodCode()
462 case Instruction::RETURN: in AnalyseMethodCode()
463 case Instruction::RETURN_OBJECT: in AnalyseMethodCode()
464 case Instruction::RETURN_WIDE: in AnalyseMethodCode()
466 case Instruction::CONST: in AnalyseMethodCode()
467 case Instruction::CONST_4: in AnalyseMethodCode()
468 case Instruction::CONST_16: in AnalyseMethodCode()
469 case Instruction::CONST_HIGH16: in AnalyseMethodCode()
475 case Instruction::CONST_WIDE: in AnalyseMethodCode()
476 case Instruction::CONST_WIDE_16: in AnalyseMethodCode()
477 case Instruction::CONST_WIDE_32: in AnalyseMethodCode()
478 case Instruction::CONST_WIDE_HIGH16: in AnalyseMethodCode()
479 case Instruction::INVOKE_DIRECT: in AnalyseMethodCode()
484 case Instruction::IGET: in AnalyseMethodCode()
485 case Instruction::IGET_OBJECT: in AnalyseMethodCode()
486 case Instruction::IGET_BOOLEAN: in AnalyseMethodCode()
487 case Instruction::IGET_BYTE: in AnalyseMethodCode()
488 case Instruction::IGET_CHAR: in AnalyseMethodCode()
489 case Instruction::IGET_SHORT: in AnalyseMethodCode()
490 case Instruction::IGET_WIDE: in AnalyseMethodCode()
496 case Instruction::IPUT: in AnalyseMethodCode()
497 case Instruction::IPUT_OBJECT: in AnalyseMethodCode()
498 case Instruction::IPUT_BOOLEAN: in AnalyseMethodCode()
499 case Instruction::IPUT_BYTE: in AnalyseMethodCode()
500 case Instruction::IPUT_CHAR: in AnalyseMethodCode()
501 case Instruction::IPUT_SHORT: in AnalyseMethodCode()
502 case Instruction::IPUT_WIDE: in AnalyseMethodCode()
525 Instruction::Code return_opcode = return_instruction->Opcode(); in AnalyseReturnMethod()
529 DCHECK_LT((return_opcode == Instruction::RETURN_WIDE) ? reg + 1 : reg, in AnalyseReturnMethod()
536 data->is_wide = (return_opcode == Instruction::RETURN_WIDE) ? 1u : 0u; in AnalyseReturnMethod()
537 data->is_object = (return_opcode == Instruction::RETURN_OBJECT) ? 1u : 0u; in AnalyseReturnMethod()
547 const Instruction* return_instruction = instruction->Next(); in AnalyseConstMethod()
548 Instruction::Code return_opcode = return_instruction->Opcode(); in AnalyseConstMethod()
549 if (return_opcode != Instruction::RETURN && in AnalyseConstMethod()
550 return_opcode != Instruction::RETURN_OBJECT) { in AnalyseConstMethod()
558 if (instruction->Opcode() == Instruction::CONST_HIGH16) { in AnalyseConstMethod()
565 if (return_opcode == Instruction::RETURN_OBJECT && const_value != 0) { in AnalyseConstMethod()
581 Instruction::Code opcode = instruction->Opcode(); in AnalyseIGetMethod()
584 const Instruction* return_instruction = instruction->Next(); in AnalyseIGetMethod()
585 Instruction::Code return_opcode = return_instruction->Opcode(); in AnalyseIGetMethod()
586 if (!(return_opcode == Instruction::RETURN_WIDE && opcode == Instruction::IGET_WIDE) && in AnalyseIGetMethod()
587 !(return_opcode == Instruction::RETURN_OBJECT && opcode == Instruction::IGET_OBJECT) && in AnalyseIGetMethod()
588 !(return_opcode == Instruction::RETURN && opcode != Instruction::IGET_WIDE && in AnalyseIGetMethod()
589 opcode != Instruction::IGET_OBJECT)) { in AnalyseIGetMethod()
594 DCHECK_LT(return_opcode == Instruction::RETURN_WIDE ? return_reg + 1 : return_reg, in AnalyseIGetMethod()
605 DCHECK_LT(opcode == Instruction::IGET_WIDE ? dst_reg + 1 : dst_reg, code_item->RegistersSize()); in AnalyseIGetMethod()
645 Instruction::Code opcode = instruction->Opcode(); in AnalyseIPutMethod()
648 const Instruction* return_instruction = instruction->Next(); in AnalyseIPutMethod()
649 Instruction::Code return_opcode = return_instruction->Opcode(); in AnalyseIPutMethod()
652 if (return_opcode != Instruction::RETURN_VOID) { in AnalyseIPutMethod()
653 if (return_opcode != Instruction::RETURN && in AnalyseIPutMethod()
654 return_opcode != Instruction::RETURN_OBJECT && in AnalyseIPutMethod()
655 return_opcode != Instruction::RETURN_WIDE) { in AnalyseIPutMethod()
661 DCHECK_LT(return_opcode == Instruction::RETURN_WIDE ? return_reg + 1u : return_reg, in AnalyseIPutMethod()
672 DCHECK_LT(opcode == Instruction::IPUT_WIDE ? src_reg + 1 : src_reg, code_item->RegistersSize()); in AnalyseIPutMethod()