| Index: test/mjsunit/wasm/wasm-module-builder.js
|
| diff --git a/test/mjsunit/wasm/wasm-module-builder.js b/test/mjsunit/wasm/wasm-module-builder.js
|
| index 0aae6d9eaec08a0dd636cc8c401a49929ba38706..e51d4425fdaf04ab0279a0be3c9aa08fb182f4b0 100644
|
| --- a/test/mjsunit/wasm/wasm-module-builder.js
|
| +++ b/test/mjsunit/wasm/wasm-module-builder.js
|
| @@ -23,6 +23,11 @@ WasmFunctionBuilder.prototype.exportAs = function(name) {
|
| return this;
|
| }
|
|
|
| +WasmFunctionBuilder.prototype.exportFunc = function() {
|
| + this.exports.push(this.name);
|
| + return this;
|
| +}
|
| +
|
| WasmFunctionBuilder.prototype.addBody = function(body) {
|
| this.body = body;
|
| return this;
|
| @@ -40,14 +45,24 @@ function WasmModuleBuilder() {
|
| this.exports = [];
|
| this.function_table = [];
|
| this.data_segments = [];
|
| + this.explicit = [];
|
| return this;
|
| }
|
|
|
| +WasmModuleBuilder.prototype.addStart = function(start_index) {
|
| + this.start_index = start_index;
|
| +}
|
| +
|
| WasmModuleBuilder.prototype.addMemory = function(min, max, exp) {
|
| this.memory = {min: min, max: max, exp: exp};
|
| return this;
|
| }
|
|
|
| +WasmModuleBuilder.prototype.addExplicitSection = function(bytes) {
|
| + this.explicit.push(bytes);
|
| + return this;
|
| +}
|
| +
|
| // Add a signature; format is [rettype, param0, param1, ...]
|
| WasmModuleBuilder.prototype.addSignature = function(sig) {
|
| // TODO: canonicalize signatures?
|
| @@ -199,6 +214,13 @@ WasmModuleBuilder.prototype.toArray = function(debug) {
|
| }
|
| }
|
|
|
| + // Add start function section.
|
| + if (this.start_index != undefined) {
|
| + if (debug) print("emitting start function @ " + bytes.length);
|
| + emit_u8(bytes, kDeclStartFunction);
|
| + emit_varint(bytes, this.start_index);
|
| + }
|
| +
|
| if (this.function_table.length > 0) {
|
| if (debug) print("emitting function table @ " + bytes.length);
|
| emit_u8(bytes, kDeclFunctionTable);
|
| @@ -232,6 +254,14 @@ WasmModuleBuilder.prototype.toArray = function(debug) {
|
| }
|
| }
|
|
|
| + // Emit any explicitly added sections
|
| + for (exp of this.explicit) {
|
| + if (debug) print("emitting explicit @ " + bytes.length);
|
| + for (var i = 0; i < exp.length; i++) {
|
| + emit_u8(bytes, exp[i]);
|
| + }
|
| + }
|
| +
|
| // End the module.
|
| if (debug) print("emitting end @ " + bytes.length);
|
| emit_u8(bytes, kDeclEnd);
|
| @@ -305,7 +335,11 @@ WasmModuleBuilder.prototype.toBuffer = function(debug) {
|
| return buffer;
|
| }
|
|
|
| -WasmModuleBuilder.prototype.instantiate = function(ffi) {
|
| +WasmModuleBuilder.prototype.instantiate = function(ffi, memory) {
|
| var buffer = this.toBuffer();
|
| - return _WASMEXP_.instantiateModule(buffer, ffi);
|
| + if (memory != undefined) {
|
| + return _WASMEXP_.instantiateModule(buffer, ffi, memory);
|
| + } else {
|
| + return _WASMEXP_.instantiateModule(buffer, ffi);
|
| + }
|
| }
|
|
|