github.com/arieschain/arieschain@v0.0.0-20191023063405-37c074544356/core/vm/memory_table.go (about)

     1  package vm
     2  
     3  import (
     4  	"math/big"
     5  
     6  	"github.com/quickchainproject/quickchain/common/math"
     7  )
     8  
     9  func memorySha3(stack *Stack) *big.Int {
    10  	return calcMemSize(stack.Back(0), stack.Back(1))
    11  }
    12  
    13  func memoryCallDataCopy(stack *Stack) *big.Int {
    14  	return calcMemSize(stack.Back(0), stack.Back(2))
    15  }
    16  
    17  func memoryReturnDataCopy(stack *Stack) *big.Int {
    18  	return calcMemSize(stack.Back(0), stack.Back(2))
    19  }
    20  
    21  func memoryCodeCopy(stack *Stack) *big.Int {
    22  	return calcMemSize(stack.Back(0), stack.Back(2))
    23  }
    24  
    25  func memoryExtCodeCopy(stack *Stack) *big.Int {
    26  	return calcMemSize(stack.Back(1), stack.Back(3))
    27  }
    28  
    29  func memoryMLoad(stack *Stack) *big.Int {
    30  	return calcMemSize(stack.Back(0), big.NewInt(32))
    31  }
    32  
    33  func memoryMStore8(stack *Stack) *big.Int {
    34  	return calcMemSize(stack.Back(0), big.NewInt(1))
    35  }
    36  
    37  func memoryMStore(stack *Stack) *big.Int {
    38  	return calcMemSize(stack.Back(0), big.NewInt(32))
    39  }
    40  
    41  func memoryCreate(stack *Stack) *big.Int {
    42  	return calcMemSize(stack.Back(1), stack.Back(2))
    43  }
    44  
    45  func memoryCall(stack *Stack) *big.Int {
    46  	x := calcMemSize(stack.Back(5), stack.Back(6))
    47  	y := calcMemSize(stack.Back(3), stack.Back(4))
    48  
    49  	return math.BigMax(x, y)
    50  }
    51  
    52  func memoryCallCode(stack *Stack) *big.Int {
    53  	x := calcMemSize(stack.Back(5), stack.Back(6))
    54  	y := calcMemSize(stack.Back(3), stack.Back(4))
    55  
    56  	return math.BigMax(x, y)
    57  }
    58  func memoryDelegateCall(stack *Stack) *big.Int {
    59  	x := calcMemSize(stack.Back(4), stack.Back(5))
    60  	y := calcMemSize(stack.Back(2), stack.Back(3))
    61  
    62  	return math.BigMax(x, y)
    63  }
    64  
    65  func memoryStaticCall(stack *Stack) *big.Int {
    66  	x := calcMemSize(stack.Back(4), stack.Back(5))
    67  	y := calcMemSize(stack.Back(2), stack.Back(3))
    68  
    69  	return math.BigMax(x, y)
    70  }
    71  
    72  func memoryReturn(stack *Stack) *big.Int {
    73  	return calcMemSize(stack.Back(0), stack.Back(1))
    74  }
    75  
    76  func memoryRevert(stack *Stack) *big.Int {
    77  	return calcMemSize(stack.Back(0), stack.Back(1))
    78  }
    79  
    80  func memoryLog(stack *Stack) *big.Int {
    81  	mSize, mStart := stack.Back(1), stack.Back(0)
    82  	return calcMemSize(mStart, mSize)
    83  }