| Index: src/wasm/wasm-module.cc
|
| diff --git a/src/wasm/wasm-module.cc b/src/wasm/wasm-module.cc
|
| index 68254a125576f734d0181117cbfcacee22d6e1a0..a58269657a935aa82a13339d987fdb4b814048e8 100644
|
| --- a/src/wasm/wasm-module.cc
|
| +++ b/src/wasm/wasm-module.cc
|
| @@ -546,43 +546,23 @@ class WasmCompilationTask : public CancelableTask {
|
| base::AtomicNumber<size_t>* next_unit_;
|
| };
|
|
|
| -// Records statistics on the code generated by compiling WASM functions.
|
| -struct CodeStats {
|
| - size_t code_size;
|
| - size_t reloc_size;
|
| -
|
| - inline CodeStats() : code_size(0), reloc_size(0) {}
|
| -
|
| - inline void Record(Code* code) {
|
| - if (FLAG_print_wasm_code_size) {
|
| - code_size += code->body_size();
|
| - reloc_size += code->relocation_info()->length();
|
| - }
|
| - }
|
| -
|
| - void Record(const std::vector<Handle<Code>>& functions) {
|
| - if (FLAG_print_wasm_code_size) {
|
| - for (Handle<Code> c : functions) Record(*c);
|
| - }
|
| - }
|
| +static void RecordStats(Isolate* isolate, Code* code) {
|
| + isolate->counters()->wasm_generated_code_size()->Increment(code->body_size());
|
| + isolate->counters()->wasm_reloc_size()->Increment(
|
| + code->relocation_info()->length());
|
| +}
|
|
|
| - void Record(Handle<FixedArray> functions) {
|
| - if (FLAG_print_wasm_code_size) {
|
| - DisallowHeapAllocation no_gc;
|
| - for (int i = 0; i < functions->length(); ++i) {
|
| - Code* code = Code::cast(functions->get(i));
|
| - Record(code);
|
| - }
|
| - }
|
| - }
|
| +static void RecordStats(Isolate* isolate,
|
| + const std::vector<Handle<Code>>& functions) {
|
| + for (Handle<Code> c : functions) RecordStats(isolate, *c);
|
| +}
|
|
|
| - inline void Report() {
|
| - if (FLAG_print_wasm_code_size) {
|
| - PrintF("Total generated wasm code: %zu bytes\n", code_size);
|
| - PrintF("Total generated wasm reloc: %zu bytes\n", reloc_size);
|
| - }
|
| +static void RecordStats(Isolate* isolate, Handle<FixedArray> functions) {
|
| + DisallowHeapAllocation no_gc;
|
| + for (int i = 0; i < functions->length(); ++i) {
|
| + RecordStats(isolate, Code::cast(functions->get(i)));
|
| }
|
| -};
|
| +}
|
|
|
| Handle<FixedArray> GetImportsMetadata(Factory* factory,
|
| const WasmModule* module) {
|
| @@ -914,7 +894,7 @@ bool SetupInstanceHeap(Isolate* isolate, Handle<FixedArray> compiled_module,
|
|
|
| bool SetupImports(Isolate* isolate, Handle<FixedArray> compiled_module,
|
| Handle<JSObject> instance, ErrorThrower* thrower,
|
| - Handle<JSReceiver> ffi, CodeStats* stats) {
|
| + Handle<JSReceiver> ffi) {
|
| //-------------------------------------------------------------------------
|
| // Compile wrappers to imported functions.
|
| //-------------------------------------------------------------------------
|
| @@ -929,7 +909,7 @@ bool SetupImports(Isolate* isolate, Handle<FixedArray> compiled_module,
|
| }
|
| }
|
|
|
| - stats->Record(import_code);
|
| + RecordStats(isolate, import_code);
|
|
|
| Handle<FixedArray> code_table = Handle<FixedArray>(
|
| FixedArray::cast(instance->GetInternalField(kWasmModuleCodeTable)));
|
| @@ -947,8 +927,7 @@ bool SetupImports(Isolate* isolate, Handle<FixedArray> compiled_module,
|
| }
|
|
|
| bool SetupExportsObject(Handle<FixedArray> compiled_module, Isolate* isolate,
|
| - Handle<JSObject> instance, ErrorThrower* thrower,
|
| - CodeStats* stats) {
|
| + Handle<JSObject> instance, ErrorThrower* thrower) {
|
| Factory* factory = isolate->factory();
|
| bool mem_export =
|
| static_cast<bool>(Smi::cast(compiled_module->get(kExportMem))->value());
|
| @@ -977,7 +956,7 @@ bool SetupExportsObject(Handle<FixedArray> compiled_module, Isolate* isolate,
|
| for (int i = 0; i < exports_size; ++i) {
|
| if (thrower->error()) return false;
|
| Handle<JSFunction> function = exports->GetValueChecked<JSFunction>(i);
|
| - stats->Record(function->code());
|
| + RecordStats(isolate, function->code());
|
| Handle<String> name =
|
| Handle<String>(String::cast(function->shared()->name()));
|
| function->SetInternalField(0, *instance);
|
| @@ -1143,12 +1122,11 @@ MaybeHandle<JSObject> WasmModule::Instantiate(
|
| ErrorThrower thrower(isolate, "WasmModule::Instantiate()");
|
| Factory* factory = isolate->factory();
|
|
|
| - CodeStats code_stats;
|
| // These fields are compulsory.
|
| Handle<FixedArray> code_table =
|
| compiled_module->GetValueChecked<FixedArray>(kFunctions);
|
|
|
| - code_stats.Record(code_table);
|
| + RecordStats(isolate, code_table);
|
|
|
| MaybeHandle<JSObject> nothing;
|
|
|
| @@ -1161,10 +1139,8 @@ MaybeHandle<JSObject> WasmModule::Instantiate(
|
| if (!(SetupInstanceHeap(isolate, compiled_module, js_object, memory,
|
| &thrower) &&
|
| SetupGlobals(isolate, compiled_module, js_object, &thrower) &&
|
| - SetupImports(isolate, compiled_module, js_object, &thrower, ffi,
|
| - &code_stats) &&
|
| - SetupExportsObject(compiled_module, isolate, js_object, &thrower,
|
| - &code_stats))) {
|
| + SetupImports(isolate, compiled_module, js_object, &thrower, ffi) &&
|
| + SetupExportsObject(compiled_module, isolate, js_object, &thrower))) {
|
| return nothing;
|
| }
|
|
|
| @@ -1176,7 +1152,7 @@ MaybeHandle<JSObject> WasmModule::Instantiate(
|
| if (!maybe_startup_fct.is_null()) {
|
| HandleScope scope(isolate);
|
| Handle<JSFunction> startup_fct = maybe_startup_fct.ToHandleChecked();
|
| - code_stats.Record(startup_fct->code());
|
| + RecordStats(isolate, startup_fct->code());
|
| startup_fct->SetInternalField(0, *js_object);
|
| // Call the JS function.
|
| Handle<Object> undefined = isolate->factory()->undefined_value();
|
| @@ -1189,8 +1165,6 @@ MaybeHandle<JSObject> WasmModule::Instantiate(
|
| }
|
| }
|
|
|
| - code_stats.Report();
|
| -
|
| DCHECK(wasm::IsWasmObject(*js_object));
|
| return js_object;
|
| }
|
|
|