1a6d1eca32
Allow members of patch classes to be annotated with @patch. The VM ignores the annotation. I simply replaces the original method if the name matches, or reports an error if field names match. Adding a bit is_patched to members to do more checking remains a TODO. There are currently no unused bits available, and I don’t want to increase the size of Function objects for this. BUG= R=asiva@google.com Review URL: https://codereview.chromium.org/2230383003 .
45 lines
1.6 KiB
Dart
45 lines
1.6 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 _packageRoot()
|
|
=> VMLibraryHooks.packageRootString;
|
|
@patch static String _packageConfig()
|
|
=> VMLibraryHooks.packageConfigString;
|
|
|
|
// This script singleton is written to by the embedder if applicable.
|
|
@patch static void set _nativeScript(String path) {
|
|
if (path.startsWith('http:') ||
|
|
path.startsWith('https:') ||
|
|
path.startsWith('package:') ||
|
|
path.startsWith('dart:') ||
|
|
path.startsWith('data:') ||
|
|
path.startsWith('file:')) {
|
|
script = Uri.parse(path);
|
|
} else {
|
|
script = Uri.base.resolveUri(new Uri.file(path));
|
|
}
|
|
VMLibraryHooks.platformScript = script;
|
|
}
|
|
}
|