From a0da9346c310f243226fa739fa2d52566c071653 Mon Sep 17 00:00:00 2001 From: NikVolf Date: Tue, 18 Apr 2017 14:22:24 +0300 Subject: [PATCH] working intrinsics with test6 --- runner/index.html | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/runner/index.html b/runner/index.html index c07a073..9fe9d54 100644 --- a/runner/index.html +++ b/runner/index.html @@ -6,7 +6,7 @@ if (!('WebAssembly' in window)) { alert('you need a browser with wasm support enabled :('); } - + function loadWebAssembly(filename, imports) { return fetch(filename) .then(response => response.arrayBuffer()) @@ -15,7 +15,7 @@ imports = imports || {}; imports.env = imports.env || {}; var env = imports.env; - imports.env.memoryBase = imports.env.memoryBase || 0; + imports.env.memoryBase = imports.env.memoryBase || 1024; imports.env.tableBase = imports.env.tableBase || 0; /* rust/emscripten imports @@ -44,11 +44,18 @@ (import "env" "tableBase" (global (;4;) i32)) */ - env.DYNAMICTOP_PTR = env.DYNAMICTOP_PTR || 0; + var memory = new WebAssembly.Memory({ initial: 256, maximum: 256 }); + env.STACKTOP = env.STACKTOP || 0; env.STACK_MAX = env.STACK_MAX || 5*1024*1024; - env.enlargeMemory = env.enlargeMemory || function() { throw "error enlarging memory"; }; - env.getTotalMemory = env.getTotalMemory || function() { return 65536 * 256; }; + env.DYNAMICTOP_PTR = env.STACK_MAX; + env.enlargeMemory = env.enlargeMemory || function() { + console.log("called enlargeMemory(" + JSON.stringify(arguments) + ");"); + return 1; + }; + env.getTotalMemory = env.getTotalMemory || function() { + return 16 * 1024 * 1024; + }; env.abortOnCannotGrowMemory = env.abortOnCannotGrowMemory || function() { throw "abort growing memory"; }; env._abort = env._abort || function() { throw "_abort"; }; env.abort = env.abort || function() { throw "abort"; }; @@ -77,10 +84,10 @@ } if (!imports.env.memory) { - imports.env.memory = new WebAssembly.Memory({ initial: 256, maximum: 256 }); + imports.env.memory = memory; } if (!imports.env.table) { - imports.env.table = new WebAssembly.Table({ initial: 8, maximum: 8, element: 'anyfunc' }); + imports.env.table = new WebAssembly.Table({ initial: 0, maximum: 0, element: 'anyfunc' }); } return new WebAssembly.Instance(module, imports); }); @@ -88,8 +95,14 @@ loadWebAssembly('out/contract.wasm') .then(instance => { + debugger; var exports = instance.exports; var call = exports._call; + var malloc = exports._malloc; + var data_ptr = malloc(1024*8); + + console.log("data_ptr: " + data_ptr); + var button = document.getElementById('do-call'); button.value = 'Execute call'; button.addEventListener('click', function() {