summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/debugger.cc5
-rw-r--r--runtime/instrumentation.h4
-rw-r--r--runtime/trace.cc5
-rw-r--r--runtime/trace.h3
4 files changed, 14 insertions, 3 deletions
diff --git a/runtime/debugger.cc b/runtime/debugger.cc
index af56810fcb..b4931cf25a 100644
--- a/runtime/debugger.cc
+++ b/runtime/debugger.cc
@@ -268,6 +268,11 @@ class DebugInstrumentationListener FINAL : public instrumentation::Instrumentati
LOG(ERROR) << "Unexpected exception handled event in debugger";
}
+ // TODO Might be worth it to implement this.
+ void WatchedFramePop(Thread* thread ATTRIBUTE_UNUSED,
+ const ShadowFrame& frame ATTRIBUTE_UNUSED) OVERRIDE {
+ LOG(ERROR) << "Unexpected WatchedFramePop event in debugger";
+ }
private:
static bool IsReturn(ArtMethod* method, uint32_t dex_pc)
diff --git a/runtime/instrumentation.h b/runtime/instrumentation.h
index fec027e39f..9bb49ea7c7 100644
--- a/runtime/instrumentation.h
+++ b/runtime/instrumentation.h
@@ -154,9 +154,7 @@ struct InstrumentationListener {
// shadow-frames by deoptimizing stacks.
virtual void WatchedFramePop(Thread* thread ATTRIBUTE_UNUSED,
const ShadowFrame& frame ATTRIBUTE_UNUSED)
- REQUIRES_SHARED(Locks::mutator_lock_) {
- return;
- }
+ REQUIRES_SHARED(Locks::mutator_lock_) = 0;
};
// Instrumentation is a catch-all for when extra information is required from the runtime. The
diff --git a/runtime/trace.cc b/runtime/trace.cc
index b30de795a4..4c3fa20c9d 100644
--- a/runtime/trace.cc
+++ b/runtime/trace.cc
@@ -832,6 +832,11 @@ void Trace::InvokeVirtualOrInterface(Thread*,
<< " " << dex_pc;
}
+void Trace::WatchedFramePop(Thread* self ATTRIBUTE_UNUSED,
+ const ShadowFrame& frame ATTRIBUTE_UNUSED) {
+ LOG(ERROR) << "Unexpected WatchedFramePop event in tracing";
+}
+
void Trace::ReadClocks(Thread* thread, uint32_t* thread_clock_diff, uint32_t* wall_clock_diff) {
if (UseThreadCpuClock()) {
uint64_t clock_base = thread->GetTraceClockBase();
diff --git a/runtime/trace.h b/runtime/trace.h
index 49d5b22373..a888dcbcd1 100644
--- a/runtime/trace.h
+++ b/runtime/trace.h
@@ -38,6 +38,7 @@ namespace art {
class ArtField;
class ArtMethod;
class DexFile;
+class ShadowFrame;
class Thread;
using DexIndexBitSet = std::bitset<65536>;
@@ -194,6 +195,8 @@ class Trace FINAL : public instrumentation::InstrumentationListener {
uint32_t dex_pc,
ArtMethod* callee)
REQUIRES_SHARED(Locks::mutator_lock_) REQUIRES(!*unique_methods_lock_) OVERRIDE;
+ void WatchedFramePop(Thread* thread, const ShadowFrame& frame)
+ REQUIRES_SHARED(Locks::mutator_lock_) OVERRIDE;
// Reuse an old stack trace if it exists, otherwise allocate a new one.
static std::vector<ArtMethod*>* AllocStackTrace();
// Clear and store an old stack trace for later use.