summaryrefslogtreecommitdiff
path: root/deps/v8/src/counters.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/counters.h')
-rw-r--r--deps/v8/src/counters.h435
1 files changed, 348 insertions, 87 deletions
diff --git a/deps/v8/src/counters.h b/deps/v8/src/counters.h
index 7183d0e52e..59627f13f6 100644
--- a/deps/v8/src/counters.h
+++ b/deps/v8/src/counters.h
@@ -9,7 +9,7 @@
#include "src/allocation.h"
#include "src/base/platform/elapsed-timer.h"
#include "src/base/platform/time.h"
-#include "src/builtins.h"
+#include "src/builtins/builtins.h"
#include "src/globals.h"
#include "src/objects.h"
#include "src/runtime/runtime.h"
@@ -482,6 +482,7 @@ double AggregatedMemoryHistogram<Histogram>::Aggregate(double current_ms,
struct RuntimeCallCounter {
explicit RuntimeCallCounter(const char* name) : name(name) {}
void Reset();
+ V8_NOINLINE void Dump(std::stringstream& out);
const char* name;
int64_t count = 0;
@@ -492,88 +493,334 @@ struct RuntimeCallCounter {
// timers used for properly measuring the own time of a RuntimeCallCounter.
class RuntimeCallTimer {
public:
- inline void Initialize(RuntimeCallCounter* counter,
- RuntimeCallTimer* parent) {
+ RuntimeCallTimer() {}
+ RuntimeCallCounter* counter() { return counter_; }
+ base::ElapsedTimer timer() { return timer_; }
+
+ private:
+ friend class RuntimeCallStats;
+
+ inline void Start(RuntimeCallCounter* counter, RuntimeCallTimer* parent) {
counter_ = counter;
parent_ = parent;
- }
-
- inline void Start() {
timer_.Start();
- counter_->count++;
}
inline RuntimeCallTimer* Stop() {
base::TimeDelta delta = timer_.Elapsed();
+ timer_.Stop();
+ counter_->count++;
counter_->time += delta;
if (parent_ != NULL) {
- parent_->AdjustForSubTimer(delta);
+ // Adjust parent timer so that it does not include sub timer's time.
+ parent_->counter_->time -= delta;
}
return parent_;
}
- inline void AdjustForSubTimer(base::TimeDelta delta) {
- counter_->time -= delta;
- }
-
- private:
- RuntimeCallCounter* counter_;
- RuntimeCallTimer* parent_;
+ RuntimeCallCounter* counter_ = nullptr;
+ RuntimeCallTimer* parent_ = nullptr;
base::ElapsedTimer timer_;
};
-struct RuntimeCallStats {
- // Dummy counter for the unexpected stub miss.
- RuntimeCallCounter UnexpectedStubMiss =
- RuntimeCallCounter("UnexpectedStubMiss");
- // Counter for runtime callbacks into JavaScript.
- RuntimeCallCounter ExternalCallback = RuntimeCallCounter("ExternalCallback");
- RuntimeCallCounter GC = RuntimeCallCounter("GC");
+#define FOR_EACH_API_COUNTER(V) \
+ V(ArrayBuffer_Cast) \
+ V(ArrayBuffer_Neuter) \
+ V(ArrayBuffer_New) \
+ V(Array_CloneElementAt) \
+ V(Array_New) \
+ V(BooleanObject_BooleanValue) \
+ V(BooleanObject_New) \
+ V(Context_New) \
+ V(Context_NewRemoteContext) \
+ V(DataView_New) \
+ V(Date_DateTimeConfigurationChangeNotification) \
+ V(Date_New) \
+ V(Date_NumberValue) \
+ V(Debug_Call) \
+ V(Debug_GetMirror) \
+ V(Error_New) \
+ V(External_New) \
+ V(Float32Array_New) \
+ V(Float64Array_New) \
+ V(Function_Call) \
+ V(Function_New) \
+ V(Function_NewInstance) \
+ V(FunctionTemplate_GetFunction) \
+ V(FunctionTemplate_New) \
+ V(FunctionTemplate_NewRemoteInstance) \
+ V(FunctionTemplate_NewWithFastHandler) \
+ V(Int16Array_New) \
+ V(Int32Array_New) \
+ V(Int8Array_New) \
+ V(JSON_Parse) \
+ V(JSON_Stringify) \
+ V(Map_AsArray) \
+ V(Map_Clear) \
+ V(Map_Delete) \
+ V(Map_Get) \
+ V(Map_Has) \
+ V(Map_New) \
+ V(Map_Set) \
+ V(Message_GetEndColumn) \
+ V(Message_GetLineNumber) \
+ V(Message_GetSourceLine) \
+ V(Message_GetStartColumn) \
+ V(NumberObject_New) \
+ V(NumberObject_NumberValue) \
+ V(Object_CallAsConstructor) \
+ V(Object_CallAsFunction) \
+ V(Object_CreateDataProperty) \
+ V(Object_DefineOwnProperty) \
+ V(Object_Delete) \
+ V(Object_DeleteProperty) \
+ V(Object_ForceSet) \
+ V(Object_Get) \
+ V(Object_GetOwnPropertyDescriptor) \
+ V(Object_GetOwnPropertyNames) \
+ V(Object_GetPropertyAttributes) \
+ V(Object_GetPropertyNames) \
+ V(Object_GetRealNamedProperty) \
+ V(Object_GetRealNamedPropertyAttributes) \
+ V(Object_GetRealNamedPropertyAttributesInPrototypeChain) \
+ V(Object_GetRealNamedPropertyInPrototypeChain) \
+ V(Object_HasOwnProperty) \
+ V(Object_HasRealIndexedProperty) \
+ V(Object_HasRealNamedCallbackProperty) \
+ V(Object_HasRealNamedProperty) \
+ V(Object_Int32Value) \
+ V(Object_IntegerValue) \
+ V(Object_New) \
+ V(Object_NumberValue) \
+ V(Object_ObjectProtoToString) \
+ V(Object_Set) \
+ V(Object_SetAccessor) \
+ V(Object_SetIntegrityLevel) \
+ V(Object_SetPrivate) \
+ V(Object_SetPrototype) \
+ V(ObjectTemplate_New) \
+ V(ObjectTemplate_NewInstance) \
+ V(Object_ToArrayIndex) \
+ V(Object_ToDetailString) \
+ V(Object_ToInt32) \
+ V(Object_ToInteger) \
+ V(Object_ToNumber) \
+ V(Object_ToObject) \
+ V(Object_ToString) \
+ V(Object_ToUint32) \
+ V(Object_Uint32Value) \
+ V(Persistent_New) \
+ V(Private_New) \
+ V(Promise_Catch) \
+ V(Promise_Chain) \
+ V(Promise_HasRejectHandler) \
+ V(Promise_Resolver_New) \
+ V(Promise_Resolver_Resolve) \
+ V(Promise_Then) \
+ V(Proxy_New) \
+ V(RangeError_New) \
+ V(ReferenceError_New) \
+ V(RegExp_New) \
+ V(ScriptCompiler_Compile) \
+ V(ScriptCompiler_CompileFunctionInContext) \
+ V(ScriptCompiler_CompileUnbound) \
+ V(Script_Run) \
+ V(Set_Add) \
+ V(Set_AsArray) \
+ V(Set_Clear) \
+ V(Set_Delete) \
+ V(Set_Has) \
+ V(Set_New) \
+ V(SharedArrayBuffer_New) \
+ V(String_Concat) \
+ V(String_NewExternalOneByte) \
+ V(String_NewExternalTwoByte) \
+ V(String_NewFromOneByte) \
+ V(String_NewFromTwoByte) \
+ V(String_NewFromUtf8) \
+ V(StringObject_New) \
+ V(StringObject_StringValue) \
+ V(String_Write) \
+ V(String_WriteUtf8) \
+ V(Symbol_New) \
+ V(SymbolObject_New) \
+ V(SymbolObject_SymbolValue) \
+ V(SyntaxError_New) \
+ V(TryCatch_StackTrace) \
+ V(TypeError_New) \
+ V(Uint16Array_New) \
+ V(Uint32Array_New) \
+ V(Uint8Array_New) \
+ V(Uint8ClampedArray_New) \
+ V(UnboundScript_GetId) \
+ V(UnboundScript_GetLineNumber) \
+ V(UnboundScript_GetName) \
+ V(UnboundScript_GetSourceMappingURL) \
+ V(UnboundScript_GetSourceURL) \
+ V(Value_TypeOf)
+
+#define FOR_EACH_MANUAL_COUNTER(V) \
+ V(AccessorGetterCallback) \
+ V(AccessorNameGetterCallback) \
+ V(AccessorNameSetterCallback) \
+ V(Compile) \
+ V(CompileCode) \
+ V(CompileCodeLazy) \
+ V(CompileDeserialize) \
+ V(CompileEval) \
+ V(CompileFullCode) \
+ V(CompileIgnition) \
+ V(CompileSerialize) \
+ V(DeoptimizeCode) \
+ V(FunctionCallback) \
+ V(GC) \
+ V(GenericNamedPropertyDeleterCallback) \
+ V(GenericNamedPropertyQueryCallback) \
+ V(GenericNamedPropertySetterCallback) \
+ V(IndexedPropertyDeleterCallback) \
+ V(IndexedPropertyGetterCallback) \
+ V(IndexedPropertyQueryCallback) \
+ V(IndexedPropertySetterCallback) \
+ V(InvokeFunctionCallback) \
+ V(JS_Execution) \
+ V(Map_SetPrototype) \
+ V(Map_TransitionToAccessorProperty) \
+ V(Map_TransitionToDataProperty) \
+ V(Object_DeleteProperty) \
+ V(OptimizeCode) \
+ V(Parse) \
+ V(ParseLazy) \
+ V(PropertyCallback) \
+ V(PrototypeMap_TransitionToAccessorProperty) \
+ V(PrototypeMap_TransitionToDataProperty) \
+ V(PrototypeObject_DeleteProperty) \
+ V(RecompileConcurrent) \
+ V(RecompileSynchronous) \
+ /* Dummy counter for the unexpected stub miss. */ \
+ V(UnexpectedStubMiss)
+
+#define FOR_EACH_HANDLER_COUNTER(V) \
+ V(IC_HandlerCacheHit) \
+ V(KeyedLoadIC_LoadIndexedStringStub) \
+ V(KeyedLoadIC_LoadIndexedInterceptorStub) \
+ V(KeyedLoadIC_KeyedLoadSloppyArgumentsStub) \
+ V(KeyedLoadIC_LoadFastElementStub) \
+ V(KeyedLoadIC_LoadDictionaryElementStub) \
+ V(KeyedLoadIC_SlowStub) \
+ V(KeyedStoreIC_KeyedStoreSloppyArgumentsStub) \
+ V(KeyedStoreIC_StoreFastElementStub) \
+ V(KeyedStoreIC_StoreElementStub) \
+ V(KeyedStoreIC_Polymorphic) \
+ V(LoadIC_FunctionPrototypeStub) \
+ V(LoadIC_LoadApiGetterStub) \
+ V(LoadIC_LoadCallback) \
+ V(LoadIC_LoadConstant) \
+ V(LoadIC_LoadConstantStub) \
+ V(LoadIC_LoadField) \
+ V(LoadIC_LoadFieldStub) \
+ V(LoadIC_LoadGlobal) \
+ V(LoadIC_LoadInterceptor) \
+ V(LoadIC_LoadNonexistent) \
+ V(LoadIC_LoadNormal) \
+ V(LoadIC_LoadScriptContextFieldStub) \
+ V(LoadIC_LoadViaGetter) \
+ V(LoadIC_SlowStub) \
+ V(LoadIC_StringLengthStub) \
+ V(StoreIC_SlowStub) \
+ V(StoreIC_StoreCallback) \
+ V(StoreIC_StoreField) \
+ V(StoreIC_StoreFieldStub) \
+ V(StoreIC_StoreGlobal) \
+ V(StoreIC_StoreGlobalTransition) \
+ V(StoreIC_StoreInterceptorStub) \
+ V(StoreIC_StoreNormal) \
+ V(StoreIC_StoreScriptContextFieldStub) \
+ V(StoreIC_StoreTransition) \
+ V(StoreIC_StoreViaSetter)
+
+class RuntimeCallStats {
+ public:
+ typedef RuntimeCallCounter RuntimeCallStats::*CounterId;
+
+#define CALL_RUNTIME_COUNTER(name) \
+ RuntimeCallCounter name = RuntimeCallCounter(#name);
+ FOR_EACH_MANUAL_COUNTER(CALL_RUNTIME_COUNTER)
+#undef CALL_RUNTIME_COUNTER
#define CALL_RUNTIME_COUNTER(name, nargs, ressize) \
RuntimeCallCounter Runtime_##name = RuntimeCallCounter(#name);
FOR_EACH_INTRINSIC(CALL_RUNTIME_COUNTER)
#undef CALL_RUNTIME_COUNTER
-#define CALL_BUILTIN_COUNTER(name, type) \
+#define CALL_BUILTIN_COUNTER(name) \
RuntimeCallCounter Builtin_##name = RuntimeCallCounter(#name);
BUILTIN_LIST_C(CALL_BUILTIN_COUNTER)
#undef CALL_BUILTIN_COUNTER
-
- // Counter to track recursive time events.
- RuntimeCallTimer* current_timer_ = NULL;
+#define CALL_BUILTIN_COUNTER(name) \
+ RuntimeCallCounter API_##name = RuntimeCallCounter("API_" #name);
+ FOR_EACH_API_COUNTER(CALL_BUILTIN_COUNTER)
+#undef CALL_BUILTIN_COUNTER
+#define CALL_BUILTIN_COUNTER(name) \
+ RuntimeCallCounter Handler_##name = RuntimeCallCounter(#name);
+ FOR_EACH_HANDLER_COUNTER(CALL_BUILTIN_COUNTER)
+#undef CALL_BUILTIN_COUNTER
// Starting measuring the time for a function. This will establish the
// connection to the parent counter for properly calculating the own times.
- void Enter(RuntimeCallCounter* counter);
- void Enter(RuntimeCallTimer* timer);
+ static void Enter(Isolate* isolate, RuntimeCallTimer* timer,
+ CounterId counter_id);
+
// Leave a scope for a measured runtime function. This will properly add
// the time delta to the current_counter and subtract the delta from its
// parent.
- void Leave();
- void Leave(RuntimeCallTimer* timer);
+ static void Leave(Isolate* isolate, RuntimeCallTimer* timer);
- RuntimeCallTimer* current_timer() { return current_timer_; }
+ // Set counter id for the innermost measurement. It can be used to refine
+ // event kind when a runtime entry counter is too generic.
+ static void CorrectCurrentCounterId(Isolate* isolate, CounterId counter_id);
void Reset();
void Print(std::ostream& os);
RuntimeCallStats() { Reset(); }
+ RuntimeCallTimer* current_timer() { return current_timer_; }
+
+ private:
+ // Counter to track recursive time events.
+ RuntimeCallTimer* current_timer_ = NULL;
};
+#define TRACE_RUNTIME_CALL_STATS(isolate, counter_name) \
+ do { \
+ if (FLAG_runtime_call_stats) { \
+ RuntimeCallStats::CorrectCurrentCounterId( \
+ isolate, &RuntimeCallStats::counter_name); \
+ } \
+ } while (false)
+
+#define TRACE_HANDLER_STATS(isolate, counter_name) \
+ TRACE_RUNTIME_CALL_STATS(isolate, Handler_##counter_name)
+
// A RuntimeCallTimerScopes wraps around a RuntimeCallTimer to measure the
// the time of C++ scope.
class RuntimeCallTimerScope {
public:
- inline explicit RuntimeCallTimerScope(Isolate* isolate,
- RuntimeCallCounter* counter) {
- if (FLAG_runtime_call_stats) Enter(isolate, counter);
+ inline RuntimeCallTimerScope(Isolate* isolate,
+ RuntimeCallStats::CounterId counter_id) {
+ if (V8_UNLIKELY(FLAG_runtime_call_stats)) {
+ isolate_ = isolate;
+ RuntimeCallStats::Enter(isolate_, &timer_, counter_id);
+ }
}
+ // This constructor is here just to avoid calling GetIsolate() when the
+ // stats are disabled and the isolate is not directly available.
+ inline RuntimeCallTimerScope(HeapObject* heap_object,
+ RuntimeCallStats::CounterId counter_id);
+
inline ~RuntimeCallTimerScope() {
- if (FLAG_runtime_call_stats) Leave();
+ if (V8_UNLIKELY(FLAG_runtime_call_stats)) {
+ RuntimeCallStats::Leave(isolate_, &timer_);
+ }
}
- void Enter(Isolate* isolate, RuntimeCallCounter* counter);
- void Leave();
-
private:
Isolate* isolate_;
RuntimeCallTimer timer_;
@@ -588,44 +835,57 @@ class RuntimeCallTimerScope {
101) \
HR(code_cache_reject_reason, V8.CodeCacheRejectReason, 1, 6, 6) \
HR(errors_thrown_per_context, V8.ErrorsThrownPerContext, 0, 200, 20) \
- HR(debug_feature_usage, V8.DebugFeatureUsage, 1, 7, 7)
-
-#define HISTOGRAM_TIMER_LIST(HT) \
- /* Garbage collection timers. */ \
- HT(gc_compactor, V8.GCCompactor, 10000, MILLISECOND) \
- HT(gc_finalize, V8.GCFinalizeMC, 10000, MILLISECOND) \
- HT(gc_finalize_reduce_memory, V8.GCFinalizeMCReduceMemory, 10000, \
- MILLISECOND) \
- HT(gc_scavenger, V8.GCScavenger, 10000, MILLISECOND) \
- HT(gc_context, V8.GCContext, 10000, \
- MILLISECOND) /* GC context cleanup time */ \
- HT(gc_idle_notification, V8.GCIdleNotification, 10000, MILLISECOND) \
- HT(gc_incremental_marking, V8.GCIncrementalMarking, 10000, MILLISECOND) \
- HT(gc_incremental_marking_start, V8.GCIncrementalMarkingStart, 10000, \
- MILLISECOND) \
- HT(gc_incremental_marking_finalize, V8.GCIncrementalMarkingFinalize, 10000, \
- MILLISECOND) \
- HT(gc_low_memory_notification, V8.GCLowMemoryNotification, 10000, \
- MILLISECOND) \
- /* Parsing timers. */ \
- HT(parse, V8.ParseMicroSeconds, 1000000, MICROSECOND) \
- HT(parse_lazy, V8.ParseLazyMicroSeconds, 1000000, MICROSECOND) \
- HT(pre_parse, V8.PreParseMicroSeconds, 1000000, MICROSECOND) \
- /* Compilation times. */ \
- HT(compile, V8.CompileMicroSeconds, 1000000, MICROSECOND) \
- HT(compile_eval, V8.CompileEvalMicroSeconds, 1000000, MICROSECOND) \
- /* Serialization as part of compilation (code caching) */ \
- HT(compile_serialize, V8.CompileSerializeMicroSeconds, 100000, MICROSECOND) \
- HT(compile_deserialize, V8.CompileDeserializeMicroSeconds, 1000000, \
- MICROSECOND) \
- /* Total compilation time incl. caching/parsing */ \
- HT(compile_script, V8.CompileScriptMicroSeconds, 1000000, MICROSECOND)
-
+ HR(debug_feature_usage, V8.DebugFeatureUsage, 1, 7, 7) \
+ /* Asm/Wasm. */ \
+ HR(wasm_functions_per_module, V8.WasmFunctionsPerModule, 1, 10000, 51)
+
+#define HISTOGRAM_TIMER_LIST(HT) \
+ /* Garbage collection timers. */ \
+ HT(gc_compactor, V8.GCCompactor, 10000, MILLISECOND) \
+ HT(gc_finalize, V8.GCFinalizeMC, 10000, MILLISECOND) \
+ HT(gc_finalize_reduce_memory, V8.GCFinalizeMCReduceMemory, 10000, \
+ MILLISECOND) \
+ HT(gc_scavenger, V8.GCScavenger, 10000, MILLISECOND) \
+ HT(gc_context, V8.GCContext, 10000, \
+ MILLISECOND) /* GC context cleanup time */ \
+ HT(gc_idle_notification, V8.GCIdleNotification, 10000, MILLISECOND) \
+ HT(gc_incremental_marking, V8.GCIncrementalMarking, 10000, MILLISECOND) \
+ HT(gc_incremental_marking_start, V8.GCIncrementalMarkingStart, 10000, \
+ MILLISECOND) \
+ HT(gc_incremental_marking_finalize, V8.GCIncrementalMarkingFinalize, 10000, \
+ MILLISECOND) \
+ HT(gc_low_memory_notification, V8.GCLowMemoryNotification, 10000, \
+ MILLISECOND) \
+ /* Parsing timers. */ \
+ HT(parse, V8.ParseMicroSeconds, 1000000, MICROSECOND) \
+ HT(parse_lazy, V8.ParseLazyMicroSeconds, 1000000, MICROSECOND) \
+ HT(pre_parse, V8.PreParseMicroSeconds, 1000000, MICROSECOND) \
+ /* Compilation times. */ \
+ HT(compile, V8.CompileMicroSeconds, 1000000, MICROSECOND) \
+ HT(compile_eval, V8.CompileEvalMicroSeconds, 1000000, MICROSECOND) \
+ /* Serialization as part of compilation (code caching) */ \
+ HT(compile_serialize, V8.CompileSerializeMicroSeconds, 100000, MICROSECOND) \
+ HT(compile_deserialize, V8.CompileDeserializeMicroSeconds, 1000000, \
+ MICROSECOND) \
+ /* Total compilation time incl. caching/parsing */ \
+ HT(compile_script, V8.CompileScriptMicroSeconds, 1000000, MICROSECOND) \
+ /* Total JavaScript execution time (including callbacks and runtime calls */ \
+ HT(execute, V8.Execute, 1000000, MICROSECOND) \
+ /* Asm/Wasm */ \
+ HT(wasm_instantiate_module_time, V8.WasmInstantiateModuleMicroSeconds, \
+ 1000000, MICROSECOND) \
+ HT(wasm_decode_module_time, V8.WasmDecodeModuleMicroSeconds, 1000000, \
+ MICROSECOND) \
+ HT(wasm_decode_function_time, V8.WasmDecodeFunctionMicroSeconds, 1000000, \
+ MICROSECOND) \
+ HT(wasm_compile_module_time, V8.WasmCompileModuleMicroSeconds, 1000000, \
+ MICROSECOND) \
+ HT(wasm_compile_function_time, V8.WasmCompileFunctionMicroSeconds, 1000000, \
+ MICROSECOND)
#define AGGREGATABLE_HISTOGRAM_TIMER_LIST(AHT) \
AHT(compile_lazy, V8.CompileLazyMicroSeconds)
-
#define HISTOGRAM_PERCENTAGE_LIST(HP) \
/* Heap fragmentation. */ \
HP(external_fragmentation_total, V8.MemoryExternalFragmentationTotal) \
@@ -639,10 +899,7 @@ class RuntimeCallTimerScope {
HP(heap_fraction_old_space, V8.MemoryHeapFractionOldSpace) \
HP(heap_fraction_code_space, V8.MemoryHeapFractionCodeSpace) \
HP(heap_fraction_map_space, V8.MemoryHeapFractionMapSpace) \
- HP(heap_fraction_lo_space, V8.MemoryHeapFractionLoSpace) \
- /* Percentage of crankshafted codegen. */ \
- HP(codegen_fraction_crankshaft, V8.CodegenFractionCrankshaft)
-
+ HP(heap_fraction_lo_space, V8.MemoryHeapFractionLoSpace)
#define HISTOGRAM_LEGACY_MEMORY_LIST(HM) \
HM(heap_sample_total_committed, V8.MemoryHeapSampleTotalCommitted) \
@@ -651,10 +908,17 @@ class RuntimeCallTimerScope {
HM(heap_sample_code_space_committed, V8.MemoryHeapSampleCodeSpaceCommitted) \
HM(heap_sample_maximum_committed, V8.MemoryHeapSampleMaximumCommitted)
-#define HISTOGRAM_MEMORY_LIST(HM) \
- HM(memory_heap_committed, V8.MemoryHeapCommitted) \
- HM(memory_heap_used, V8.MemoryHeapUsed)
-
+#define HISTOGRAM_MEMORY_LIST(HM) \
+ HM(memory_heap_committed, V8.MemoryHeapCommitted) \
+ HM(memory_heap_used, V8.MemoryHeapUsed) \
+ /* Asm/Wasm */ \
+ HM(wasm_decode_module_peak_memory_bytes, V8.WasmDecodeModulePeakMemoryBytes) \
+ HM(wasm_compile_function_peak_memory_bytes, \
+ V8.WasmCompileFunctionPeakMemoryBytes) \
+ HM(wasm_min_mem_pages_count, V8.WasmMinMemPagesCount) \
+ HM(wasm_max_mem_pages_count, V8.WasmMaxMemPagesCount) \
+ HM(wasm_function_size_bytes, V8.WasmFunctionSizeBytes) \
+ HM(wasm_module_size_bytes, V8.WasmModuleSizeBytes)
// WARNING: STATS_COUNTER_LIST_* is a very large macro that is causing MSVC
// Intellisense to crash. It was broken into two macros (each of length 40
@@ -703,7 +967,6 @@ class RuntimeCallTimerScope {
/* The store-buffer implementation of the write barrier. */ \
SC(store_buffer_overflows, V8.StoreBufferOverflows)
-
#define STATS_COUNTER_LIST_2(SC) \
/* Number of code stubs. */ \
SC(code_stubs, V8.CodeStubs) \
@@ -743,8 +1006,6 @@ class RuntimeCallTimerScope {
SC(enum_cache_hits, V8.EnumCacheHits) \
SC(enum_cache_misses, V8.EnumCacheMisses) \
SC(fast_new_closure_total, V8.FastNewClosureTotal) \
- SC(fast_new_closure_try_optimized, V8.FastNewClosureTryOptimized) \
- SC(fast_new_closure_install_optimized, V8.FastNewClosureInstallOptimized) \
SC(string_add_runtime, V8.StringAddRuntime) \
SC(string_add_native, V8.StringAddNative) \
SC(string_add_runtime_ext_to_one_byte, V8.StringAddRuntimeExtToOneByte) \
@@ -756,14 +1017,12 @@ class RuntimeCallTimerScope {
SC(regexp_entry_native, V8.RegExpEntryNative) \
SC(number_to_string_native, V8.NumberToStringNative) \
SC(number_to_string_runtime, V8.NumberToStringRuntime) \
- SC(math_atan2_runtime, V8.MathAtan2Runtime) \
- SC(math_clz32_runtime, V8.MathClz32Runtime) \
SC(math_exp_runtime, V8.MathExpRuntime) \
SC(math_log_runtime, V8.MathLogRuntime) \
SC(math_pow_runtime, V8.MathPowRuntime) \
SC(stack_interrupts, V8.StackInterrupts) \
SC(runtime_profiler_ticks, V8.RuntimeProfilerTicks) \
- SC(runtime_calls, V8.RuntimeCalls) \
+ SC(runtime_calls, V8.RuntimeCalls) \
SC(bounds_checks_eliminated, V8.BoundsChecksEliminated) \
SC(bounds_checks_hoisted, V8.BoundsChecksHoisted) \
SC(soft_deopts_requested, V8.SoftDeoptsRequested) \
@@ -794,7 +1053,9 @@ class RuntimeCallTimerScope {
/* Total code size (including metadata) of baseline code or bytecode. */ \
SC(total_baseline_code_size, V8.TotalBaselineCodeSize) \
/* Total count of functions compiled using the baseline compiler. */ \
- SC(total_baseline_compile_count, V8.TotalBaselineCompileCount)
+ SC(total_baseline_compile_count, V8.TotalBaselineCompileCount) \
+ SC(wasm_generated_code_size, V8.WasmGeneratedCodeBytes) \
+ SC(wasm_reloc_size, V8.WasmRelocBytes)
// This file contains all the v8 counters that are in use.
class Counters {