Revert "Revert "Make WatchedFramePop instrumentation event pure-virtual""
Forgot to revert this.
This reverts commit b2c8fc62f4e7889300da2d26294537194e37b926.
Reason for revert: Fixed issue with tests
Change-Id: I1fd5a2759c67a906d55137e2b6548726af2c8e4f
Test: treehugger
diff --git a/runtime/debugger.cc b/runtime/debugger.cc
index af56810..b4931cf 100644
--- a/runtime/debugger.cc
+++ b/runtime/debugger.cc
@@ -268,6 +268,11 @@
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 fec027e..9bb49ea 100644
--- a/runtime/instrumentation.h
+++ b/runtime/instrumentation.h
@@ -154,9 +154,7 @@
// 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 b30de79..4c3fa20 100644
--- a/runtime/trace.cc
+++ b/runtime/trace.cc
@@ -832,6 +832,11 @@
<< " " << 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 49d5b22..a888dcb 100644
--- a/runtime/trace.h
+++ b/runtime/trace.h
@@ -38,6 +38,7 @@
class ArtField;
class ArtMethod;
class DexFile;
+class ShadowFrame;
class Thread;
using DexIndexBitSet = std::bitset<65536>;
@@ -194,6 +195,8 @@
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.