diff options
author | 2019-12-03 14:36:42 +0000 | |
---|---|---|
committer | 2019-12-04 12:04:36 +0000 | |
commit | a00b54b74bee06c006b8bebfbef85e2801de293c (patch) | |
tree | 6edb2a96c1f89ae913e6b5f190b117cb290239e8 /runtime/instrumentation.cc | |
parent | e571a283b73fb4621c401811f523503b3266564b (diff) |
Helpers and refactorings to prepare for interpreter optimizations (x64)
- Add data structure offsets that will be used in assembly code.
- Be explicit about a stack overflow in a fault handler.
- Move assembly helper code in asm_support so interpreter can use it.
- Support putting literals in InterpreterCache.
- Fix artHandleFillArrayDataFromCode for x64.
Bug: 119800099
Test: test.py
Change-Id: I2729f87fe5d09c04ae2e7081636f0cd89ac14c21
Diffstat (limited to 'runtime/instrumentation.cc')
-rw-r--r-- | runtime/instrumentation.cc | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/runtime/instrumentation.cc b/runtime/instrumentation.cc index ca4895557d..011d947ea2 100644 --- a/runtime/instrumentation.cc +++ b/runtime/instrumentation.cc @@ -365,9 +365,9 @@ void InstrumentationInstallStack(Thread* thread, void* arg) std::string thread_name; GetThread()->GetThreadName(thread_name); uint32_t dex_pc = dex::kDexNoIndex; - if (last_return_pc_ != 0 && - GetCurrentOatQuickMethodHeader() != nullptr) { - dex_pc = GetCurrentOatQuickMethodHeader()->ToDexPc(m, last_return_pc_); + if (last_return_pc_ != 0 && GetCurrentOatQuickMethodHeader() != nullptr) { + dex_pc = GetCurrentOatQuickMethodHeader()->ToDexPc( + GetCurrentQuickFrame(), last_return_pc_); } LOG(FATAL) << "While walking " << thread_name << " found unexpected non-runtime method" << " without instrumentation exit return or interpreter frame." @@ -400,9 +400,8 @@ void InstrumentationInstallStack(Thread* thread, void* arg) SetReturnPc(instrumentation_exit_pc_); } uint32_t dex_pc = dex::kDexNoIndex; - if (last_return_pc_ != 0 && - GetCurrentOatQuickMethodHeader() != nullptr) { - dex_pc = GetCurrentOatQuickMethodHeader()->ToDexPc(m, last_return_pc_); + if (last_return_pc_ != 0 && GetCurrentOatQuickMethodHeader() != nullptr) { + dex_pc = GetCurrentOatQuickMethodHeader()->ToDexPc(GetCurrentQuickFrame(), last_return_pc_); } dex_pcs_.push_back(dex_pc); last_return_pc_ = return_pc; |