• Home
  • Raw
  • Download

Lines Matching refs:code_item

47   static bool Match(const CodeItemDataAccessor* code_item, MatchFn* const (&pattern)[size]);
66 explicit Matcher(const CodeItemDataAccessor* code_item) in Matcher() argument
67 : code_item_(code_item), in Matcher()
68 instruction_(code_item->begin()) {} in Matcher()
70 static bool DoMatch(const CodeItemDataAccessor* code_item, MatchFn* const* pattern, size_t size);
79 bool Matcher::Match(const CodeItemDataAccessor* code_item, MatchFn* const (&pattern)[size]) { in Match() argument
80 return DoMatch(code_item, pattern, size); in Match()
129 bool Matcher::DoMatch(const CodeItemDataAccessor* code_item, MatchFn* const* pattern, size_t size) { in DoMatch() argument
130 Matcher matcher(code_item); in DoMatch()
163 size_t CountForwardedConstructorArguments(const CodeItemDataAccessor* code_item, in CountForwardedConstructorArguments() argument
172 DCHECK_EQ(this_vreg, code_item->RegistersSize() - code_item->InsSize()); // Checked by verifier. in CountForwardedConstructorArguments()
254 bool DoAnalyseConstructor(const CodeItemDataAccessor* code_item, in DoAnalyseConstructor() argument
295 DCHECK(code_item != nullptr); in DoAnalyseConstructor()
297 code_item->InsnsSizeInCodeUnits() > kMaxCodeUnits || in DoAnalyseConstructor()
298 code_item->RegistersSize() > kMaxVRegs || in DoAnalyseConstructor()
299 !Matcher::Match(code_item, kConstructorPattern)) { in DoAnalyseConstructor()
304 uint16_t this_vreg = code_item->RegistersSize() - code_item->InsSize(); in DoAnalyseConstructor()
307 for (const DexInstructionPcPair& pair : *code_item) { in DoAnalyseConstructor()
319 instruction.VRegA_35c() <= code_item->InsSize()) { in DoAnalyseConstructor()
322 … size_t forwarded = CountForwardedConstructorArguments(code_item, &instruction, zero_vreg_mask); in DoAnalyseConstructor()
369 bool AnalyseConstructor(const CodeItemDataAccessor* code_item, in AnalyseConstructor() argument
374 if (!DoAnalyseConstructor(code_item, method, iputs)) { in AnalyseConstructor()
433 CodeItemDataAccessor code_item(method->DexInstructionData()); in AnalyseMethodCode() local
434 if (!code_item.HasCodeItem()) { in AnalyseMethodCode()
438 return AnalyseMethodCode(&code_item, in AnalyseMethodCode()
445 bool InlineMethodAnalyser::AnalyseMethodCode(const CodeItemDataAccessor* code_item, in AnalyseMethodCode() argument
452 DCHECK_NE(code_item->InsnsSizeInCodeUnits(), 0u); in AnalyseMethodCode()
453 Instruction::Code opcode = code_item->begin()->Opcode(); in AnalyseMethodCode()
465 return AnalyseReturnMethod(code_item, result); in AnalyseMethodCode()
471 if (AnalyseConstMethod(code_item, result)) { in AnalyseMethodCode()
481 return AnalyseConstructor(code_item, method, result); in AnalyseMethodCode()
495 return AnalyseIGetMethod(code_item, method_ref, is_static, method, result); in AnalyseMethodCode()
507 return AnalyseIPutMethod(code_item, method_ref, is_static, method, result); in AnalyseMethodCode()
522 bool InlineMethodAnalyser::AnalyseReturnMethod(const CodeItemDataAccessor* code_item, in AnalyseReturnMethod() argument
524 DexInstructionIterator return_instruction = code_item->begin(); in AnalyseReturnMethod()
527 uint32_t arg_start = code_item->RegistersSize() - code_item->InsSize(); in AnalyseReturnMethod()
530 code_item->RegistersSize()); in AnalyseReturnMethod()
544 bool InlineMethodAnalyser::AnalyseConstMethod(const CodeItemDataAccessor* code_item, in AnalyseConstMethod() argument
546 DexInstructionIterator instruction = code_item->begin(); in AnalyseConstMethod()
555 DCHECK_LT(return_reg, code_item->RegistersSize()); in AnalyseConstMethod()
561 DCHECK_LT(instruction->VRegA(), code_item->RegistersSize()); in AnalyseConstMethod()
575 bool InlineMethodAnalyser::AnalyseIGetMethod(const CodeItemDataAccessor* code_item, in AnalyseIGetMethod() argument
580 DexInstructionIterator instruction = code_item->begin(); in AnalyseIGetMethod()
595 code_item->RegistersSize()); in AnalyseIGetMethod()
600 uint32_t arg_start = code_item->RegistersSize() - code_item->InsSize(); in AnalyseIGetMethod()
602 DCHECK_LT(object_reg, code_item->RegistersSize()); in AnalyseIGetMethod()
605 DCHECK_LT(opcode == Instruction::IGET_WIDE ? dst_reg + 1 : dst_reg, code_item->RegistersSize()); in AnalyseIGetMethod()
639 bool InlineMethodAnalyser::AnalyseIPutMethod(const CodeItemDataAccessor* code_item, in AnalyseIPutMethod() argument
644 DexInstructionIterator instruction = code_item->begin(); in AnalyseIPutMethod()
650 uint32_t arg_start = code_item->RegistersSize() - code_item->InsSize(); in AnalyseIPutMethod()
662 code_item->RegistersSize()); in AnalyseIPutMethod()
670 DCHECK_LT(object_reg, code_item->RegistersSize()); in AnalyseIPutMethod()
672 DCHECK_LT(opcode == Instruction::IPUT_WIDE ? src_reg + 1 : src_reg, code_item->RegistersSize()); in AnalyseIPutMethod()