Bytecode
Dynamic Module Entry Point: DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::main
Library 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart'
    name '#lib'
    script 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart'

Class '', script = 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart'

Field '_stdin', type = DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::Stdin, getter = 'get:_stdin', reflectable, static, final, is-late, has-initializer
    initializer
Bytecode {
  Entry                0
  CheckStack           0
  LoadStatic           CP#0
  DirectCall           CP#1, 1
  ReturnTOS
}
ConstantPool {
  [0] = StaticField DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_stdinFD (field)
  [1] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_StdIOUtils::_getStdioInputStream', ArgDesc num-args 1, num-type-args 0, names []
  [2] = Reserved
}


Field '_stdinFD', type = dart:core::int, reflectable, static, is-late, has-initializer
    value = const 0

Field '_stdoutFD', type = dart:core::int, reflectable, static, is-late, has-initializer
    value = const 1

Field '_stderrFD', type = dart:core::int, reflectable, static, is-late, has-initializer
    value = const 2

Function '_printString', static, reflectable, debuggable, external
    parameters [dart:core::String 's'] (required: 1)
    return-type void

Function '_print', static, reflectable, debuggable
    parameters [dynamic 'arg'] (required: 1)
    return-type void

Bytecode {
  Entry                0
  CheckStack           0
  Push                 FP[-5]
  InterfaceCall        CP#0, 1
  DirectCall           CP#2, 1
  Drop1
  PushNull
  ReturnTOS
}
ConstantPool {
  [0] = InterfaceCall 'dart:core::Object::toString', ArgDesc num-args 1, num-type-args 0, names []
  [1] = Reserved
  [2] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_printString', ArgDesc num-args 1, num-type-args 0, names []
  [3] = Reserved
}


Function '_getPrintClosure', static, reflectable, debuggable
    parameters [] (required: 0)
    return-type dynamic

Bytecode {
  Entry                0
  CheckStack           0
  PushConstant         CP#0
  ReturnTOS
}
ConstantPool {
  [0] = ObjectRef const tear-off DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_print
}


Function '_setScheduleImmediateClosure', static, reflectable, debuggable
    parameters [FunctionType (FunctionType () -> void) -> void 'closure'] (required: 1)
    return-type void

Bytecode {
  Entry                1
  CheckStack           0
  Push                 FP[-5]
  StoreStaticTOS       CP#0
  PushNull
  ReturnTOS
}
ConstantPool {
  [0] = StaticField DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_ScheduleImmediate::_closure (field)
}


Function '_setStdioFDs', static, reflectable, debuggable
    parameters [dart:core::int 'stdin', dart:core::int 'stdout', dart:core::int 'stderr'] (required: 3)
    return-type void

Bytecode {
  Entry                1
  CheckStack           0
  Push                 FP[-7]
  StoreStaticTOS       CP#0
  Push                 FP[-6]
  StoreStaticTOS       CP#1
  Push                 FP[-5]
  StoreStaticTOS       CP#2
  PushNull
  ReturnTOS
}
ConstantPool {
  [0] = StaticField DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_stdinFD (field)
  [1] = StaticField DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_stdoutFD (field)
  [2] = StaticField DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_stderrFD (field)
}


Function 'main', static, reflectable, debuggable
    parameters [] (required: 0)
    return-type dynamic

Bytecode {
  Entry                0
  CheckStack           0
  PushNull
  ReturnTOS
}
ConstantPool {
}

Class '_ScheduleImmediate', script = 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart'
    extends dart:core::Object

Field '_closure', type = FunctionType (FunctionType () -> void)? -> void, reflectable, static, is-late, has-initializer
    value = null

Function '', constructor, reflectable
    parameters [] (required: 0)
    return-type DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_ScheduleImmediate

Bytecode {
  Entry                0
  CheckStack           0
  Push                 FP[-5]
  DirectCall           CP#0, 1
  Drop1
  PushNull
  ReturnTOS
}
ConstantPool {
  [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
  [1] = Reserved
}

Class '_NamespaceImpl', script = 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart'
    extends dart:core::Object
    implements [DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_Namespace]

Field '_cachedNamespace', type = DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_NamespaceImpl?, reflectable, static, is-late, has-initializer
    value = null

Function '_', constructor, reflectable, debuggable
    parameters [] (required: 0)
    return-type DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_NamespaceImpl

Bytecode {
  Entry                0
  CheckStack           0
  Push                 FP[-5]
  DirectCall           CP#0, 1
  Drop1
  PushNull
  ReturnTOS
}
ConstantPool {
  [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
  [1] = Reserved
}


Function '_create', static, reflectable, debuggable, external
    parameters [DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_NamespaceImpl 'namespace', dynamic 'n'] (required: 2)
    return-type DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_NamespaceImpl

Function '_getPointer', static, reflectable, debuggable, external
    parameters [DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_NamespaceImpl 'namespace'] (required: 1)
    return-type dart:core::int

Function '_getDefault', static, reflectable, debuggable, external
    parameters [] (required: 0)
    return-type dart:core::int

Function '_setupNamespace', static, reflectable, debuggable
    parameters [dynamic 'namespace'] (required: 1)
    return-type void

Bytecode {
  Entry                2
  CheckStack           0
  Allocate             CP#0
  StoreLocal           r1
  Push                 r1
  DirectCall           CP#1, 1
  Drop1
  Push                 FP[-5]
  DirectCall           CP#3, 2
  StoreStaticTOS       CP#5
  PushNull
  ReturnTOS
}
ConstantPool {
  [0] = Class DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_NamespaceImpl
  [1] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_NamespaceImpl::_ (constructor)', ArgDesc num-args 1, num-type-args 0, names []
  [2] = Reserved
  [3] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_NamespaceImpl::_create', ArgDesc num-args 2, num-type-args 0, names []
  [4] = Reserved
  [5] = StaticField DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_NamespaceImpl::_cachedNamespace (field)
}


Function 'get:_namespace', getter, static, reflectable, debuggable
    parameters [] (required: 0)
    return-type DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_NamespaceImpl

Bytecode {
  Entry                2
  CheckStack           0
  LoadStatic           CP#0
  JumpIfNotNull        L1
  Allocate             CP#1
  StoreLocal           r1
  Push                 r1
  DirectCall           CP#2, 1
  Drop1
  DirectCall           CP#4, 0
  DirectCall           CP#6, 2
  StoreStaticTOS       CP#0
L1:
  LoadStatic           CP#0
  StoreLocal           r0
  Push                 r0
  NullCheck            CP#8
  ReturnTOS
}
ConstantPool {
  [0] = StaticField DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_NamespaceImpl::_cachedNamespace (field)
  [1] = Class DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_NamespaceImpl
  [2] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_NamespaceImpl::_ (constructor)', ArgDesc num-args 1, num-type-args 0, names []
  [3] = Reserved
  [4] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_NamespaceImpl::_getDefault', ArgDesc num-args 0, num-type-args 0, names []
  [5] = Reserved
  [6] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_NamespaceImpl::_create', ArgDesc num-args 2, num-type-args 0, names []
  [7] = Reserved
  [8] = ObjectRef null
}


Function 'get:_namespacePointer', getter, static, reflectable, debuggable
    parameters [] (required: 0)
    return-type dart:core::int

Bytecode {
  Entry                0
  CheckStack           0
  DirectCall           CP#0, 0
  DirectCall           CP#2, 1
  ReturnTOS
}
ConstantPool {
  [0] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_NamespaceImpl::get:_namespace', ArgDesc num-args 0, num-type-args 0, names []
  [1] = Reserved
  [2] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_NamespaceImpl::_getPointer', ArgDesc num-args 1, num-type-args 0, names []
  [3] = Reserved
}

Class '_Namespace', script = 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart'
    extends dart:core::Object


Function '', constructor, reflectable
    parameters [] (required: 0)
    return-type DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_Namespace

Bytecode {
  Entry                0
  CheckStack           0
  Push                 FP[-5]
  DirectCall           CP#0, 1
  Drop1
  PushNull
  ReturnTOS
}
ConstantPool {
  [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
  [1] = Reserved
}


Function '_setupNamespace', static, reflectable, debuggable
    parameters [dynamic 'namespace'] (required: 1)
    return-type void

Bytecode {
  Entry                0
  CheckStack           0
  Push                 FP[-5]
  DirectCall           CP#0, 1
  Drop1
  PushNull
  ReturnTOS
}
ConstantPool {
  [0] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_NamespaceImpl::_setupNamespace', ArgDesc num-args 1, num-type-args 0, names []
  [1] = Reserved
}


Function 'get:_namespace', getter, static, reflectable, debuggable
    parameters [] (required: 0)
    return-type DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_Namespace

Bytecode {
  Entry                0
  CheckStack           0
  DirectCall           CP#0, 0
  ReturnTOS
}
ConstantPool {
  [0] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_NamespaceImpl::get:_namespace', ArgDesc num-args 0, num-type-args 0, names []
  [1] = Reserved
}


Function 'get:_namespacePointer', getter, static, reflectable, debuggable
    parameters [] (required: 0)
    return-type dart:core::int

Bytecode {
  Entry                0
  CheckStack           0
  DirectCall           CP#0, 0
  ReturnTOS
}
ConstantPool {
  [0] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_NamespaceImpl::get:_namespacePointer', ArgDesc num-args 0, num-type-args 0, names []
  [1] = Reserved
}

Class 'Stdin', script = 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart'
    extends dart:core::Object


Function '', constructor, reflectable
    parameters [] (required: 0)
    return-type DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::Stdin

Bytecode {
  Entry                0
  CheckStack           0
  Push                 FP[-5]
  DirectCall           CP#0, 1
  Drop1
  PushNull
  ReturnTOS
}
ConstantPool {
  [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
  [1] = Reserved
}

Class '_StdIOUtils', script = 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart'
    extends dart:core::Object


Function '', constructor, reflectable
    parameters [] (required: 0)
    return-type DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::_StdIOUtils

Bytecode {
  Entry                0
  CheckStack           0
  Push                 FP[-5]
  DirectCall           CP#0, 1
  Drop1
  PushNull
  ReturnTOS
}
ConstantPool {
  [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
  [1] = Reserved
}


Function '_getStdioInputStream', static, reflectable, debuggable, external
    parameters [dart:core::int 'fd'] (required: 1)
    return-type DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::Stdin
Class 'Timer', script = 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart'
    extends dart:core::Object


Function '', constructor, reflectable
    parameters [] (required: 0)
    return-type DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::Timer

Bytecode {
  Entry                0
  CheckStack           0
  Push                 FP[-5]
  DirectCall           CP#0, 1
  Drop1
  PushNull
  ReturnTOS
}
ConstantPool {
  [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
  [1] = Reserved
}

Class 'SendPort', script = 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart'
    extends dart:core::Object


Function '', constructor, reflectable
    parameters [] (required: 0)
    return-type DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::SendPort

Bytecode {
  Entry                0
  CheckStack           0
  Push                 FP[-5]
  DirectCall           CP#0, 1
  Drop1
  PushNull
  ReturnTOS
}
ConstantPool {
  [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
  [1] = Reserved
}

Class 'VMLibraryHooks', script = 'DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart'
    extends dart:core::Object

Field 'timerFactory', type = FunctionType (dart:core::int, FunctionType (DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::Timer) -> void, dart:core::bool)? -> DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::Timer, reflectable, static, is-late, has-initializer
    value = null

Field 'eventHandlerSendData', type = FunctionType (dart:core::Object?, DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::SendPort, dart:core::int) -> void, getter = 'get:eventHandlerSendData', reflectable, static, is-late
    value = null

Field 'timerMillisecondClock', type = FunctionType () -> dart:core::int, getter = 'get:timerMillisecondClock', reflectable, static, is-late
    value = null

Field 'packageRootString', type = dart:core::String?, reflectable, static, is-late, has-initializer
    value = null

Field 'packageConfigString', type = dart:core::String?, reflectable, static, is-late, has-initializer
    value = null

Field 'packageConfigUriSync', type = FunctionType ()? -> dart:core::Uri?, reflectable, static, is-late, has-initializer
    value = null

Field 'resolvePackageUriSync', type = FunctionType (dart:core::Uri)? -> dart:core::Uri?, reflectable, static, is-late, has-initializer
    value = null

Field '_computeScriptUri', type = FunctionType ()? -> dart:core::Uri, reflectable, static, is-late, has-initializer
    value = null

Field '_cachedScript', type = dart:core::Uri?, reflectable, static, is-late, has-initializer
    value = null

Function '', constructor, reflectable
    parameters [] (required: 0)
    return-type DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::VMLibraryHooks

Bytecode {
  Entry                0
  CheckStack           0
  Push                 FP[-5]
  DirectCall           CP#0, 1
  Drop1
  PushNull
  ReturnTOS
}
ConstantPool {
  [0] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
  [1] = Reserved
}


Function 'set:platformScript', setter, static, reflectable, debuggable
    parameters [dart:core::Object? 'f'] (required: 1)
    return-type void

Bytecode {
  Entry                1
  CheckStack           0
  Push                 FP[-5]
  PushConstant         CP#0
  PushNull
  PushNull
  PushConstant         CP#1
  AssertAssignable     0, CP#2
  StoreStaticTOS       CP#3
  PushNull
  StoreStaticTOS       CP#4
  PushNull
  ReturnTOS
}
ConstantPool {
  [0] = Type FunctionType ()? -> dart:core::Uri
  [1] = ObjectRef ' in type cast'
  [2] = SubtypeTestCache
  [3] = StaticField DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::VMLibraryHooks::_computeScriptUri (field)
  [4] = StaticField DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::VMLibraryHooks::_cachedScript (field)
}


Function 'get:platformScript', getter, static, reflectable, debuggable
    parameters [] (required: 0)
    return-type dart:core::Uri?

Bytecode {
  Entry                6
  CheckStack           0
  LoadStatic           CP#0
  PopLocal             r0
  Push                 r0
  JumpIfNotNull        L1
  LoadStatic           CP#1
  PopLocal             r3
  Push                 r3
  JumpIfNotNull        L2
  PushNull
  PopLocal             r4
  Jump                 L3
L2:
  Push                 r3
  StoreLocal           r5
  Push                 r5
  UncheckedClosureCall CP#2, 1
  PopLocal             r4
L3:
  Push                 r4
  StoreLocal           r2
  Push                 r2
  StoreStaticTOS       CP#0
  PopLocal             r1
  Jump                 L4
L1:
  Push                 r0
  PopLocal             r1
L4:
  Push                 r1
  ReturnTOS
}
ConstantPool {
  [0] = StaticField DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::VMLibraryHooks::_cachedScript (field)
  [1] = StaticField DART_SDK/pkg/dart2bytecode/testcases/bootstrapping.dart::VMLibraryHooks::_computeScriptUri (field)
  [2] = ObjectRef ArgDesc num-args 1, num-type-args 0, names []
}

