@ -384,7 +384,7 @@ func opSAR(pc *uint64, interpreter *EVMInterpreter, contract *Contract, memory *
func opSha3 ( pc * uint64 , interpreter * EVMInterpreter , contract * Contract , memory * Memory , stack * Stack ) ( [ ] byte , error ) {
offset , size := stack . pop ( ) , stack . pop ( )
data := memory . Get ( offset . Int64 ( ) , size . Int64 ( ) )
data := memory . GetPtr ( offset . Int64 ( ) , size . Int64 ( ) )
if interpreter . hasher == nil {
interpreter . hasher = sha3 . NewLegacyKeccak256 ( ) . ( keccakState )
@ -602,11 +602,9 @@ func opPop(pc *uint64, interpreter *EVMInterpreter, contract *Contract, memory *
}
func opMload ( pc * uint64 , interpreter * EVMInterpreter , contract * Contract , memory * Memory , stack * Stack ) ( [ ] byte , error ) {
offset := stack . pop ( )
val := interpreter . intPool . get ( ) . SetBytes ( memory . Get ( offset . Int64 ( ) , 32 ) )
stack . push ( val )
interpreter . intPool . put ( offset )
v := stack . peek ( )
offset := v . Int64 ( )
v . SetBytes ( memory . GetPtr ( offset , 32 ) )
return nil , nil
}
@ -691,7 +689,7 @@ func opCreate(pc *uint64, interpreter *EVMInterpreter, contract *Contract, memor
var (
value = stack . pop ( )
offset , size = stack . pop ( ) , stack . pop ( )
input = memory . Get ( offset . Int64 ( ) , size . Int64 ( ) )
input = memory . GetCopy ( offset . Int64 ( ) , size . Int64 ( ) )
gas = contract . Gas
)
if interpreter . evm . chainRules . IsEIP150 {
@ -725,7 +723,7 @@ func opCreate2(pc *uint64, interpreter *EVMInterpreter, contract *Contract, memo
endowment = stack . pop ( )
offset , size = stack . pop ( ) , stack . pop ( )
salt = stack . pop ( )
input = memory . Get ( offset . Int64 ( ) , size . Int64 ( ) )
input = memory . GetCopy ( offset . Int64 ( ) , size . Int64 ( ) )
gas = contract . Gas
)
@ -757,7 +755,7 @@ func opCall(pc *uint64, interpreter *EVMInterpreter, contract *Contract, memory
toAddr := common . BigToAddress ( addr )
value = math . U256 ( value )
// Get the arguments from the memory.
args := memory . Get ( inOffset . Int64 ( ) , inSize . Int64 ( ) )
args := memory . GetPtr ( inOffset . Int64 ( ) , inSize . Int64 ( ) )
if value . Sign ( ) != 0 {
gas += params . CallStipend
@ -786,7 +784,7 @@ func opCallCode(pc *uint64, interpreter *EVMInterpreter, contract *Contract, mem
toAddr := common . BigToAddress ( addr )
value = math . U256 ( value )
// Get arguments from the memory.
args := memory . Get ( inOffset . Int64 ( ) , inSize . Int64 ( ) )
args := memory . GetPtr ( inOffset . Int64 ( ) , inSize . Int64 ( ) )
if value . Sign ( ) != 0 {
gas += params . CallStipend
@ -814,7 +812,7 @@ func opDelegateCall(pc *uint64, interpreter *EVMInterpreter, contract *Contract,
addr , inOffset , inSize , retOffset , retSize := stack . pop ( ) , stack . pop ( ) , stack . pop ( ) , stack . pop ( ) , stack . pop ( )
toAddr := common . BigToAddress ( addr )
// Get arguments from the memory.
args := memory . Get ( inOffset . Int64 ( ) , inSize . Int64 ( ) )
args := memory . GetPtr ( inOffset . Int64 ( ) , inSize . Int64 ( ) )
ret , returnGas , err := interpreter . evm . DelegateCall ( contract , toAddr , args , gas )
if err != nil {
@ -839,7 +837,7 @@ func opStaticCall(pc *uint64, interpreter *EVMInterpreter, contract *Contract, m
addr , inOffset , inSize , retOffset , retSize := stack . pop ( ) , stack . pop ( ) , stack . pop ( ) , stack . pop ( ) , stack . pop ( )
toAddr := common . BigToAddress ( addr )
// Get arguments from the memory.
args := memory . Get ( inOffset . Int64 ( ) , inSize . Int64 ( ) )
args := memory . GetPtr ( inOffset . Int64 ( ) , inSize . Int64 ( ) )
ret , returnGas , err := interpreter . evm . StaticCall ( contract , toAddr , args , gas )
if err != nil {
@ -895,7 +893,7 @@ func makeLog(size int) executionFunc {
topics [ i ] = common . BigToHash ( stack . pop ( ) )
}
d := memory . Get ( mStart . Int64 ( ) , mSize . Int64 ( ) )
d := memory . GetCopy ( mStart . Int64 ( ) , mSize . Int64 ( ) )
interpreter . evm . StateDB . AddLog ( & types . Log {
Address : contract . Address ( ) ,
Topics : topics ,