Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(256)

Unified Diff: src/wasm/wasm-module.h

Issue 1709653002: [wasm] Add support for import section. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: delete the import_code vector Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/wasm/wasm-module.h
diff --git a/src/wasm/wasm-module.h b/src/wasm/wasm-module.h
index 8dc1abc22230d95895e2b12bf9e7fc9651185e6a..dfbde0e17543d8df0f8a5cad5677728f9bc7c648 100644
--- a/src/wasm/wasm-module.h
+++ b/src/wasm/wasm-module.h
@@ -30,12 +30,13 @@ enum WasmSectionDeclCode {
kDeclGlobals = 0x03,
kDeclDataSegments = 0x04,
kDeclFunctionTable = 0x05,
- kDeclWLL = 0x11,
kDeclEnd = 0x06,
kDeclStartFunction = 0x07,
+ kDeclImportTable = 0x08,
+ kDeclWLL = 0x11,
};
-static const int kMaxModuleSectionCode = 6;
+static const int kMaxModuleSectionCode = 0x11;
enum WasmFunctionDeclBit {
kDeclFunctionName = 0x01,
@@ -49,7 +50,7 @@ static const size_t kDeclMemorySize = 3;
static const size_t kDeclGlobalSize = 6;
static const size_t kDeclDataSegmentSize = 13;
-// Static representation of a wasm function.
+// Static representation of a WASM function.
struct WasmFunction {
FunctionSig* sig; // signature of the function.
uint32_t func_index; // index into the function table.
@@ -65,7 +66,13 @@ struct WasmFunction {
bool external; // true if this function is externally supplied.
};
-struct ModuleEnv; // forward declaration of decoder interface.
+// Static representation of an imported WASM function.
+struct WasmImport {
+ FunctionSig* sig; // signature of the function.
+ uint16_t sig_index; // index into the signature table.
+ uint32_t module_name_offset; // offset in module bytes of the module name.
+ uint32_t function_name_offset; // offset in module bytes of the import name.
+};
// Static representation of a wasm global variable.
struct WasmGlobal {
@@ -102,6 +109,7 @@ struct WasmModule {
std::vector<WasmFunction>* functions; // functions in this module.
std::vector<WasmDataSegment>* data_segments; // data segments in this module.
std::vector<uint16_t>* function_table; // function table.
+ std::vector<WasmImport>* import_table; // import table.
WasmModule();
~WasmModule();
@@ -134,6 +142,7 @@ struct WasmModuleInstance {
Handle<JSArrayBuffer> globals_buffer; // Handle to array buffer of globals.
Handle<FixedArray> function_table; // indirect function table.
std::vector<Handle<Code>>* function_code; // code objects for each function.
+ std::vector<Handle<Code>>* import_code; // code objects for each import.
// -- raw memory ------------------------------------------------------------
byte* mem_start; // start of linear memory.
size_t mem_size; // size of the linear memory.
@@ -170,6 +179,9 @@ struct ModuleEnv {
bool IsValidSignature(uint32_t index) {
return module && index < module->signatures->size();
}
+ bool IsValidImport(uint32_t index) {
+ return module && index < module->import_table->size();
+ }
MachineType GetGlobalType(uint32_t index) {
DCHECK(IsValidGlobal(index));
return module->globals->at(index).type;
@@ -178,6 +190,10 @@ struct ModuleEnv {
DCHECK(IsValidFunction(index));
return module->functions->at(index).sig;
}
+ FunctionSig* GetImportSignature(uint32_t index) {
+ DCHECK(IsValidImport(index));
+ return module->import_table->at(index).sig;
+ }
FunctionSig* GetSignature(uint32_t index) {
DCHECK(IsValidSignature(index));
return module->signatures->at(index);
@@ -188,6 +204,7 @@ struct ModuleEnv {
}
Handle<Code> GetFunctionCode(uint32_t index);
+ Handle<Code> GetImportCode(uint32_t index);
Handle<FixedArray> GetFunctionTable();
compiler::CallDescriptor* GetWasmCallDescriptor(Zone* zone, FunctionSig* sig);

Powered by Google App Engine
This is Rietveld 408576698