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]