forked from cerc-io/plugeth
core/vm: expose intpool to stack dup method
Improve the duplication method of the stack to reuse big ints by passing in an existing integer pool.
This commit is contained in:
parent
e16a7ef60f
commit
10582a97ca
@ -731,7 +731,7 @@ func makePush(size uint64, pushByteSize int) executionFunc {
|
||||
// make push instruction function
|
||||
func makeDup(size int64) executionFunc {
|
||||
return func(pc *uint64, evm *EVM, contract *Contract, memory *Memory, stack *Stack) ([]byte, error) {
|
||||
stack.dup(int(size))
|
||||
stack.dup(evm.interpreter.intPool, int(size))
|
||||
return nil, nil
|
||||
}
|
||||
}
|
||||
|
@ -60,8 +60,8 @@ func (st *Stack) swap(n int) {
|
||||
st.data[st.len()-n], st.data[st.len()-1] = st.data[st.len()-1], st.data[st.len()-n]
|
||||
}
|
||||
|
||||
func (st *Stack) dup(n int) {
|
||||
st.push(new(big.Int).Set(st.data[st.len()-n]))
|
||||
func (st *Stack) dup(pool *intPool, n int) {
|
||||
st.push(pool.get().Set(st.data[st.len()-n]))
|
||||
}
|
||||
|
||||
func (st *Stack) peek() *big.Int {
|
||||
|
Loading…
Reference in New Issue
Block a user