Index: runtime/vm/allocation.h |
diff --git a/runtime/vm/allocation.h b/runtime/vm/allocation.h |
index 74a2d7d6d17aa85c4dd05d34d3fd9231088e2475..468c1adae90d43325f221f796015ed7c613a6b46 100644 |
--- a/runtime/vm/allocation.h |
+++ b/runtime/vm/allocation.h |
@@ -8,12 +8,12 @@ |
#include "platform/assert.h" |
#include "vm/base_isolate.h" |
#include "vm/globals.h" |
-#include "vm/thread.h" |
namespace dart { |
// Forward declarations. |
class Isolate; |
+class Thread; |
// Stack allocated objects subclass from this base class. Objects of this type |
// cannot be allocated on either the C or object heaps. Destructors for objects |
@@ -48,24 +48,10 @@ class StackResource { |
Init(thread); |
} |
- virtual ~StackResource() { |
- if (thread_ != NULL) { |
- StackResource* top = thread_->top_resource(); |
- ASSERT(top == this); |
- thread_->set_top_resource(previous_); |
- } |
-#if defined(DEBUG) |
- if (thread_ != NULL) { |
- ASSERT(Thread::Current() == thread_); |
- BaseIsolate::AssertCurrent(reinterpret_cast<BaseIsolate*>(isolate())); |
- } |
-#endif |
- } |
+ virtual ~StackResource(); |
// Convenient access to the isolate of the thread of this resource. |
- Isolate* isolate() const { |
- return thread_ == NULL ? NULL : thread_->isolate(); |
- } |
+ Isolate* isolate() const; |
// The thread that owns this resource. |
Thread* thread() const { return thread_; } |
@@ -76,19 +62,7 @@ class StackResource { |
static void UnwindAbove(Thread* thread, StackResource* new_top); |
private: |
- void Init(Thread* thread) { |
- // We can only have longjumps and exceptions when there is a current |
- // thread and isolate. If there is no current thread, we don't need to |
- // protect this case. |
- // TODO(23807): Eliminate this special case. |
- if (thread != NULL) { |
- ASSERT(Thread::Current() == thread); |
- thread_ = thread; |
- previous_ = thread_->top_resource(); |
- ASSERT((previous_ == NULL) || (previous_->thread_ == thread)); |
- thread_->set_top_resource(this); |
- } |
- } |
+ void Init(Thread* thread); |
Thread* thread_; |
StackResource* previous_; |