@@ -24,32 +24,38 @@ class WasmCode;
2424using WasmName = Vector<const char >;
2525} // namespace wasm
2626
27- #define LOG_EVENTS_AND_TAGS_LIST (V ) \
28- V (CODE_CREATION_EVENT, " code-creation" ) \
29- V (CODE_DISABLE_OPT_EVENT, " code-disable-optimization" ) \
30- V (CODE_MOVE_EVENT, " code-move" ) \
31- V (CODE_DELETE_EVENT, " code-delete" ) \
32- V (CODE_MOVING_GC, " code-moving-gc" ) \
33- V (SHARED_FUNC_MOVE_EVENT, " sfi-move" ) \
34- V (SNAPSHOT_CODE_NAME_EVENT, " snapshot-code-name" ) \
35- V (TICK_EVENT, " tick" ) \
36- V (BUILTIN_TAG, " Builtin" ) \
37- V (CALLBACK_TAG, " Callback" ) \
38- V (EVAL_TAG, " Eval" ) \
39- V (FUNCTION_TAG, " Function" ) \
40- V (INTERPRETED_FUNCTION_TAG, " InterpretedFunction" ) \
41- V (HANDLER_TAG, " Handler" ) \
42- V (BYTECODE_HANDLER_TAG, " BytecodeHandler" ) \
43- V (LAZY_COMPILE_TAG, " LazyCompile" ) \
44- V (REG_EXP_TAG, " RegExp" ) \
45- V (SCRIPT_TAG, " Script" ) \
46- V (STUB_TAG, " Stub" ) \
47- V (NATIVE_FUNCTION_TAG, " Function" ) \
48- V (NATIVE_LAZY_COMPILE_TAG, " LazyCompile" ) \
49- V (NATIVE_SCRIPT_TAG, " Script" )
27+ #define LOG_EVENTS_LIST (V ) \
28+ V (CODE_CREATION_EVENT, code-creation) \
29+ V (CODE_DISABLE_OPT_EVENT, code-disable-optimization) \
30+ V (CODE_MOVE_EVENT, code-move) \
31+ V (CODE_DELETE_EVENT, code-delete ) \
32+ V (CODE_MOVING_GC, code-moving-gc) \
33+ V (SHARED_FUNC_MOVE_EVENT, sfi-move) \
34+ V (SNAPSHOT_CODE_NAME_EVENT, snapshot-code-name) \
35+ V (TICK_EVENT, tick)
36+
37+ #define TAGS_LIST (V ) \
38+ V (BUILTIN_TAG, Builtin) \
39+ V (CALLBACK_TAG, Callback) \
40+ V (EVAL_TAG, Eval) \
41+ V (FUNCTION_TAG, Function) \
42+ V (INTERPRETED_FUNCTION_TAG, InterpretedFunction) \
43+ V (HANDLER_TAG, Handler) \
44+ V (BYTECODE_HANDLER_TAG, BytecodeHandler) \
45+ V (LAZY_COMPILE_TAG, LazyCompile) \
46+ V (REG_EXP_TAG, RegExp) \
47+ V (SCRIPT_TAG, Script) \
48+ V (STUB_TAG, Stub) \
49+ V (NATIVE_FUNCTION_TAG, Function) \
50+ V (NATIVE_LAZY_COMPILE_TAG, LazyCompile) \
51+ V (NATIVE_SCRIPT_TAG, Script)
5052// Note that 'NATIVE_' cases for functions and scripts are mapped onto
5153// original tags when writing to the log.
5254
55+ #define LOG_EVENTS_AND_TAGS_LIST (V ) \
56+ LOG_EVENTS_LIST (V) \
57+ TAGS_LIST (V)
58+
5359#define PROFILE (the_isolate, Call ) (the_isolate)->code_event_dispatcher ()->Call;
5460
5561class CodeEventListener {
@@ -85,6 +91,8 @@ class CodeEventListener {
8591 enum DeoptKind { kSoft , kLazy , kEager };
8692 virtual void CodeDeoptEvent (Code* code, DeoptKind kind, Address pc,
8793 int fp_to_sp_delta) = 0;
94+
95+ virtual bool is_listening_to_code_events () { return false ; }
8896};
8997
9098class CodeEventDispatcher {
@@ -101,6 +109,14 @@ class CodeEventDispatcher {
101109 base::LockGuard<base::Mutex> guard (&mutex_);
102110 listeners_.erase (listener);
103111 }
112+ bool IsListeningToCodeEvents () {
113+ for (auto it : listeners_) {
114+ if (it->is_listening_to_code_events ()) {
115+ return true ;
116+ }
117+ }
118+ return false ;
119+ }
104120
105121#define CODE_EVENT_DISPATCH (code ) \
106122 base::LockGuard<base::Mutex> guard (&mutex_); \
0 commit comments