mirror of
https://github.com/pezkuwichain/wasm-instrument.git
synced 2026-04-22 04:27:57 +00:00
a4dde28607
* fix misprints in doc comments * added global gas tracker variable and local gas fn * all exported functions of the module to accept a new param and to set the gas_left global to its value at their very start * make module support both gas metering methods * tests fixed for the old metering method * better naming * MutableGlobal metering method implemented, tests for the old method pass * gas_metering::tests updated and pass * all tests udpdated and pass * emacs backup files to .gitignore * docs updated * clippy fix * iff = if and only if * more clippy * docs misprints fixes * refactored to have Backend trait and two implementations in separate sub-modules * docs updated * fixed old benches (updating them is coming next) * added bench for an instrumented wasm-coremark * updated benches: added them for both gas_metering instrumentations * benches contest first ver * added debug prints to the bench * refactored to better fit frontend-backend pattern * docs update * updated benches * design updated on feedback * re-structured sub-modules re-structured sub-modules & updated docs * docs improved * addressed latest feedback comments * re-writed the local gas function * coremark benches show ~20% performance improvement * fix ci: test + clippy * save before re-factoring prepare_in_wasm() * bare_call_16 shows 16% worse perf * + fibonacci recursive bench * refactored benchmarks * + factorial recursive bench * benches on wasmi fixtures show no perf improvement, coremark runs ~20% faster being instrumented with mutable_global gas metering * charge gas for local gas func isntructions execution * replaced benchmark which requires multi_value feature * save: optimized gas func a bit (benches work, fixture tests fail) * 1033% overhead on many_blocks.wasm when mut_global gas_metering together with stack_height * size overhead test for both gas metering methods + stack limiter * added more benches * improved print_size_overhead test * test for comparing size overheads of two gas_metering injectors * before optimization: benches + size overhead * optimization try-1: inline part of gas func instructions: +benches +size overheads * optimization try-2: inline hot path of gas fn: +benches +size overheads * opt try-3: count for gas fn cost on the caller side: +benches +size overhead * revert to initial version but with static gas fn cost on the caller side: +benches +sizes * tests fixed * use newest wasmi 0.20: +benches +docs updated * use if-else block instead of Return: +benches * fix tests * clippy fix * addressed review comments * Update changelog Co-authored-by: Alexander Theißen <alex.theissen@me.com>
44 lines
928 B
TOML
44 lines
928 B
TOML
[package]
|
|
name = "wasm-instrument"
|
|
version = "0.4.0"
|
|
edition = "2021"
|
|
rust-version = "1.56.1"
|
|
authors = ["Parity Technologies <admin@parity.io>"]
|
|
license = "MIT OR Apache-2.0"
|
|
description = "Instrument and transform wasm modules."
|
|
keywords = ["wasm", "webassembly", "blockchain", "gas-metering", "parity"]
|
|
categories = ["wasm", "no-std"]
|
|
repository = "https://github.com/paritytech/wasm-instrument"
|
|
include = ["src/**/*", "LICENSE-*", "README.md"]
|
|
|
|
[[bench]]
|
|
name = "benches"
|
|
harness = false
|
|
path = "benches/benches.rs"
|
|
|
|
[profile.bench]
|
|
lto = "fat"
|
|
codegen-units = 1
|
|
|
|
[dependencies]
|
|
parity-wasm = { version = "0.45", default-features = false }
|
|
|
|
[dev-dependencies]
|
|
binaryen = "0.12"
|
|
criterion = "0.4"
|
|
diff = "0.1"
|
|
pretty_assertions = "1"
|
|
rand = "0.8"
|
|
wat = "1"
|
|
wasmparser = "0.94"
|
|
wasmprinter = "0.2"
|
|
wasmi = "0.20"
|
|
|
|
[features]
|
|
default = ["std"]
|
|
std = ["parity-wasm/std"]
|
|
sign_ext = ["parity-wasm/sign_ext"]
|
|
|
|
[lib]
|
|
bench = false
|