From 411e9e9c646ac70c58cbf617afafa3c29966da76 Mon Sep 17 00:00:00 2001 From: NikVolf Date: Tue, 25 Apr 2017 12:08:25 +0300 Subject: [PATCH] cleanup --- runner/index.html | 51 +++++++++++++++----------------------- samples/logger_contract.rs | 2 +- 2 files changed, 21 insertions(+), 32 deletions(-) diff --git a/runner/index.html b/runner/index.html index d628542..6206eea 100644 --- a/runner/index.html +++ b/runner/index.html @@ -67,7 +67,6 @@ self.total = 0; self.write = function(offset, len, ptr) { - console.log("storage_write: " + JSON.stringify(arguments)); var oldSize = false; while (offset + len > self.size) { oldSize || (oldSize = self.size); @@ -117,39 +116,30 @@ } } - // function set_ptr(view, offset, val) { - // console.log("set_ptr: " + JSON.stringify(arguments)); - - // view[offset] = val & 0x000000ff; - // view[offset+1] = (val & 0x0000ff00) >> 8; - // view[offset+2] = (val & 0x00ff0000) >> 16; - // view[offset+3] = (val & 0xff000000) >> 24; - // } - - // function get_ptr(view, offset) { - // return view[offset] + (view[offset] << 8) + (view[offset] << 16) + (view[offset] << 24); - // } - function Runtime() { var self = this; self.memory = new WebAssembly.Memory({ initial: 256, maximum: 256 }); self.storage = new Storage(self.memory.buffer); + // todo: figure out how to do counter with multiple executables + self.gasCounter = 0; + self.resolveAlloc = function(instance) { return instance.exports._malloc; } - self.call = function(instance, args) { - console.log("call: " + JSON.stringify(args)); + self.gas = function(val) { + self.gasCounter += val; + } + self.call = function(instance, args) { let alloc = self.resolveAlloc(instance); + // call descriptor size let ptr = alloc(16); let arg_ptr = alloc(args.length); - console.log("call allocs: " + JSON.stringify([ptr, arg_ptr])); - let dataView = new DataView(self.memory.buffer); dataView.setInt32(ptr, arg_ptr, true); dataView.setInt32(ptr+4, args.length, true); @@ -158,15 +148,12 @@ dataView.setInt8(arg_ptr+i, args[i], false); } - debugger; - + self.gasCounter = 0; instance.exports._call(ptr); let result_ptr = dataView.getInt32(ptr+8, true); let result_length = dataView.getInt32(ptr+12, true); - console.log("result: " + JSON.stringify([result_ptr, result_length])); - let result = []; if (result_ptr != 0) { for (var i = 0; i < result_length; i++) { @@ -195,7 +182,6 @@ env.STACK_MAX = env.STACK_MAX || 5*1024*1024; 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() { @@ -227,10 +213,8 @@ env._storage_read = runtime.storage.read; env._storage_write = runtime.storage.write; env._storage_size = runtime.storage.size; + env.gas = runtime.gas; - env.gas = function(upd) { - console.log("used " + upd + " gas"); - } if (!imports.env.memory) { imports.env.memory = runtime.memory; } @@ -263,7 +247,7 @@ let result = runtime.call(instance, args); document.getElementById("result").value = arrayToStr(result); document.getElementById("storage").value = arrayToStr(runtime.storage.toArr()); - console.log("Call succeded"); + document.getElementById("gas").innerHTML = "Gas used: " + runtime.gasCounter + ""; }, false); } ); @@ -272,22 +256,27 @@
- +
- +
+ +
- +
+ +
-
+
+ Gas cost: 0 \ No newline at end of file diff --git a/samples/logger_contract.rs b/samples/logger_contract.rs index 8d8042a..44fece8 100644 --- a/samples/logger_contract.rs +++ b/samples/logger_contract.rs @@ -133,7 +133,7 @@ pub fn call(descriptor: *mut u8) { // This initializes safe wrapper for contract input and output let mut ctx = CallArgs::from_raw(descriptor); - // Copies all input to the contract in the separate buffer + // Copies all contract input data to the separate buffer let data = ctx.context().to_vec(); // Appends all input to the storage (as it is a logger contract)