summaryrefslogtreecommitdiff
path: root/compiler/driver/compiler_driver.h
diff options
context:
space:
mode:
author Nicolas Geoffray <ngeoffray@google.com> 2017-09-11 14:15:52 +0100
committer Nicolas Geoffray <ngeoffray@google.com> 2017-09-15 12:45:28 +0100
commit486dda03900a215650f71a9068759978aa77c699 (patch)
tree1f2a1331d3ec474c979db5f9a35dd11f453abc25 /compiler/driver/compiler_driver.h
parentb072ec25f8a71420ee77b068a28a2669420f6150 (diff)
Add support for registering classpath classes status.
By doing class unloading after each dex file compilation, we are loosing away verification done on classpath classes. This change introduces a new table for keeping around class status of classpath classes. Multidex quickening compilation improved by ~5% by not re-verifying classpath classes. Bug: 63467744 test: test.py test: golem successfully compiles FB Change-Id: I629c0a7d86519bbc516f5e59f7cd92ca6ca842eb
Diffstat (limited to 'compiler/driver/compiler_driver.h')
-rw-r--r--compiler/driver/compiler_driver.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/compiler/driver/compiler_driver.h b/compiler/driver/compiler_driver.h
index d08d9d7940..19fae695b5 100644
--- a/compiler/driver/compiler_driver.h
+++ b/compiler/driver/compiler_driver.h
@@ -106,6 +106,7 @@ class CompilerDriver {
// Set dex files that will be stored in the oat file after being compiled.
void SetDexFilesForOatFile(const std::vector<const DexFile*>& dex_files);
+ void SetClasspathDexFiles(const std::vector<const DexFile*>& dex_files);
// Get dex file that will be stored in the oat file after being compiled.
ArrayRef<const DexFile* const> GetDexFilesForOatFile() const {
@@ -152,6 +153,7 @@ class CompilerDriver {
std::unique_ptr<const std::vector<uint8_t>> CreateQuickToInterpreterBridge() const;
bool GetCompiledClass(ClassReference ref, mirror::Class::Status* status) const;
+ mirror::Class::Status GetClassStatus(ClassReference ref) const;
CompiledMethod* GetCompiledMethod(MethodReference ref) const;
size_t GetNonRelativeLinkerPatchCount() const;
@@ -488,6 +490,7 @@ class CompilerDriver {
// All class references that this compiler has compiled. Indexed by class defs.
using ClassStateTable = AtomicDexRefMap<mirror::Class::Status>;
ClassStateTable compiled_classes_;
+ ClassStateTable classpath_classes_;
typedef AtomicDexRefMap<CompiledMethod*> MethodTable;