summaryrefslogtreecommitdiffstats
path: root/runtime/thread.h
diff options
context:
space:
mode:
authorMathieu Chartier <mathieuc@google.com>2014-09-19 17:52:37 -0700
committerMathieu Chartier <mathieuc@google.com>2014-09-19 18:57:47 -0700
commit2d5f39ed5aeaeb7ca22b07b4c6e8c56348ef8893 (patch)
treeb0b9a8d4c386555f009b825bd5fbd8ab31909c3b /runtime/thread.h
parent24f4b816dd50793e8456dc60fe1b50856004d708 (diff)
downloadart-2d5f39ed5aeaeb7ca22b07b4c6e8c56348ef8893.tar.gz
art-2d5f39ed5aeaeb7ca22b07b4c6e8c56348ef8893.tar.bz2
art-2d5f39ed5aeaeb7ca22b07b4c6e8c56348ef8893.zip
Add ScopedAssertNoThreadSuspension
Added a new class, ScopedAssertNoThreadSuspension. Deleted some unnecessary ScopedAssertNoThreadSuspension since VisitObjects already has a ScopedAssertNoThreadSuspension. Change-Id: I29ec0006120c39a27184d30e2d1d0c179e203776
Diffstat (limited to 'runtime/thread.h')
-rw-r--r--runtime/thread.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/runtime/thread.h b/runtime/thread.h
index d96b50ba13..164eb86f67 100644
--- a/runtime/thread.h
+++ b/runtime/thread.h
@@ -1180,6 +1180,23 @@ class Thread {
DISALLOW_COPY_AND_ASSIGN(Thread);
};
+class ScopedAssertNoThreadSuspension {
+ public:
+ ScopedAssertNoThreadSuspension(Thread* self, const char* cause)
+ : self_(self), old_cause_(self->StartAssertNoThreadSuspension(cause)) {
+ }
+ ~ScopedAssertNoThreadSuspension() {
+ self_->EndAssertNoThreadSuspension(old_cause_);
+ }
+ Thread* Self() {
+ return self_;
+ }
+
+ private:
+ Thread* const self_;
+ const char* old_cause_;
+};
+
std::ostream& operator<<(std::ostream& os, const Thread& thread);
std::ostream& operator<<(std::ostream& os, const ThreadState& state);