// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. #include "bin/isolate_data.h" #include "bin/snapshot_utils.h" #include "vm/kernel.h" namespace dart { namespace bin { IsolateData::IsolateData(const char* url, const char* package_root, const char* packages_file, AppSnapshot* app_snapshot) : script_url((url != NULL) ? strdup(url) : NULL), package_root(NULL), packages_file(NULL), kernel_program(NULL), builtin_lib_(NULL), loader_(NULL), app_snapshot_(app_snapshot), dependencies_(NULL) { if (package_root != NULL) { ASSERT(packages_file == NULL); this->package_root = strdup(package_root); } else if (packages_file != NULL) { this->packages_file = strdup(packages_file); } } void IsolateData::OnIsolateShutdown() { if (builtin_lib_ != NULL) { Dart_DeletePersistentHandle(builtin_lib_); builtin_lib_ = NULL; } } IsolateData::~IsolateData() { free(script_url); script_url = NULL; free(package_root); package_root = NULL; free(packages_file); packages_file = NULL; if (kernel_program != NULL) { delete reinterpret_cast(kernel_program); kernel_program = NULL; } delete app_snapshot_; app_snapshot_ = NULL; } } // namespace bin } // namespace dart