blob: 5e959bcc860b1e87fa2f2e74717be0e3130a1c91 [file] [log] [blame]
main = #lib::main;
[@vm.bytecode=
BytecodeMetadata {
Bytecode (version: stable)
Main library: #lib
Library '#lib'
name '#lib'
script '#lib'
Class '', script = '#lib'
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 <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 <dart:core::Object* P, dart:core::Object* Q>
parameters [dynamic 'z', dynamic 'y', dart:core::bool* 'a', dart:core::Map < #lib::foo3::TypeParam/0*, #lib::foo3::TypeParam/1* >* 'b'] (required: 2)
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 #lib::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 '#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
}
}
]library #lib from "#lib" as #lib {
static method foo1(dynamic x, [dynamic a = #C1, dynamic b = #C2]) → void {
dart.core::print("x = ${x}");
dart.core::print("a = ${a}");
dart.core::print("b = ${b}");
}
static method foo2(dynamic y, dynamic z, {dynamic c = #C3, dynamic a = #C4, dynamic b = #C5}) → void {
dart.core::print("y = ${y}");
dart.core::print("z = ${z}");
dart.core::print("a = ${a}");
dart.core::print("b = ${b}");
dart.core::print("c = ${c}");
}
static method foo3<P extends dart.core::Object* = dynamic, Q extends dart.core::Object* = dynamic>(dynamic z, dynamic y, {dart.core::bool* a = #C6, dart.core::Map<#lib::foo3::P*, #lib::foo3::Q*>* b = #C7}) → void {
dart.core::print(#lib::foo3::P*);
dart.core::print(y);
dart.core::print(b);
}
static method main() dynamic {
#lib::foo1("fixed_x", "concrete_a");
#lib::foo2("fixed_y", "fixed_z", a: "concrete_a");
}
}
constants {
#C1 = "default_a"
#C2 = "default_b"
#C3 = "default_c"
#C4 = 42
#C5 = <dart.core::String*>[#C2]
#C6 = false
#C7 = null
}