From 06ba0c9e1aa09e2510e3b84f91a7f09d09272cde Mon Sep 17 00:00:00 2001 From: itsdevbear Date: Fri, 12 Apr 2024 01:28:50 -0400 Subject: [PATCH] optimize-push --- core/vm/instructions.go | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/core/vm/instructions.go b/core/vm/instructions.go index 990bdbf925..3c004c1733 100644 --- a/core/vm/instructions.go +++ b/core/vm/instructions.go @@ -875,13 +875,12 @@ func makeLog(size int) executionFunc { func opPush1(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) { var ( codeLen = uint64(len(scope.Contract.Code)) - integer = new(uint256.Int) ) *pc += 1 if *pc < codeLen { - scope.Stack.push(integer.SetUint64(uint64(scope.Contract.Code[*pc]))) + scope.Stack.push(new(uint256.Int).SetUint64(uint64(scope.Contract.Code[*pc]))) } else { - scope.Stack.push(integer.Clear()) + scope.Stack.push(new(uint256.Int).Clear()) } return nil, nil } @@ -890,20 +889,14 @@ func opPush1(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]by func makePush(size uint64, pushByteSize int) executionFunc { return func(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byte, error) { codeLen := len(scope.Contract.Code) - - startMin := codeLen - if int(*pc+1) < startMin { - startMin = int(*pc + 1) - } - - endMin := codeLen - if startMin+pushByteSize < endMin { - endMin = startMin + pushByteSize - } - - integer := new(uint256.Int) - scope.Stack.push(integer.SetBytes(common.RightPadBytes( - scope.Contract.Code[startMin:endMin], pushByteSize))) + startMin := min(codeLen, int(*pc+1)) + endMin := min(startMin+pushByteSize, codeLen) + scope.Stack.push(new(uint256.Int).SetBytes( + common.RightPadBytes( + scope.Contract.Code[startMin:endMin], + pushByteSize, + )), + ) *pc += size return nil, nil