Index: src/wasm/wasm-module.cc |
diff --git a/src/wasm/wasm-module.cc b/src/wasm/wasm-module.cc |
index fbe9a91c1a130ead3b125dd1b5f1e5b21fe31510..6df2da1139ecb86de60bb7eb9e0f656072291a26 100644 |
--- a/src/wasm/wasm-module.cc |
+++ b/src/wasm/wasm-module.cc |
@@ -1153,8 +1153,58 @@ class InstantiationHelper { |
return {}; |
} |
- HistogramTimerScope wasm_instantiate_module_time_scope( |
- isolate_->counters()->wasm_instantiate_module_time()); |
+ // Record build time into correct bucket, then build instance. |
+ if (module_->origin == ModuleOrigin::kWasmOrigin) { |
+ HistogramTimerScope wasm_instantiate_module_time_scope( |
+ isolate_->counters()->wasm_instantiate_wasm_module_time()); |
+ return BuildInstance(); |
+ } else { |
+ HistogramTimerScope wasm_instantiate_module_time_scope( |
+ isolate_->counters()->wasm_instantiate_asm_module_time()); |
+ return BuildInstance(); |
+ } |
bbudge
2017/03/23 22:04:58
Why not return BuildInstance() here? Or why not ju
bbudge
2017/03/23 22:14:48
I didn't see the scope objects before. You could c
Karl
2017/03/24 16:49:19
I factored out the rest of the code, as you note,
|
+ } |
+ |
+ private: |
+ // Represents the initialized state of a table. |
+ struct TableInstance { |
+ Handle<WasmTableObject> table_object; // WebAssembly.Table instance |
+ Handle<FixedArray> js_wrappers; // JSFunctions exported |
+ Handle<FixedArray> function_table; // internal code array |
+ Handle<FixedArray> signature_table; // internal sig array |
+ }; |
+ |
+ Isolate* isolate_; |
+ WasmModule* const module_; |
+ ErrorThrower* thrower_; |
+ Handle<WasmModuleObject> module_object_; |
+ Handle<JSReceiver> ffi_; // TODO(titzer): Use MaybeHandle |
+ Handle<JSArrayBuffer> memory_; // TODO(titzer): Use MaybeHandle |
+ Handle<JSArrayBuffer> globals_; |
+ Handle<WasmCompiledModule> compiled_module_; |
+ std::vector<TableInstance> table_instances_; |
+ std::vector<Handle<JSFunction>> js_wrappers_; |
+ JSToWasmWrapperCache js_to_wasm_cache_; |
+ |
+ // Helper routines to print out errors with imports. |
+ void ReportLinkError(const char* error, uint32_t index, |
+ Handle<String> module_name, Handle<String> import_name) { |
+ thrower_->LinkError( |
+ "Import #%d module=\"%.*s\" function=\"%.*s\" error: %s", index, |
+ module_name->length(), module_name->ToCString().get(), |
+ import_name->length(), import_name->ToCString().get(), error); |
+ } |
+ |
+ MaybeHandle<Object> ReportLinkError(const char* error, uint32_t index, |
+ Handle<String> module_name) { |
+ thrower_->LinkError("Import #%d module=\"%.*s\" error: %s", index, |
+ module_name->length(), module_name->ToCString().get(), |
+ error); |
+ return MaybeHandle<Object>(); |
+ } |
+ |
+ // Build an instance, in all its glory. |
+ MaybeHandle<WasmInstanceObject> BuildInstance() { |
Factory* factory = isolate_->factory(); |
//-------------------------------------------------------------------------- |
@@ -1524,44 +1574,6 @@ class InstantiationHelper { |
return instance; |
} |
- private: |
- // Represents the initialized state of a table. |
- struct TableInstance { |
- Handle<WasmTableObject> table_object; // WebAssembly.Table instance |
- Handle<FixedArray> js_wrappers; // JSFunctions exported |
- Handle<FixedArray> function_table; // internal code array |
- Handle<FixedArray> signature_table; // internal sig array |
- }; |
- |
- Isolate* isolate_; |
- WasmModule* const module_; |
- ErrorThrower* thrower_; |
- Handle<WasmModuleObject> module_object_; |
- Handle<JSReceiver> ffi_; // TODO(titzer): Use MaybeHandle |
- Handle<JSArrayBuffer> memory_; // TODO(titzer): Use MaybeHandle |
- Handle<JSArrayBuffer> globals_; |
- Handle<WasmCompiledModule> compiled_module_; |
- std::vector<TableInstance> table_instances_; |
- std::vector<Handle<JSFunction>> js_wrappers_; |
- JSToWasmWrapperCache js_to_wasm_cache_; |
- |
- // Helper routines to print out errors with imports. |
- void ReportLinkError(const char* error, uint32_t index, |
- Handle<String> module_name, Handle<String> import_name) { |
- thrower_->LinkError( |
- "Import #%d module=\"%.*s\" function=\"%.*s\" error: %s", index, |
- module_name->length(), module_name->ToCString().get(), |
- import_name->length(), import_name->ToCString().get(), error); |
- } |
- |
- MaybeHandle<Object> ReportLinkError(const char* error, uint32_t index, |
- Handle<String> module_name) { |
- thrower_->LinkError("Import #%d module=\"%.*s\" error: %s", index, |
- module_name->length(), module_name->ToCString().get(), |
- error); |
- return MaybeHandle<Object>(); |
- } |
- |
// Look up an import value in the {ffi_} object. |
MaybeHandle<Object> LookupImport(uint32_t index, Handle<String> module_name, |
Handle<String> import_name) { |