v8  3.11.10(node0.8.26)
V8 is Google's open source JavaScript engine
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
log.h
Go to the documentation of this file.
1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are
4 // met:
5 //
6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided
11 // with the distribution.
12 // * Neither the name of Google Inc. nor the names of its
13 // contributors may be used to endorse or promote products derived
14 // from this software without specific prior written permission.
15 //
16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 
28 #ifndef V8_LOG_H_
29 #define V8_LOG_H_
30 
31 #include "allocation.h"
32 #include "objects.h"
33 #include "platform.h"
34 #include "log-utils.h"
35 
36 namespace v8 {
37 namespace internal {
38 
39 // Logger is used for collecting logging information from V8 during
40 // execution. The result is dumped to a file.
41 //
42 // Available command line flags:
43 //
44 // --log
45 // Minimal logging (no API, code, or GC sample events), default is off.
46 //
47 // --log-all
48 // Log all events to the file, default is off. This is the same as combining
49 // --log-api, --log-code, --log-gc, and --log-regexp.
50 //
51 // --log-api
52 // Log API events to the logfile, default is off. --log-api implies --log.
53 //
54 // --log-code
55 // Log code (create, move, and delete) events to the logfile, default is off.
56 // --log-code implies --log.
57 //
58 // --log-gc
59 // Log GC heap samples after each GC that can be processed by hp2ps, default
60 // is off. --log-gc implies --log.
61 //
62 // --log-regexp
63 // Log creation and use of regular expressions, Default is off.
64 // --log-regexp implies --log.
65 //
66 // --logfile <filename>
67 // Specify the name of the logfile, default is "v8.log".
68 //
69 // --prof
70 // Collect statistical profiling information (ticks), default is off. The
71 // tick profiler requires code events, so --prof implies --log-code.
72 
73 // Forward declarations.
74 class LogMessageBuilder;
75 class Profiler;
76 class Semaphore;
77 class SlidingStateWindow;
78 class Ticker;
79 
80 #undef LOG
81 #define LOG(isolate, Call) \
82  do { \
83  v8::internal::Logger* logger = \
84  (isolate)->logger(); \
85  if (logger->is_logging()) \
86  logger->Call; \
87  } while (false)
88 
89 #define LOG_EVENTS_AND_TAGS_LIST(V) \
90  V(CODE_CREATION_EVENT, "code-creation") \
91  V(CODE_MOVE_EVENT, "code-move") \
92  V(CODE_DELETE_EVENT, "code-delete") \
93  V(CODE_MOVING_GC, "code-moving-gc") \
94  V(SHARED_FUNC_MOVE_EVENT, "sfi-move") \
95  V(SNAPSHOT_POSITION_EVENT, "snapshot-pos") \
96  V(SNAPSHOT_CODE_NAME_EVENT, "snapshot-code-name") \
97  V(TICK_EVENT, "tick") \
98  V(REPEAT_META_EVENT, "repeat") \
99  V(BUILTIN_TAG, "Builtin") \
100  V(CALL_DEBUG_BREAK_TAG, "CallDebugBreak") \
101  V(CALL_DEBUG_PREPARE_STEP_IN_TAG, "CallDebugPrepareStepIn") \
102  V(CALL_IC_TAG, "CallIC") \
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(CALL_PRE_MONOMORPHIC_TAG, "CallPreMonomorphic") \
108  V(KEYED_CALL_DEBUG_BREAK_TAG, "KeyedCallDebugBreak") \
109  V(KEYED_CALL_DEBUG_PREPARE_STEP_IN_TAG, \
110  "KeyedCallDebugPrepareStepIn") \
111  V(KEYED_CALL_IC_TAG, "KeyedCallIC") \
112  V(KEYED_CALL_INITIALIZE_TAG, "KeyedCallInitialize") \
113  V(KEYED_CALL_MEGAMORPHIC_TAG, "KeyedCallMegamorphic") \
114  V(KEYED_CALL_MISS_TAG, "KeyedCallMiss") \
115  V(KEYED_CALL_NORMAL_TAG, "KeyedCallNormal") \
116  V(KEYED_CALL_PRE_MONOMORPHIC_TAG, "KeyedCallPreMonomorphic") \
117  V(CALLBACK_TAG, "Callback") \
118  V(EVAL_TAG, "Eval") \
119  V(FUNCTION_TAG, "Function") \
120  V(KEYED_LOAD_IC_TAG, "KeyedLoadIC") \
121  V(KEYED_LOAD_MEGAMORPHIC_IC_TAG, "KeyedLoadMegamorphicIC") \
122  V(KEYED_EXTERNAL_ARRAY_LOAD_IC_TAG, "KeyedExternalArrayLoadIC") \
123  V(KEYED_STORE_IC_TAG, "KeyedStoreIC") \
124  V(KEYED_STORE_MEGAMORPHIC_IC_TAG, "KeyedStoreMegamorphicIC") \
125  V(KEYED_EXTERNAL_ARRAY_STORE_IC_TAG, "KeyedExternalArrayStoreIC") \
126  V(LAZY_COMPILE_TAG, "LazyCompile") \
127  V(LOAD_IC_TAG, "LoadIC") \
128  V(REG_EXP_TAG, "RegExp") \
129  V(SCRIPT_TAG, "Script") \
130  V(STORE_IC_TAG, "StoreIC") \
131  V(STUB_TAG, "Stub") \
132  V(NATIVE_FUNCTION_TAG, "Function") \
133  V(NATIVE_LAZY_COMPILE_TAG, "LazyCompile") \
134  V(NATIVE_SCRIPT_TAG, "Script")
135 // Note that 'NATIVE_' cases for functions and scripts are mapped onto
136 // original tags when writing to the log.
137 
138 
139 class Sampler;
140 
141 
142 class Logger {
143  public:
144 #define DECLARE_ENUM(enum_item, ignore) enum_item,
148  };
149 #undef DECLARE_ENUM
150 
151  // Acquires resources for logging if the right flags are set.
152  bool SetUp();
153 
154  void EnsureTickerStarted();
155  void EnsureTickerStopped();
156 
157  Sampler* sampler();
158 
159  // Frees resources acquired in SetUp.
160  // When a temporary file is used for the log, returns its stream descriptor,
161  // leaving the file open.
162  FILE* TearDown();
163 
164  // Enable the computation of a sliding window of states.
166 
167  // Emits an event with a string value -> (name, value).
168  void StringEvent(const char* name, const char* value);
169 
170  // Emits an event with an int value -> (name, value).
171  void IntEvent(const char* name, int value);
172  void IntPtrTEvent(const char* name, intptr_t value);
173 
174  // Emits an event with an handle value -> (name, location).
175  void HandleEvent(const char* name, Object** location);
176 
177  // Emits memory management events for C allocated structures.
178  void NewEvent(const char* name, void* object, size_t size);
179  void DeleteEvent(const char* name, void* object);
180 
181  // Static versions of the above, operate on current isolate's logger.
182  // Used in TRACK_MEMORY(TypeName) defined in globals.h
183  static void NewEventStatic(const char* name, void* object, size_t size);
184  static void DeleteEventStatic(const char* name, void* object);
185 
186  // Emits an event with a tag, and some resource usage information.
187  // -> (name, tag, <rusage information>).
188  // Currently, the resource usage information is a process time stamp
189  // and a real time timestamp.
190  void ResourceEvent(const char* name, const char* tag);
191 
192  // Emits an event that an undefined property was read from an
193  // object.
194  void SuspectReadEvent(String* name, Object* obj);
195 
196  // Emits an event when a message is put on or read from a debugging queue.
197  // DebugTag lets us put a call-site specific label on the event.
198  void DebugTag(const char* call_site_tag);
199  void DebugEvent(const char* event_type, Vector<uint16_t> parameter);
200 
201 
202  // ==== Events logged by --log-api. ====
203  void ApiNamedSecurityCheck(Object* key);
204  void ApiIndexedSecurityCheck(uint32_t index);
205  void ApiNamedPropertyAccess(const char* tag, JSObject* holder, Object* name);
206  void ApiIndexedPropertyAccess(const char* tag,
207  JSObject* holder,
208  uint32_t index);
209  void ApiObjectAccess(const char* tag, JSObject* obj);
210  void ApiEntryCall(const char* name);
211 
212 
213  // ==== Events logged by --log-code. ====
214  // Emits a code event for a callback function.
215  void CallbackEvent(String* name, Address entry_point);
216  void GetterCallbackEvent(String* name, Address entry_point);
217  void SetterCallbackEvent(String* name, Address entry_point);
218  // Emits a code create event.
220  Code* code, const char* source);
222  Code* code, String* name);
224  Code* code,
225  SharedFunctionInfo* shared,
226  String* name);
228  Code* code,
229  SharedFunctionInfo* shared,
230  String* source, int line);
231  void CodeCreateEvent(LogEventsAndTags tag, Code* code, int args_count);
232  void CodeMovingGCEvent();
233  // Emits a code create event for a RegExp.
234  void RegExpCodeCreateEvent(Code* code, String* source);
235  // Emits a code move event.
236  void CodeMoveEvent(Address from, Address to);
237  // Emits a code delete event.
238  void CodeDeleteEvent(Address from);
239 
241 
242  void SnapshotPositionEvent(Address addr, int pos);
243 
244  // ==== Events logged by --log-gc. ====
245  // Heap sampling events: start, end, and individual types.
246  void HeapSampleBeginEvent(const char* space, const char* kind);
247  void HeapSampleEndEvent(const char* space, const char* kind);
248  void HeapSampleItemEvent(const char* type, int number, int bytes);
249  void HeapSampleJSConstructorEvent(const char* constructor,
250  int number, int bytes);
251  void HeapSampleJSRetainersEvent(const char* constructor,
252  const char* event);
253  void HeapSampleJSProducerEvent(const char* constructor,
254  Address* stack);
255  void HeapSampleStats(const char* space, const char* kind,
256  intptr_t capacity, intptr_t used);
257 
258  void SharedLibraryEvent(const char* library_path,
259  uintptr_t start,
260  uintptr_t end);
261  void SharedLibraryEvent(const wchar_t* library_path,
262  uintptr_t start,
263  uintptr_t end);
264 
265  // ==== Events logged by --log-regexp ====
266  // Regexp compilation and execution events.
267 
268  void RegExpCompileEvent(Handle<JSRegExp> regexp, bool in_cache);
269 
270  // Log an event reported from generated code
271  void LogRuntime(Vector<const char> format, JSArray* args);
272 
273  bool is_logging() {
274  return logging_nesting_ > 0;
275  }
276 
277  // Pause/Resume collection of profiling data.
278  // When data collection is paused, CPU Tick events are discarded until
279  // data collection is Resumed.
280  void PauseProfiler();
281  void ResumeProfiler();
282  bool IsProfilerPaused();
283 
285  Handle<Code> code);
286  // Logs all compiled functions found in the heap.
287  void LogCompiledFunctions();
288  // Logs all accessor callbacks found in the heap.
289  void LogAccessorCallbacks();
290  // Used for logging stubs found in the snapshot.
291  void LogCodeObjects();
292 
293  // Converts tag to a corresponding NATIVE_... if the script is native.
294  INLINE(static LogEventsAndTags ToNativeByScript(LogEventsAndTags, Script*));
295 
296  // Profiler's sampling interval (in milliseconds).
297 #if defined(ANDROID)
298  // Phones and tablets have processors that are much slower than desktop
299  // and laptop computers for which current heuristics are tuned.
300  static const int kSamplingIntervalMs = 5;
301 #else
302  static const int kSamplingIntervalMs = 1;
303 #endif
304 
305  // Callback from Log, stops profiling in case of insufficient resources.
306  void LogFailure();
307 
308  private:
309  class NameBuffer;
310  class NameMap;
311 
312  Logger();
313  ~Logger();
314 
315  // Emits the profiler's first message.
316  void ProfilerBeginEvent();
317 
318  // Emits callback event messages.
319  void CallbackEventInternal(const char* prefix,
320  const char* name,
321  Address entry_point);
322 
323  // Internal configurable move event.
324  void MoveEventInternal(LogEventsAndTags event, Address from, Address to);
325 
326  // Internal configurable move event.
327  void DeleteEventInternal(LogEventsAndTags event, Address from);
328 
329  // Emits the source code of a regexp. Used by regexp events.
330  void LogRegExpSource(Handle<JSRegExp> regexp);
331 
332  // Used for logging stubs found in the snapshot.
333  void LogCodeObject(Object* code_object);
334 
335  // Emits general information about generated code.
336  void LogCodeInfo();
337 
338  void RegisterSnapshotCodeName(Code* code, const char* name, int name_size);
339 
340  // Low-level logging support.
341 
342  void LowLevelCodeCreateEvent(Code* code, const char* name, int name_size);
343 
344  void LowLevelCodeMoveEvent(Address from, Address to);
345 
346  void LowLevelCodeDeleteEvent(Address from);
347 
348  void LowLevelSnapshotPositionEvent(Address addr, int pos);
349 
350  void LowLevelLogWriteBytes(const char* bytes, int size);
351 
352  template <typename T>
353  void LowLevelLogWriteStruct(const T& s) {
354  char tag = T::kTag;
355  LowLevelLogWriteBytes(reinterpret_cast<const char*>(&tag), sizeof(tag));
356  LowLevelLogWriteBytes(reinterpret_cast<const char*>(&s), sizeof(s));
357  }
358 
359  // Emits a profiler tick event. Used by the profiler thread.
360  void TickEvent(TickSample* sample, bool overflow);
361 
362  void ApiEvent(const char* name, ...);
363 
364  // Logs a StringEvent regardless of whether FLAG_log is true.
365  void UncheckedStringEvent(const char* name, const char* value);
366 
367  // Logs an IntEvent regardless of whether FLAG_log is true.
368  void UncheckedIntEvent(const char* name, int value);
369  void UncheckedIntPtrTEvent(const char* name, intptr_t value);
370 
371  // Returns whether profiler's sampler is active.
372  bool IsProfilerSamplerActive();
373 
374  // The sampler used by the profiler and the sliding state window.
375  Ticker* ticker_;
376 
377  // When the statistical profile is active, profiler_
378  // points to a Profiler, that handles collection
379  // of samples.
380  Profiler* profiler_;
381 
382  // SlidingStateWindow instance keeping a sliding window of the most
383  // recent VM states.
384  SlidingStateWindow* sliding_state_window_;
385 
386  // An array of log events names.
387  const char* const* log_events_;
388 
389  // Internal implementation classes with access to
390  // private members.
391  friend class EventLog;
392  friend class Isolate;
393  friend class LogMessageBuilder;
394  friend class TimeLog;
395  friend class Profiler;
396  friend class SlidingStateWindow;
397  friend class StackTracer;
398  friend class VMState;
399 
400  friend class LoggerTestHelper;
401 
402 
403  int logging_nesting_;
404  int cpu_profiler_nesting_;
405 
406  Log* log_;
407 
408  NameBuffer* name_buffer_;
409 
410  NameMap* address_to_name_map_;
411 
412  // Guards against multiple calls to TearDown() that can happen in some tests.
413  // 'true' between SetUp() and TearDown().
414  bool is_initialized_;
415 
416  // Support for 'incremental addresses' in compressed logs:
417  // LogMessageBuilder::AppendAddress(Address addr)
418  Address last_address_;
419  // Logger::TickEvent(...)
420  Address prev_sp_;
421  Address prev_function_;
422  // Logger::MoveEventInternal(...)
423  Address prev_to_;
424  // Logger::FunctionCreateEvent(...)
425  Address prev_code_;
426 
427  friend class CpuProfiler;
428 };
429 
430 
431 // Process wide registry of samplers.
432 class SamplerRegistry : public AllStatic {
433  public:
434  enum State {
437  HAS_CPU_PROFILING_SAMPLERS
438  };
439 
440  static void SetUp();
441 
442  typedef void (*VisitSampler)(Sampler*, void*);
443 
444  static State GetState();
445 
446  // Iterates over all active samplers keeping the internal lock held.
447  // Returns whether there are any active samplers.
448  static bool IterateActiveSamplers(VisitSampler func, void* param);
449 
450  // Adds/Removes an active sampler.
451  static void AddActiveSampler(Sampler* sampler);
452  static void RemoveActiveSampler(Sampler* sampler);
453 
454  private:
455  static bool ActiveSamplersExist() {
456  return active_samplers_ != NULL && !active_samplers_->is_empty();
457  }
458 
459  static List<Sampler*>* active_samplers_;
460 
462 };
463 
464 
465 // Class that extracts stack trace, used for profiling.
466 class StackTracer : public AllStatic {
467  public:
468  static void Trace(Isolate* isolate, TickSample* sample);
469 };
470 
471 } } // namespace v8::internal
472 
473 
474 #endif // V8_LOG_H_
byte * Address
Definition: globals.h:172
void LogRuntime(Vector< const char > format, JSArray *args)
Definition: log.cc:712
void PauseProfiler()
Definition: log.cc:1276
static void NewEventStatic(const char *name, void *object, size_t size)
Definition: log.cc:817
void RegExpCodeCreateEvent(Code *code, String *source)
Definition: log.cc:1057
void CodeMoveEvent(Address from, Address to)
Definition: log.cc:1085
void GetterCallbackEvent(String *name, Address entry_point)
Definition: log.cc:848
void SetterCallbackEvent(String *name, Address entry_point)
Definition: log.cc:856
static void DeleteEventStatic(const char *name, void *object)
Definition: log.cc:822
value format" "after each garbage collection") DEFINE_bool(print_cumulative_gc_stat, false, "print cumulative GC statistics in name=value format on exit") DEFINE_bool(trace_gc_verbose, false, "print more details following each garbage collection") DEFINE_bool(trace_fragmentation, false, "report fragmentation for old pointer and data pages") DEFINE_bool(collect_maps, true, "garbage collect maps from which no objects can be reached") DEFINE_bool(flush_code, true, "flush code that we expect not to use again before full gc") DEFINE_bool(incremental_marking, true, "use incremental marking") DEFINE_bool(incremental_marking_steps, true, "do incremental marking steps") DEFINE_bool(trace_incremental_marking, false, "trace progress of the incremental marking") DEFINE_bool(use_idle_notification, true, "Use idle notification to reduce memory footprint.") DEFINE_bool(send_idle_notification, false, "Send idle notifcation between stress runs.") DEFINE_bool(use_ic, true, "use inline caching") DEFINE_bool(native_code_counters, false, "generate extra code for manipulating stats counters") DEFINE_bool(always_compact, false, "Perform compaction on every full GC") DEFINE_bool(lazy_sweeping, true, "Use lazy sweeping for old pointer and data spaces") DEFINE_bool(never_compact, false, "Never perform compaction on full GC-testing only") DEFINE_bool(compact_code_space, true, "Compact code space on full non-incremental collections") DEFINE_bool(cleanup_code_caches_at_gc, true, "Flush inline caches prior to mark compact collection and" "flush code caches in maps during mark compact cycle.") DEFINE_int(random_seed, 0, "Default seed for initializing random generator" "(0, the default, means to use system random).") DEFINE_bool(use_verbose_printer, true, "allows verbose printing") DEFINE_bool(allow_natives_syntax, false, "allow natives syntax") DEFINE_bool(trace_sim, false, "Trace simulator execution") DEFINE_bool(check_icache, false, "Check icache flushes in ARM and MIPS simulator") DEFINE_int(stop_sim_at, 0, "Simulator stop after x number of instructions") DEFINE_int(sim_stack_alignment, 8, "Stack alingment in bytes in simulator(4 or 8, 8 is default)") DEFINE_bool(trace_exception, false, "print stack trace when throwing exceptions") DEFINE_bool(preallocate_message_memory, false, "preallocate some memory to build stack traces.") DEFINE_bool(randomize_hashes, true, "randomize hashes to avoid predictable hash collisions" "(with snapshots this option cannot override the baked-in seed)") DEFINE_int(hash_seed, 0, "Fixed seed to use to hash property keys(0 means random)" "(with snapshots this option cannot override the baked-in seed)") DEFINE_bool(preemption, false, "activate a 100ms timer that switches between V8 threads") DEFINE_bool(regexp_optimization, true, "generate optimized regexp code") DEFINE_bool(testing_bool_flag, true, "testing_bool_flag") DEFINE_int(testing_int_flag, 13, "testing_int_flag") DEFINE_float(testing_float_flag, 2.5, "float-flag") DEFINE_string(testing_string_flag, "Hello, world!", "string-flag") DEFINE_int(testing_prng_seed, 42, "Seed used for threading test randomness") DEFINE_string(testing_serialization_file, "/tmp/serdes", "file in which to serialize heap") DEFINE_bool(help, false, "Print usage message, including flags, on console") DEFINE_bool(dump_counters, false, "Dump counters on exit") DEFINE_string(map_counters, "", "Map counters to a file") DEFINE_args(js_arguments, JSARGUMENTS_INIT, "Pass all remaining arguments to the script.Alias for\"--\".") DEFINE_bool(debug_compile_events, true,"Enable debugger compile events") DEFINE_bool(debug_script_collected_events, true,"Enable debugger script collected events") DEFINE_bool(gdbjit, false,"enable GDBJIT interface (disables compacting GC)") DEFINE_bool(gdbjit_full, false,"enable GDBJIT interface for all code objects") DEFINE_bool(gdbjit_dump, false,"dump elf objects with debug info to disk") DEFINE_string(gdbjit_dump_filter,"","dump only objects containing this substring") DEFINE_bool(force_marking_deque_overflows, false,"force overflows of marking deque by reducing it's size ""to 64 words") DEFINE_bool(stress_compaction, false,"stress the GC compactor to flush out bugs (implies ""--force_marking_deque_overflows)")#define FLAG DEFINE_bool(enable_slow_asserts, false,"enable asserts that are slow to execute") DEFINE_bool(trace_codegen, false,"print name of functions for which code is generated") DEFINE_bool(print_source, false,"pretty print source code") DEFINE_bool(print_builtin_source, false,"pretty print source code for builtins") DEFINE_bool(print_ast, false,"print source AST") DEFINE_bool(print_builtin_ast, false,"print source AST for builtins") DEFINE_string(stop_at,"","function name where to insert a breakpoint") DEFINE_bool(print_builtin_scopes, false,"print scopes for builtins") DEFINE_bool(print_scopes, false,"print scopes") DEFINE_bool(trace_contexts, false,"trace contexts operations") DEFINE_bool(gc_greedy, false,"perform GC prior to some allocations") DEFINE_bool(gc_verbose, false,"print stuff during garbage collection") DEFINE_bool(heap_stats, false,"report heap statistics before and after GC") DEFINE_bool(code_stats, false,"report code statistics after GC") DEFINE_bool(verify_heap, false,"verify heap pointers before and after GC") DEFINE_bool(print_handles, false,"report handles after GC") DEFINE_bool(print_global_handles, false,"report global handles after GC") DEFINE_bool(trace_ic, false,"trace inline cache state transitions") DEFINE_bool(print_interfaces, false,"print interfaces") DEFINE_bool(print_interface_details, false,"print interface inference details") DEFINE_int(print_interface_depth, 5,"depth for printing interfaces") DEFINE_bool(trace_normalization, false,"prints when objects are turned into dictionaries.") DEFINE_bool(trace_lazy, false,"trace lazy compilation") DEFINE_bool(collect_heap_spill_statistics, false,"report heap spill statistics along with heap_stats ""(requires heap_stats)") DEFINE_bool(trace_isolates, false,"trace isolate state changes") DEFINE_bool(log_state_changes, false,"Log state changes.") DEFINE_bool(regexp_possessive_quantifier, false,"enable possessive quantifier syntax for testing") DEFINE_bool(trace_regexp_bytecodes, false,"trace regexp bytecode execution") DEFINE_bool(trace_regexp_assembler, false,"trace regexp macro assembler calls.")#define FLAG DEFINE_bool(log, false,"Minimal logging (no API, code, GC, suspect, or handles samples).") DEFINE_bool(log_all, false,"Log all events to the log file.") DEFINE_bool(log_runtime, false,"Activate runtime system %Log call.") DEFINE_bool(log_api, false,"Log API events to the log file.") DEFINE_bool(log_code, false,"Log code events to the log file without profiling.") DEFINE_bool(log_gc, false,"Log heap samples on garbage collection for the hp2ps tool.") DEFINE_bool(log_handles, false,"Log global handle events.") DEFINE_bool(log_snapshot_positions, false,"log positions of (de)serialized objects in the snapshot.") DEFINE_bool(log_suspect, false,"Log suspect operations.") DEFINE_bool(prof, false,"Log statistical profiling information (implies --log-code).") DEFINE_bool(prof_auto, true,"Used with --prof, starts profiling automatically") DEFINE_bool(prof_lazy, false,"Used with --prof, only does sampling and logging"" when profiler is active (implies --noprof_auto).") DEFINE_bool(prof_browser_mode, true,"Used with --prof, turns on browser-compatible mode for profiling.") DEFINE_bool(log_regexp, false,"Log regular expression execution.") DEFINE_bool(sliding_state_window, false,"Update sliding state window counters.") DEFINE_string(logfile,"v8.log","Specify the name of the log file.") DEFINE_bool(ll_prof, false,"Enable low-level linux profiler.")#define FLAG DEFINE_bool(trace_elements_transitions, false,"trace elements transitions") DEFINE_bool(print_code_stubs, false,"print code stubs") DEFINE_bool(test_secondary_stub_cache, false,"test secondary stub cache by disabling the primary one") DEFINE_bool(test_primary_stub_cache, false,"test primary stub cache by disabling the secondary one") DEFINE_bool(print_code, false,"print generated code") DEFINE_bool(print_opt_code, false,"print optimized code") DEFINE_bool(print_unopt_code, false,"print unoptimized code before ""printing optimized code based on it") DEFINE_bool(print_code_verbose, false,"print more information for code") DEFINE_bool(print_builtin_code, false,"print generated code for builtins")#43"/Users/thlorenz/dev/dx/v8-perf/build/v8/src/flags.cc"2#define FLAG_MODE_DEFINE_DEFAULTS#1"/Users/thlorenz/dev/dx/v8-perf/build/v8/src/flag-definitions.h"1#define FLAG_FULL(ftype, ctype, nam, def, cmt)#define FLAG_READONLY(ftype, ctype, nam, def, cmt)#define DEFINE_implication(whenflag, thenflag)#define DEFINE_bool(nam, def, cmt)#define DEFINE_int(nam, def, cmt)#define DEFINE_float(nam, def, cmt)#define DEFINE_string(nam, def, cmt)#define DEFINE_args(nam, def, cmt)#define FLAG DEFINE_bool(use_strict, false,"enforce strict mode") DEFINE_bool(es5_readonly, false,"activate correct semantics for inheriting readonliness") DEFINE_bool(es52_globals, false,"activate new semantics for global var declarations") DEFINE_bool(harmony_typeof, false,"enable harmony semantics for typeof") DEFINE_bool(harmony_scoping, false,"enable harmony block scoping") DEFINE_bool(harmony_modules, false,"enable harmony modules (implies block scoping)") DEFINE_bool(harmony_proxies, false,"enable harmony proxies") DEFINE_bool(harmony_collections, false,"enable harmony collections (sets, maps, and weak maps)") DEFINE_bool(harmony, false,"enable all harmony features (except typeof)") DEFINE_implication(harmony, harmony_scoping) DEFINE_implication(harmony, harmony_modules) DEFINE_implication(harmony, harmony_proxies) DEFINE_implication(harmony, harmony_collections) DEFINE_implication(harmony_modules, harmony_scoping) DEFINE_bool(packed_arrays, false,"optimizes arrays that have no holes") DEFINE_bool(smi_only_arrays, true,"tracks arrays with only smi values") DEFINE_bool(clever_optimizations, true,"Optimize object size, Array shift, DOM strings and string +") DEFINE_bool(unbox_double_arrays, true,"automatically unbox arrays of doubles") DEFINE_bool(string_slices, true,"use string slices") DEFINE_bool(crankshaft, true,"use crankshaft") DEFINE_string(hydrogen_filter,"","optimization filter") DEFINE_bool(use_range, true,"use hydrogen range analysis") DEFINE_bool(eliminate_dead_phis, true,"eliminate dead phis") DEFINE_bool(use_gvn, true,"use hydrogen global value numbering") DEFINE_bool(use_canonicalizing, true,"use hydrogen instruction canonicalizing") DEFINE_bool(use_inlining, true,"use function inlining") DEFINE_int(max_inlined_source_size, 600,"maximum source size in bytes considered for a single inlining") DEFINE_int(max_inlined_nodes, 196,"maximum number of AST nodes considered for a single inlining") DEFINE_int(max_inlined_nodes_cumulative, 196,"maximum cumulative number of AST nodes considered for inlining") DEFINE_bool(loop_invariant_code_motion, true,"loop invariant code motion") DEFINE_bool(collect_megamorphic_maps_from_stub_cache, true,"crankshaft harvests type feedback from stub cache") DEFINE_bool(hydrogen_stats, false,"print statistics for hydrogen") DEFINE_bool(trace_hydrogen, false,"trace generated hydrogen to file") DEFINE_string(trace_phase,"Z","trace generated IR for specified phases") DEFINE_bool(trace_inlining, false,"trace inlining decisions") DEFINE_bool(trace_alloc, false,"trace register allocator") DEFINE_bool(trace_all_uses, false,"trace all use positions") DEFINE_bool(trace_range, false,"trace range analysis") DEFINE_bool(trace_gvn, false,"trace global value numbering") DEFINE_bool(trace_representation, false,"trace representation types") DEFINE_bool(stress_pointer_maps, false,"pointer map for every instruction") DEFINE_bool(stress_environments, false,"environment for every instruction") DEFINE_int(deopt_every_n_times, 0,"deoptimize every n times a deopt point is passed") DEFINE_bool(trap_on_deopt, false,"put a break point before deoptimizing") DEFINE_bool(deoptimize_uncommon_cases, true,"deoptimize uncommon cases") DEFINE_bool(polymorphic_inlining, true,"polymorphic inlining") DEFINE_bool(use_osr, true,"use on-stack replacement") DEFINE_bool(array_bounds_checks_elimination, false,"perform array bounds checks elimination") DEFINE_bool(array_index_dehoisting, false,"perform array index dehoisting") DEFINE_bool(trace_osr, false,"trace on-stack replacement") DEFINE_int(stress_runs, 0,"number of stress runs") DEFINE_bool(optimize_closures, true,"optimize closures") DEFINE_bool(inline_construct, true,"inline constructor calls") DEFINE_bool(inline_arguments, true,"inline functions with arguments object") DEFINE_int(loop_weight, 1,"loop weight for representation inference") DEFINE_bool(optimize_for_in, true,"optimize functions containing for-in loops") DEFINE_bool(experimental_profiler, true,"enable all profiler experiments") DEFINE_bool(watch_ic_patching, false,"profiler considers IC stability") DEFINE_int(frame_count, 1,"number of stack frames inspected by the profiler") DEFINE_bool(self_optimization, false,"primitive functions trigger their own optimization") DEFINE_bool(direct_self_opt, false,"call recompile stub directly when self-optimizing") DEFINE_bool(retry_self_opt, false,"re-try self-optimization if it failed") DEFINE_bool(count_based_interrupts, false,"trigger profiler ticks based on counting instead of timing") DEFINE_bool(interrupt_at_exit, false,"insert an interrupt check at function exit") DEFINE_bool(weighted_back_edges, false,"weight back edges by jump distance for interrupt triggering") DEFINE_int(interrupt_budget, 5900,"execution budget before interrupt is triggered") DEFINE_int(type_info_threshold, 15,"percentage of ICs that must have type info to allow optimization") DEFINE_int(self_opt_count, 130,"call count before self-optimization") DEFINE_implication(experimental_profiler, watch_ic_patching) DEFINE_implication(experimental_profiler, self_optimization) DEFINE_implication(experimental_profiler, retry_self_opt) DEFINE_implication(experimental_profiler, count_based_interrupts) DEFINE_implication(experimental_profiler, interrupt_at_exit) DEFINE_implication(experimental_profiler, weighted_back_edges) DEFINE_bool(trace_opt_verbose, false,"extra verbose compilation tracing") DEFINE_implication(trace_opt_verbose, trace_opt) DEFINE_bool(debug_code, false,"generate extra code (assertions) for debugging") DEFINE_bool(code_comments, false,"emit comments in code disassembly") DEFINE_bool(enable_sse2, true,"enable use of SSE2 instructions if available") DEFINE_bool(enable_sse3, true,"enable use of SSE3 instructions if available") DEFINE_bool(enable_sse4_1, true,"enable use of SSE4.1 instructions if available") DEFINE_bool(enable_cmov, true,"enable use of CMOV instruction if available") DEFINE_bool(enable_rdtsc, true,"enable use of RDTSC instruction if available") DEFINE_bool(enable_sahf, true,"enable use of SAHF instruction if available (X64 only)") DEFINE_bool(enable_vfp3, true,"enable use of VFP3 instructions if available - this implies ""enabling ARMv7 instructions (ARM only)") DEFINE_bool(enable_armv7, true,"enable use of ARMv7 instructions if available (ARM only)") DEFINE_bool(enable_fpu, true,"enable use of MIPS FPU instructions if available (MIPS only)") DEFINE_string(expose_natives_as, NULL,"expose natives in global object") DEFINE_string(expose_debug_as, NULL,"expose debug in global object") DEFINE_bool(expose_gc, false,"expose gc extension") DEFINE_bool(expose_externalize_string, false,"expose externalize string extension") DEFINE_int(stack_trace_limit, 10,"number of stack frames to capture") DEFINE_bool(builtins_in_stack_traces, false,"show built-in functions in stack traces") DEFINE_bool(disable_native_files, false,"disable builtin natives files") DEFINE_bool(inline_new, true,"use fast inline allocation") DEFINE_bool(stack_trace_on_abort, true,"print a stack trace if an assertion failure occurs") DEFINE_bool(trace, false,"trace function calls") DEFINE_bool(mask_constants_with_cookie, true,"use random jit cookie to mask large constants") DEFINE_bool(lazy, true,"use lazy compilation") DEFINE_bool(trace_opt, false,"trace lazy optimization") DEFINE_bool(trace_opt_stats, false,"trace lazy optimization statistics") DEFINE_bool(opt, true,"use adaptive optimizations") DEFINE_bool(always_opt, false,"always try to optimize functions") DEFINE_bool(prepare_always_opt, false,"prepare for turning on always opt") DEFINE_bool(trace_deopt, false,"trace deoptimization") DEFINE_int(min_preparse_length, 1024,"minimum length for automatic enable preparsing") DEFINE_bool(always_full_compiler, false,"try to use the dedicated run-once backend for all code") DEFINE_bool(trace_bailout, false,"print reasons for falling back to using the classic V8 backend") DEFINE_bool(compilation_cache, true,"enable compilation cache") DEFINE_bool(cache_prototype_transitions, true,"cache prototype transitions") DEFINE_bool(trace_debug_json, false,"trace debugging JSON request/response") DEFINE_bool(debugger_auto_break, true,"automatically set the debug break flag when debugger commands are ""in the queue") DEFINE_bool(enable_liveedit, true,"enable liveedit experimental feature") DEFINE_bool(break_on_abort, true,"always cause a debug break before aborting") DEFINE_int(stack_size, kPointerSize *123,"default size of stack region v8 is allowed to use (in kBytes)") DEFINE_int(max_stack_trace_source_length, 300,"maximum length of function source code printed in a stack trace.") DEFINE_bool(always_inline_smi_code, false,"always inline smi code in non-opt code") DEFINE_int(max_new_space_size, 0,"max size of the new generation (in kBytes)") DEFINE_int(max_old_space_size, 0,"max size of the old generation (in Mbytes)") DEFINE_int(max_executable_size, 0,"max size of executable memory (in Mbytes)") DEFINE_bool(gc_global, false,"always perform global GCs") DEFINE_int(gc_interval,-1,"garbage collect after <n> allocations") DEFINE_bool(trace_gc, false,"print one trace line following each garbage collection") DEFINE_bool(trace_gc_nvp, false,"print one detailed trace line in name=value format ""after each garbage collection") DEFINE_bool(print_cumulative_gc_stat, false,"print cumulative GC statistics in name=value format on exit") DEFINE_bool(trace_gc_verbose, false,"print more details following each garbage collection") DEFINE_bool(trace_fragmentation, false,"report fragmentation for old pointer and data pages") DEFINE_bool(collect_maps, true,"garbage collect maps from which no objects can be reached") DEFINE_bool(flush_code, true,"flush code that we expect not to use again before full gc") DEFINE_bool(incremental_marking, true,"use incremental marking") DEFINE_bool(incremental_marking_steps, true,"do incremental marking steps") DEFINE_bool(trace_incremental_marking, false,"trace progress of the incremental marking") DEFINE_bool(use_idle_notification, true,"Use idle notification to reduce memory footprint.") DEFINE_bool(send_idle_notification, false,"Send idle notifcation between stress runs.") DEFINE_bool(use_ic, true,"use inline caching") DEFINE_bool(native_code_counters, false,"generate extra code for manipulating stats counters") DEFINE_bool(always_compact, false,"Perform compaction on every full GC") DEFINE_bool(lazy_sweeping, true,"Use lazy sweeping for old pointer and data spaces") DEFINE_bool(never_compact, false,"Never perform compaction on full GC - testing only") DEFINE_bool(compact_code_space, true,"Compact code space on full non-incremental collections") DEFINE_bool(cleanup_code_caches_at_gc, true,"Flush inline caches prior to mark compact collection and ""flush code caches in maps during mark compact cycle.") DEFINE_int(random_seed, 0,"Default seed for initializing random generator ""(0, the default, means to use system random).") DEFINE_bool(use_verbose_printer, true,"allows verbose printing") DEFINE_bool(allow_natives_syntax, false,"allow natives syntax") DEFINE_bool(trace_sim, false,"Trace simulator execution") DEFINE_bool(check_icache, false,"Check icache flushes in ARM and MIPS simulator") DEFINE_int(stop_sim_at, 0,"Simulator stop after x number of instructions") DEFINE_int(sim_stack_alignment, 8,"Stack alingment in bytes in simulator (4 or 8, 8 is default)") DEFINE_bool(trace_exception, false,"print stack trace when throwing exceptions") DEFINE_bool(preallocate_message_memory, false,"preallocate some memory to build stack traces.") DEFINE_bool(randomize_hashes, true,"randomize hashes to avoid predictable hash collisions ""(with snapshots this option cannot override the baked-in seed)") DEFINE_int(hash_seed, 0,"Fixed seed to use to hash property keys (0 means random)""(with snapshots this option cannot override the baked-in seed)") DEFINE_bool(preemption, false,"activate a 100ms timer that switches between V8 threads") DEFINE_bool(regexp_optimization, true,"generate optimized regexp code") DEFINE_bool(testing_bool_flag, true,"testing_bool_flag") DEFINE_int(testing_int_flag, 13,"testing_int_flag") DEFINE_float(testing_float_flag, 2.5,"float-flag") DEFINE_string(testing_string_flag,"Hello, world!","string-flag") DEFINE_int(testing_prng_seed, 42,"Seed used for threading test randomness") DEFINE_string(testing_serialization_file,"/tmp/serdes","file in which to serialize heap") DEFINE_bool(help, false,"Print usage message, including flags, on console") DEFINE_bool(dump_counters, false,"Dump counters on exit") DEFINE_string(map_counters,"","Map counters to a file") DEFINE_args(js_arguments, JSARGUMENTS_INIT,"Pass all remaining arguments to the script. Alias for \"--\".") DEFINE_bool(debug_compile_events, true,"Enable debugger compile events") DEFINE_bool(debug_script_collected_events, true,"Enable debugger script collected events") DEFINE_bool(gdbjit, false,"enable GDBJIT interface (disables compacting GC)") DEFINE_bool(gdbjit_full, false,"enable GDBJIT interface for all code objects") DEFINE_bool(gdbjit_dump, false,"dump elf objects with debug info to disk") DEFINE_string(gdbjit_dump_filter,"","dump only objects containing this substring") DEFINE_bool(force_marking_deque_overflows, false,"force overflows of marking deque by reducing it's size ""to 64 words") DEFINE_bool(stress_compaction, false,"stress the GC compactor to flush out bugs (implies ""--force_marking_deque_overflows)")#define FLAG DEFINE_bool(enable_slow_asserts, false,"enable asserts that are slow to execute") DEFINE_bool(trace_codegen, false,"print name of functions for which code is generated") DEFINE_bool(print_source, false,"pretty print source code") DEFINE_bool(print_builtin_source, false,"pretty print source code for builtins") DEFINE_bool(print_ast, false,"print source AST") DEFINE_bool(print_builtin_ast, false,"print source AST for builtins") DEFINE_string(stop_at,"","function name where to insert a breakpoint") DEFINE_bool(print_builtin_scopes, false,"print scopes for builtins") DEFINE_bool(print_scopes, false,"print scopes") DEFINE_bool(trace_contexts, false,"trace contexts operations") DEFINE_bool(gc_greedy, false,"perform GC prior to some allocations") DEFINE_bool(gc_verbose, false,"print stuff during garbage collection") DEFINE_bool(heap_stats, false,"report heap statistics before and after GC") DEFINE_bool(code_stats, false,"report code statistics after GC") DEFINE_bool(verify_heap, false,"verify heap pointers before and after GC") DEFINE_bool(print_handles, false,"report handles after GC") DEFINE_bool(print_global_handles, false,"report global handles after GC") DEFINE_bool(trace_ic, false,"trace inline cache state transitions") DEFINE_bool(print_interfaces, false,"print interfaces") DEFINE_bool(print_interface_details, false,"print interface inference details") DEFINE_int(print_interface_depth, 5,"depth for printing interfaces") DEFINE_bool(trace_normalization, false,"prints when objects are turned into dictionaries.") DEFINE_bool(trace_lazy, false,"trace lazy compilation") DEFINE_bool(collect_heap_spill_statistics, false,"report heap spill statistics along with heap_stats ""(requires heap_stats)") DEFINE_bool(trace_isolates, false,"trace isolate state changes") DEFINE_bool(log_state_changes, false,"Log state changes.") DEFINE_bool(regexp_possessive_quantifier, false,"enable possessive quantifier syntax for testing") DEFINE_bool(trace_regexp_bytecodes, false,"trace regexp bytecode execution") DEFINE_bool(trace_regexp_assembler, false,"trace regexp macro assembler calls.")#define FLAG DEFINE_bool(log, false,"Minimal logging (no API, code, GC, suspect, or handles samples).") DEFINE_bool(log_all, false,"Log all events to the log file.") DEFINE_bool(log_runtime, false,"Activate runtime system %Log call.") DEFINE_bool(log_api, false,"Log API events to the log file.") DEFINE_bool(log_code, false,"Log code events to the log file without profiling.") DEFINE_bool(log_gc, false,"Log heap samples on garbage collection for the hp2ps tool.") DEFINE_bool(log_handles, false,"Log global handle events.") DEFINE_bool(log_snapshot_positions, false,"log positions of (de)serialized objects in the snapshot.") DEFINE_bool(log_suspect, false,"Log suspect operations.") DEFINE_bool(prof, false,"Log statistical profiling information (implies --log-code).") DEFINE_bool(prof_auto, true,"Used with --prof, starts profiling automatically") DEFINE_bool(prof_lazy, false,"Used with --prof, only does sampling and logging"" when profiler is active (implies --noprof_auto).") DEFINE_bool(prof_browser_mode, true,"Used with --prof, turns on browser-compatible mode for profiling.") DEFINE_bool(log_regexp, false,"Log regular expression execution.") DEFINE_bool(sliding_state_window, false,"Update sliding state window counters.") DEFINE_string(logfile,"v8.log","Specify the name of the log file.") DEFINE_bool(ll_prof, false,"Enable low-level linux profiler.")#define FLAG DEFINE_bool(trace_elements_transitions, false,"trace elements transitions") DEFINE_bool(print_code_stubs, false,"print code stubs") DEFINE_bool(test_secondary_stub_cache, false,"test secondary stub cache by disabling the primary one") DEFINE_bool(test_primary_stub_cache, false,"test primary stub cache by disabling the secondary one") DEFINE_bool(print_code, false,"print generated code") DEFINE_bool(print_opt_code, false,"print optimized code") DEFINE_bool(print_unopt_code, false,"print unoptimized code before ""printing optimized code based on it") DEFINE_bool(print_code_verbose, false,"print more information for code") DEFINE_bool(print_builtin_code, false,"print generated code for builtins")#47"/Users/thlorenz/dev/dx/v8-perf/build/v8/src/flags.cc"2 namespace{struct Flag{enum FlagType{TYPE_BOOL, TYPE_INT, TYPE_FLOAT, TYPE_STRING, TYPE_ARGS} name
Definition: flags.cc:1349
bool is_logging()
Definition: log.h:273
void EnsureTickerStopped()
Definition: log.cc:1690
Sampler * sampler()
Definition: log.cc:1679
void LogCompiledFunctions()
Definition: log.cc:1582
void CodeDeleteEvent(Address from)
Definition: log.cc:1095
TickSample * sample
void IntPtrTEvent(const char *name, intptr_t value)
Definition: log.cc:577
void EnsureTickerStarted()
Definition: log.cc:1684
void ResumeProfiler()
Definition: log.cc:1295
void ApiNamedSecurityCheck(Object *key)
Definition: log.cc:620
void HandleEvent(const char *name, Object **location)
Definition: log.cc:598
friend class EventLog
Definition: log.h:391
void ApiIndexedSecurityCheck(uint32_t index)
Definition: log.cc:756
void LogFailure()
Definition: log.cc:1318
void SnapshotPositionEvent(Address addr, int pos)
Definition: log.cc:1105
void HeapSampleJSProducerEvent(const char *constructor, Address *stack)
friend class LoggerTestHelper
Definition: log.h:400
void HeapSampleBeginEvent(const char *space, const char *kind)
Definition: log.cc:1192
void LogExistingFunction(Handle< SharedFunctionInfo > shared, Handle< Code > code)
Definition: log.cc:1537
#define DECLARE_ENUM(enum_item, ignore)
Definition: log.h:144
void DebugEvent(const char *event_type, Vector< uint16_t > parameter)
Definition: log.cc:1227
FILE * TearDown()
Definition: log.cc:1695
#define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName)
Definition: globals.h:332
void RegExpCompileEvent(Handle< JSRegExp > regexp, bool in_cache)
Definition: log.cc:702
void HeapSampleStats(const char *space, const char *kind, intptr_t capacity, intptr_t used)
INLINE(static LogEventsAndTags ToNativeByScript(LogEventsAndTags, Script *))
void EnableSlidingStateWindow()
Definition: log.cc:1716
void ApiNamedPropertyAccess(const char *tag, JSObject *holder, Object *name)
Definition: log.cc:762
void LogCodeObjects()
Definition: log.cc:1526
#define T(name, string, precedence)
Definition: token.cc:48
void ApiIndexedPropertyAccess(const char *tag, JSObject *holder, uint32_t index)
Definition: log.cc:775
void SharedLibraryEvent(const char *library_path, uintptr_t start, uintptr_t end)
Definition: log.cc:634
void ApiEntryCall(const char *name)
Definition: log.cc:794
void HeapSampleEndEvent(const char *space, const char *kind)
Definition: log.cc:1203
void HeapSampleJSConstructorEvent(const char *constructor, int number, int bytes)
void CallbackEvent(String *name, Address entry_point)
Definition: log.cc:840
void HeapSampleItemEvent(const char *type, int number, int bytes)
Definition: log.cc:1211
void DeleteEvent(const char *name, void *object)
Definition: log.cc:809
void ApiObjectAccess(const char *tag, JSObject *obj)
Definition: log.cc:785
friend class VMState
Definition: log.h:398
static const int kSamplingIntervalMs
Definition: log.h:302
activate correct semantics for inheriting readonliness enable harmony semantics for typeof enable harmony enable harmony proxies enable all harmony harmony_scoping harmony_proxies harmony_scoping tracks arrays with only smi values automatically unbox arrays of doubles use crankshaft use hydrogen range analysis use hydrogen global value numbering use function inlining maximum number of AST nodes considered for a single inlining loop invariant code motion print statistics for hydrogen trace generated IR for specified phases trace register allocator trace range analysis trace representation types environment for every instruction put a break point before deoptimizing polymorphic inlining perform array bounds checks elimination trace on stack replacement optimize closures functions with arguments object optimize functions containing for in loops profiler considers IC stability primitive functions trigger their own optimization re try self optimization if it failed insert an interrupt check at function exit execution budget before interrupt is triggered call count before self optimization self_optimization count_based_interrupts weighted_back_edges trace_opt emit comments in code disassembly enable use of SSE3 instructions if available enable use of CMOV instruction if available enable use of SAHF instruction if enable use of VFP3 instructions if available this implies enabling ARMv7 enable use of ARMv7 instructions if enable use of MIPS FPU instructions if NULL
Definition: flags.cc:274
void CodeMovingGCEvent()
Definition: log.cc:1050
void HeapSampleJSRetainersEvent(const char *constructor, const char *event)
friend class TimeLog
Definition: log.h:394
void SharedFunctionInfoMoveEvent(Address from, Address to)
Definition: log.cc:1130
void IntEvent(const char *name, int value)
Definition: log.cc:572
void LogAccessorCallbacks()
Definition: log.cc:1602
bool IsProfilerPaused()
Definition: log.cc:1271
friend class LogMessageBuilder
Definition: log.h:393
void CodeCreateEvent(LogEventsAndTags tag, Code *code, const char *source)
Definition: log.cc:864
void DebugTag(const char *call_site_tag)
Definition: log.cc:1219
void ResourceEvent(const char *name, const char *tag)
Definition: log.cc:1159
FlagType type() const
Definition: flags.cc:1358
void NewEvent(const char *name, void *object, size_t size)
Definition: log.cc:800
void SuspectReadEvent(String *name, Object *obj)
Definition: log.cc:1175
#define LOG_EVENTS_AND_TAGS_LIST(V)
Definition: log.h:89
void StringEvent(const char *name, const char *value)
Definition: log.cc:559