6656404ad6
2. Read the platform dill file at startup not for every isolate creation 3. Store the memory representation of kernel program in isolate data so that it is deleted when the isolate is shutdown R=aam@google.com Review-Url: https://codereview.chromium.org/2927493002 .
62 lines
1.6 KiB
C++
62 lines
1.6 KiB
C++
// 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),
|
|
udp_receive_buffer(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;
|
|
free(udp_receive_buffer);
|
|
udp_receive_buffer = NULL;
|
|
if (kernel_program != NULL) {
|
|
delete reinterpret_cast<kernel::Program*>(kernel_program);
|
|
kernel_program = NULL;
|
|
}
|
|
delete app_snapshot_;
|
|
app_snapshot_ = NULL;
|
|
}
|
|
|
|
} // namespace bin
|
|
} // namespace dart
|