/art/runtime/verifier/ |
D | register_line.cc | 26 namespace verifier { namespace 28 bool RegisterLine::CheckConstructorReturn(MethodVerifier* verifier) const { in CheckConstructorReturn() 32 const RegType& type = GetRegisterType(verifier, i); in CheckConstructorReturn() 36 << PrettyMethod(verifier->GetMethodReference().dex_method_index, in CheckConstructorReturn() 37 *verifier->GetMethodReference().dex_file); in CheckConstructorReturn() 41 verifier->Fail(VERIFY_ERROR_BAD_CLASS_HARD) in CheckConstructorReturn() 47 const RegType& RegisterLine::GetInvocationThis(MethodVerifier* verifier, const Instruction* inst, in GetInvocationThis() argument 52 verifier->Fail(VERIFY_ERROR_BAD_CLASS_HARD) << "invoke lacks 'this'"; in GetInvocationThis() 54 return verifier->GetRegTypeCache()->Conflict(); in GetInvocationThis() 58 const RegType& this_type = GetRegisterType(verifier, this_reg); in GetInvocationThis() [all …]
|
D | register_line-inl.h | 26 namespace verifier { 28 inline const RegType& RegisterLine::GetRegisterType(MethodVerifier* verifier, uint32_t vsrc) const { in GetRegisterType() argument 31 return verifier->GetRegTypeCache()->GetFromId(line_[vsrc]); in GetRegisterType() 34 inline bool RegisterLine::SetRegisterType(MethodVerifier* verifier, uint32_t vdst, in SetRegisterType() argument 38 verifier->Fail(VERIFY_ERROR_BAD_CLASS_HARD) << "Expected category1 register type not '" in SetRegisterType() 51 inline bool RegisterLine::SetRegisterTypeWide(MethodVerifier* verifier, uint32_t vdst, in SetRegisterTypeWide() argument 56 verifier->Fail(VERIFY_ERROR_BAD_CLASS_SOFT) << "Invalid wide pair '" in SetRegisterTypeWide() 69 inline void RegisterLine::SetResultTypeToUnknown(MethodVerifier* verifier) { in SetResultTypeToUnknown() argument 70 result_[0] = verifier->GetRegTypeCache()->Undefined().GetId(); in SetResultTypeToUnknown() 74 inline void RegisterLine::SetResultRegisterType(MethodVerifier* verifier, const RegType& new_type) { in SetResultRegisterType() argument [all …]
|
D | register_line.h | 29 namespace verifier { 55 static RegisterLine* Create(size_t num_regs, MethodVerifier* verifier) { in Create() argument 57 RegisterLine* rl = new (memory) RegisterLine(num_regs, verifier); in Create() 62 void CopyRegister1(MethodVerifier* verifier, uint32_t vdst, uint32_t vsrc, TypeCategory cat) 67 void CopyRegister2(MethodVerifier* verifier, uint32_t vdst, uint32_t vsrc) 72 void CopyResultRegister1(MethodVerifier* verifier, uint32_t vdst, bool is_reference) 77 void CopyResultRegister2(MethodVerifier* verifier, uint32_t vdst) 81 void SetResultTypeToUnknown(MethodVerifier* verifier) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); 86 ALWAYS_INLINE bool SetRegisterType(MethodVerifier* verifier, uint32_t vdst, 90 bool SetRegisterTypeWide(MethodVerifier* verifier, uint32_t vdst, const RegType& new_type1, [all …]
|
D | method_verifier.cc | 50 namespace verifier { namespace 58 MethodVerifier* verifier) { in Init() argument 78 register_lines_[i] = RegisterLine::Create(registers_size, verifier); in Init() 93 ALWAYS_INLINE static inline bool FailOrAbort(MethodVerifier* verifier, bool condition, in FailOrAbort() argument 101 verifier->Fail(VERIFY_ERROR_BAD_CLASS_HARD) << error_msg << work_insn_idx; in FailOrAbort() 109 static void SafelyMarkAllRegistersAsConflicts(MethodVerifier* verifier, RegisterLine* reg_line) { in SafelyMarkAllRegistersAsConflicts() argument 110 if (verifier->IsInstanceConstructor()) { in SafelyMarkAllRegistersAsConflicts() 112 reg_line->CheckConstructorReturn(verifier); in SafelyMarkAllRegistersAsConflicts() 114 reg_line->MarkAllRegistersAsConflicts(verifier); in SafelyMarkAllRegistersAsConflicts() 315 MethodVerifier verifier(self, dex_file, dex_cache, class_loader, class_def, code_item, in VerifyMethod() local [all …]
|
D | instruction_flags.cc | 22 namespace verifier { namespace
|
D | reg_type_cache-inl.h | 28 namespace verifier { 30 inline const art::verifier::RegType& RegTypeCache::GetFromId(uint16_t id) const { in GetFromId()
|
D | dex_gc_map.cc | 22 namespace verifier { namespace
|
/art/compiler/dex/ |
D | quick_compiler_callbacks.cc | 25 bool QuickCompilerCallbacks::MethodVerified(verifier::MethodVerifier* verifier) { in MethodVerified() argument 26 bool result = verification_results_->ProcessVerifiedMethod(verifier); in MethodVerified() 28 MethodReference ref = verifier->GetMethodReference(); in MethodVerified() 30 ->AnalyseMethodCode(verifier); in MethodVerified()
|
D | verified_method.h | 29 namespace verifier { 46 static const VerifiedMethod* Create(verifier::MethodVerifier* method_verifier, bool compile) 98 bool GenerateGcMap(verifier::MethodVerifier* method_verifier); 101 static void VerifyGcMap(verifier::MethodVerifier* method_verifier, 105 static void ComputeGcMapSizes(verifier::MethodVerifier* method_verifier, 109 void GenerateDevirtMap(verifier::MethodVerifier* method_verifier) 113 bool GenerateDequickenMap(verifier::MethodVerifier* method_verifier) 117 void GenerateSafeCastSet(verifier::MethodVerifier* method_verifier)
|
D | verified_method.cc | 40 const VerifiedMethod* VerifiedMethod::Create(verifier::MethodVerifier* method_verifier, in Create() 89 bool VerifiedMethod::GenerateGcMap(verifier::MethodVerifier* method_verifier) { in GenerateGcMap() 110 verifier::RegisterMapFormat format; in GenerateGcMap() 112 format = verifier::kRegMapFormatCompact8; in GenerateGcMap() 115 format = verifier::kRegMapFormatCompact16; in GenerateGcMap() 139 verifier::RegisterLine* line = method_verifier->GetRegLine(i); in GenerateGcMap() 147 void VerifiedMethod::VerifyGcMap(verifier::MethodVerifier* method_verifier, in VerifyGcMap() 151 verifier::DexPcToReferenceMap map(&data[0]); in VerifyGcMap() 162 verifier::RegisterLine* line = method_verifier->GetRegLine(i); in VerifyGcMap() 179 void VerifiedMethod::ComputeGcMapSizes(verifier::MethodVerifier* method_verifier, in ComputeGcMapSizes() [all …]
|
D | quick_compiler_callbacks.h | 40 bool MethodVerified(verifier::MethodVerifier* verifier)
|
D | verification_results.h | 32 namespace verifier { 45 bool ProcessVerifiedMethod(verifier::MethodVerifier* method_verifier)
|
/art/runtime/quick/ |
D | inline_method_analyser.cc | 73 bool InlineMethodAnalyser::AnalyseMethodCode(verifier::MethodVerifier* verifier, in AnalyseMethodCode() argument 75 DCHECK(verifier != nullptr); in AnalyseMethodCode() 78 DCHECK_EQ(verifier->CanLoadClasses(), method != nullptr); in AnalyseMethodCode() 82 const DexFile::CodeItem* code_item = verifier->CodeItem(); in AnalyseMethodCode() 116 return AnalyseIGetMethod(verifier, method); in AnalyseMethodCode() 128 return AnalyseIPutMethod(verifier, method); in AnalyseMethodCode() 198 bool InlineMethodAnalyser::AnalyseIGetMethod(verifier::MethodVerifier* verifier, in AnalyseIGetMethod() argument 200 const DexFile::CodeItem* code_item = verifier->CodeItem(); in AnalyseIGetMethod() 231 if ((verifier->GetAccessFlags() & kAccStatic) != 0u || object_arg != 0u) { in AnalyseIGetMethod() 234 if (!IsSyntheticAccessor(verifier->GetMethodReference())) { in AnalyseIGetMethod() [all …]
|
D | inline_method_analyser.h | 33 namespace verifier { 159 static bool AnalyseMethodCode(verifier::MethodVerifier* verifier, InlineMethod* method) 184 static bool AnalyseIGetMethod(verifier::MethodVerifier* verifier, InlineMethod* result) 186 static bool AnalyseIPutMethod(verifier::MethodVerifier* verifier, InlineMethod* result) 192 verifier::MethodVerifier* verifier,
|
/art/runtime/ |
D | compiler_callbacks.h | 25 namespace verifier { 40 virtual bool MethodVerified(verifier::MethodVerifier* verifier)
|
D | noop_compiler_callbacks.h | 29 bool MethodVerified(verifier::MethodVerifier* verifier ATTRIBUTE_UNUSED) OVERRIDE { in MethodVerified()
|
/art/test/076-boolean-put/ |
D | info.txt | 2 boolean field. The code as generated should not pass the verifier, so the 3 verifier had to be "loosened" to allow this case.
|
/art/test/303-verification-stress/ |
D | info.txt | 1 This is more a benchmark for the verifier than a real test. We create many 4 verifier on such method.
|
/art/test/800-smali/smali/ |
D | b_17978759.smali | 18 # monitor-exit on v0, however, verifier doesn't track this and so this is 24 # Attempt to lock v0 twice is a verifier failure.
|
/art/test/506-verify-aput/ |
D | info.txt | 2 by the verifier.
|
/art/test/088-monitor-verification/ |
D | info.txt | 2 lock checks in the bytecode verifier.
|
/art/test/516-dead-move-result/ |
D | info.txt | 2 where a move-result was bogus, but it passed the verifier
|
/art/test/518-null-array-get/ |
D | info.txt | 3 (accepted by the verifier in the case the array was null).
|
/art/compiler/dex/quick/ |
D | dex_file_method_inliner.h | 30 namespace verifier { 64 bool AnalyseMethodCode(verifier::MethodVerifier* verifier)
|
/art/test/431-type-propagation/smali/ |
D | TypePropagation.smali | 27 # the verifier, it assumes that the integer input must be converted 28 # to float. However, since v0 is not used afterwards, the verifier
|