Add --gas-limit option

extensions
Volodymyr Shymanskyy 3 years ago
parent c68aa7bdbf
commit ddf5afeee2

@ -43,6 +43,7 @@ int wasm_bins_qty = 0;
#if defined(GAS_LIMIT)
static int64_t initial_gas = GAS_FACTOR * GAS_LIMIT;
static int64_t current_gas = GAS_FACTOR * GAS_LIMIT;
static bool is_gas_metered = false;
@ -208,6 +209,15 @@ M3Result repl_load_hex (u32 fsize)
return result;
}
void print_gas_used()
{
#if defined(GAS_LIMIT)
if (is_gas_metered) {
fprintf(stderr, "Gas used: %0.4f\n", (double)(initial_gas - current_gas) / GAS_FACTOR);
}
#endif
}
void print_backtrace()
{
IM3BacktraceInfo info = m3_GetBacktrace(runtime);
@ -253,6 +263,8 @@ M3Result repl_call (const char* name, int argc, const char* argv[])
result = m3_CallArgv(func, 0, NULL);
print_gas_used();
if (result == m3Err_trapExit) {
exit(wasi_ctx->exit_code);
}
@ -273,11 +285,7 @@ M3Result repl_call (const char* name, int argc, const char* argv[])
result = m3_CallArgv (func, argc, argv);
#if defined(GAS_LIMIT)
if (is_gas_metered) {
fprintf(stderr, "Gas used: %0.4f\n", (double)((GAS_FACTOR * GAS_LIMIT) - current_gas) / GAS_FACTOR);
}
#endif
print_gas_used();
if (result) return result;
@ -566,6 +574,10 @@ int main (int i_argc, const char* i_argv[])
const char* tmp = "65536";
ARGV_SET(tmp);
argStackSize = atol(tmp);
} else if (!strcmp("--gas-limit", arg)) {
const char* tmp = "0";
ARGV_SET(tmp);
initial_gas = current_gas = GAS_FACTOR * atol(tmp);
} else if (!strcmp("--dir", arg)) {
const char* argDir;
ARGV_SET(argDir);

Loading…
Cancel
Save