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

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


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

Bytecode {
  Entry                5
  CheckStack           0
  PushConstant         CP#0
  PushConstant         CP#1
  DirectCall           CP#2, 2
  PopLocal             r2
  AllocateContext      0, 1
  PopLocal             r0
  Push                 r0
  Push                 r2
  StoreContextVar      0, 0
  AllocateClosure      CP#7
  Dup
  Push                 r0
  StoreClosureElement  0
  PopLocal             r4
  Push                 r4
  Push                 r0
  LoadContextParent
  PopLocal             r0
  PopLocal             r3
  Push                 r3
  StoreLocal           r4
  Push                 r4
  UncheckedClosureCall CP#9, 1
  Drop1
  PushNull
  ReturnTOS
}
ConstantPool {
  [0] = ObjectRef < dart:ffi::NativeFunction < FunctionType () -> dart:ffi::Void > >
  [1] = ObjectRef const 3735928559
  [2] = DirectCall 'dart:ffi::Pointer::fromAddress (constructor)', ArgDesc num-args 1, num-type-args 1, names []
  [3] = Reserved
  [4] = ClosureFunction 0
  [5] = NativeFunction
  [6] = EndClosureFunctionScope
  [7] = AllocateClosure 0, num-elements: 1, flags: 0
  [8] = Reserved
  [9] = ObjectRef ArgDesc num-args 1, num-type-args 0, names []
}
Closure DART_SDK/pkg/dart2bytecode/testcases/ffi.dart::testVoidNoArg::'#ffiClosure0' annotations const List<dynamic> [const dart:core::pragma {dart:core::pragma::name (field): 'vm:ffi:call-closure', dart:core::pragma::options (field): const dart:ffi::_FfiCall < FunctionType () -> dart:ffi::Void > {dart:ffi::_FfiCall::isLeaf (field): const false}}]
 () -> void
ClosureCode {
  Entry                2
  Push                 FP[-5]
  LoadClosureElement   0
  PopLocal             r0
  CheckStack           0
  Push                 r0
  LoadContextVar       0, 0
  FfiCall              CP#5
  ReturnTOS
}


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

Bytecode {
  Entry                5
  CheckStack           0
  PushConstant         CP#0
  PushConstant         CP#1
  DirectCall           CP#2, 2
  PopLocal             r2
  AllocateContext      0, 1
  PopLocal             r0
  Push                 r0
  Push                 r2
  StoreContextVar      0, 0
  AllocateClosure      CP#10
  Dup
  Push                 r0
  StoreClosureElement  0
  PopLocal             r4
  Push                 r4
  Push                 r0
  LoadContextParent
  PopLocal             r0
  PopLocal             r3
  Push                 r3
  StoreLocal           r4
  PushInt              42
  Push                 r4
  UncheckedClosureCall CP#12, 2
  ReturnTOS
}
ConstantPool {
  [0] = ObjectRef < dart:ffi::NativeFunction < FunctionType (dart:ffi::Int64) -> dart:ffi::Int32 > >
  [1] = ObjectRef const 3735928559
  [2] = DirectCall 'dart:ffi::Pointer::fromAddress (constructor)', ArgDesc num-args 1, num-type-args 1, names []
  [3] = Reserved
  [4] = ClosureFunction 0
  [5] = Type dart:core::int
  [6] = ObjectRef 'arg1'
  [7] = SubtypeTestCache
  [8] = NativeFunction
  [9] = EndClosureFunctionScope
  [10] = AllocateClosure 0, num-elements: 1, flags: 0
  [11] = Reserved
  [12] = ObjectRef ArgDesc num-args 2, num-type-args 0, names []
}
Closure DART_SDK/pkg/dart2bytecode/testcases/ffi.dart::testIntInt::'#ffiClosure1' annotations const List<dynamic> [const dart:core::pragma {dart:core::pragma::name (field): 'vm:ffi:call-closure', dart:core::pragma::options (field): const dart:ffi::_FfiCall < FunctionType (dart:ffi::Int64) -> dart:ffi::Int32 > {dart:ffi::_FfiCall::isLeaf (field): const false}}]
 (dart:core::int arg1) -> dart:core::int
ClosureCode {
  Entry                2
  Push                 FP[-6]
  LoadClosureElement   0
  PopLocal             r0
  CheckStack           0
  JumpIfUnchecked      L1
  Push                 FP[-5]
  PushConstant         CP#5
  PushNull
  PushNull
  PushConstant         CP#6
  AssertAssignable     1, CP#7
  Drop1
L1:
  PushNull
  Drop1
  Push                 FP[-5]
  Push                 r0
  LoadContextVar       0, 0
  FfiCall              CP#8
  ReturnTOS
}


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

Bytecode {
  Entry                0
  CheckStack           0
  DirectCall           CP#0, 0
  Drop1
  DirectCall           CP#2, 0
  Drop1
  PushNull
  ReturnTOS
}
ConstantPool {
  [0] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/ffi.dart::testVoidNoArg', ArgDesc num-args 0, num-type-args 0, names []
  [1] = Reserved
  [2] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/ffi.dart::testIntInt', ArgDesc num-args 0, num-type-args 0, names []
  [3] = Reserved
}

