Conversation
f715b74 to
bfc7a65
Compare
0c7e036 to
7df2132
Compare
CodSpeed Performance ReportMerging #2617 will improve performances by 32.73%Comparing Summary
Benchmarks breakdown
|
51e3a9f to
0764731
Compare
|
This will obviously use more RAM across transactions; this breaks 32bit state tests as they now run OOM, what should we do @rakita ? we can special case 32bit to clear the map across blocks, or just ignore the test? |
We need to check this assumption |
crates/handler/src/handler.rs
Outdated
|
|
||
| #[inline] | ||
| fn frame_stack<'a, F: Frame<Evm: EvmTr>>(evm: &mut F::Evm) -> &'a mut FrameStack<F> { | ||
| let f = evm.ctx_mut().local_mut().frame_stack(); |
There was a problem hiding this comment.
Honestly, this is not that bad, we could take a local_mut().frame_stack() inside run_exec_loop and return it back after fn finishes.
Would make run_exec_loop have a &mut FrameStack field so it is easier to handle error handles of multiple ?.
|
Have investigated why memory oom occurs with https://docs.rs/dhat/latest/dhat/ and have noticed that when frame_stack drops u128 values, the previously set heap allocations will not be deallocated and would leak (including boxed frame input and It feels the fault is with the frames in general and how they are burrowed inside Handler (hard to access), have tried a few ways to handle this better. Having |
|
oh yeah that makes sense, i overlooked the drop |
|
superseded by #2636 |
Generalizes #2615 to frames.