Searched refs:verifier (Results 1 - 25 of 52) sorted by relevance

123

/art/compiler/dex/
H A Dquick_compiler_callbacks.cc20 #include "verifier/method_verifier-inl.h"
25 bool QuickCompilerCallbacks::MethodVerified(verifier::MethodVerifier* verifier) { argument
26 bool result = verification_results_->ProcessVerifiedMethod(verifier);
28 MethodReference ref = verifier->GetMethodReference();
30 ->AnalyseMethodCode(verifier);
H A Dverified_method.h29 namespace verifier { namespace in namespace:art
31 } // namespace verifier
46 static const VerifiedMethod* Create(verifier::MethodVerifier* method_verifier, bool compile)
70 // by using the check-cast elision peephole optimization in the verifier.
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
[all...]
H A Dquick_compiler_callbacks.h40 bool MethodVerified(verifier::MethodVerifier* verifier)
H A Dverified_method.cc33 #include "verifier/dex_gc_map.h"
34 #include "verifier/method_verifier-inl.h"
35 #include "verifier/reg_type-inl.h"
36 #include "verifier/register_line-inl.h"
40 const VerifiedMethod* VerifiedMethod::Create(verifier::MethodVerifier* method_verifier,
89 bool VerifiedMethod::GenerateGcMap(verifier::MethodVerifier* method_verifier) {
110 verifier::RegisterMapFormat format;
112 format = verifier::kRegMapFormatCompact8;
115 format = verifier::kRegMapFormatCompact16;
139 verifier
[all...]
H A Dverification_results.h32 namespace verifier { namespace in namespace:art
34 } // namespace verifier
45 bool ProcessVerifiedMethod(verifier::MethodVerifier* method_verifier)
H A Dverification_results.cc27 #include "verifier/method_verifier-inl.h"
48 bool VerificationResults::ProcessVerifiedMethod(verifier::MethodVerifier* method_verifier) {
54 // Do not report an error to the verifier. We'll just punt this later.
/art/runtime/verifier/
H A Dregister_line-inl.h26 namespace verifier { namespace in namespace:art
28 inline const RegType& RegisterLine::GetRegisterType(MethodVerifier* verifier, uint32_t vsrc) const { argument
31 return verifier->GetRegTypeCache()->GetFromId(line_[vsrc]);
34 inline bool RegisterLine::SetRegisterType(MethodVerifier* verifier, uint32_t vdst, argument
38 verifier->Fail(VERIFY_ERROR_BAD_CLASS_HARD) << "Expected category1 register type not '"
51 inline bool RegisterLine::SetRegisterTypeWide(MethodVerifier* verifier, uint32_t vdst, argument
56 verifier->Fail(VERIFY_ERROR_BAD_CLASS_SOFT) << "Invalid wide pair '"
69 inline void RegisterLine::SetResultTypeToUnknown(MethodVerifier* verifier) { argument
70 result_[0] = verifier->GetRegTypeCache()->Undefined().GetId();
74 inline void RegisterLine::SetResultRegisterType(MethodVerifier* verifier, cons argument
88 CopyRegister1(MethodVerifier* verifier, uint32_t vdst, uint32_t vsrc, TypeCategory cat) argument
105 CopyRegister2(MethodVerifier* verifier, uint32_t vdst, uint32_t vsrc) argument
117 GetMaxNonZeroReferenceReg(MethodVerifier* verifier, size_t max_ref_reg) const argument
[all...]
H A Dregister_line.cc26 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, uint32_t this_reg, uint32_t dex_pc) argument
123 MarkAllRegistersAsConflicts(MethodVerifier* verifier) argument
130 MarkAllRegistersAsConflictsExcept(MethodVerifier* verifier, uint32_t vsrc) argument
139 MarkAllRegistersAsConflictsExceptWide(MethodVerifier* verifier, uint32_t vsrc) argument
161 MarkUninitRefsAsInvalid(MethodVerifier* verifier, const RegType& uninit_type) argument
170 CopyResultRegister1(MethodVerifier* verifier, uint32_t vdst, bool is_reference) argument
187 CopyResultRegister2(MethodVerifier* verifier, uint32_t vdst) argument
201 CheckUnaryOp(MethodVerifier* verifier, const Instruction* inst, const RegType& dst_type, const RegType& src_type) argument
208 CheckUnaryOpWide(MethodVerifier* verifier, const Instruction* inst, const RegType& dst_type1, const RegType& dst_type2, const RegType& src_type1, const RegType& src_type2) argument
216 CheckUnaryOpToWide(MethodVerifier* verifier, const Instruction* inst, const RegType& dst_type1, const RegType& dst_type2, const RegType& src_type) argument
224 CheckUnaryOpFromWide(MethodVerifier* verifier, const Instruction* inst, const RegType& dst_type, const RegType& src_type1, const RegType& src_type2) argument
232 CheckBinaryOp(MethodVerifier* verifier, const Instruction* inst, const RegType& dst_type, const RegType& src_type1, const RegType& src_type2, bool check_boolean_op) argument
252 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
262 CheckBinaryOpWideShift(MethodVerifier* verifier, const Instruction* inst, const RegType& long_lo_type, const RegType& long_hi_type, const RegType& int_type) argument
271 CheckBinaryOp2addr(MethodVerifier* verifier, const Instruction* inst, const RegType& dst_type, const RegType& src_type1, const RegType& src_type2, bool check_boolean_op) argument
290 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
302 CheckBinaryOp2addrWideShift(MethodVerifier* verifier, const Instruction* inst, const RegType& long_lo_type, const RegType& long_hi_type, const RegType& int_type) argument
313 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
350 PopMonitor(MethodVerifier* verifier, uint32_t reg_idx) argument
372 MergeRegisters(MethodVerifier* verifier, const RegisterLine* incoming_line) argument
412 WriteReferenceBitMap(MethodVerifier* verifier, std::vector<uint8_t>* data, size_t max_bytes) argument
[all...]
H A Dregister_line.h29 namespace verifier { namespace in namespace:art
55 static RegisterLine* Create(size_t num_regs, MethodVerifier* verifier) { argument
57 RegisterLine* rl = new (memory) RegisterLine(num_regs, verifier);
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_
353 RegisterLine(size_t num_regs, MethodVerifier* verifier) argument
[all...]
H A Dinstruction_flags.cc22 namespace verifier { namespace in namespace:art
41 } // namespace verifier
H A Ddex_gc_map.cc17 #include "verifier/dex_gc_map.h"
22 namespace verifier { namespace in namespace:art
55 } // namespace verifier
H A Dmethod_verifier-inl.h27 namespace verifier { namespace in namespace:art
76 } // namespace verifier
H A Dmethod_verifier_test.cc28 namespace verifier { namespace in namespace:art
61 } // namespace verifier
H A Dreg_type_cache-inl.h28 namespace verifier { namespace in namespace:art
30 inline const art::verifier::RegType& RegTypeCache::GetFromId(uint16_t id) const {
121 } // namespace verifier
H A Ddex_gc_map.h26 namespace verifier { namespace in namespace:art
119 } // namespace verifier
H A Dinstruction_flags.h26 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 Dmethod_verifier.cc47 #include "verifier/dex_gc_map.h"
50 namespace verifier { namespace in namespace:art
58 MethodVerifier* verifier) {
78 register_lines_[i] = RegisterLine::Create(registers_size, verifier);
93 ALWAYS_INLINE static inline bool FailOrAbort(MethodVerifier* verifier, bool condition, argument
101 verifier->Fail(VERIFY_ERROR_BAD_CLASS_HARD) << error_msg << work_insn_idx;
109 static void SafelyMarkAllRegistersAsConflicts(MethodVerifier* verifier, RegisterLine* reg_line) { argument
110 if (verifier->IsInstanceConstructor()) {
112 reg_line->CheckConstructorReturn(verifier);
114 reg_line->MarkAllRegistersAsConflicts(verifier);
56 Init(RegisterTrackingMode mode, InstructionFlags* flags, uint32_t insns_size, uint16_t registers_size, MethodVerifier* verifier) argument
360 MethodVerifier* verifier = new MethodVerifier(self, dex_file, dex_cache, class_loader, local
[all...]
H A Dreg_type_cache.h37 namespace verifier { namespace in namespace:art
54 const art::verifier::RegType& GetFromId(uint16_t id) const;
184 } // namespace verifier
/art/runtime/
H A Dnoop_compiler_callbacks.h29 bool MethodVerified(verifier::MethodVerifier* verifier ATTRIBUTE_UNUSED) OVERRIDE {
H A Dcompiler_callbacks.h25 namespace verifier { namespace in namespace:art
29 } // namespace verifier
40 virtual bool MethodVerified(verifier::MethodVerifier* verifier)
H A DAndroid.mk171 verifier/dex_gc_map.cc \
172 verifier/instruction_flags.cc \
173 verifier/method_verifier.cc \
174 verifier/reg_type.cc \
175 verifier/reg_type_cache.cc \
176 verifier/register_line.cc \
336 verifier/method_verifier.h
H A Dquick_exception_handler.cc28 #include "verifier/method_verifier.h"
208 verifier::MethodVerifier verifier(self_, h_dex_cache->GetDexFile(), h_dex_cache, h_class_loader,
211 bool verifier_success = verifier.Verify();
217 const std::vector<int32_t> kinds(verifier.DescribeVRegs(dex_pc));
219 // Markers for dead values, used when the verifier knows a Dex register is undefined,
235 // Check IsReferenceVReg in case the compiled GC map doesn't agree with the verifier.
/art/runtime/quick/
H A Dinline_method_analyser.cc27 #include "verifier/method_verifier-inl.h"
73 bool InlineMethodAnalyser::AnalyseMethodCode(verifier::MethodVerifier* verifier, argument
75 DCHECK(verifier != nullptr);
78 DCHECK_EQ(verifier->CanLoadClasses(), method != nullptr);
82 const DexFile::CodeItem* code_item = verifier->CodeItem();
116 return AnalyseIGetMethod(verifier, method);
128 return AnalyseIPutMethod(verifier, method);
198 bool InlineMethodAnalyser::AnalyseIGetMethod(verifier::MethodVerifier* verifier, argument
261 AnalyseIPutMethod(verifier::MethodVerifier* verifier, InlineMethod* result) argument
328 ComputeSpecialAccessorInfo(uint32_t field_idx, bool is_put, verifier::MethodVerifier* verifier, InlineIGetIPutData* result) argument
[all...]
H A Dinline_method_analyser.h33 namespace verifier { namespace in namespace:art
35 } // namespace verifier
155 * @param verifier the method verifier holding data about the method to analyse.
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, InlineMetho
[all...]
/art/compiler/dex/quick/
H A Ddex_file_method_inliner.h30 namespace verifier { namespace in namespace:art
32 } // namespace verifier
48 * from the verifier and mark them for inlining. Inline these methods early
61 * @param verifier the method verifier holding data about the method to analyse.
64 bool AnalyseMethodCode(verifier::MethodVerifier* verifier)

Completed in 437 milliseconds

123