Skip to content

Commit a626bc0

Browse files
ecmzieglerCommit Bot
authored andcommitted
[ukm][wasm] Add event WasmModuleInstantiated
Add an event for recording metrics related to instantiating Wasm modules. [email protected] Bug: chromium:1092417 Change-Id: I5c87aba7d2cdb012951249b336684580595844cd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2351675 Commit-Queue: Emanuel Ziegler <[email protected]> Reviewed-by: Clemens Backes <[email protected]> Cr-Commit-Position: refs/heads/master@{#69472}
1 parent f16d3ab commit a626bc0

File tree

2 files changed

+23
-4
lines changed

2 files changed

+23
-4
lines changed

src/wasm/module-instantiate.cc

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
#include "src/asmjs/asm-js.h"
88
#include "src/logging/counters.h"
9+
#include "src/logging/metrics.h"
910
#include "src/numbers/conversions-inl.h"
1011
#include "src/objects/property-descriptor.h"
1112
#include "src/tracing/trace-event.h"
@@ -203,8 +204,8 @@ Handle<Map> AllocateSubRtt(Isolate* isolate,
203204
// It closes over the {Isolate}, the {ErrorThrower}, etc.
204205
class InstanceBuilder {
205206
public:
206-
InstanceBuilder(Isolate* isolate, ErrorThrower* thrower,
207-
Handle<WasmModuleObject> module_object,
207+
InstanceBuilder(Isolate* isolate, v8::metrics::Recorder::ContextId context_id,
208+
ErrorThrower* thrower, Handle<WasmModuleObject> module_object,
208209
MaybeHandle<JSReceiver> ffi,
209210
MaybeHandle<JSArrayBuffer> memory_buffer);
210211

@@ -222,6 +223,7 @@ class InstanceBuilder {
222223
};
223224

224225
Isolate* isolate_;
226+
v8::metrics::Recorder::ContextId context_id_;
225227
const WasmFeatures enabled_;
226228
const WasmModule* const module_;
227229
ErrorThrower* thrower_;
@@ -357,7 +359,9 @@ MaybeHandle<WasmInstanceObject> InstantiateToInstanceObject(
357359
Isolate* isolate, ErrorThrower* thrower,
358360
Handle<WasmModuleObject> module_object, MaybeHandle<JSReceiver> imports,
359361
MaybeHandle<JSArrayBuffer> memory_buffer) {
360-
InstanceBuilder builder(isolate, thrower, module_object, imports,
362+
v8::metrics::Recorder::ContextId context_id =
363+
isolate->GetOrRegisterRecorderContextId(isolate->native_context());
364+
InstanceBuilder builder(isolate, context_id, thrower, module_object, imports,
361365
memory_buffer);
362366
auto instance = builder.Build();
363367
if (!instance.is_null() && builder.ExecuteStartFunction()) {
@@ -367,11 +371,14 @@ MaybeHandle<WasmInstanceObject> InstantiateToInstanceObject(
367371
return {};
368372
}
369373

370-
InstanceBuilder::InstanceBuilder(Isolate* isolate, ErrorThrower* thrower,
374+
InstanceBuilder::InstanceBuilder(Isolate* isolate,
375+
v8::metrics::Recorder::ContextId context_id,
376+
ErrorThrower* thrower,
371377
Handle<WasmModuleObject> module_object,
372378
MaybeHandle<JSReceiver> ffi,
373379
MaybeHandle<JSArrayBuffer> memory_buffer)
374380
: isolate_(isolate),
381+
context_id_(context_id),
375382
enabled_(module_object->native_module()->enabled_features()),
376383
module_(module_object->module()),
377384
thrower_(thrower),
@@ -401,6 +408,11 @@ MaybeHandle<WasmInstanceObject> InstanceBuilder::Build() {
401408
// Record build time into correct bucket, then build instance.
402409
TimedHistogramScope wasm_instantiate_module_time_scope(SELECT_WASM_COUNTER(
403410
isolate_->counters(), module_->origin, wasm_instantiate, module_time));
411+
v8::metrics::WasmModuleInstantiated wasm_module_instantiated;
412+
metrics::TimedScope<v8::metrics::WasmModuleInstantiated>
413+
wasm_module_instantiated_timed_scope(
414+
&wasm_module_instantiated,
415+
&v8::metrics::WasmModuleInstantiated::wall_clock_time_in_us);
404416
NativeModule* native_module = module_object_->native_module();
405417

406418
//--------------------------------------------------------------------------
@@ -579,6 +591,7 @@ MaybeHandle<WasmInstanceObject> InstanceBuilder::Build() {
579591
//--------------------------------------------------------------------------
580592
int num_imported_functions = ProcessImports(instance);
581593
if (num_imported_functions < 0) return {};
594+
wasm_module_instantiated.imported_function_count = num_imported_functions;
582595

583596
//--------------------------------------------------------------------------
584597
// Create maps for managed objects (GC proposal).
@@ -714,6 +727,10 @@ MaybeHandle<WasmInstanceObject> InstanceBuilder::Build() {
714727
DCHECK(!isolate_->has_pending_exception());
715728
TRACE("Successfully built instance for module %p\n",
716729
module_object_->native_module());
730+
wasm_module_instantiated.success = true;
731+
wasm_module_instantiated_timed_scope.Stop();
732+
isolate_->metrics_recorder()->DelayMainThreadEvent(wasm_module_instantiated,
733+
context_id_);
717734
return instance;
718735
}
719736

src/wasm/module-instantiate.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
#define V8_WASM_MODULE_INSTANTIATE_H_
77

88
#include <stdint.h>
9+
10+
#include "include/v8-metrics.h"
911
#include "include/v8config.h"
1012

1113
namespace v8 {

0 commit comments

Comments
 (0)