Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Side by Side Diff: src/log.h

Issue 2061623002: Introduce JIT code events dispatcher for the isolate. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_LOG_H_ 5 #ifndef V8_LOG_H_
6 #define V8_LOG_H_ 6 #define V8_LOG_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "src/allocation.h" 10 #include "src/allocation.h"
11 #include "src/base/compiler-specific.h" 11 #include "src/base/compiler-specific.h"
12 #include "src/base/platform/elapsed-timer.h" 12 #include "src/base/platform/elapsed-timer.h"
13 #include "src/base/platform/platform.h" 13 #include "src/base/platform/platform.h"
14 #include "src/code-events.h"
15 #include "src/isolate.h"
14 #include "src/objects.h" 16 #include "src/objects.h"
15 17
16 namespace v8 { 18 namespace v8 {
17 19
18 namespace base { 20 namespace base {
19 class Semaphore; 21 class Semaphore;
20 } 22 }
21 23
22 namespace sampler { 24 namespace sampler {
23 class Sampler; 25 class Sampler;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 class CpuProfiler; 66 class CpuProfiler;
65 class Isolate; 67 class Isolate;
66 class Log; 68 class Log;
67 class PositionsRecorder; 69 class PositionsRecorder;
68 class Profiler; 70 class Profiler;
69 class Ticker; 71 class Ticker;
70 struct TickSample; 72 struct TickSample;
71 class RuntimeCallTimer; 73 class RuntimeCallTimer;
72 74
73 #undef LOG 75 #undef LOG
74 #define LOG(isolate, Call) \ 76 #define LOG(isolate, Call) \
75 do { \ 77 do { \
76 v8::internal::Logger* logger = \ 78 v8::internal::Logger* logger = (isolate)->logger(); \
77 (isolate)->logger(); \ 79 if (logger->is_logging()) logger->Call; \
78 if (logger->is_logging()) \
79 logger->Call; \
80 } while (false) 80 } while (false)
81 81
82 #define LOG_CODE_EVENT(isolate, Call) \ 82 #define LOG_CODE_EVENT(isolate, Call) \
83 do { \ 83 do { \
84 v8::internal::Logger* logger = \ 84 v8::internal::Logger* logger = (isolate)->logger(); \
85 (isolate)->logger(); \ 85 if (logger->is_logging_code_events()) logger->Call; \
86 if (logger->is_logging_code_events()) \
87 logger->Call; \
88 } while (false) 86 } while (false)
89 87
90 #define LOG_EVENTS_AND_TAGS_LIST(V) \
91 V(CODE_CREATION_EVENT, "code-creation") \
92 V(CODE_DISABLE_OPT_EVENT, "code-disable-optimization") \
93 V(CODE_MOVE_EVENT, "code-move") \
94 V(CODE_DELETE_EVENT, "code-delete") \
95 V(CODE_MOVING_GC, "code-moving-gc") \
96 V(SHARED_FUNC_MOVE_EVENT, "sfi-move") \
97 V(SNAPSHOT_CODE_NAME_EVENT, "snapshot-code-name") \
98 V(TICK_EVENT, "tick") \
99 V(REPEAT_META_EVENT, "repeat") \
100 V(BUILTIN_TAG, "Builtin") \
101 V(CALL_DEBUG_BREAK_TAG, "CallDebugBreak") \
102 V(CALL_DEBUG_PREPARE_STEP_IN_TAG, "CallDebugPrepareStepIn") \
103 V(CALL_INITIALIZE_TAG, "CallInitialize") \
104 V(CALL_MEGAMORPHIC_TAG, "CallMegamorphic") \
105 V(CALL_MISS_TAG, "CallMiss") \
106 V(CALL_NORMAL_TAG, "CallNormal") \
107 V(LOAD_INITIALIZE_TAG, "LoadInitialize") \
108 V(LOAD_MEGAMORPHIC_TAG, "LoadMegamorphic") \
109 V(STORE_INITIALIZE_TAG, "StoreInitialize") \
110 V(STORE_GENERIC_TAG, "StoreGeneric") \
111 V(STORE_MEGAMORPHIC_TAG, "StoreMegamorphic") \
112 V(KEYED_CALL_DEBUG_BREAK_TAG, "KeyedCallDebugBreak") \
113 V(KEYED_CALL_DEBUG_PREPARE_STEP_IN_TAG, "KeyedCallDebugPrepareStepIn") \
114 V(KEYED_CALL_INITIALIZE_TAG, "KeyedCallInitialize") \
115 V(KEYED_CALL_MEGAMORPHIC_TAG, "KeyedCallMegamorphic") \
116 V(KEYED_CALL_MISS_TAG, "KeyedCallMiss") \
117 V(KEYED_CALL_NORMAL_TAG, "KeyedCallNormal") \
118 V(CALLBACK_TAG, "Callback") \
119 V(EVAL_TAG, "Eval") \
120 V(FUNCTION_TAG, "Function") \
121 V(HANDLER_TAG, "Handler") \
122 V(BYTECODE_HANDLER_TAG, "BytecodeHandler") \
123 V(KEYED_LOAD_IC_TAG, "KeyedLoadIC") \
124 V(KEYED_LOAD_POLYMORPHIC_IC_TAG, "KeyedLoadPolymorphicIC") \
125 V(KEYED_EXTERNAL_ARRAY_LOAD_IC_TAG, "KeyedExternalArrayLoadIC") \
126 V(KEYED_STORE_IC_TAG, "KeyedStoreIC") \
127 V(KEYED_STORE_POLYMORPHIC_IC_TAG, "KeyedStorePolymorphicIC") \
128 V(KEYED_EXTERNAL_ARRAY_STORE_IC_TAG, "KeyedExternalArrayStoreIC") \
129 V(LAZY_COMPILE_TAG, "LazyCompile") \
130 V(CALL_IC_TAG, "CallIC") \
131 V(LOAD_IC_TAG, "LoadIC") \
132 V(LOAD_POLYMORPHIC_IC_TAG, "LoadPolymorphicIC") \
133 V(REG_EXP_TAG, "RegExp") \
134 V(SCRIPT_TAG, "Script") \
135 V(STORE_IC_TAG, "StoreIC") \
136 V(STORE_POLYMORPHIC_IC_TAG, "StorePolymorphicIC") \
137 V(STUB_TAG, "Stub") \
138 V(NATIVE_FUNCTION_TAG, "Function") \
139 V(NATIVE_LAZY_COMPILE_TAG, "LazyCompile") \
140 V(NATIVE_SCRIPT_TAG, "Script")
141 // Note that 'NATIVE_' cases for functions and scripts are mapped onto
142 // original tags when writing to the log.
143
144
145 class JitLogger; 88 class JitLogger;
146 class PerfBasicLogger; 89 class PerfBasicLogger;
147 class LowLevelLogger; 90 class LowLevelLogger;
148 class PerfJitLogger; 91 class PerfJitLogger;
149 92
150 class Logger { 93 class Logger : public CodeEventListener {
151 public: 94 public:
152 enum StartEnd { START = 0, END = 1 }; 95 enum StartEnd { START = 0, END = 1 };
153 96
154 #define DECLARE_ENUM(enum_item, ignore) enum_item,
155 enum LogEventsAndTags {
156 LOG_EVENTS_AND_TAGS_LIST(DECLARE_ENUM)
157 NUMBER_OF_LOG_EVENTS
158 };
159 #undef DECLARE_ENUM
160
161 // Acquires resources for logging if the right flags are set. 97 // Acquires resources for logging if the right flags are set.
162 bool SetUp(Isolate* isolate); 98 bool SetUp(Isolate* isolate);
163 99
164 // Sets the current code event handler. 100 // Sets the current code event handler.
165 void SetCodeEventHandler(uint32_t options, 101 void SetCodeEventHandler(uint32_t options,
166 JitCodeEventHandler event_handler); 102 JitCodeEventHandler event_handler);
167 103
168 sampler::Sampler* sampler(); 104 sampler::Sampler* sampler();
169 105
170 // Frees resources acquired in SetUp. 106 // Frees resources acquired in SetUp.
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 140
205 // ==== Events logged by --log-api. ==== 141 // ==== Events logged by --log-api. ====
206 void ApiSecurityCheck(); 142 void ApiSecurityCheck();
207 void ApiNamedPropertyAccess(const char* tag, JSObject* holder, Object* name); 143 void ApiNamedPropertyAccess(const char* tag, JSObject* holder, Object* name);
208 void ApiIndexedPropertyAccess(const char* tag, 144 void ApiIndexedPropertyAccess(const char* tag,
209 JSObject* holder, 145 JSObject* holder,
210 uint32_t index); 146 uint32_t index);
211 void ApiObjectAccess(const char* tag, JSObject* obj); 147 void ApiObjectAccess(const char* tag, JSObject* obj);
212 void ApiEntryCall(const char* name); 148 void ApiEntryCall(const char* name);
213 149
214
215 // ==== Events logged by --log-code. ==== 150 // ==== Events logged by --log-code. ====
216 void addCodeEventListener(CodeEventListener* listener); 151 void addCodeEventListener(CodeEventListener* listener);
217 void removeCodeEventListener(CodeEventListener* listener); 152 void removeCodeEventListener(CodeEventListener* listener);
218 bool hasCodeEventListener(CodeEventListener* listener);
219
220 153
221 // Emits a code event for a callback function. 154 // Emits a code event for a callback function.
222 void CallbackEvent(Name* name, Address entry_point); 155 void CallbackEvent(Name* name, Address entry_point);
223 void GetterCallbackEvent(Name* name, Address entry_point); 156 void GetterCallbackEvent(Name* name, Address entry_point);
224 void SetterCallbackEvent(Name* name, Address entry_point); 157 void SetterCallbackEvent(Name* name, Address entry_point);
225 // Emits a code create event. 158 // Emits a code create event.
226 void CodeCreateEvent(LogEventsAndTags tag, AbstractCode* code, 159 void CodeCreateEvent(CodeEventListener::LogEventsAndTags tag,
227 const char* source); 160 AbstractCode* code, const char* source);
228 void CodeCreateEvent(LogEventsAndTags tag, AbstractCode* code, Name* name); 161 void CodeCreateEvent(CodeEventListener::LogEventsAndTags tag,
229 void CodeCreateEvent(LogEventsAndTags tag, AbstractCode* code, 162 AbstractCode* code, Name* name);
230 SharedFunctionInfo* shared, Name* name); 163 void CodeCreateEvent(CodeEventListener::LogEventsAndTags tag,
231 void CodeCreateEvent(LogEventsAndTags tag, AbstractCode* code, 164 AbstractCode* code, SharedFunctionInfo* shared,
232 SharedFunctionInfo* shared, Name* source, int line, 165 Name* name);
233 int column); 166 void CodeCreateEvent(CodeEventListener::LogEventsAndTags tag,
234 void CodeCreateEvent(LogEventsAndTags tag, AbstractCode* code, 167 AbstractCode* code, SharedFunctionInfo* shared,
235 int args_count); 168 Name* source, int line, int column);
169 void CodeCreateEvent(CodeEventListener::LogEventsAndTags tag,
170 AbstractCode* code, int args_count);
236 // Emits a code deoptimization event. 171 // Emits a code deoptimization event.
237 void CodeDisableOptEvent(AbstractCode* code, SharedFunctionInfo* shared); 172 void CodeDisableOptEvent(AbstractCode* code, SharedFunctionInfo* shared);
238 void CodeMovingGCEvent(); 173 void CodeMovingGCEvent();
239 // Emits a code create event for a RegExp. 174 // Emits a code create event for a RegExp.
240 void RegExpCodeCreateEvent(AbstractCode* code, String* source); 175 void RegExpCodeCreateEvent(AbstractCode* code, String* source);
241 // Emits a code move event. 176 // Emits a code move event.
242 void CodeMoveEvent(AbstractCode* from, Address to); 177 void CodeMoveEvent(AbstractCode* from, Address to);
243 // Emits a code line info add event with Postion type. 178 // Emits a code line info add event with Postion type.
244 void CodeLinePosInfoAddPositionEvent(void* jit_handler_data, 179 void CodeLinePosInfoAddPositionEvent(void* jit_handler_data,
245 int pc_offset, 180 int pc_offset,
246 int position); 181 int position);
247 // Emits a code line info add event with StatementPostion type. 182 // Emits a code line info add event with StatementPostion type.
248 void CodeLinePosInfoAddStatementPositionEvent(void* jit_handler_data, 183 void CodeLinePosInfoAddStatementPositionEvent(void* jit_handler_data,
249 int pc_offset, 184 int pc_offset,
250 int position); 185 int position);
251 // Emits a code line info start to record event 186 // Emits a code line info start to record event
252 void CodeStartLinePosInfoRecordEvent(PositionsRecorder* pos_recorder); 187 void CodeStartLinePosInfoRecordEvent(PositionsRecorder* pos_recorder);
253 // Emits a code line info finish record event. 188 // Emits a code line info finish record event.
254 // It's the callee's responsibility to dispose the parameter jit_handler_data. 189 // It's the callee's responsibility to dispose the parameter jit_handler_data.
255 void CodeEndLinePosInfoRecordEvent(AbstractCode* code, 190 void CodeEndLinePosInfoRecordEvent(AbstractCode* code,
256 void* jit_handler_data); 191 void* jit_handler_data);
257 192
258 void SharedFunctionInfoMoveEvent(Address from, Address to); 193 void SharedFunctionInfoMoveEvent(Address from, Address to);
259 194
260 void CodeNameEvent(Address addr, int pos, const char* code_name); 195 void CodeNameEvent(Address addr, int pos, const char* code_name);
261 196
197 void CodeDeoptEvent(Code* code, Address pc, int fp_to_sp_delta);
198
262 // ==== Events logged by --log-gc. ==== 199 // ==== Events logged by --log-gc. ====
263 // Heap sampling events: start, end, and individual types. 200 // Heap sampling events: start, end, and individual types.
264 void HeapSampleBeginEvent(const char* space, const char* kind); 201 void HeapSampleBeginEvent(const char* space, const char* kind);
265 void HeapSampleEndEvent(const char* space, const char* kind); 202 void HeapSampleEndEvent(const char* space, const char* kind);
266 void HeapSampleItemEvent(const char* type, int number, int bytes); 203 void HeapSampleItemEvent(const char* type, int number, int bytes);
267 void HeapSampleJSConstructorEvent(const char* constructor, 204 void HeapSampleJSConstructorEvent(const char* constructor,
268 int number, int bytes); 205 int number, int bytes);
269 void HeapSampleJSRetainersEvent(const char* constructor, 206 void HeapSampleJSRetainersEvent(const char* constructor,
270 const char* event); 207 const char* event);
271 void HeapSampleJSProducerEvent(const char* constructor, 208 void HeapSampleJSProducerEvent(const char* constructor,
272 Address* stack); 209 Address* stack);
273 void HeapSampleStats(const char* space, const char* kind, 210 void HeapSampleStats(const char* space, const char* kind,
274 intptr_t capacity, intptr_t used); 211 intptr_t capacity, intptr_t used);
275 212
276 void SharedLibraryEvent(const std::string& library_path, uintptr_t start, 213 void SharedLibraryEvent(const std::string& library_path, uintptr_t start,
277 uintptr_t end, intptr_t aslr_slide); 214 uintptr_t end, intptr_t aslr_slide);
278 215
279 void CodeDeoptEvent(Code* code, Address pc, int fp_to_sp_delta);
280 void CurrentTimeEvent(); 216 void CurrentTimeEvent();
281 217
282 void TimerEvent(StartEnd se, const char* name); 218 void TimerEvent(StartEnd se, const char* name);
283 219
284 static void EnterExternal(Isolate* isolate); 220 static void EnterExternal(Isolate* isolate);
285 static void LeaveExternal(Isolate* isolate); 221 static void LeaveExternal(Isolate* isolate);
286 222
287 static void DefaultEventLoggerSentinel(const char* name, int event) {} 223 static void DefaultEventLoggerSentinel(const char* name, int event) {}
288 224
289 INLINE(static void CallEventLogger(Isolate* isolate, const char* name, 225 INLINE(static void CallEventLogger(Isolate* isolate, const char* name,
(...skipping 21 matching lines...) Expand all
311 // Logs all compiled functions found in the heap. 247 // Logs all compiled functions found in the heap.
312 void LogCompiledFunctions(); 248 void LogCompiledFunctions();
313 // Logs all accessor callbacks found in the heap. 249 // Logs all accessor callbacks found in the heap.
314 void LogAccessorCallbacks(); 250 void LogAccessorCallbacks();
315 // Used for logging stubs found in the snapshot. 251 // Used for logging stubs found in the snapshot.
316 void LogCodeObjects(); 252 void LogCodeObjects();
317 // Used for logging bytecode handlers found in the snapshot. 253 // Used for logging bytecode handlers found in the snapshot.
318 void LogBytecodeHandlers(); 254 void LogBytecodeHandlers();
319 255
320 // Converts tag to a corresponding NATIVE_... if the script is native. 256 // Converts tag to a corresponding NATIVE_... if the script is native.
321 INLINE(static LogEventsAndTags ToNativeByScript(LogEventsAndTags, Script*)); 257 INLINE(static CodeEventListener::LogEventsAndTags ToNativeByScript(
258 CodeEventListener::LogEventsAndTags, Script*));
322 259
323 // Profiler's sampling interval (in milliseconds). 260 // Profiler's sampling interval (in milliseconds).
324 #if defined(ANDROID) 261 #if defined(ANDROID)
325 // Phones and tablets have processors that are much slower than desktop 262 // Phones and tablets have processors that are much slower than desktop
326 // and laptop computers for which current heuristics are tuned. 263 // and laptop computers for which current heuristics are tuned.
327 static const int kSamplingIntervalMs = 5; 264 static const int kSamplingIntervalMs = 5;
328 #else 265 #else
329 static const int kSamplingIntervalMs = 1; 266 static const int kSamplingIntervalMs = 1;
330 #endif 267 #endif
331 268
332 // Callback from Log, stops profiling in case of insufficient resources. 269 // Callback from Log, stops profiling in case of insufficient resources.
333 void LogFailure(); 270 void LogFailure();
334 271
335 private: 272 private:
336 explicit Logger(Isolate* isolate); 273 explicit Logger(Isolate* isolate);
337 ~Logger(); 274 ~Logger();
338 275
339 // Emits the profiler's first message. 276 // Emits the profiler's first message.
340 void ProfilerBeginEvent(); 277 void ProfilerBeginEvent();
341 278
342 // Emits callback event messages. 279 // Emits callback event messages.
343 void CallbackEventInternal(const char* prefix, 280 void CallbackEventInternal(const char* prefix,
344 Name* name, 281 Name* name,
345 Address entry_point); 282 Address entry_point);
346 283
347 // Internal configurable move event. 284 // Internal configurable move event.
348 void MoveEventInternal(LogEventsAndTags event, Address from, Address to); 285 void MoveEventInternal(CodeEventListener::LogEventsAndTags event,
286 Address from, Address to);
349 287
350 // Used for logging stubs found in the snapshot. 288 // Used for logging stubs found in the snapshot.
351 void LogCodeObject(Object* code_object); 289 void LogCodeObject(Object* code_object);
352 290
353 // Helper method. It resets name_buffer_ and add tag name into it. 291 // Helper method. It resets name_buffer_ and add tag name into it.
354 void InitNameBuffer(LogEventsAndTags tag); 292 void InitNameBuffer(CodeEventListener::LogEventsAndTags tag);
355 293
356 // Emits a profiler tick event. Used by the profiler thread. 294 // Emits a profiler tick event. Used by the profiler thread.
357 void TickEvent(TickSample* sample, bool overflow); 295 void TickEvent(TickSample* sample, bool overflow);
358 void RuntimeCallTimerEvent(); 296 void RuntimeCallTimerEvent();
359 297
360 PRINTF_FORMAT(2, 3) void ApiEvent(const char* format, ...); 298 PRINTF_FORMAT(2, 3) void ApiEvent(const char* format, ...);
361 299
362 // Logs a StringEvent regardless of whether FLAG_log is true. 300 // Logs a StringEvent regardless of whether FLAG_log is true.
363 void UncheckedStringEvent(const char* name, const char* value); 301 void UncheckedStringEvent(const char* name, const char* value);
364 302
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 394
457 protected: 395 protected:
458 // Currently jit_handler_data_ is used to store JITHandler-specific data 396 // Currently jit_handler_data_ is used to store JITHandler-specific data
459 // over the lifetime of a PositionsRecorder 397 // over the lifetime of a PositionsRecorder
460 void* jit_handler_data_; 398 void* jit_handler_data_;
461 399
462 private: 400 private:
463 DISALLOW_COPY_AND_ASSIGN(PositionsRecorder); 401 DISALLOW_COPY_AND_ASSIGN(PositionsRecorder);
464 }; 402 };
465 403
466 class CodeEventListener {
467 public:
468 virtual ~CodeEventListener() {}
469
470 virtual void CodeCreateEvent(Logger::LogEventsAndTags tag, AbstractCode* code,
471 const char* comment) = 0;
472 virtual void CodeCreateEvent(Logger::LogEventsAndTags tag, AbstractCode* code,
473 Name* name) = 0;
474 virtual void CodeCreateEvent(Logger::LogEventsAndTags tag, AbstractCode* code,
475 SharedFunctionInfo* shared, Name* name) = 0;
476 virtual void CodeCreateEvent(Logger::LogEventsAndTags tag, AbstractCode* code,
477 SharedFunctionInfo* shared, Name* source,
478 int line, int column) = 0;
479 virtual void CodeCreateEvent(Logger::LogEventsAndTags tag, AbstractCode* code,
480 int args_count) = 0;
481 virtual void CallbackEvent(Name* name, Address entry_point) = 0;
482 virtual void GetterCallbackEvent(Name* name, Address entry_point) = 0;
483 virtual void SetterCallbackEvent(Name* name, Address entry_point) = 0;
484 virtual void RegExpCodeCreateEvent(AbstractCode* code, String* source) = 0;
485 virtual void CodeMoveEvent(AbstractCode* from, Address to) = 0;
486 virtual void SharedFunctionInfoMoveEvent(Address from, Address to) = 0;
487 virtual void CodeMovingGCEvent() = 0;
488 virtual void CodeDisableOptEvent(AbstractCode* code,
489 SharedFunctionInfo* shared) = 0;
490 };
491
492
493 class CodeEventLogger : public CodeEventListener { 404 class CodeEventLogger : public CodeEventListener {
494 public: 405 public:
495 CodeEventLogger(); 406 CodeEventLogger();
496 ~CodeEventLogger() override; 407 ~CodeEventLogger() override;
497 408
498 void CodeCreateEvent(Logger::LogEventsAndTags tag, AbstractCode* code, 409 void CodeCreateEvent(LogEventsAndTags tag, AbstractCode* code,
499 const char* comment) override; 410 const char* comment) override;
500 void CodeCreateEvent(Logger::LogEventsAndTags tag, AbstractCode* code, 411 void CodeCreateEvent(LogEventsAndTags tag, AbstractCode* code,
501 Name* name) override; 412 Name* name) override;
502 void CodeCreateEvent(Logger::LogEventsAndTags tag, AbstractCode* code, 413 void CodeCreateEvent(LogEventsAndTags tag, AbstractCode* code,
503 int args_count) override; 414 int args_count) override;
504 void CodeCreateEvent(Logger::LogEventsAndTags tag, AbstractCode* code, 415 void CodeCreateEvent(LogEventsAndTags tag, AbstractCode* code,
505 SharedFunctionInfo* shared, Name* name) override; 416 SharedFunctionInfo* shared, Name* name) override;
506 void CodeCreateEvent(Logger::LogEventsAndTags tag, AbstractCode* code, 417 void CodeCreateEvent(LogEventsAndTags tag, AbstractCode* code,
507 SharedFunctionInfo* shared, Name* source, int line, 418 SharedFunctionInfo* shared, Name* source, int line,
508 int column) override; 419 int column) override;
509 void RegExpCodeCreateEvent(AbstractCode* code, String* source) override; 420 void RegExpCodeCreateEvent(AbstractCode* code, String* source) override;
510 421
511 void CallbackEvent(Name* name, Address entry_point) override {} 422 void CallbackEvent(Name* name, Address entry_point) override {}
512 void GetterCallbackEvent(Name* name, Address entry_point) override {} 423 void GetterCallbackEvent(Name* name, Address entry_point) override {}
513 void SetterCallbackEvent(Name* name, Address entry_point) override {} 424 void SetterCallbackEvent(Name* name, Address entry_point) override {}
514 void SharedFunctionInfoMoveEvent(Address from, Address to) override {} 425 void SharedFunctionInfoMoveEvent(Address from, Address to) override {}
515 void CodeMovingGCEvent() override {} 426 void CodeMovingGCEvent() override {}
427 void CodeDeoptEvent(Code* code, Address pc, int fp_to_sp_delta) override {}
516 428
517 private: 429 private:
518 class NameBuffer; 430 class NameBuffer;
519 431
520 virtual void LogRecordedBuffer(AbstractCode* code, SharedFunctionInfo* shared, 432 virtual void LogRecordedBuffer(AbstractCode* code, SharedFunctionInfo* shared,
521 const char* name, int length) = 0; 433 const char* name, int length) = 0;
522 434
523 NameBuffer* name_buffer_; 435 NameBuffer* name_buffer_;
524 }; 436 };
525 437
526 438
527 } // namespace internal 439 } // namespace internal
528 } // namespace v8 440 } // namespace v8
529 441
530 442
531 #endif // V8_LOG_H_ 443 #endif // V8_LOG_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698