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

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


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

Bytecode {
  Entry                1
  CheckStack           0
  PushConstant         CP#0
  DirectCall           CP#1, 1
  PopLocal             r0
  DirectCall           CP#3, 0
  ReturnTOS
}
ConstantPool {
  [0] = DeferredLibraryPrefix 'lib', DART_SDK/pkg/dart2bytecode/testcases/deferred_lib.dart -> DART_SDK/pkg/dart2bytecode/testcases/hello.dart
  [1] = DirectCall 'dart:core::_checkLoaded', ArgDesc num-args 1, num-type-args 0, names []
  [2] = Reserved
  [3] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/hello.dart::main', ArgDesc num-args 0, num-type-args 0, names []
  [4] = Reserved
}


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

Bytecode {
  Entry                0
  CheckStack           0
  PushConstant         CP#0
  DirectCall           CP#1, 1
  ReturnTOS
}
ConstantPool {
  [0] = DeferredLibraryPrefix 'lib', DART_SDK/pkg/dart2bytecode/testcases/deferred_lib.dart -> DART_SDK/pkg/dart2bytecode/testcases/hello.dart
  [1] = DirectCall 'dart:core::_loadLibrary', ArgDesc num-args 1, num-type-args 0, names []
  [2] = Reserved
}


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

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

