diff options
| author | 2015-10-28 17:39:47 +0000 | |
|---|---|---|
| committer | 2015-10-28 17:51:53 +0000 | |
| commit | 4e915fbc2be5fc43c782389bbbb7306cd76a523a (patch) | |
| tree | c85e0ab3b80393a46dbc98e217678337567e26ce | |
| parent | 28b48026f0686f93b31b9cad47671c18837acc56 (diff) | |
Tune heuristics a bit.
First version. Seems to be more in line with what we're seeing.
Change-Id: I5117352c13cb2e95d16f0c9b05b1faf37c05d710
| -rw-r--r-- | runtime/jit/jit.h | 2 | ||||
| -rw-r--r-- | runtime/jit/jit_code_cache.cc | 4 | ||||
| -rw-r--r-- | runtime/jit/jit_instrumentation.cc | 2 |
3 files changed, 4 insertions, 4 deletions
diff --git a/runtime/jit/jit.h b/runtime/jit/jit.h index e73ba82278..1f89f9b1b7 100644 --- a/runtime/jit/jit.h +++ b/runtime/jit/jit.h @@ -43,7 +43,7 @@ class JitOptions; class Jit { public: static constexpr bool kStressMode = kIsDebugBuild; - static constexpr size_t kDefaultCompileThreshold = kStressMode ? 2 : 1000; + static constexpr size_t kDefaultCompileThreshold = kStressMode ? 2 : 500; static constexpr size_t kDefaultWarmupThreshold = kDefaultCompileThreshold / 2; virtual ~Jit(); diff --git a/runtime/jit/jit_code_cache.cc b/runtime/jit/jit_code_cache.cc index 2596dd974d..60568b2f77 100644 --- a/runtime/jit/jit_code_cache.cc +++ b/runtime/jit/jit_code_cache.cc @@ -57,9 +57,9 @@ JitCodeCache* JitCodeCache::Create(size_t capacity, std::string* error_msg) { return nullptr; } - // Data cache is 1 / 4 of the map. + // Data cache is 1 / 2 of the map. // TODO: Make this variable? - size_t data_size = RoundUp(data_map->Size() / 4, kPageSize); + size_t data_size = RoundUp(data_map->Size() / 2, kPageSize); size_t code_size = data_map->Size() - data_size; uint8_t* divider = data_map->Begin() + data_size; diff --git a/runtime/jit/jit_instrumentation.cc b/runtime/jit/jit_instrumentation.cc index 2dd953bb94..8aaa5fa304 100644 --- a/runtime/jit/jit_instrumentation.cc +++ b/runtime/jit/jit_instrumentation.cc @@ -86,7 +86,6 @@ void JitInstrumentationCache::DeleteThreadPool() { } void JitInstrumentationCache::AddSamples(Thread* self, ArtMethod* method, size_t) { - ScopedObjectAccessUnchecked soa(self); // Since we don't have on-stack replacement, some methods can remain in the interpreter longer // than we want resulting in samples even after the method is compiled. if (method->IsClassInitializer() || method->IsNative()) { @@ -126,6 +125,7 @@ void JitInstrumentationListener::InvokeVirtualOrInterface(Thread* thread, ArtMethod* caller, uint32_t dex_pc, ArtMethod* callee ATTRIBUTE_UNUSED) { + instrumentation_cache_->AddSamples(thread, caller, 1); // We make sure we cannot be suspended, as the profiling info can be concurrently deleted. thread->StartAssertNoThreadSuspension("Instrumenting invoke"); DCHECK(this_object != nullptr); |