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

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


Function 'foo1', static, has-optional-positional-params, reflectable, debuggable
    parameters [dynamic 'x', dynamic 'a', dynamic 'b'] (required: 1)
    return-type void

Bytecode {
  EntryOptional        1, 2, 0
  LoadConstant         r1, CP#0
  LoadConstant         r2, CP#1
  Frame                1
  CheckStack           0
  PushNull
  PushInt              2
  CreateArrayTOS
  StoreLocal           r3
  Push                 r3
  PushInt              0
  PushConstant         CP#2
  StoreIndexedTOS
  Push                 r3
  PushInt              1
  Push                 r0
  StoreIndexedTOS
  DirectCall           CP#3, 1
  DirectCall           CP#5, 1
  Drop1
  PushNull
  PushInt              2
  CreateArrayTOS
  StoreLocal           r3
  Push                 r3
  PushInt              0
  PushConstant         CP#7
  StoreIndexedTOS
  Push                 r3
  PushInt              1
  Push                 r1
  StoreIndexedTOS
  DirectCall           CP#3, 1
  DirectCall           CP#5, 1
  Drop1
  PushNull
  PushInt              2
  CreateArrayTOS
  StoreLocal           r3
  Push                 r3
  PushInt              0
  PushConstant         CP#8
  StoreIndexedTOS
  Push                 r3
  PushInt              1
  Push                 r2
  StoreIndexedTOS
  DirectCall           CP#3, 1
  DirectCall           CP#5, 1
  Drop1
  PushNull
  ReturnTOS
}
ConstantPool {
  [0] = ObjectRef 'default_a'
  [1] = ObjectRef 'default_b'
  [2] = ObjectRef 'x = '
  [3] = DirectCall 'dart:core::_StringBase::_interpolate', ArgDesc num-args 1, num-type-args 0, names []
  [4] = Reserved
  [5] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
  [6] = Reserved
  [7] = ObjectRef 'a = '
  [8] = ObjectRef 'b = '
}


Function 'foo2', static, has-optional-named-params, reflectable, debuggable
    parameters [dynamic 'y', dynamic 'z', dynamic 'c', dynamic 'a', dynamic 'b'] (required: 2)
    return-type void

Bytecode {
  EntryOptional        2, 0, 3
  LoadConstant         r2, CP#0
  LoadConstant         r2, CP#1
  LoadConstant         r3, CP#2
  LoadConstant         r3, CP#3
  LoadConstant         r4, CP#4
  LoadConstant         r4, CP#5
  Frame                1
  CheckStack           0
  PushNull
  PushInt              2
  CreateArrayTOS
  StoreLocal           r5
  Push                 r5
  PushInt              0
  PushConstant         CP#6
  StoreIndexedTOS
  Push                 r5
  PushInt              1
  Push                 r0
  StoreIndexedTOS
  DirectCall           CP#7, 1
  DirectCall           CP#9, 1
  Drop1
  PushNull
  PushInt              2
  CreateArrayTOS
  StoreLocal           r5
  Push                 r5
  PushInt              0
  PushConstant         CP#11
  StoreIndexedTOS
  Push                 r5
  PushInt              1
  Push                 r1
  StoreIndexedTOS
  DirectCall           CP#7, 1
  DirectCall           CP#9, 1
  Drop1
  PushNull
  PushInt              2
  CreateArrayTOS
  StoreLocal           r5
  Push                 r5
  PushInt              0
  PushConstant         CP#12
  StoreIndexedTOS
  Push                 r5
  PushInt              1
  Push                 r2
  StoreIndexedTOS
  DirectCall           CP#7, 1
  DirectCall           CP#9, 1
  Drop1
  PushNull
  PushInt              2
  CreateArrayTOS
  StoreLocal           r5
  Push                 r5
  PushInt              0
  PushConstant         CP#13
  StoreIndexedTOS
  Push                 r5
  PushInt              1
  Push                 r3
  StoreIndexedTOS
  DirectCall           CP#7, 1
  DirectCall           CP#9, 1
  Drop1
  PushNull
  PushInt              2
  CreateArrayTOS
  StoreLocal           r5
  Push                 r5
  PushInt              0
  PushConstant         CP#14
  StoreIndexedTOS
  Push                 r5
  PushInt              1
  Push                 r4
  StoreIndexedTOS
  DirectCall           CP#7, 1
  DirectCall           CP#9, 1
  Drop1
  PushNull
  ReturnTOS
}
ConstantPool {
  [0] = ObjectRef 'a'
  [1] = ObjectRef const 42
  [2] = ObjectRef 'b'
  [3] = ObjectRef const List<dart:core::String> ['default_b']
  [4] = ObjectRef 'c'
  [5] = ObjectRef 'default_c'
  [6] = ObjectRef 'y = '
  [7] = DirectCall 'dart:core::_StringBase::_interpolate', ArgDesc num-args 1, num-type-args 0, names []
  [8] = Reserved
  [9] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
  [10] = Reserved
  [11] = ObjectRef 'z = '
  [12] = ObjectRef 'a = '
  [13] = ObjectRef 'b = '
  [14] = ObjectRef 'c = '
}


Function 'foo3', static, has-optional-named-params, reflectable, debuggable
    type-params <'P' extends dart:core::Object? (default dynamic), 'Q' extends dart:core::Object? (default dynamic)>
    parameters [dynamic 'z', dynamic 'y', dart:core::bool 'a', dart:core::Map < DART_SDK/pkg/dart2bytecode/testcases/optional_params.dart::foo3::TypeParam/0, DART_SDK/pkg/dart2bytecode/testcases/optional_params.dart::foo3::TypeParam/1 > 'b'] (required: 2)
    parameter-flags [0, 0, 0, 8]
    return-type void

Bytecode {
  EntryOptional        2, 0, 2
  LoadConstant         r2, CP#0
  LoadConstant         r2, CP#1
  LoadConstant         r3, CP#2
  LoadConstant         r3, CP#3
  Frame                1
  CheckFunctionTypeArgs 2, r4
  CheckStack           0
  PushNull
  Push                 r4
  InstantiateType      CP#4
  DirectCall           CP#5, 1
  Drop1
  Push                 r1
  DirectCall           CP#5, 1
  Drop1
  Push                 r3
  DirectCall           CP#5, 1
  Drop1
  PushNull
  ReturnTOS
}
ConstantPool {
  [0] = ObjectRef 'a'
  [1] = ObjectRef const false
  [2] = ObjectRef 'b'
  [3] = ObjectRef null
  [4] = Type DART_SDK/pkg/dart2bytecode/testcases/optional_params.dart::foo3::TypeParam/0
  [5] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names []
  [6] = Reserved
}


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

Bytecode {
  Entry                0
  CheckStack           0
  PushConstant         CP#0
  PushConstant         CP#1
  DirectCall           CP#2, 2
  Drop1
  PushConstant         CP#4
  PushConstant         CP#5
  PushConstant         CP#1
  DirectCall           CP#6, 3
  Drop1
  PushNull
  ReturnTOS
}
ConstantPool {
  [0] = ObjectRef 'fixed_x'
  [1] = ObjectRef 'concrete_a'
  [2] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/optional_params.dart::foo1', ArgDesc num-args 2, num-type-args 0, names []
  [3] = Reserved
  [4] = ObjectRef 'fixed_y'
  [5] = ObjectRef 'fixed_z'
  [6] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/optional_params.dart::foo2', ArgDesc num-args 3, num-type-args 0, names ['a']
  [7] = Reserved
}

