Home
last modified time | relevance | path

Searched refs:verifier (Results 1 – 25 of 65) sorted by relevance

123

/art/runtime/verifier/
Dregister_line.cc26 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 …]
Dregister_line-inl.h26 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 …]
Dregister_line.h29 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 …]
Dmethod_verifier.cc50 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 …]
Dinstruction_flags.cc22 namespace verifier { namespace
Dreg_type_cache-inl.h28 namespace verifier {
30 inline const art::verifier::RegType& RegTypeCache::GetFromId(uint16_t id) const { in GetFromId()
Ddex_gc_map.cc22 namespace verifier { namespace
/art/compiler/dex/
Dquick_compiler_callbacks.cc25 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()
Dverified_method.h29 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)
Dverified_method.cc40 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 …]
Dquick_compiler_callbacks.h40 bool MethodVerified(verifier::MethodVerifier* verifier)
Dverification_results.h32 namespace verifier {
45 bool ProcessVerifiedMethod(verifier::MethodVerifier* method_verifier)
/art/runtime/quick/
Dinline_method_analyser.cc73 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 …]
Dinline_method_analyser.h33 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/
Dcompiler_callbacks.h25 namespace verifier {
40 virtual bool MethodVerified(verifier::MethodVerifier* verifier)
Dnoop_compiler_callbacks.h29 bool MethodVerified(verifier::MethodVerifier* verifier ATTRIBUTE_UNUSED) OVERRIDE { in MethodVerified()
/art/test/076-boolean-put/
Dinfo.txt2 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/
Dinfo.txt1 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/
Db_17978759.smali18 # 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/
Dinfo.txt2 by the verifier.
/art/test/088-monitor-verification/
Dinfo.txt2 lock checks in the bytecode verifier.
/art/test/516-dead-move-result/
Dinfo.txt2 where a move-result was bogus, but it passed the verifier
/art/test/518-null-array-get/
Dinfo.txt3 (accepted by the verifier in the case the array was null).
/art/compiler/dex/quick/
Ddex_file_method_inliner.h30 namespace verifier {
64 bool AnalyseMethodCode(verifier::MethodVerifier* verifier)
/art/test/431-type-propagation/smali/
DTypePropagation.smali27 # the verifier, it assumes that the integer input must be converted
28 # to float. However, since v0 is not used afterwards, the verifier

123