Reduce how often we call FindDexCache
Before host boot.oat -j4 optimizing compile:
real 1m17.792s
user 3m26.140s
sys 0m8.340s
After:
real 1m12.324s
user 3m22.718s
sys 0m8.320s
Change-Id: If18e9e79e06cdf1676692e5efacb682bf93889c3
diff --git a/compiler/dex/mir_field_info.h b/compiler/dex/mir_field_info.h
index 053029d..b6dc27d 100644
--- a/compiler/dex/mir_field_info.h
+++ b/compiler/dex/mir_field_info.h
@@ -26,6 +26,7 @@
class CompilerDriver;
class DexCompilationUnit;
+class ScopedObjectAccess;
/*
* Field info is calculated from the perspective of the compilation unit that accesses
@@ -133,9 +134,12 @@
// For each requested instance field retrieve the field's declaring location (dex file, class
// index and field index) and volatility and compute whether we can fast path the access
// with IGET/IPUT. For fast path fields, retrieve the field offset.
- static void Resolve(CompilerDriver* compiler_driver, const DexCompilationUnit* mUnit,
- MirIFieldLoweringInfo* field_infos, size_t count)
- REQUIRES(!Locks::mutator_lock_);
+ static void Resolve(const ScopedObjectAccess& soa,
+ CompilerDriver* compiler_driver,
+ const DexCompilationUnit* mUnit,
+ MirIFieldLoweringInfo* field_infos,
+ size_t count)
+ SHARED_REQUIRES(Locks::mutator_lock_);
// Construct an unresolved instance field lowering info.
MirIFieldLoweringInfo(uint16_t field_idx, DexMemAccessType type, bool is_quickened)