// Copyright 2015 The Chromium Authors. All rights reserved. | |
// Use of this source code is governed by a BSD-style license that can be | |
// found in the LICENSE file. | |
#include "tonic/dart_isolate_scope.h" | |
namespace tonic { | |
DartIsolateScope::DartIsolateScope(Dart_Isolate isolate) { | |
isolate_ = isolate; | |
previous_ = Dart_CurrentIsolate(); | |
if (previous_ == isolate_) | |
return; | |
if (previous_) | |
Dart_ExitIsolate(); | |
Dart_EnterIsolate(isolate_); | |
} | |
DartIsolateScope::~DartIsolateScope() { | |
DCHECK(Dart_CurrentIsolate() == isolate_); | |
if (previous_ == isolate_) | |
return; | |
Dart_ExitIsolate(); | |
if (previous_) | |
Dart_EnterIsolate(previous_); | |
} | |
} // namespace tonic |