Files
sdk/runtime/bin/platform_patch.dart
T
Zachary Anderson 9e7e66602f Compute the script Uri lazily
Previously, the string set up by the embedder was eagerly passed to
Uri.parse during Isolate startup. This is expensive both in time and
memory footprint. This CL causes Uri.parse() to be called only
when needed. This change will allow reducing the memory footprint
of Fuchsia's Dart content handler on hello world by ~1MB.

fixes #25603

R=asiva@google.com

Review-Url: https://codereview.chromium.org/2988613002 .
2017-07-24 12:56:21 -07:00

54 lines
1.7 KiB
Dart

// Copyright (c) 2012, 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.
@patch
class _Platform {
@patch
static int _numberOfProcessors() native "Platform_NumberOfProcessors";
@patch
static String _pathSeparator() native "Platform_PathSeparator";
@patch
static String _operatingSystem() native "Platform_OperatingSystem";
@patch
static _localHostname() native "Platform_LocalHostname";
@patch
static _executable() native "Platform_ExecutableName";
@patch
static _resolvedExecutable() native "Platform_ResolvedExecutableName";
@patch
static _environment() native "Platform_Environment";
@patch
static List<String> _executableArguments()
native "Platform_ExecutableArguments";
@patch
static String _version() native "Platform_GetVersion";
@patch
static String _localeName() native "Platform_LocaleName";
@patch
static String _packageRoot() => VMLibraryHooks.packageRootString;
@patch
static String _packageConfig() => VMLibraryHooks.packageConfigString;
@patch
static Uri _script() => VMLibraryHooks.platformScript;
// This script singleton is written to by the embedder if applicable.
static void set _nativeScript(String path) {
VMLibraryHooks.platformScript = (() {
if (path.startsWith('http:') ||
path.startsWith('https:') ||
path.startsWith('package:') ||
path.startsWith('dart:') ||
path.startsWith('data:') ||
path.startsWith('file:')) {
return Uri.parse(path);
} else {
return Uri.base.resolveUri(new Uri.file(path));
}
});
}
}