| Index: runtime/vm/isolate.cc
|
| diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
|
| index e2c77fa0066167c8263fda45688a222fc1a48953..e5c73b4ee887f51e785b10fbe81f652439ded9ee 100644
|
| --- a/runtime/vm/isolate.cc
|
| +++ b/runtime/vm/isolate.cc
|
| @@ -134,6 +134,25 @@ Isolate::~Isolate() {
|
| message_handler_ = NULL; // Fail fast if we send messages to a dead isolate.
|
| }
|
|
|
| +void Isolate::SetCurrent(Isolate* current) {
|
| + Thread::SetThreadLocal(isolate_key, reinterpret_cast<uword>(current));
|
| +}
|
| +
|
| +
|
| +// The single thread local key which stores all the thread local data
|
| +// for a thread. Since an Isolate is the central repository for
|
| +// storing all isolate specific information a single thread local key
|
| +// is sufficient.
|
| +ThreadLocalKey Isolate::isolate_key = Thread::kUnsetThreadLocalKey;
|
| +
|
| +
|
| +void Isolate::InitOnce() {
|
| + ASSERT(isolate_key == Thread::kUnsetThreadLocalKey);
|
| + isolate_key = Thread::CreateThreadLocal();
|
| + ASSERT(isolate_key != Thread::kUnsetThreadLocalKey);
|
| + create_callback_ = NULL;
|
| +}
|
| +
|
|
|
| Isolate* Isolate::Init(const char* name_prefix) {
|
| Isolate* result = new Isolate();
|
|
|