828a168622
Change-Id: If47ef9ef4ff5ac3cb3f4f6737590370b647fc9ff Reviewed-on: https://dart-review.googlesource.com/59180 Commit-Queue: Alexander Markov <alexmarkov@google.com> Reviewed-by: Régis Crelier <regis@google.com>
768 lines
18 KiB
Plaintext
768 lines
18 KiB
Plaintext
library #lib;
|
|
import self as self;
|
|
import "dart:core" as core;
|
|
import "dart:_internal" as _in;
|
|
|
|
typedef _ScheduleImmediateClosure = (() → void) → void;
|
|
class _ScheduleImmediate extends core::Object {
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
PushConstant CP#0
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Null
|
|
}
|
|
] static field (() → void) → void _closure = null;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
Push FP[-5]
|
|
PushConstant CP#1
|
|
IndirectStaticCall 1, CP#0
|
|
Drop1
|
|
PushConstant CP#2
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = ArgDesc num-args 1, num-type-args 0, names []
|
|
[1] = StaticICData target 'dart.core::Object::', arg-desc CP#0
|
|
[2] = Null
|
|
}
|
|
] synthetic constructor •() → void
|
|
: super core::Object::•()
|
|
;
|
|
}
|
|
class _NamespaceImpl extends core::Object implements self::_Namespace {
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
PushConstant CP#0
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Null
|
|
}
|
|
] static field self::_NamespaceImpl _cachedNamespace = null;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
Push FP[-5]
|
|
PushConstant CP#1
|
|
IndirectStaticCall 1, CP#0
|
|
Drop1
|
|
PushConstant CP#2
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = ArgDesc num-args 1, num-type-args 0, names []
|
|
[1] = StaticICData target 'dart.core::Object::', arg-desc CP#0
|
|
[2] = Null
|
|
}
|
|
] constructor _() → void
|
|
: super core::Object::•()
|
|
;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
Push FP[-6]
|
|
Push FP[-5]
|
|
NativeCall CP#0
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = NativeEntry Namespace_Create
|
|
}
|
|
] @_in::ExternalName::•("Namespace_Create")
|
|
external static method _create(self::_NamespaceImpl namespace, dynamic n) → self::_NamespaceImpl;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
Push FP[-5]
|
|
NativeCall CP#0
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = NativeEntry Namespace_GetPointer
|
|
}
|
|
] @_in::ExternalName::•("Namespace_GetPointer")
|
|
external static method _getPointer(self::_NamespaceImpl namespace) → core::int;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
NativeCall CP#0
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = NativeEntry Namespace_GetDefault
|
|
}
|
|
] @_in::ExternalName::•("Namespace_GetDefault")
|
|
external static method _getDefault() → core::int;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 2
|
|
CheckStack
|
|
Allocate CP#0
|
|
StoreLocal r1
|
|
Push r1
|
|
PushConstant CP#2
|
|
IndirectStaticCall 1, CP#1
|
|
Drop1
|
|
Push FP[-5]
|
|
PushConstant CP#4
|
|
IndirectStaticCall 2, CP#3
|
|
StoreLocal r0
|
|
Push r0
|
|
StoreStaticTOS CP#5
|
|
Drop1
|
|
PushConstant CP#6
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Class #lib::_NamespaceImpl
|
|
[1] = ArgDesc num-args 1, num-type-args 0, names []
|
|
[2] = StaticICData target '#lib::_NamespaceImpl::_', arg-desc CP#1
|
|
[3] = ArgDesc num-args 2, num-type-args 0, names []
|
|
[4] = StaticICData target '#lib::_NamespaceImpl::_create', arg-desc CP#3
|
|
[5] = Field #lib::_NamespaceImpl::_cachedNamespace
|
|
[6] = Null
|
|
}
|
|
] static method _setupNamespace(dynamic namespace) → void {
|
|
self::_NamespaceImpl::_cachedNamespace = self::_NamespaceImpl::_create(new self::_NamespaceImpl::_(), namespace);
|
|
}
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 2
|
|
CheckStack
|
|
PushConstant CP#0
|
|
PushStatic CP#0
|
|
PushConstant CP#1
|
|
InstanceCall1 2, CP#3
|
|
PushConstant CP#4
|
|
IfNeStrictTOS
|
|
Jump L1
|
|
Allocate CP#5
|
|
StoreLocal r1
|
|
Push r1
|
|
PushConstant CP#7
|
|
IndirectStaticCall 1, CP#6
|
|
Drop1
|
|
PushConstant CP#9
|
|
IndirectStaticCall 0, CP#8
|
|
PushConstant CP#10
|
|
IndirectStaticCall 2, CP#2
|
|
StoreLocal r0
|
|
Push r0
|
|
StoreStaticTOS CP#0
|
|
Drop1
|
|
L1:
|
|
PushConstant CP#0
|
|
PushStatic CP#0
|
|
ReturnTOS
|
|
PushConstant CP#1
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Field #lib::_NamespaceImpl::_cachedNamespace
|
|
[1] = Null
|
|
[2] = ArgDesc num-args 2, num-type-args 0, names []
|
|
[3] = ICData target-name '==', arg-desc CP#2
|
|
[4] = Bool true
|
|
[5] = Class #lib::_NamespaceImpl
|
|
[6] = ArgDesc num-args 1, num-type-args 0, names []
|
|
[7] = StaticICData target '#lib::_NamespaceImpl::_', arg-desc CP#6
|
|
[8] = ArgDesc num-args 0, num-type-args 0, names []
|
|
[9] = StaticICData target '#lib::_NamespaceImpl::_getDefault', arg-desc CP#8
|
|
[10] = StaticICData target '#lib::_NamespaceImpl::_create', arg-desc CP#2
|
|
}
|
|
] static get _namespace() → self::_NamespaceImpl {
|
|
if(self::_NamespaceImpl::_cachedNamespace.{core::Object::==}(null)) {
|
|
self::_NamespaceImpl::_cachedNamespace = self::_NamespaceImpl::_create(new self::_NamespaceImpl::_(), self::_NamespaceImpl::_getDefault());
|
|
}
|
|
return self::_NamespaceImpl::_cachedNamespace;
|
|
}
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
PushConstant CP#1
|
|
IndirectStaticCall 0, CP#0
|
|
PushConstant CP#3
|
|
IndirectStaticCall 1, CP#2
|
|
ReturnTOS
|
|
PushConstant CP#4
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = ArgDesc num-args 0, num-type-args 0, names []
|
|
[1] = StaticICData get target '#lib::_NamespaceImpl::_namespace', arg-desc CP#0
|
|
[2] = ArgDesc num-args 1, num-type-args 0, names []
|
|
[3] = StaticICData target '#lib::_NamespaceImpl::_getPointer', arg-desc CP#2
|
|
[4] = Null
|
|
}
|
|
] static get _namespacePointer() → core::int
|
|
return self::_NamespaceImpl::_getPointer(self::_NamespaceImpl::_namespace);
|
|
}
|
|
class _Namespace extends core::Object {
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
Push FP[-5]
|
|
PushConstant CP#1
|
|
IndirectStaticCall 1, CP#0
|
|
Drop1
|
|
PushConstant CP#2
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = ArgDesc num-args 1, num-type-args 0, names []
|
|
[1] = StaticICData target 'dart.core::Object::', arg-desc CP#0
|
|
[2] = Null
|
|
}
|
|
] synthetic constructor •() → void
|
|
: super core::Object::•()
|
|
;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
Push FP[-5]
|
|
PushConstant CP#1
|
|
IndirectStaticCall 1, CP#0
|
|
Drop1
|
|
PushConstant CP#2
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = ArgDesc num-args 1, num-type-args 0, names []
|
|
[1] = StaticICData target '#lib::_NamespaceImpl::_setupNamespace', arg-desc CP#0
|
|
[2] = Null
|
|
}
|
|
] static method _setupNamespace(dynamic namespace) → void {
|
|
self::_NamespaceImpl::_setupNamespace(namespace);
|
|
}
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
PushConstant CP#1
|
|
IndirectStaticCall 0, CP#0
|
|
ReturnTOS
|
|
PushConstant CP#2
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = ArgDesc num-args 0, num-type-args 0, names []
|
|
[1] = StaticICData get target '#lib::_NamespaceImpl::_namespace', arg-desc CP#0
|
|
[2] = Null
|
|
}
|
|
] static get _namespace() → self::_Namespace
|
|
return self::_NamespaceImpl::_namespace;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
PushConstant CP#1
|
|
IndirectStaticCall 0, CP#0
|
|
ReturnTOS
|
|
PushConstant CP#2
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = ArgDesc num-args 0, num-type-args 0, names []
|
|
[1] = StaticICData get target '#lib::_NamespaceImpl::_namespacePointer', arg-desc CP#0
|
|
[2] = Null
|
|
}
|
|
] static get _namespacePointer() → core::int
|
|
return self::_NamespaceImpl::_namespacePointer;
|
|
}
|
|
class VMLibraryHooks extends core::Object {
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
PushConstant CP#0
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Null
|
|
}
|
|
] static field dynamic timerFactory = null;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
PushConstant CP#0
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Null
|
|
}
|
|
] static field dynamic eventHandlerSendData = null;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
PushConstant CP#0
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Null
|
|
}
|
|
] static field dynamic timerMillisecondClock = null;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
PushConstant CP#0
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Null
|
|
}
|
|
] static field dynamic resourceReadAsBytes = null;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
PushConstant CP#0
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Null
|
|
}
|
|
] static field dynamic packageRootString = null;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
PushConstant CP#0
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Null
|
|
}
|
|
] static field dynamic packageConfigString = null;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
PushConstant CP#0
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Null
|
|
}
|
|
] static field dynamic packageRootUriFuture = null;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
PushConstant CP#0
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Null
|
|
}
|
|
] static field dynamic packageConfigUriFuture = null;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
PushConstant CP#0
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Null
|
|
}
|
|
] static field dynamic resolvePackageUriFuture = null;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
PushConstant CP#0
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Null
|
|
}
|
|
] static field dynamic _computeScriptUri = null;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
PushConstant CP#0
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Null
|
|
}
|
|
] static field dynamic _cachedScript = null;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
Push FP[-5]
|
|
PushConstant CP#1
|
|
IndirectStaticCall 1, CP#0
|
|
Drop1
|
|
PushConstant CP#2
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = ArgDesc num-args 1, num-type-args 0, names []
|
|
[1] = StaticICData target 'dart.core::Object::', arg-desc CP#0
|
|
[2] = Null
|
|
}
|
|
] synthetic constructor •() → void
|
|
: super core::Object::•()
|
|
;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 2
|
|
CheckStack
|
|
Push FP[-5]
|
|
StoreLocal r0
|
|
Push r0
|
|
StoreStaticTOS CP#0
|
|
Drop1
|
|
PushConstant CP#1
|
|
StoreLocal r1
|
|
Push r1
|
|
StoreStaticTOS CP#2
|
|
Drop1
|
|
PushConstant CP#1
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Field #lib::VMLibraryHooks::_computeScriptUri
|
|
[1] = Null
|
|
[2] = Field #lib::VMLibraryHooks::_cachedScript
|
|
}
|
|
] static set platformScript(dynamic f) → void {
|
|
self::VMLibraryHooks::_computeScriptUri = f;
|
|
self::VMLibraryHooks::_cachedScript = null;
|
|
}
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 1
|
|
CheckStack
|
|
PushConstant CP#0
|
|
PushStatic CP#0
|
|
PushConstant CP#1
|
|
InstanceCall1 2, CP#3
|
|
PushConstant CP#4
|
|
IfNeStrictTOS
|
|
Jump L1
|
|
PushConstant CP#5
|
|
PushStatic CP#5
|
|
PushConstant CP#1
|
|
InstanceCall1 2, CP#6
|
|
BooleanNegateTOS
|
|
PopLocal r0
|
|
Jump L2
|
|
L1:
|
|
PushConstant CP#7
|
|
PopLocal r0
|
|
L2:
|
|
Push r0
|
|
PushConstant CP#4
|
|
IfNeStrictTOS
|
|
Jump L3
|
|
PushConstant CP#5
|
|
PushStatic CP#5
|
|
InstanceCall1 1, CP#9
|
|
StoreLocal r0
|
|
Push r0
|
|
StoreStaticTOS CP#0
|
|
Drop1
|
|
L3:
|
|
PushConstant CP#0
|
|
PushStatic CP#0
|
|
ReturnTOS
|
|
PushConstant CP#1
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Field #lib::VMLibraryHooks::_cachedScript
|
|
[1] = Null
|
|
[2] = ArgDesc num-args 2, num-type-args 0, names []
|
|
[3] = ICData target-name '==', arg-desc CP#2
|
|
[4] = Bool true
|
|
[5] = Field #lib::VMLibraryHooks::_computeScriptUri
|
|
[6] = ICData target-name '==', arg-desc CP#2
|
|
[7] = Bool false
|
|
[8] = ArgDesc num-args 1, num-type-args 0, names []
|
|
[9] = ICData target-name 'call', arg-desc CP#8
|
|
}
|
|
] static get platformScript() → dynamic {
|
|
if(self::VMLibraryHooks::_cachedScript.{core::Object::==}(null) && !self::VMLibraryHooks::_computeScriptUri.{core::Object::==}(null)) {
|
|
self::VMLibraryHooks::_cachedScript = self::VMLibraryHooks::_computeScriptUri.call();
|
|
}
|
|
return self::VMLibraryHooks::_cachedScript;
|
|
}
|
|
}
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
PushConstant CP#0
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Int 0
|
|
}
|
|
]static field core::int _stdinFD = 0;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
PushConstant CP#0
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Int 1
|
|
}
|
|
]static field core::int _stdoutFD = 1;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
PushConstant CP#0
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Int 2
|
|
}
|
|
]static field core::int _stderrFD = 2;
|
|
static field core::String _rawScript;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
Push FP[-5]
|
|
NativeCall CP#0
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = NativeEntry Builtin_PrintString
|
|
}
|
|
]@_in::ExternalName::•("Builtin_PrintString")
|
|
external static method _printString(core::String s) → void;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
Push FP[-5]
|
|
InstanceCall1 1, CP#1
|
|
PushConstant CP#2
|
|
IndirectStaticCall 1, CP#0
|
|
Drop1
|
|
PushConstant CP#3
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = ArgDesc num-args 1, num-type-args 0, names []
|
|
[1] = ICData target-name 'toString', arg-desc CP#0
|
|
[2] = StaticICData target '#lib::_printString', arg-desc CP#0
|
|
[3] = Null
|
|
}
|
|
]static method _print(dynamic arg) → void {
|
|
self::_printString(arg.{core::Object::toString}());
|
|
}
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
PushConstant CP#0
|
|
ReturnTOS
|
|
PushConstant CP#1
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = TearOff #lib::_print
|
|
[1] = Null
|
|
}
|
|
]static method _getPrintClosure() → dynamic
|
|
return self::_print;
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 1
|
|
CheckStack
|
|
Push FP[-5]
|
|
StoreLocal r0
|
|
Push r0
|
|
StoreStaticTOS CP#0
|
|
Drop1
|
|
PushConstant CP#1
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Field #lib::_ScheduleImmediate::_closure
|
|
[1] = Null
|
|
}
|
|
]static method _setScheduleImmediateClosure((() → void) → void closure) → void {
|
|
self::_ScheduleImmediate::_closure = closure;
|
|
}
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 3
|
|
CheckStack
|
|
Push FP[-7]
|
|
StoreLocal r0
|
|
Push r0
|
|
StoreStaticTOS CP#0
|
|
Drop1
|
|
Push FP[-6]
|
|
StoreLocal r1
|
|
Push r1
|
|
StoreStaticTOS CP#1
|
|
Drop1
|
|
Push FP[-5]
|
|
StoreLocal r2
|
|
Push r2
|
|
StoreStaticTOS CP#2
|
|
Drop1
|
|
PushConstant CP#3
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Field #lib::_stdinFD
|
|
[1] = Field #lib::_stdoutFD
|
|
[2] = Field #lib::_stderrFD
|
|
[3] = Null
|
|
}
|
|
]static method _setStdioFDs(core::int stdin, core::int stdout, core::int stderr) → void {
|
|
self::_stdinFD = stdin;
|
|
self::_stdoutFD = stdout;
|
|
self::_stderrFD = stderr;
|
|
}
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 2
|
|
CheckStack
|
|
PushConstant CP#0
|
|
PushStatic CP#0
|
|
PushConstant CP#1
|
|
InstanceCall1 2, CP#3
|
|
PushConstant CP#4
|
|
IfEqStrictTOS
|
|
Jump L1
|
|
PushConstant CP#0
|
|
PushStatic CP#0
|
|
PushConstant CP#5
|
|
InstanceCall1 2, CP#6
|
|
PopLocal r1
|
|
Jump L2
|
|
L1:
|
|
PushConstant CP#4
|
|
PopLocal r1
|
|
L2:
|
|
Push r1
|
|
PushConstant CP#4
|
|
IfEqStrictTOS
|
|
Jump L3
|
|
PushConstant CP#0
|
|
PushStatic CP#0
|
|
PushConstant CP#7
|
|
InstanceCall1 2, CP#8
|
|
PopLocal r0
|
|
Jump L4
|
|
L3:
|
|
PushConstant CP#4
|
|
PopLocal r0
|
|
L4:
|
|
Push r0
|
|
PushConstant CP#4
|
|
IfNeStrictTOS
|
|
Jump L5
|
|
PushConstant CP#0
|
|
PushStatic CP#0
|
|
PushConstant CP#10
|
|
IndirectStaticCall 1, CP#9
|
|
ReturnTOS
|
|
Jump L6
|
|
L5:
|
|
PushConstant CP#12
|
|
IndirectStaticCall 0, CP#11
|
|
PushConstant CP#13
|
|
PushConstant CP#0
|
|
PushStatic CP#0
|
|
PushConstant CP#14
|
|
IndirectStaticCall 2, CP#2
|
|
InstanceCall1 2, CP#15
|
|
ReturnTOS
|
|
L6:
|
|
PushConstant CP#13
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Field #lib::_rawScript
|
|
[1] = String 'http:'
|
|
[2] = ArgDesc num-args 2, num-type-args 0, names []
|
|
[3] = ICData target-name 'startsWith', arg-desc CP#2
|
|
[4] = Bool true
|
|
[5] = String 'https:'
|
|
[6] = ICData target-name 'startsWith', arg-desc CP#2
|
|
[7] = String 'file:'
|
|
[8] = ICData target-name 'startsWith', arg-desc CP#2
|
|
[9] = ArgDesc num-args 1, num-type-args 0, names []
|
|
[10] = StaticICData target 'dart.core::Uri::parse', arg-desc CP#9
|
|
[11] = ArgDesc num-args 0, num-type-args 0, names []
|
|
[12] = StaticICData get target 'dart.core::Uri::base', arg-desc CP#11
|
|
[13] = Null
|
|
[14] = StaticICData target 'dart.core::_Uri::file', arg-desc CP#2
|
|
[15] = ICData target-name 'resolveUri', arg-desc CP#2
|
|
}
|
|
]static method _scriptUri() → core::Uri {
|
|
if(self::_rawScript.{core::String::startsWith}("http:") || self::_rawScript.{core::String::startsWith}("https:") || self::_rawScript.{core::String::startsWith}("file:")) {
|
|
return core::Uri::parse(self::_rawScript);
|
|
}
|
|
else {
|
|
return core::Uri::base.{core::Uri::resolveUri}(core::_Uri::file(self::_rawScript));
|
|
}
|
|
}
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 1
|
|
CheckStack
|
|
PushConstant CP#0
|
|
StoreLocal r0
|
|
Push r0
|
|
PushConstant CP#2
|
|
IndirectStaticCall 1, CP#1
|
|
Drop1
|
|
Drop1
|
|
PushConstant CP#3
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = TearOff #lib::_scriptUri
|
|
[1] = ArgDesc num-args 1, num-type-args 0, names []
|
|
[2] = StaticICData set target '#lib::VMLibraryHooks::platformScript', arg-desc CP#1
|
|
[3] = Null
|
|
}
|
|
]static method _setupHooks() → dynamic {
|
|
self::VMLibraryHooks::platformScript = self::_scriptUri;
|
|
}
|
|
[@vm.bytecode=
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack
|
|
PushConstant CP#0
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = Null
|
|
}
|
|
]static method main() → dynamic {}
|