mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 02:42:27 +00:00
optimize-push
This commit is contained in:
parent
bd91810462
commit
06ba0c9e1a
1 changed files with 10 additions and 17 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue