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
|
// make push instruction function
|
||||||
func makeDup(size int64) executionFunc {
|
func makeDup(size int64) executionFunc {
|
||||||
return func(pc *uint64, evm *EVM, contract *Contract, memory *Memory, stack *Stack) ([]byte, error) {
|
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
|
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]
|
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) {
|
func (st *Stack) dup(pool *intPool, n int) {
|
||||||
st.push(new(big.Int).Set(st.data[st.len()-n]))
|
st.push(pool.get().Set(st.data[st.len()-n]))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (st *Stack) peek() *big.Int {
|
func (st *Stack) peek() *big.Int {
|
||||||
|
Loading…
Reference in New Issue
Block a user