core/vm: return copy of input slice in identity precompile, avoid returndata copy (#25183)
* core/vm: return copy of input slice in identity precompile. don't deep copy return data slice upon call completion * make use of common.CopyBytes
This commit is contained in:
		
							parent
							
								
									18a001fa3e
								
							
						
					
					
						commit
						d8ada03eac
					
				| @ -235,7 +235,7 @@ func (c *dataCopy) RequiredGas(input []byte) uint64 { | ||||
| 	return uint64(len(input)+31)/32*params.IdentityPerWordGas + params.IdentityBaseGas | ||||
| } | ||||
| func (c *dataCopy) Run(in []byte) ([]byte, error) { | ||||
| 	return in, nil | ||||
| 	return common.CopyBytes(in), nil | ||||
| } | ||||
| 
 | ||||
| // bigModExp implements a native big integer exponential modular operation.
 | ||||
|  | ||||
| @ -697,7 +697,6 @@ func opCall(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([]byt | ||||
| 	} | ||||
| 	stack.push(&temp) | ||||
| 	if err == nil || err == ErrExecutionReverted { | ||||
| 		ret = common.CopyBytes(ret) | ||||
| 		scope.Memory.Set(retOffset.Uint64(), retSize.Uint64(), ret) | ||||
| 	} | ||||
| 	scope.Contract.Gas += returnGas | ||||
| @ -733,7 +732,6 @@ func opCallCode(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) ([ | ||||
| 	} | ||||
| 	stack.push(&temp) | ||||
| 	if err == nil || err == ErrExecutionReverted { | ||||
| 		ret = common.CopyBytes(ret) | ||||
| 		scope.Memory.Set(retOffset.Uint64(), retSize.Uint64(), ret) | ||||
| 	} | ||||
| 	scope.Contract.Gas += returnGas | ||||
| @ -762,7 +760,6 @@ func opDelegateCall(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext | ||||
| 	} | ||||
| 	stack.push(&temp) | ||||
| 	if err == nil || err == ErrExecutionReverted { | ||||
| 		ret = common.CopyBytes(ret) | ||||
| 		scope.Memory.Set(retOffset.Uint64(), retSize.Uint64(), ret) | ||||
| 	} | ||||
| 	scope.Contract.Gas += returnGas | ||||
| @ -791,7 +788,6 @@ func opStaticCall(pc *uint64, interpreter *EVMInterpreter, scope *ScopeContext) | ||||
| 	} | ||||
| 	stack.push(&temp) | ||||
| 	if err == nil || err == ErrExecutionReverted { | ||||
| 		ret = common.CopyBytes(ret) | ||||
| 		scope.Memory.Set(retOffset.Uint64(), retSize.Uint64(), ret) | ||||
| 	} | ||||
| 	scope.Contract.Gas += returnGas | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user