Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1074)

Unified Diff: runtime/vm/allocation.h

Issue 1384403002: Preparation for moving reusable handles to thread and more cleanups: isolate -> thread based handle… (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Fixed import Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/lib/mirrors.cc ('k') | runtime/vm/allocation.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_;
« no previous file with comments | « runtime/lib/mirrors.cc ('k') | runtime/vm/allocation.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698