namespace mirror { classClass; class DexCache;
} // namespace mirror
namespace verifier { class MethodVerifier; class VerifierDepsTest;
} // namespace verifier
class ArtField; class BitVector; class CompiledMethod; class CompilerOptions; class DexCompilationUnit; class DexFile; template<class T> class Handle; class ImageClassMap; struct InlineIGetIPutData; class InstructionSetFeatures; class InternTable; enum InvokeType : uint32_t; class MemberOffset; template<class MirrorType> class ObjPtr; class ParallelCompilationManager; class ProfileCompilationInfo; class ScopedObjectAccess; template <class Allocator> class SrcMap; class TimingLogger; class VdexFile; class VerificationResults;
class CompilerDriver { public: // Create a compiler targeting the requested "instruction_set". // "image" should be true if image specific optimizations should be // enabled. "image_classes" lets the compiler know what classes it // can assume will be in the image, with null implying all available // classes.
CompilerDriver(const CompilerOptions* compiler_options, const VerificationResults* verification_results,
size_t thread_count, int swap_fd);
// Set dex files classpath. void SetClasspathDexFiles(const std::vector<const DexFile*>& dex_files);
// Initialize and destroy thread pools. This is exposed because we do not want // to do this twice, for PreCompile() and CompileAll(). void InitializeThreadPools(); void FreeThreadPools();
// Checks whether profile guided verification is enabled and if the method should be verified // according to the profile file. bool ShouldVerifyClassBasedOnProfile(const DexFile& dex_file, uint16_t class_idx) const;
// Attempt to resolve all type, methods, fields, and strings // referenced from code in the dex file following PathClassLoader // ordering semantics. void Resolve(jobject class_loader, const std::vector<const DexFile*>& dex_files,
TimingLogger* timings)
REQUIRES(!Locks::mutator_lock_); void ResolveDexFile(jobject class_loader, const DexFile& dex_file,
ThreadPool* thread_pool,
size_t thread_count,
TimingLogger* timings)
REQUIRES(!Locks::mutator_lock_);
// Do fast verification through VerifierDeps if possible. Return whether // verification was successful. bool FastVerify(jobject class_loader, const std::vector<const DexFile*>& dex_files,
TimingLogger* timings);
// Map dex files to storage for bit vectors representing a set of string ids. using DexFileStringReferences = std::unordered_map<const DexFile*, std::unique_ptr<size_t[]>>;
// Get string index storage for a dex file. Add storage if needed. static BitVectorView<size_t> StringIndexesForDexFile( const DexFile* dex_file, /*inout*/ DexFileStringReferences* dex_file_string_references);
// Strongly intern strings for the collected string references. staticvoid InternStrings(const DexFileStringReferences& dex_file_string_references, /*inout*/ TimingLogger* timings);
// Resolve const string literals that are loaded from dex code. If only_startup_strings is // specified, only methods that are marked startup in the profile are resolved. void ResolveConstStrings(const std::vector<const DexFile*>& dex_files, bool only_startup_strings, /*inout*/ DexFileStringReferences* dex_file_string_references, /*inout*/ TimingLogger* timings);
// All class references that this compiler has compiled. Indexed by class defs. using ClassStateTable = AtomicDexRefMap<ClassReference, ClassStatus>;
ClassStateTable compiled_classes_; // All class references that are in the classpath. Indexed by class defs.
ClassStateTable classpath_classes_;
using MethodTable = AtomicDexRefMap<MethodReference, CompiledMethod*>;
// All method references that this compiler has compiled.
MethodTable compiled_methods_;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.