• Alexander Theißen's avatar
    contracts: Add automated weights for wasm instructions (#7361) · 51c67fe8
    Alexander Theißen authored
    
    
    * pallet_contracts: Inline benchmark helper that is only used once
    
    * Move all max_* Schedule items into a new struct
    
    * Limit the number of globals a module can declare
    
    * The current limits are too high for wasmi to even execute
    
    * Limit the amount of parameters any wasm function is allowed to have
    
    * Limit the size the BrTable's immediate value
    
    * Add instruction benchmarks
    
    * Add new benchmarks to the schedule and make use of it
    
    * Add Benchmark Results generated by the bench bot
    
    * Add proc macro that implements `Debug` for `Schedule`
    
    * Add missing imports necessary for no_std build
    
    * Make the WeightDebug macro available for no_std
    
    In this case a dummy implementation is derived in order to not
    blow up the code size akin to the RuntimeDebug macro.
    
    * Rework instr_memory_grow benchmark to use only the maximum amount of pages allowed
    
    * Add maximum amount of memory when benching (seal_)call/instantiate
    
    * cargo run --release --features runtime-benchmarks --manifest-path bin/node/cli/Cargo.toml -- benchmark --chain dev --steps 50 --repeat 20 --extrinsic * --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output ./bin/node/runtime/src/weights --header ./HEADER --pallet pallet_contracts
    
    * Added utility benchmark that allows pretty printing of the real schedule
    
    * review: Add missing header to the proc-macro lib.rs
    
    * review: Clarify why #[allow(dead_code)] attribute is there
    
    * review: Fix pwasm-utils line
    
    * review: Fixup rand usage
    
    * review: Fix typo
    
    * review: Imported -> Exported
    
    * cargo run --release --features=runtime-benchmarks --manifest-path=bin/node/cli/Cargo.toml -- benchmark --chain=dev --steps=50 --repeat=20 --pallet=pallet_contracts --extrinsic=* --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output=./frame/contracts/src/weights.rs --template=./.maintain/frame-weight-template.hbs
    
    * contracts: Adapt to new weight structure
    
    * contracts: Fixup runtime WeightInfo
    
    * contracts: Remove unneeded fullpath of WeightInfo type
    
    * Apply suggestions from code review
    
    Co-authored-by: default avatarAndrew Jones <[email protected]>
    
    * Fix typo in schedule.rs
    
    Co-authored-by: default avatarAndrew Jones <[email protected]>
    
    * Fix docs in schedule.rs
    
    * Apply suggestions from code review
    
    Co-authored-by: default avatarNikolay Volf <[email protected]>
    
    * Don't publish proc-macro crate until 3.0.0 is ready
    
    * Optimize imports for less repetition
    
    * Break overlong line
    
    Co-authored-by: default avatarParity Benchmarking Bot <[email protected]>
    Co-authored-by: default avatarAndrew Jones <[email protected]>
    Co-authored-by: default avatarNikolay Volf <[email protected]>
    51c67fe8