3abf78212c
Add dart2bytecode tool which takes Dart sources and produces Dart bytecode. The tool uses common front-end (CFE) to parse Dart source code and contains bytecode generator which translates kernel AST to bytecode. Change-Id: I90bd6e72c619cf0edc556da0640760b30e81091d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/378560 Commit-Queue: Alexander Markov <alexmarkov@google.com> Reviewed-by: Slava Egorov <vegorov@google.com>
224 lines
7.1 KiB
Plaintext
224 lines
7.1 KiB
Plaintext
Bytecode
|
|
Dynamic Module Entry Point: DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::main
|
|
Library 'DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart'
|
|
name '#lib'
|
|
script 'DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart'
|
|
|
|
Class '', script = 'DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart'
|
|
|
|
|
|
Function 'main', static, reflectable, debuggable
|
|
parameters [] (required: 0)
|
|
return-type dynamic
|
|
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack 0
|
|
PushNull
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
}
|
|
|
|
Class 'A', script = 'DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart'
|
|
extends dart:core::Object
|
|
|
|
Field 'foo1', type = dart:core::int?, getter = 'get:foo1', setter = 'set:foo1', reflectable
|
|
value = null
|
|
|
|
Field 'foo2', type = dart:core::int?, getter = 'get:foo2', setter = 'set:foo2', reflectable, has-initializer
|
|
value = null
|
|
|
|
Field 'foo3', type = dart:core::int, getter = 'get:foo3', setter = 'set:foo3', reflectable, has-initializer
|
|
value = const 42
|
|
|
|
Field 'foo4', type = dart:core::int?, getter = 'get:foo4', setter = 'set:foo4', reflectable
|
|
value = null
|
|
|
|
Field 'foo5', type = dart:core::int, getter = 'get:foo5', setter = 'set:foo5', reflectable, has-initializer
|
|
value = const 43
|
|
|
|
Function '', constructor, reflectable, debuggable
|
|
parameters [dart:core::int? 'foo4'] (required: 1)
|
|
return-type DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::A
|
|
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack 0
|
|
Push FP[-6]
|
|
PushInt 42
|
|
StoreFieldTOS CP#0
|
|
PushInt 43
|
|
Drop1
|
|
Push FP[-6]
|
|
Push FP[-5]
|
|
StoreFieldTOS CP#2
|
|
Push FP[-6]
|
|
PushInt 44
|
|
StoreFieldTOS CP#4
|
|
Push FP[-6]
|
|
DirectCall CP#6, 1
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
}
|
|
Nullable fields: [DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::A::foo1 (field), DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::A::foo2 (field)]
|
|
ConstantPool {
|
|
[0] = InstanceField DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::A::foo3 (field)
|
|
[1] = Reserved
|
|
[2] = InstanceField DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::A::foo4 (field)
|
|
[3] = Reserved
|
|
[4] = InstanceField DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::A::foo5 (field)
|
|
[5] = Reserved
|
|
[6] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[7] = Reserved
|
|
}
|
|
|
|
|
|
Function 'constr2', constructor, reflectable, debuggable
|
|
parameters [dart:core::int 'x', dart:core::int 'y'] (required: 2)
|
|
return-type DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::A
|
|
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack 0
|
|
Push FP[-7]
|
|
PushInt 42
|
|
StoreFieldTOS CP#0
|
|
PushInt 43
|
|
Drop1
|
|
Push FP[-7]
|
|
Push FP[-6]
|
|
StoreFieldTOS CP#2
|
|
Push FP[-7]
|
|
Push FP[-5]
|
|
PushInt 1
|
|
AddInt
|
|
StoreFieldTOS CP#4
|
|
Push FP[-7]
|
|
DirectCall CP#6, 1
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
}
|
|
Nullable fields: [DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::A::foo2 (field), DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::A::foo4 (field)]
|
|
ConstantPool {
|
|
[0] = InstanceField DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::A::foo3 (field)
|
|
[1] = Reserved
|
|
[2] = InstanceField DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::A::foo1 (field)
|
|
[3] = Reserved
|
|
[4] = InstanceField DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::A::foo5 (field)
|
|
[5] = Reserved
|
|
[6] = DirectCall 'dart:core::Object:: (constructor)', ArgDesc num-args 1, num-type-args 0, names []
|
|
[7] = Reserved
|
|
}
|
|
|
|
|
|
Function 'redirecting1', constructor, reflectable, debuggable
|
|
parameters [] (required: 0)
|
|
return-type DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::A
|
|
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack 0
|
|
Push FP[-5]
|
|
PushInt 45
|
|
DirectCall CP#0, 2
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::A:: (constructor)', ArgDesc num-args 2, num-type-args 0, names []
|
|
[1] = Reserved
|
|
}
|
|
|
|
|
|
Function 'redirecting2', constructor, reflectable, debuggable
|
|
parameters [dart:core::int 'a', dart:core::int 'b', dart:core::int 'c'] (required: 3)
|
|
return-type DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::A
|
|
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack 0
|
|
Push FP[-8]
|
|
Push FP[-7]
|
|
Push FP[-6]
|
|
Push FP[-5]
|
|
MulInt
|
|
DirectCall CP#0, 3
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::A::constr2 (constructor)', ArgDesc num-args 3, num-type-args 0, names []
|
|
[1] = Reserved
|
|
}
|
|
|
|
Class 'B', script = 'DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart'
|
|
extends DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::A
|
|
|
|
Field 'foo6', type = dart:core::int, getter = 'get:foo6', setter = 'set:foo6', reflectable, has-initializer
|
|
value = const 46
|
|
|
|
Field 'foo7', type = dart:core::int, reflectable, static, is-late, has-initializer
|
|
value = const 47
|
|
|
|
Field 'foo8', type = dart:core::int, reflectable, static, const, final, is-late, has-initializer
|
|
value = const 48
|
|
|
|
Function '', constructor, reflectable, debuggable
|
|
parameters [] (required: 0)
|
|
return-type DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::B
|
|
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack 0
|
|
Push FP[-5]
|
|
PushInt 46
|
|
StoreFieldTOS CP#0
|
|
Push FP[-5]
|
|
PushInt 49
|
|
DirectCall CP#2, 2
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = InstanceField DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::B::foo6 (field)
|
|
[1] = Reserved
|
|
[2] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::A:: (constructor)', ArgDesc num-args 2, num-type-args 0, names []
|
|
[3] = Reserved
|
|
}
|
|
|
|
|
|
Function 'c2', constructor, reflectable, debuggable
|
|
parameters [dart:core::int 'i', dart:core::int 'j'] (required: 2)
|
|
return-type DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::B
|
|
|
|
Bytecode {
|
|
Entry 0
|
|
CheckStack 0
|
|
PushInt 46
|
|
Drop1
|
|
Push FP[-7]
|
|
PushInt 50
|
|
StoreFieldTOS CP#0
|
|
Push FP[-7]
|
|
Push FP[-6]
|
|
Push FP[-5]
|
|
PushInt 51
|
|
DirectCall CP#2, 4
|
|
Drop1
|
|
PushNull
|
|
ReturnTOS
|
|
}
|
|
ConstantPool {
|
|
[0] = InstanceField DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::B::foo6 (field)
|
|
[1] = Reserved
|
|
[2] = DirectCall 'DART_SDK/pkg/dart2bytecode/testcases/field_initializers.dart::A::redirecting2 (constructor)', ArgDesc num-args 4, num-type-args 0, names []
|
|
[3] = Reserved
|
|
}
|
|
|