2018-02-02 19:05:49 +01:00
|
|
|
const fs = require("fs");
|
|
|
|
const runner = require("./runner");
|
2018-02-01 17:35:51 +01:00
|
|
|
|
2018-01-16 17:52:48 +01:00
|
|
|
function test(file) {
|
2018-02-01 17:35:51 +01:00
|
|
|
console.log("Testing '" + file + "' ...\n");
|
2018-01-16 05:25:03 +01:00
|
|
|
|
2018-02-02 19:05:49 +01:00
|
|
|
const exports = new WebAssembly.Instance(WebAssembly.Module(fs.readFileSync(__dirname + "/../" + file)), {
|
2018-01-16 17:52:48 +01:00
|
|
|
env: {
|
2018-02-01 17:35:51 +01:00
|
|
|
abort: function(msg, file, line, column) {
|
|
|
|
throw Error("Assertion failed: " + (msg ? "'" + getString(msg) + "' " : "") + "at " + getString(file) + ":" + line + ":" + column);
|
|
|
|
},
|
|
|
|
log: function(ptr) { console.log(getString(ptr)); },
|
|
|
|
logi: function(i) { console.log(i); }
|
2018-01-16 05:25:03 +01:00
|
|
|
}
|
2018-01-16 17:52:48 +01:00
|
|
|
}).exports;
|
|
|
|
|
2018-02-01 17:35:51 +01:00
|
|
|
function getString(ptr) {
|
|
|
|
var len = new Uint32Array(exports.memory.buffer, ptr)[0];
|
|
|
|
var str = new Uint16Array(exports.memory.buffer, ptr + 4).subarray(0, len);
|
|
|
|
return String.fromCharCode.apply(String, str);
|
2018-01-16 05:25:03 +01:00
|
|
|
}
|
2018-02-01 17:35:51 +01:00
|
|
|
|
2018-02-02 19:05:49 +01:00
|
|
|
runner(exports, 50, 20000); // picked so I/O isn't the bottleneck
|
2018-02-01 17:35:51 +01:00
|
|
|
console.log("mem final: " + exports.memory.buffer.byteLength);
|
2018-01-16 17:52:48 +01:00
|
|
|
console.log();
|
2018-01-16 05:25:03 +01:00
|
|
|
}
|
|
|
|
|
2018-01-16 17:52:48 +01:00
|
|
|
test("tlsf.untouched.wasm");
|
|
|
|
test("tlsf.optimized.wasm");
|