Commit 271a7f55 authored by rossberg's avatar rossberg Committed by Commit bot

Refactor module builder

- Use ES6 classes and other goodies.
- Make some names match design/spec.
- Remove obsolete generation of END section.

R=bradnelson@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2081973003
Cr-Commit-Position: refs/heads/master@{#37155}
parent e45fba81
......@@ -26,12 +26,9 @@ function makeSelect(type, args, which) {
}
var builder = new WasmModuleBuilder();
var sig = new Array();
sig.push(args);
for (var i = 0; i < args; i++) sig.push(type);
sig.push(1);
sig.push(type);
builder.addFunction("select", sig)
var params = [];
for (var i = 0; i < args; i++) params.push(type);
builder.addFunction("select", makeSig(params, [type]))
.addBody([kExprGetLocal, which])
.exportFunc();
......
......@@ -10,7 +10,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
function testCallFFI(func, check) {
var builder = new WasmModuleBuilder();
var sig_index = builder.addSignature(kSig_i_dd);
var sig_index = builder.addType(kSig_i_dd);
builder.addImport("func", sig_index);
builder.addFunction("main", sig_index)
.addBody([
......
......@@ -10,7 +10,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
function makeFFI(func, t) {
var builder = new WasmModuleBuilder();
var sig_index = builder.addSignature([10,t,t,t,t,t,t,t,t,t,t,1,t]);
var sig_index = builder.addType(makeSig([t,t,t,t,t,t,t,t,t,t], [t]));
builder.addImport("func", sig_index);
// Try to create a frame with lots of spilled values and parameters
// on the stack to try to catch GC bugs in the reference maps for
......@@ -76,7 +76,7 @@ function print10(a, b, c, d, e, f, g, h, i) {
(function GCInJSToWasmTest() {
var builder = new WasmModuleBuilder();
var sig_index = builder.addSignature([1, kAstI32, 1, kAstI32]);
var sig_index = builder.addType(kSig_i_i);
builder.addFunction("main", sig_index)
.addBody([
kExprGetLocal, 0, // --
......
......@@ -10,7 +10,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
function testCallImport(func, check) {
var builder = new WasmModuleBuilder();
var sig_index = builder.addSignature(kSig_i_dd);
var sig_index = builder.addType(kSig_i_dd);
builder.addImport("func", sig_index);
builder.addFunction("main", sig_index)
.addBody([
......
......@@ -10,7 +10,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
var module = (function () {
var builder = new WasmModuleBuilder();
var sig_index = builder.addSignature(kSig_i_ii);
var sig_index = builder.addType(kSig_i_ii);
builder.addImport("add", sig_index);
builder.addFunction("add", sig_index)
.addBody([
......@@ -30,7 +30,7 @@ var module = (function () {
kExprCallIndirect, kArity2, sig_index
])
.exportFunc()
builder.appendToFunctionTable([0, 1, 2]);
builder.appendToTable([0, 1, 2]);
return builder.instantiate({add: function(a, b) { return a + b | 0; }});
})();
......
......@@ -79,7 +79,7 @@ function testSelect10(t) {
print("type = " + t + ", which = " + which);
var builder = new WasmModuleBuilder();
builder.addFunction("select", [10,t,t,t,t,t,t,t,t,t,t,1,t])
builder.addFunction("select", makeSig([t,t,t,t,t,t,t,t,t,t], [t]))
.addBody([kExprGetLocal, which])
.exportFunc();
......
......@@ -10,7 +10,7 @@ load("test/mjsunit/wasm/wasm-module-builder.js");
function makeFFI(func) {
var builder = new WasmModuleBuilder();
var sig_index = builder.addSignature(kSig_i_dd);
var sig_index = builder.addType(kSig_i_dd);
builder.addImport("func", sig_index);
builder.addFunction("main", sig_index)
.addBody([
......
......@@ -65,8 +65,8 @@ assertFails(kSig_i_dd, [kExprGetLocal, 0]);
var func = builder.addFunction("", kSig_v_v)
.addBody([kExprNop]);
builder.addExplicitSection([kDeclStartFunction, 0]);
builder.addExplicitSection([kDeclStartFunction, 0]);
builder.addExplicitSection([kDeclStart, 0]);
builder.addExplicitSection([kDeclStart, 0]);
assertThrows(builder.instantiate);
})();
......@@ -98,7 +98,7 @@ assertFails(kSig_i_dd, [kExprGetLocal, 0]);
}};
var builder = new WasmModuleBuilder();
var sig_index = builder.addSignature(kSig_v_v);
var sig_index = builder.addType(kSig_v_v);
builder.addImport("foo", sig_index);
var func = builder.addFunction("", sig_index)
......
......@@ -91,7 +91,7 @@ var debug = false;
.addBody([kExprGetLocal,
0, kExprGetLocal, 1, kExprGetLocal, 2, kExprCallIndirect, kArity2, 0])
.exportAs("main");
module.appendToFunctionTable([0]);
module.appendToTable([0]);
var instance = module.instantiate();
assertEquals(44, instance.exports.main(0, 11, 33));
......
......@@ -14,7 +14,7 @@ Error.prepareStackTrace = function(error, frames) {
var builder = new WasmModuleBuilder();
var sig_index = builder.addSignature(kSig_i_v)
var sig_index = builder.addType(kSig_i_v)
// Build a function to resemble this code:
// if (idx < 2) {
......
......@@ -52,17 +52,17 @@ var kDeclNoLocals = 0;
// Section declaration constants
var kDeclMemory = 0x00;
var kDeclSignatures = 0x01;
var kDeclTypes = 0x01;
var kDeclFunctions = 0x02;
var kDeclGlobals = 0x03;
var kDeclDataSegments = 0x04;
var kDeclFunctionTable = 0x05;
var kDeclData = 0x04;
var kDeclTable = 0x05;
var kDeclEnd = 0x06;
var kDeclStartFunction = 0x07;
var kDeclImportTable = 0x08;
var kDeclExportTable = 0x09;
var kDeclFunctionSignatures = 0x0a;
var kDeclFunctionBodies = 0x0b;
var kDeclStart = 0x07;
var kDeclImports = 0x08;
var kDeclExports = 0x09;
var kDeclFunctions = 0x0a;
var kDeclCode = 0x0b;
var kDeclNames = 0x0c;
var kArity0 = 0;
......@@ -90,31 +90,39 @@ var kAstF32 = 3;
var kAstF64 = 4;
// Useful signatures
var kSig_i = [0, 1, kAstI32];
var kSig_d = [0, 1, kAstF64];
var kSig_i_i = [1, kAstI32, 1, kAstI32];
var kSig_i_ii = [2, kAstI32, kAstI32, 1, kAstI32];
var kSig_i_iii = [3, kAstI32, kAstI32, kAstI32, 1, kAstI32];
var kSig_d_dd = [2, kAstF64, kAstF64, 1, kAstF64];
var kSig_l_ll = [2, kAstI64, kAstI64, 1, kAstI64];
var kSig_i_dd = [2, kAstF64, kAstF64, 1, kAstI32];
var kSig_v_v = [0, 0];
var kSig_i_v = [0, 1, kAstI32];
var kSig_i = makeSig([], [kAstI32]);
var kSig_d = makeSig([], [kAstF64]);
var kSig_i_i = makeSig([kAstI32], [kAstI32]);
var kSig_i_ii = makeSig([kAstI32, kAstI32], [kAstI32]);
var kSig_i_iii = makeSig([kAstI32, kAstI32, kAstI32], [kAstI32]);
var kSig_d_dd = makeSig([kAstF64, kAstF64], [kAstF64]);
var kSig_l_ll = makeSig([kAstI64, kAstI64], [kAstI64]);
var kSig_i_dd = makeSig([kAstF64, kAstF64], [kAstI32]);
var kSig_v_v = makeSig([], []);
var kSig_i_v = makeSig([], [kAstI32]);
function makeSig_v_xx(x) {
return [2, x, x, 0];
function makeSig(params, results) {
return {params: params, results: results};
}
function makeSig_v_x(x) {
return [1, x, 0];
return makeSig([x], []);
}
function makeSig_r_xx(r, x) {
return [2, x, x, 1, r];
function makeSig_v_xx(x) {
return makeSig([x, x], []);
}
function makeSig_r_v(r) {
return makeSig([], [r]);
}
function makeSig_r_x(r, x) {
return [1, x, 1, r];
return makeSig([x], [r]);
}
function makeSig_r_xx(r, x) {
return makeSig([x, x], [r]);
}
// Opcodes
......
This diff is collapsed.
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