9e7e66602f
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 .
54 lines
1.7 KiB
Dart
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));
|
|
}
|
|
});
|
|
}
|
|
}
|