mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-24 13:46:43 +00:00
optimize method in Run to get baseLen, expLen, modLen
This commit is contained in:
parent
81184285ed
commit
4bc7187372
1 changed files with 13 additions and 5 deletions
|
|
@ -614,11 +614,19 @@ func (c *bigModExp) RequiredGas(input []byte) uint64 {
|
|||
}
|
||||
|
||||
func (c *bigModExp) Run(input []byte) ([]byte, error) {
|
||||
var (
|
||||
baseLen = new(uint256.Int).SetBytes(getData(input, 0, 32)).Uint64()
|
||||
expLen = new(uint256.Int).SetBytes(getData(input, 32, 32)).Uint64()
|
||||
modLen = new(uint256.Int).SetBytes(getData(input, 64, 32)).Uint64()
|
||||
)
|
||||
// Extract lengths - they're 32-byte big-endian integers
|
||||
// with the actual uint64 value in the last 8 bytes
|
||||
var baseLen, expLen, modLen uint64
|
||||
if len(input) >= 32 {
|
||||
baseLen = binary.BigEndian.Uint64(input[24:32])
|
||||
}
|
||||
if len(input) >= 64 {
|
||||
expLen = binary.BigEndian.Uint64(input[56:64])
|
||||
}
|
||||
if len(input) >= 96 {
|
||||
modLen = binary.BigEndian.Uint64(input[88:96])
|
||||
}
|
||||
|
||||
if len(input) > 96 {
|
||||
input = input[96:]
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Reference in a new issue