Index: runtime/vm/isolate.h |
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h |
index 447afac5e65b6edc6cbe59d56ebfbc624028796a..c5e483bdbbbc45cdf39930a1e60e899ad58af980 100644 |
--- a/runtime/vm/isolate.h |
+++ b/runtime/vm/isolate.h |
@@ -78,6 +78,7 @@ class StackResource; |
class StackZone; |
class StoreBuffer; |
class StubCode; |
+class ThreadRegistry; |
class TypeArguments; |
class TypeParameter; |
class UserTag; |
@@ -144,6 +145,8 @@ class Isolate : public BaseIsolate { |
StoreBuffer* store_buffer() { return store_buffer_; } |
+ ThreadRegistry* thread_registry() { return thread_registry_; } |
+ |
ClassTable* class_table() { return &class_table_; } |
static intptr_t class_table_offset() { |
return OFFSET_OF(Isolate, class_table_); |
@@ -208,10 +211,23 @@ class Isolate : public BaseIsolate { |
return OFFSET_OF(Isolate, object_store_); |
} |
- uword top_exit_frame_info() const { return top_exit_frame_info_; } |
- void set_top_exit_frame_info(uword value) { top_exit_frame_info_ = value; } |
- static intptr_t top_exit_frame_info_offset() { |
- return OFFSET_OF(Isolate, top_exit_frame_info_); |
+ // DEPRECATED: Use Thread's methods instead. During migration, these default |
+ // to using the mutator thread (which must also be the current thread). |
+ StackResource* top_resource() const { |
+ ASSERT(Thread::Current() == mutator_thread_); |
+ return mutator_thread_->top_resource(); |
+ } |
+ void set_top_resource(StackResource* value) { |
+ ASSERT(Thread::Current() == mutator_thread_); |
+ mutator_thread_->set_top_resource(value); |
+ } |
+ uword top_exit_frame_info() const { |
+ ASSERT(Thread::Current() == mutator_thread_); |
+ return mutator_thread_->top_exit_frame_info(); |
+ } |
+ void set_top_exit_frame_info(uword value) { |
+ ASSERT(Thread::Current() == mutator_thread_); |
+ mutator_thread_->set_top_exit_frame_info(value); |
} |
uword vm_tag() const { |
@@ -719,6 +735,17 @@ class Isolate : public BaseIsolate { |
// Handle service messages until we are told to resume execution. |
void PauseEventHandler(); |
+ // DEPRECATED: Use Thread's methods instead. During migration, these default |
+ // to using the mutator thread (which must also be the current thread). |
+ Zone* current_zone() const { |
+ ASSERT(Thread::Current() == mutator_thread_); |
+ return mutator_thread_->zone(); |
+ } |
+ void set_current_zone(Zone* zone) { |
+ ASSERT(Thread::Current() == mutator_thread_); |
+ mutator_thread_->set_zone(zone); |
+ } |
+ |
private: |
explicit Isolate(const Dart_IsolateFlags& api_flags); |
@@ -743,9 +770,9 @@ class Isolate : public BaseIsolate { |
template<class T> T* AllocateReusableHandle(); |
- Thread* mutator_thread_; |
uword vm_tag_; |
StoreBuffer* store_buffer_; |
+ ThreadRegistry* thread_registry_; |
ClassTable class_table_; |
MegamorphicCacheTable megamorphic_cache_table_; |
Dart_MessageNotifyCallback message_notify_callback_; |