Commit c7892d35 authored by Andreas Haas's avatar Andreas Haas Committed by Commit Bot

[wasm] Extract module compilation code into module-compiler.cc

This CL extracts the classes CompilationHelper, InstantiationHelper,
and AsyncCompileJob from wasm-module.cc and puts them into
module-compiler.{h|cc}. This is necessary to introduce a
WasmCompilationManager which is known to the isolate and manages the
lifetime of all AsyncCompileJobs.

In addition to the mechanical changes of copying the code and splitting
class declaration from instantiation, I did the following changes:

* I renamed the CompilationHelper to ModuleCompiler.
* A finalizer function is passed to the InstantiationHelper as a
  parameter.
* Adjusted UpdateDispatchTable in wasm-module.cc to make it available in
  wasm-module.h, also with the internal signature.
* Duplicate the ResolvePromise/RejectPromise helper functions.

I did not rename InstantiationHelper because I could not come up with a
good name, and it could benefit from a small special refactoring anyways.

BUG=v8:6436
R=clemensh@chromium.org, mtrofin@chromium.org

Change-Id: I4abe854c36dfc995b34c9d7b3e7ec0f4f0aa562e
Reviewed-on: https://chromium-review.googlesource.com/525572
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Reviewed-by: 's avatarMircea Trofin <mtrofin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#45773}
parent 18d82682
......@@ -2019,6 +2019,8 @@ v8_source_set("v8_base") {
"src/wasm/leb-helper.h",
"src/wasm/local-decl-encoder.cc",
"src/wasm/local-decl-encoder.h",
"src/wasm/module-compiler.cc",
"src/wasm/module-compiler.h",
"src/wasm/module-decoder.cc",
"src/wasm/module-decoder.h",
"src/wasm/signature-map.cc",
......
......@@ -1475,6 +1475,8 @@
'wasm/leb-helper.h',
'wasm/local-decl-encoder.cc',
'wasm/local-decl-encoder.h',
'wasm/module-compiler.cc',
'wasm/module-compiler.h',
'wasm/module-decoder.cc',
'wasm/module-decoder.h',
'wasm/signature-map.cc',
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -441,10 +441,20 @@ void DetachWebAssemblyMemoryBuffer(Isolate* isolate,
Handle<JSArrayBuffer> buffer,
bool free_memory);
// The returned pointer is owned by the wasm instance target belongs to. The
// result is alive as long as the instance exists.
WasmFunction* GetWasmFunctionForImportWrapper(Isolate* isolate,
Handle<Object> target);
Handle<Code> UnwrapImportWrapper(Handle<Object> import_wrapper);
void TableSet(ErrorThrower* thrower, Isolate* isolate,
Handle<WasmTableObject> table, int32_t index,
Handle<JSFunction> function);
void UpdateDispatchTables(Isolate* isolate, Handle<FixedArray> dispatch_tables,
int index, WasmFunction* function, Handle<Code> code);
//============================================================================
//== Compilation and instantiation ===========================================
//============================================================================
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment