Lines Matching refs:Instruction
60 template <Instruction::Code opcode> bool Opcode();
67 instruction_(Instruction::At(code_item->insns_)), in Matcher()
74 const Instruction* instruction_;
112 template <Instruction::Code opcode>
120 (instruction_->Opcode() == Instruction::CONST_WIDE ? instruction_->VRegB_51l() == 0 in Const0()
142 ArtMethod* GetTargetConstructor(ArtMethod* method, const Instruction* invoke_direct) in GetTargetConstructor()
144 DCHECK_EQ(invoke_direct->Opcode(), Instruction::INVOKE_DIRECT); in GetTargetConstructor()
163 const Instruction* invoke_direct, in CountForwardedConstructorArguments()
165 DCHECK_EQ(invoke_direct->Opcode(), Instruction::INVOKE_DIRECT); in CountForwardedConstructorArguments()
168 uint32_t args[Instruction::kMaxVarArgRegs]; in CountForwardedConstructorArguments()
186 uint16_t GetZeroVRegMask(const Instruction* const0) { in GetZeroVRegMask()
188 DCHECK((const0->Opcode() == Instruction::CONST_WIDE) ? const0->VRegB_51l() == 0u in GetZeroVRegMask()
210 const Instruction* new_iput, in RecordConstructorIPut()
283 &Matcher::Required<&Matcher::Opcode<Instruction::INVOKE_DIRECT>>, in DoAnalyseConstructor()
287 &Matcher::Required<&Matcher::Opcode<Instruction::RETURN_VOID>>, in DoAnalyseConstructor()
304 for (const Instruction* instruction = Instruction::At(code_item->insns_); in DoAnalyseConstructor()
305 instruction->Opcode() != Instruction::RETURN_VOID; in DoAnalyseConstructor()
307 if (instruction->Opcode() == Instruction::INVOKE_DIRECT) { in DoAnalyseConstructor()
323 DCHECK_EQ(Instruction::At(target_method->GetCodeItem()->insns_)->Opcode(), in DoAnalyseConstructor()
324 Instruction::RETURN_VOID); in DoAnalyseConstructor()
397 static_assert(InlineMethodAnalyser::IsInstructionIGet(Instruction::IGET), "iget type");
398 static_assert(InlineMethodAnalyser::IsInstructionIGet(Instruction::IGET_WIDE), "iget_wide type");
399 static_assert(InlineMethodAnalyser::IsInstructionIGet(Instruction::IGET_OBJECT),
401 static_assert(InlineMethodAnalyser::IsInstructionIGet(Instruction::IGET_BOOLEAN),
403 static_assert(InlineMethodAnalyser::IsInstructionIGet(Instruction::IGET_BYTE), "iget_byte type");
404 static_assert(InlineMethodAnalyser::IsInstructionIGet(Instruction::IGET_CHAR), "iget_char type");
405 static_assert(InlineMethodAnalyser::IsInstructionIGet(Instruction::IGET_SHORT), "iget_short type");
406 static_assert(InlineMethodAnalyser::IsInstructionIPut(Instruction::IPUT), "iput type");
407 static_assert(InlineMethodAnalyser::IsInstructionIPut(Instruction::IPUT_WIDE), "iput_wide type");
408 static_assert(InlineMethodAnalyser::IsInstructionIPut(Instruction::IPUT_OBJECT),
410 static_assert(InlineMethodAnalyser::IsInstructionIPut(Instruction::IPUT_BOOLEAN),
412 static_assert(InlineMethodAnalyser::IsInstructionIPut(Instruction::IPUT_BYTE), "iput_byte type");
413 static_assert(InlineMethodAnalyser::IsInstructionIPut(Instruction::IPUT_CHAR), "iput_char type");
414 static_assert(InlineMethodAnalyser::IsInstructionIPut(Instruction::IPUT_SHORT), "iput_short type");
415 static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET) ==
416 InlineMethodAnalyser::IPutVariant(Instruction::IPUT), "iget/iput variant");
417 static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET_WIDE) ==
418 InlineMethodAnalyser::IPutVariant(Instruction::IPUT_WIDE), "iget/iput_wide variant");
419 static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET_OBJECT) ==
420 InlineMethodAnalyser::IPutVariant(Instruction::IPUT_OBJECT), "iget/iput_object variant");
421 static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET_BOOLEAN) ==
422 InlineMethodAnalyser::IPutVariant(Instruction::IPUT_BOOLEAN), "iget/iput_boolean variant");
423 static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET_BYTE) ==
424 InlineMethodAnalyser::IPutVariant(Instruction::IPUT_BYTE), "iget/iput_byte variant");
425 static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET_CHAR) ==
426 InlineMethodAnalyser::IPutVariant(Instruction::IPUT_CHAR), "iget/iput_char variant");
427 static_assert(InlineMethodAnalyser::IGetVariant(Instruction::IGET_SHORT) ==
428 InlineMethodAnalyser::IPutVariant(Instruction::IPUT_SHORT), "iget/iput_short variant");
467 const Instruction* instruction = Instruction::At(code_item->insns_); in AnalyseMethodCode()
468 Instruction::Code opcode = instruction->Opcode(); in AnalyseMethodCode()
471 case Instruction::RETURN_VOID: in AnalyseMethodCode()
478 case Instruction::RETURN: in AnalyseMethodCode()
479 case Instruction::RETURN_OBJECT: in AnalyseMethodCode()
480 case Instruction::RETURN_WIDE: in AnalyseMethodCode()
482 case Instruction::CONST: in AnalyseMethodCode()
483 case Instruction::CONST_4: in AnalyseMethodCode()
484 case Instruction::CONST_16: in AnalyseMethodCode()
485 case Instruction::CONST_HIGH16: in AnalyseMethodCode()
491 case Instruction::CONST_WIDE: in AnalyseMethodCode()
492 case Instruction::CONST_WIDE_16: in AnalyseMethodCode()
493 case Instruction::CONST_WIDE_32: in AnalyseMethodCode()
494 case Instruction::CONST_WIDE_HIGH16: in AnalyseMethodCode()
495 case Instruction::INVOKE_DIRECT: in AnalyseMethodCode()
500 case Instruction::IGET: in AnalyseMethodCode()
501 case Instruction::IGET_OBJECT: in AnalyseMethodCode()
502 case Instruction::IGET_BOOLEAN: in AnalyseMethodCode()
503 case Instruction::IGET_BYTE: in AnalyseMethodCode()
504 case Instruction::IGET_CHAR: in AnalyseMethodCode()
505 case Instruction::IGET_SHORT: in AnalyseMethodCode()
506 case Instruction::IGET_WIDE: in AnalyseMethodCode()
512 case Instruction::IPUT: in AnalyseMethodCode()
513 case Instruction::IPUT_OBJECT: in AnalyseMethodCode()
514 case Instruction::IPUT_BOOLEAN: in AnalyseMethodCode()
515 case Instruction::IPUT_BYTE: in AnalyseMethodCode()
516 case Instruction::IPUT_CHAR: in AnalyseMethodCode()
517 case Instruction::IPUT_SHORT: in AnalyseMethodCode()
518 case Instruction::IPUT_WIDE: in AnalyseMethodCode()
540 const Instruction* return_instruction = Instruction::At(code_item->insns_); in AnalyseReturnMethod()
541 Instruction::Code return_opcode = return_instruction->Opcode(); in AnalyseReturnMethod()
545 DCHECK_LT((return_opcode == Instruction::RETURN_WIDE) ? reg + 1 : reg, in AnalyseReturnMethod()
553 data->is_wide = (return_opcode == Instruction::RETURN_WIDE) ? 1u : 0u; in AnalyseReturnMethod()
554 data->is_object = (return_opcode == Instruction::RETURN_OBJECT) ? 1u : 0u; in AnalyseReturnMethod()
563 const Instruction* instruction = Instruction::At(code_item->insns_); in AnalyseConstMethod()
564 const Instruction* return_instruction = instruction->Next(); in AnalyseConstMethod()
565 Instruction::Code return_opcode = return_instruction->Opcode(); in AnalyseConstMethod()
566 if (return_opcode != Instruction::RETURN && in AnalyseConstMethod()
567 return_opcode != Instruction::RETURN_OBJECT) { in AnalyseConstMethod()
575 if (instruction->Opcode() == Instruction::CONST_HIGH16) { in AnalyseConstMethod()
582 if (return_opcode == Instruction::RETURN_OBJECT && const_value != 0) { in AnalyseConstMethod()
598 const Instruction* instruction = Instruction::At(code_item->insns_); in AnalyseIGetMethod()
599 Instruction::Code opcode = instruction->Opcode(); in AnalyseIGetMethod()
602 const Instruction* return_instruction = instruction->Next(); in AnalyseIGetMethod()
603 Instruction::Code return_opcode = return_instruction->Opcode(); in AnalyseIGetMethod()
604 if (!(return_opcode == Instruction::RETURN_WIDE && opcode == Instruction::IGET_WIDE) && in AnalyseIGetMethod()
605 !(return_opcode == Instruction::RETURN_OBJECT && opcode == Instruction::IGET_OBJECT) && in AnalyseIGetMethod()
606 !(return_opcode == Instruction::RETURN && opcode != Instruction::IGET_WIDE && in AnalyseIGetMethod()
607 opcode != Instruction::IGET_OBJECT)) { in AnalyseIGetMethod()
612 DCHECK_LT(return_opcode == Instruction::RETURN_WIDE ? return_reg + 1 : return_reg, in AnalyseIGetMethod()
623 DCHECK_LT(opcode == Instruction::IGET_WIDE ? dst_reg + 1 : dst_reg, code_item->registers_size_); in AnalyseIGetMethod()
663 const Instruction* instruction = Instruction::At(code_item->insns_); in AnalyseIPutMethod()
664 Instruction::Code opcode = instruction->Opcode(); in AnalyseIPutMethod()
667 const Instruction* return_instruction = instruction->Next(); in AnalyseIPutMethod()
668 Instruction::Code return_opcode = return_instruction->Opcode(); in AnalyseIPutMethod()
671 if (return_opcode != Instruction::RETURN_VOID) { in AnalyseIPutMethod()
672 if (return_opcode != Instruction::RETURN && in AnalyseIPutMethod()
673 return_opcode != Instruction::RETURN_OBJECT && in AnalyseIPutMethod()
674 return_opcode != Instruction::RETURN_WIDE) { in AnalyseIPutMethod()
680 DCHECK_LT(return_opcode == Instruction::RETURN_WIDE ? return_reg + 1u : return_reg, in AnalyseIPutMethod()
691 DCHECK_LT(opcode == Instruction::IPUT_WIDE ? src_reg + 1 : src_reg, code_item->registers_size_); in AnalyseIPutMethod()