| library #lib; |
| import self as self; |
| import "dart:core" as core; |
| |
| [@vm.bytecode= |
| 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 1, CP#3 |
| DirectCall 1, CP#5 |
| Drop1 |
| PushNull |
| PushInt 2 |
| CreateArrayTOS |
| StoreLocal r3 |
| Push r3 |
| PushInt 0 |
| PushConstant CP#7 |
| StoreIndexedTOS |
| Push r3 |
| PushInt 1 |
| Push r1 |
| StoreIndexedTOS |
| DirectCall 1, CP#3 |
| DirectCall 1, CP#5 |
| Drop1 |
| PushNull |
| PushInt 2 |
| CreateArrayTOS |
| StoreLocal r3 |
| Push r3 |
| PushInt 0 |
| PushConstant CP#8 |
| StoreIndexedTOS |
| Push r3 |
| PushInt 1 |
| Push r2 |
| StoreIndexedTOS |
| DirectCall 1, CP#3 |
| DirectCall 1, CP#5 |
| 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 = ' |
| } |
| ]static method foo1(dynamic x, [dynamic a = "default_a", dynamic b = "default_b"]) → void { |
| core::print("x = ${x}"); |
| core::print("a = ${a}"); |
| core::print("b = ${b}"); |
| } |
| [@vm.bytecode= |
| 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 1, CP#7 |
| DirectCall 1, CP#9 |
| Drop1 |
| PushNull |
| PushInt 2 |
| CreateArrayTOS |
| StoreLocal r5 |
| Push r5 |
| PushInt 0 |
| PushConstant CP#11 |
| StoreIndexedTOS |
| Push r5 |
| PushInt 1 |
| Push r1 |
| StoreIndexedTOS |
| DirectCall 1, CP#7 |
| DirectCall 1, CP#9 |
| Drop1 |
| PushNull |
| PushInt 2 |
| CreateArrayTOS |
| StoreLocal r5 |
| Push r5 |
| PushInt 0 |
| PushConstant CP#12 |
| StoreIndexedTOS |
| Push r5 |
| PushInt 1 |
| Push r2 |
| StoreIndexedTOS |
| DirectCall 1, CP#7 |
| DirectCall 1, CP#9 |
| Drop1 |
| PushNull |
| PushInt 2 |
| CreateArrayTOS |
| StoreLocal r5 |
| Push r5 |
| PushInt 0 |
| PushConstant CP#13 |
| StoreIndexedTOS |
| Push r5 |
| PushInt 1 |
| Push r3 |
| StoreIndexedTOS |
| DirectCall 1, CP#7 |
| DirectCall 1, CP#9 |
| Drop1 |
| PushNull |
| PushInt 2 |
| CreateArrayTOS |
| StoreLocal r5 |
| Push r5 |
| PushInt 0 |
| PushConstant CP#14 |
| StoreIndexedTOS |
| Push r5 |
| PushInt 1 |
| Push r4 |
| StoreIndexedTOS |
| DirectCall 1, CP#7 |
| DirectCall 1, CP#9 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = ObjectRef 'a' |
| [1] = ObjectRef const 42 |
| [2] = ObjectRef 'b' |
| [3] = ObjectRef const <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 = ' |
| } |
| ]static method foo2(dynamic y, dynamic z, {dynamic c = "default_c", dynamic a = 42, dynamic b = const <core::String>["default_b"]}) → void { |
| core::print("y = ${y}"); |
| core::print("z = ${z}"); |
| core::print("a = ${a}"); |
| core::print("b = ${b}"); |
| core::print("c = ${c}"); |
| } |
| [@vm.bytecode= |
| Bytecode { |
| EntryOptional 2, 0, 2 |
| LoadConstant r2, CP#0 |
| LoadConstant r2, CP#1 |
| LoadConstant r3, CP#2 |
| LoadConstant r3, CP#3 |
| Frame 1 |
| CheckStack 0 |
| CheckFunctionTypeArgs 2, r4 |
| PushNull |
| Push r4 |
| InstantiateType CP#4 |
| DirectCall 1, CP#5 |
| Drop1 |
| Push r1 |
| DirectCall 1, CP#5 |
| Drop1 |
| Push r3 |
| DirectCall 1, CP#5 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = ObjectRef 'a' |
| [1] = ObjectRef const false |
| [2] = ObjectRef 'b' |
| [3] = ObjectRef null |
| [4] = Type #lib::foo3::TypeParam/0 |
| [5] = DirectCall 'dart:core::print', ArgDesc num-args 1, num-type-args 0, names [] |
| [6] = Reserved |
| } |
| ]static method foo3<P extends core::Object = dynamic, Q extends core::Object = dynamic>(dynamic z, dynamic y, {core::bool a = false, core::Map<self::foo3::P, self::foo3::Q> b = null}) → void { |
| core::print(self::foo3::P); |
| core::print(y); |
| core::print(b); |
| } |
| [@vm.bytecode= |
| Bytecode { |
| Entry 0 |
| CheckStack 0 |
| PushConstant CP#0 |
| PushConstant CP#1 |
| DirectCall 2, CP#2 |
| Drop1 |
| PushConstant CP#4 |
| PushConstant CP#5 |
| PushConstant CP#1 |
| DirectCall 3, CP#6 |
| Drop1 |
| PushNull |
| ReturnTOS |
| } |
| ConstantPool { |
| [0] = ObjectRef 'fixed_x' |
| [1] = ObjectRef 'concrete_a' |
| [2] = DirectCall '#lib::foo1', ArgDesc num-args 2, num-type-args 0, names [] |
| [3] = Reserved |
| [4] = ObjectRef 'fixed_y' |
| [5] = ObjectRef 'fixed_z' |
| [6] = DirectCall '#lib::foo2', ArgDesc num-args 3, num-type-args 0, names ['a'] |
| [7] = Reserved |
| } |
| ]static method main() → dynamic { |
| self::foo1("fixed_x", "concrete_a"); |
| self::foo2("fixed_y", "fixed_z", a: "concrete_a"); |
| } |