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

Unified Diff: runtime/vm/isolate.h

Issue 128653004: Use list of isolates in profiler (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 10 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
Index: runtime/vm/isolate.h
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h
index ff1682cbdda1990ddf364cc371d2de37bdfb39db..b1e19fcbc9265212108ef337c13ce542d1d275ee 100644
--- a/runtime/vm/isolate.h
+++ b/runtime/vm/isolate.h
@@ -36,6 +36,7 @@ class ICData;
class Instance;
class IsolateProfilerData;
class IsolateSpawnState;
+class InterruptableThreadState;
class LongJumpScope;
class MessageHandler;
class Mutex;
@@ -402,12 +403,21 @@ class Isolate : public BaseIsolate {
profiler_data_ = profiler_data;
}
- IsolateProfilerData* profiler_data() {
+ IsolateProfilerData* profiler_data() const {
return profiler_data_;
}
void PrintToJSONStream(JSONStream* stream);
+ void set_thread_state(InterruptableThreadState* state) {
+ ASSERT((thread_state_ == NULL) || (state == NULL));
+ thread_state_ = state;
+ }
+
+ InterruptableThreadState* thread_state() const {
+ return thread_state_;
+ }
+
private:
Isolate();
@@ -462,6 +472,7 @@ class Isolate : public BaseIsolate {
IsolateProfilerData* profiler_data_;
Mutex profiler_data_mutex_;
+ InterruptableThreadState* thread_state_;
// Reusable handles support.
#define REUSABLE_HANDLE_FIELDS(object) \
@@ -483,8 +494,25 @@ class Isolate : public BaseIsolate {
static Dart_IsolateInterruptCallback vmstats_callback_;
static Dart_ServiceIsolateCreateCalback service_create_callback_;
+ // List of existing isolates.
+ static void IsolateCreated(Isolate* isolate);
+ static void IsolateShutdown(Isolate* isolate);
+ static void ResizeIsolates(intptr_t new_capacity);
+ static intptr_t FindIsolateIndex(Isolate* isolate);
+ static void CheckNoIsolateHasThreadData(InterruptableThreadState* state);
+ static Monitor* isolates_monitor_;
+ static Isolate** isolates_;
+ static intptr_t isolates_capacity_;
+ static intptr_t isolates_size_;
siva 2014/02/05 19:09:15 Why not just make the isolate list a singly linked
Cutch 2014/02/05 23:00:31 Done.
+
friend class ReusableHandleScope;
friend class ReusableObjectHandleScope;
+ friend class ThreadInterrupter;
+ friend class ThreadInterrupterAndroid;
+ friend class ThreadInterrupterMacOS;
+ friend class ThreadInterrupterLinux;
+ friend class ThreadInterrupterWin;
siva 2014/02/05 19:09:15 Seems weird that you are having to friend a bunch
Cutch 2014/02/05 23:00:31 Done.
+
DISALLOW_COPY_AND_ASSIGN(Isolate);
};

Powered by Google App Engine
This is Rietveld 408576698