1b1994897Sopenharmony_ci# Copyright (c) 2021-2022 Huawei Device Co., Ltd.
2b1994897Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
3b1994897Sopenharmony_ci# you may not use this file except in compliance with the License.
4b1994897Sopenharmony_ci# You may obtain a copy of the License at
5b1994897Sopenharmony_ci#
6b1994897Sopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0
7b1994897Sopenharmony_ci#
8b1994897Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
9b1994897Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
10b1994897Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11b1994897Sopenharmony_ci# See the License for the specific language governing permissions and
12b1994897Sopenharmony_ci# limitations under the License.
13b1994897Sopenharmony_ci#
14b1994897Sopenharmony_ci# To add new event, create new record in the 'events' section with following fields:
15b1994897Sopenharmony_ci# - name - name of the event
16b1994897Sopenharmony_ci# - fields - data fields that will be stored within event. The type of each field should be a real C++ type, except enum.
17b1994897Sopenharmony_ci# Then you can dump your event by writing EVENT_<name.upcase()>(values). For example, for 'osr_entry' event it will be:
18b1994897Sopenharmony_ci# EVENT_OSR_ENTRY(method->GetFullName(), bc, events::OsrEntryKind::TOP_FRAME, events::OsrEntryResult::SUCCESS)
19b1994897Sopenharmony_ci#
20b1994897Sopenharmony_ci# There are may be several backends(streams) for events, such as csv file, memory, etc.
21b1994897Sopenharmony_ci# Backend can be chosen in runtime by invoking Events::Create(<Events::StreamKind>).
22b1994897Sopenharmony_ci# The following streams are currently available:
23b1994897Sopenharmony_ci# - EventsMemory: store events in the heap memory, useful for tests.
24b1994897Sopenharmony_ci# - EventsCsv: dump events to the csv file, useful for statistics gathering.
25b1994897Sopenharmony_ci#
26b1994897Sopenharmony_cievents:
27b1994897Sopenharmony_ci- name: osr_entry
28b1994897Sopenharmony_ci  fields:
29b1994897Sopenharmony_ci  - name: method_name
30b1994897Sopenharmony_ci    type: std::string
31b1994897Sopenharmony_ci  - name: bc_offset
32b1994897Sopenharmony_ci    type: size_t
33b1994897Sopenharmony_ci  - name: kind
34b1994897Sopenharmony_ci    type: enum
35b1994897Sopenharmony_ci    enum: [after_cframe, after_iframe, top_frame]
36b1994897Sopenharmony_ci  - name: result
37b1994897Sopenharmony_ci    type: enum
38b1994897Sopenharmony_ci    enum: [success, error]
39b1994897Sopenharmony_ci
40b1994897Sopenharmony_ci- name: inline
41b1994897Sopenharmony_ci  fields:
42b1994897Sopenharmony_ci  - name: caller
43b1994897Sopenharmony_ci    type: std::string
44b1994897Sopenharmony_ci  - name: callee
45b1994897Sopenharmony_ci    type: std::string
46b1994897Sopenharmony_ci  - name: call_inst_id
47b1994897Sopenharmony_ci    type: int
48b1994897Sopenharmony_ci  - name: kind
49b1994897Sopenharmony_ci    type: enum
50b1994897Sopenharmony_ci    enum: [static, virtual, virtual_cha, virtual_monomorphic, virtual_polymorphic]
51b1994897Sopenharmony_ci  - name: result
52b1994897Sopenharmony_ci    type: enum
53b1994897Sopenharmony_ci    enum: [success, fail, fail_resolve, fail_megamorphic, unsuitable, noinline, lost_single_impl, limit, devirtualized, inf_loop, skip_external]
54b1994897Sopenharmony_ci
55b1994897Sopenharmony_ci- name: deoptimization
56b1994897Sopenharmony_ci  fields:
57b1994897Sopenharmony_ci  - name: method_name
58b1994897Sopenharmony_ci    type: std::string
59b1994897Sopenharmony_ci  - name: pc
60b1994897Sopenharmony_ci    type: uintptr_t
61b1994897Sopenharmony_ci  - name: after
62b1994897Sopenharmony_ci    type: enum
63b1994897Sopenharmony_ci    enum: [cframe, iframe, top]
64b1994897Sopenharmony_ci
65b1994897Sopenharmony_ci- name: exception
66b1994897Sopenharmony_ci  fields:
67b1994897Sopenharmony_ci  - name: method_name
68b1994897Sopenharmony_ci    type: std::string
69b1994897Sopenharmony_ci  - name: pc
70b1994897Sopenharmony_ci    type: size_t
71b1994897Sopenharmony_ci  - name: npc
72b1994897Sopenharmony_ci    type: size_t
73b1994897Sopenharmony_ci  - name: type
74b1994897Sopenharmony_ci    type: enum
75b1994897Sopenharmony_ci    enum: [null_check, bound_check, negative_size, native, throw, abstract_method, arithmetic, instantiation_error,
76b1994897Sopenharmony_ci           cast_check, stack_overflow, icce_method_conflict]
77b1994897Sopenharmony_ci
78b1994897Sopenharmony_ci- name: compilation
79b1994897Sopenharmony_ci  fields:
80b1994897Sopenharmony_ci  - name: method_name
81b1994897Sopenharmony_ci    type: std::string
82b1994897Sopenharmony_ci  - name: is_osr
83b1994897Sopenharmony_ci    type: bool
84b1994897Sopenharmony_ci  - name: bc_size
85b1994897Sopenharmony_ci    type: size_t
86b1994897Sopenharmony_ci    dscr: "Bytecode size of the method"
87b1994897Sopenharmony_ci  - name: address
88b1994897Sopenharmony_ci    type: uintptr_t
89b1994897Sopenharmony_ci    dscr: "Address of generated code"
90b1994897Sopenharmony_ci  - name: code_size
91b1994897Sopenharmony_ci    type: size_t
92b1994897Sopenharmony_ci    dscr: "Size of generated code"
93b1994897Sopenharmony_ci  - name: info_size
94b1994897Sopenharmony_ci    type: size_t
95b1994897Sopenharmony_ci    dscr: "Metainfo size for generated code"
96b1994897Sopenharmony_ci  - name: status
97b1994897Sopenharmony_ci    type: enum
98b1994897Sopenharmony_ci    enum: [compiled, failed, dropped, failed_single_impl]
99b1994897Sopenharmony_ci
100b1994897Sopenharmony_ci- name: paoc
101b1994897Sopenharmony_ci  fields:
102b1994897Sopenharmony_ci  - name: description
103b1994897Sopenharmony_ci    type: std::string
104b1994897Sopenharmony_ci
105b1994897Sopenharmony_ci- name: intrinsic_compilation
106b1994897Sopenharmony_ci  fields:
107b1994897Sopenharmony_ci  - name: name
108b1994897Sopenharmony_ci    type: std::string
109b1994897Sopenharmony_ci  - name: result
110b1994897Sopenharmony_ci    type: enum
111b1994897Sopenharmony_ci    enum: [inlined, inline_failed]
112b1994897Sopenharmony_ci
113b1994897Sopenharmony_ci- name: cha_invalidate
114b1994897Sopenharmony_ci  fields:
115b1994897Sopenharmony_ci  - name: method
116b1994897Sopenharmony_ci    type: std::string
117b1994897Sopenharmony_ci  - name: loaded_class
118b1994897Sopenharmony_ci    type: std::string
119b1994897Sopenharmony_ci
120b1994897Sopenharmony_ci- name: cha_deoptimize
121b1994897Sopenharmony_ci  fields:
122b1994897Sopenharmony_ci  - name: method
123b1994897Sopenharmony_ci    type: std::string
124b1994897Sopenharmony_ci  - name: in_stack_count
125b1994897Sopenharmony_ci    type: size_t
126b1994897Sopenharmony_ci
127b1994897Sopenharmony_ci- name: interp_profiling
128b1994897Sopenharmony_ci  fields:
129b1994897Sopenharmony_ci  - name: action
130b1994897Sopenharmony_ci    type: enum
131b1994897Sopenharmony_ci    enum: [start, stop]
132b1994897Sopenharmony_ci  - name: method
133b1994897Sopenharmony_ci    type: PandaString
134b1994897Sopenharmony_ci  - name: vcalls_num
135b1994897Sopenharmony_ci    type: size_t
136b1994897Sopenharmony_ci
137b1994897Sopenharmony_ci- name: method_enter
138b1994897Sopenharmony_ci  enable: false
139b1994897Sopenharmony_ci  fields:
140b1994897Sopenharmony_ci  - name: method
141b1994897Sopenharmony_ci    type: PandaString
142b1994897Sopenharmony_ci  - name: kind
143b1994897Sopenharmony_ci    type: enum
144b1994897Sopenharmony_ci    enum: [interp, compiled, inlined]
145b1994897Sopenharmony_ci  - name: depth
146b1994897Sopenharmony_ci    type: int
147b1994897Sopenharmony_ci
148b1994897Sopenharmony_ci- name: method_exit
149b1994897Sopenharmony_ci  enable: false
150b1994897Sopenharmony_ci  fields:
151b1994897Sopenharmony_ci  - name: method
152b1994897Sopenharmony_ci    type: PandaString
153b1994897Sopenharmony_ci  - name: kind
154b1994897Sopenharmony_ci    type: enum
155b1994897Sopenharmony_ci    enum: [interp, compiled, inlined]
156b1994897Sopenharmony_ci  - name: depth
157b1994897Sopenharmony_ci    type: int
158b1994897Sopenharmony_ci
159b1994897Sopenharmony_ci- name: tlab_alloc
160b1994897Sopenharmony_ci  fields:
161b1994897Sopenharmony_ci  - name: thread_id
162b1994897Sopenharmony_ci    type: size_t
163b1994897Sopenharmony_ci  - name: tlab
164b1994897Sopenharmony_ci    type: size_t
165b1994897Sopenharmony_ci  - name: instruction
166b1994897Sopenharmony_ci    type: PandaString
167b1994897Sopenharmony_ci  - name: allocate_memory
168b1994897Sopenharmony_ci    type: size_t
169b1994897Sopenharmony_ci  - name: size
170b1994897Sopenharmony_ci    type: int
171b1994897Sopenharmony_ci
172b1994897Sopenharmony_ci- name: slowpath_alloc
173b1994897Sopenharmony_ci  fields:
174b1994897Sopenharmony_ci  - name: thread_id
175b1994897Sopenharmony_ci    type: size_t
176b1994897Sopenharmony_ci
177b1994897Sopenharmony_ci- name: aot_resolve_string
178b1994897Sopenharmony_ci  fields:
179b1994897Sopenharmony_ci  - name: value
180b1994897Sopenharmony_ci    type: PandaString
181b1994897Sopenharmony_ci
182b1994897Sopenharmony_ci- name: aot_loaded_for_class
183b1994897Sopenharmony_ci  fields:
184b1994897Sopenharmony_ci  - name: filename
185b1994897Sopenharmony_ci    type: PandaString
186b1994897Sopenharmony_ci  - name: classname
187b1994897Sopenharmony_ci    type: PandaString
188b1994897Sopenharmony_ci
189b1994897Sopenharmony_ci- name: aot_entrypoint_found
190b1994897Sopenharmony_ci  fields:
191b1994897Sopenharmony_ci  - name: methodname
192b1994897Sopenharmony_ci    type: PandaString
193b1994897Sopenharmony_ci
194b1994897Sopenharmony_ci- name: jit_use_resolved_string
195b1994897Sopenharmony_ci  fields:
196b1994897Sopenharmony_ci  - name: method_name
197b1994897Sopenharmony_ci    type: std::string
198b1994897Sopenharmony_ci  - name: string_id
199b1994897Sopenharmony_ci    type: int
200b1994897Sopenharmony_ci
201b1994897Sopenharmony_ci- name: implicit_nullcheck
202b1994897Sopenharmony_ci  fields:
203b1994897Sopenharmony_ci  - name: pc
204b1994897Sopenharmony_ci    type: uintptr_t
205b1994897Sopenharmony_ci
206b1994897Sopenharmony_ci- name: aot_manager
207b1994897Sopenharmony_ci  fields:
208b1994897Sopenharmony_ci  - name: aot_file
209b1994897Sopenharmony_ci    type: std::string
210b1994897Sopenharmony_ci  - name: action
211b1994897Sopenharmony_ci    type: enum
212b1994897Sopenharmony_ci    enum: [added, open_failed, verified, cha_verify_failed, file_verify_failed]
213b1994897Sopenharmony_ci
214b1994897Sopenharmony_ci- name: codegen_simplification
215b1994897Sopenharmony_ci  fields:
216b1994897Sopenharmony_ci  - name: inst
217b1994897Sopenharmony_ci    type: enum
218b1994897Sopenharmony_ci    enum: [checkcast, isinstance]
219b1994897Sopenharmony_ci  - name: reason
220b1994897Sopenharmony_ci    type: enum
221b1994897Sopenharmony_ci    enum: [final_class, skip_nullcheck]