/art/compiler/dex/ |
H A D | quick_compiler_callbacks.cc | 20 #include "verifier/method_verifier-inl.h" 25 void QuickCompilerCallbacks::MethodVerified(verifier::MethodVerifier* verifier) { argument 26 verification_results_->ProcessVerifiedMethod(verifier); 27 MethodReference ref = verifier->GetMethodReference(); 28 method_inliner_map_->GetMethodInliner(ref.dex_file)->AnalyseMethodCode(verifier);
|
H A D | verified_method.h | 29 namespace verifier { namespace in namespace:art 31 } // namespace verifier 46 static const VerifiedMethod* Create(verifier::MethodVerifier* method_verifier, bool compile) 66 // by using the check-cast elision peephole optimization in the verifier. 91 bool GenerateGcMap(verifier::MethodVerifier* method_verifier); 94 static void VerifyGcMap(verifier::MethodVerifier* method_verifier, 98 static void ComputeGcMapSizes(verifier::MethodVerifier* method_verifier, 102 void GenerateDevirtMap(verifier::MethodVerifier* method_verifier) 106 bool GenerateDequickenMap(verifier::MethodVerifier* method_verifier) 110 void GenerateSafeCastSet(verifier [all...] |
H A D | quick_compiler_callbacks.h | 40 void MethodVerified(verifier::MethodVerifier* verifier)
|
H A D | verified_method.cc | 33 #include "verifier/method_verifier-inl.h" 34 #include "verifier/reg_type-inl.h" 35 #include "verifier/register_line-inl.h" 44 const VerifiedMethod* VerifiedMethod::Create(verifier::MethodVerifier* method_verifier, 85 bool VerifiedMethod::GenerateDequickenMap(verifier::MethodVerifier* method_verifier) { 98 verifier::RegisterLine* line = method_verifier->GetRegLine(dex_pc); 105 // The verifier must know what the type of the object was or else we would have gotten a 112 verifier::RegisterLine* line = method_verifier->GetRegLine(dex_pc); 118 // The verifier must know what the type of the field was or else we would have gotten a 128 void VerifiedMethod::GenerateDevirtMap(verifier [all...] |
H A D | verification_results.h | 32 namespace verifier { namespace in namespace:art 34 } // namespace verifier 45 void ProcessVerifiedMethod(verifier::MethodVerifier* method_verifier)
|
H A D | verification_results.cc | 27 #include "verifier/method_verifier-inl.h" 47 void VerificationResults::ProcessVerifiedMethod(verifier::MethodVerifier* method_verifier) {
|
/art/runtime/verifier/ |
H A D | register_line.cc | 26 namespace verifier { namespace in namespace:art 28 bool RegisterLine::CheckConstructorReturn(MethodVerifier* verifier) const { 32 const RegType& type = GetRegisterType(verifier, i); 36 << PrettyMethod(verifier->GetMethodReference().dex_method_index, 37 *verifier->GetMethodReference().dex_file); 41 verifier->Fail(VERIFY_ERROR_BAD_CLASS_HARD) 47 const RegType& RegisterLine::GetInvocationThis(MethodVerifier* verifier, const Instruction* inst, argument 52 verifier->Fail(VERIFY_ERROR_BAD_CLASS_HARD) << "invoke lacks 'this'"; 54 return verifier->GetRegTypeCache()->Conflict(); 58 const RegType& this_type = GetRegisterType(verifier, this_re 70 VerifyRegisterTypeWide(MethodVerifier* verifier, uint32_t vsrc, const RegType& check_type1, const RegType& check_type2) argument 94 MarkRefsAsInitialized(MethodVerifier* verifier, const RegType& uninit_type) argument 112 MarkAllRegistersAsConflicts(MethodVerifier* verifier) argument 119 MarkAllRegistersAsConflictsExcept(MethodVerifier* verifier, uint32_t vsrc) argument 128 MarkAllRegistersAsConflictsExceptWide(MethodVerifier* verifier, uint32_t vsrc) argument 153 MarkUninitRefsAsInvalid(MethodVerifier* verifier, const RegType& uninit_type) argument 162 CopyResultRegister1(MethodVerifier* verifier, uint32_t vdst, bool is_reference) argument 179 CopyResultRegister2(MethodVerifier* verifier, uint32_t vdst) argument 193 CheckUnaryOp(MethodVerifier* verifier, const Instruction* inst, const RegType& dst_type, const RegType& src_type) argument 200 CheckUnaryOpWide(MethodVerifier* verifier, const Instruction* inst, const RegType& dst_type1, const RegType& dst_type2, const RegType& src_type1, const RegType& src_type2) argument 208 CheckUnaryOpToWide(MethodVerifier* verifier, const Instruction* inst, const RegType& dst_type1, const RegType& dst_type2, const RegType& src_type) argument 216 CheckUnaryOpFromWide(MethodVerifier* verifier, const Instruction* inst, const RegType& dst_type, const RegType& src_type1, const RegType& src_type2) argument 224 CheckBinaryOp(MethodVerifier* verifier, const Instruction* inst, const RegType& dst_type, const RegType& src_type1, const RegType& src_type2, bool check_boolean_op) argument 246 CheckBinaryOpWide(MethodVerifier* verifier, const Instruction* inst, const RegType& dst_type1, const RegType& dst_type2, const RegType& src_type1_1, const RegType& src_type1_2, const RegType& src_type2_1, const RegType& src_type2_2) argument 256 CheckBinaryOpWideShift(MethodVerifier* verifier, const Instruction* inst, const RegType& long_lo_type, const RegType& long_hi_type, const RegType& int_type) argument 265 CheckBinaryOp2addr(MethodVerifier* verifier, const Instruction* inst, const RegType& dst_type, const RegType& src_type1, const RegType& src_type2, bool check_boolean_op) argument 286 CheckBinaryOp2addrWide(MethodVerifier* verifier, const Instruction* inst, const RegType& dst_type1, const RegType& dst_type2, const RegType& src_type1_1, const RegType& src_type1_2, const RegType& src_type2_1, const RegType& src_type2_2) argument 298 CheckBinaryOp2addrWideShift(MethodVerifier* verifier, const Instruction* inst, const RegType& long_lo_type, const RegType& long_hi_type, const RegType& int_type) argument 309 CheckLiteralOp(MethodVerifier* verifier, const Instruction* inst, const RegType& dst_type, const RegType& src_type, bool check_boolean_op, bool is_lit16) argument 332 PushMonitor(MethodVerifier* verifier, uint32_t reg_idx, int32_t insn_idx) argument 364 PopMonitor(MethodVerifier* verifier, uint32_t reg_idx) argument 429 MergeRegisters(MethodVerifier* verifier, const RegisterLine* incoming_line) argument [all...] |
H A D | register_line-inl.h | 26 namespace verifier { namespace in namespace:art 32 inline const RegType& RegisterLine::GetRegisterType(MethodVerifier* verifier, uint32_t vsrc) const { argument 35 return verifier->GetRegTypeCache()->GetFromId(line_[vsrc]); 39 inline bool RegisterLine::SetRegisterType(MethodVerifier* verifier, uint32_t vdst, argument 43 verifier->Fail(VERIFY_ERROR_BAD_CLASS_HARD) << "Expected category1 register type not '" 64 inline bool RegisterLine::SetRegisterTypeWide(MethodVerifier* verifier, uint32_t vdst, argument 69 verifier->Fail(VERIFY_ERROR_BAD_CLASS_SOFT) << "Invalid wide pair '" 82 inline void RegisterLine::SetResultTypeToUnknown(MethodVerifier* verifier) { argument 83 result_[0] = verifier->GetRegTypeCache()->Undefined().GetId(); 87 inline void RegisterLine::SetResultRegisterType(MethodVerifier* verifier, cons argument 101 CopyRegister1(MethodVerifier* verifier, uint32_t vdst, uint32_t vsrc, TypeCategory cat) argument 118 CopyRegister2(MethodVerifier* verifier, uint32_t vdst, uint32_t vsrc) argument 130 VerifyRegisterType(MethodVerifier* verifier, uint32_t vsrc, const RegType& check_type) argument 181 Create(size_t num_regs, MethodVerifier* verifier) argument 186 RegisterLine(size_t num_regs, MethodVerifier* verifier) argument [all...] |
H A D | verify_mode.h | 23 namespace verifier { namespace in namespace:art 25 // The mode that the verifier should run as. 32 } // namespace verifier
|
H A D | register_line.h | 30 namespace verifier { namespace in namespace:art 66 static RegisterLine* Create(size_t num_regs, MethodVerifier* verifier); 69 void CopyRegister1(MethodVerifier* verifier, uint32_t vdst, uint32_t vsrc, TypeCategory cat) 74 void CopyRegister2(MethodVerifier* verifier, uint32_t vdst, uint32_t vsrc) 79 void CopyResultRegister1(MethodVerifier* verifier, uint32_t vdst, bool is_reference) 84 void CopyResultRegister2(MethodVerifier* verifier, uint32_t vdst) 88 void SetResultTypeToUnknown(MethodVerifier* verifier) SHARED_REQUIRES(Locks::mutator_lock_); 102 ALWAYS_INLINE bool SetRegisterType(MethodVerifier* verifier, 107 bool SetRegisterTypeWide(MethodVerifier* verifier, 114 void SetResultRegisterType(MethodVerifier* verifier, cons [all...] |
H A D | instruction_flags.cc | 22 namespace verifier { namespace in namespace:art 41 } // namespace verifier
|
H A D | instruction_flags.h | 26 namespace verifier { namespace in namespace:art 125 // Location of interest to the compiler for GC maps and verifier based method sharpening. 136 } // namespace verifier
|
H A D | method_verifier-inl.h | 27 namespace verifier { namespace in namespace:art 84 } // namespace verifier
|
H A D | method_verifier_test.cc | 28 namespace verifier { namespace in namespace:art 66 } // namespace verifier
|
H A D | reg_type_cache-inl.h | 28 namespace verifier { namespace in namespace:art 30 inline const art::verifier::RegType& RegTypeCache::GetFromId(uint16_t id) const { 133 } // namespace verifier
|
H A D | method_verifier.cc | 52 namespace verifier { namespace in namespace:art 58 // On VLOG(verifier), should we dump the whole state when we run into a hard failure? 70 MethodVerifier* verifier) { 89 register_lines_[i].reset(RegisterLine::Create(registers_size, verifier)); 97 ALWAYS_INLINE static inline bool FailOrAbort(MethodVerifier* verifier, bool condition, argument 105 verifier->Fail(VERIFY_ERROR_BAD_CLASS_HARD) << error_msg << work_insn_idx; 113 static void SafelyMarkAllRegistersAsConflicts(MethodVerifier* verifier, RegisterLine* reg_line) { argument 114 if (verifier->IsInstanceConstructor()) { 116 reg_line->CheckConstructorReturn(verifier); 118 reg_line->MarkAllRegistersAsConflicts(verifier); 68 Init(RegisterTrackingMode mode, InstructionFlags* flags, uint32_t insns_size, uint16_t registers_size, MethodVerifier* verifier) argument 469 MethodVerifier* verifier = new MethodVerifier(self, local 1940 AdjustReturnLine(MethodVerifier* verifier, const Instruction* ret_inst, RegisterLine* line) argument [all...] |
H A D | method_verifier.h | 44 namespace verifier { namespace in namespace:art 72 * that can potentially be corrected, and the verifier will try again at runtime. 89 // For opcodes that don't have complete verifier support (such as lambda opcodes), 92 // in a special "do access checks" mode which will perform verifier-like checking 95 // TODO: Once all new opcodes have implemented full verifier support, this can be removed. 124 uint16_t registers_size, MethodVerifier* verifier); 136 // The verifier 146 constexpr uint32_t unresolved_mask = verifier::VerifyError::VERIFY_ERROR_NO_CLASS 147 | verifier::VerifyError::VERIFY_ERROR_ACCESS_CLASS 148 | verifier [all...] |
H A D | reg_type_cache.h | 38 namespace verifier { namespace in namespace:art 58 const art::verifier::RegType& GetFromId(uint16_t id) const; 170 // verifier. 208 } // namespace verifier
|
/art/runtime/ |
H A D | noop_compiler_callbacks.h | 29 void MethodVerified(verifier::MethodVerifier* verifier ATTRIBUTE_UNUSED) OVERRIDE {
|
H A D | compiler_callbacks.h | 25 namespace verifier { namespace in namespace:art 29 } // namespace verifier 40 virtual void MethodVerified(verifier::MethodVerifier* verifier)
|
H A D | runtime_options.def | 114 RUNTIME_OPTIONS_KEY (verifier::VerifyMode, \ 115 Verify, verifier::VerifyMode::kEnable)
|
/art/runtime/quick/ |
H A D | inline_method_analyser.h | 33 namespace verifier { namespace in namespace:art 35 } // namespace verifier 215 * @param verifier the method verifier holding data about the method to analyse. 219 static bool AnalyseMethodCode(verifier::MethodVerifier* verifier, InlineMethod* result)
|
H A D | inline_method_analyser.cc | 28 #include "verifier/method_verifier-inl.h" 140 // Used for a single invoke in a constructor. In that situation, the method verifier makes 171 DCHECK_EQ(this_vreg, code_item->registers_size_ - code_item->ins_size_); // Checked by verifier. 434 bool InlineMethodAnalyser::AnalyseMethodCode(verifier::MethodVerifier* verifier, argument 436 DCHECK(verifier != nullptr); 438 DCHECK_EQ(verifier->CanLoadClasses(), result != nullptr); 441 // Note: verifier->GetMethod() may be null. 442 return AnalyseMethodCode(verifier->CodeItem(), 443 verifier [all...] |
/art/compiler/dex/quick/ |
H A D | dex_file_method_inliner.h | 30 namespace verifier { namespace in namespace:art 32 } // namespace verifier 42 * from the verifier and mark them for inlining. Inline these methods early 55 * @param verifier the method verifier holding data about the method to analyse. 58 bool AnalyseMethodCode(verifier::MethodVerifier* verifier)
|
/art/cmdline/ |
H A D | cmdline_parser_test.cc | 247 "third-party-jni,threads,verifier"; 263 log_verbosity.verifier = true; 563 EXPECT_SINGLE_PARSE_VALUE(verifier::VerifyMode::kNone, "-Xverify:none", M::Verify); 564 EXPECT_SINGLE_PARSE_VALUE(verifier::VerifyMode::kEnable, "-Xverify:remote", M::Verify); 565 EXPECT_SINGLE_PARSE_VALUE(verifier::VerifyMode::kEnable, "-Xverify:all", M::Verify); 566 EXPECT_SINGLE_PARSE_VALUE(verifier::VerifyMode::kSoftFail, "-Xverify:softfail", M::Verify);
|