aboutsummaryrefslogtreecommitdiffstats
path: root/core/vm/memory_table.go
diff options
context:
space:
mode:
Diffstat (limited to 'core/vm/memory_table.go')
-rw-r--r--core/vm/memory_table.go68
1 files changed, 68 insertions, 0 deletions
diff --git a/core/vm/memory_table.go b/core/vm/memory_table.go
new file mode 100644
index 000000000..4db994837
--- /dev/null
+++ b/core/vm/memory_table.go
@@ -0,0 +1,68 @@
+package vm
+
+import (
+ "math/big"
+
+ "github.com/ethereum/go-ethereum/common"
+)
+
+func memorySha3(stack *Stack) *big.Int {
+ return calcMemSize(stack.Back(0), stack.Back(1))
+}
+
+func memoryCalldataCopy(stack *Stack) *big.Int {
+ return calcMemSize(stack.Back(0), stack.Back(2))
+}
+
+func memoryCodeCopy(stack *Stack) *big.Int {
+ return calcMemSize(stack.Back(0), stack.Back(2))
+}
+
+func memoryExtCodeCopy(stack *Stack) *big.Int {
+ return calcMemSize(stack.Back(1), stack.Back(3))
+}
+
+func memoryMLoad(stack *Stack) *big.Int {
+ return calcMemSize(stack.Back(0), big.NewInt(32))
+}
+
+func memoryMStore8(stack *Stack) *big.Int {
+ return calcMemSize(stack.Back(0), big.NewInt(1))
+}
+
+func memoryMStore(stack *Stack) *big.Int {
+ return calcMemSize(stack.Back(0), big.NewInt(32))
+}
+
+func memoryCreate(stack *Stack) *big.Int {
+ return calcMemSize(stack.Back(1), stack.Back(2))
+}
+
+func memoryCall(stack *Stack) *big.Int {
+ x := calcMemSize(stack.Back(5), stack.Back(6))
+ y := calcMemSize(stack.Back(3), stack.Back(4))
+
+ return common.BigMax(x, y)
+}
+
+func memoryCallCode(stack *Stack) *big.Int {
+ x := calcMemSize(stack.Back(5), stack.Back(6))
+ y := calcMemSize(stack.Back(3), stack.Back(4))
+
+ return common.BigMax(x, y)
+}
+func memoryDelegateCall(stack *Stack) *big.Int {
+ x := calcMemSize(stack.Back(4), stack.Back(5))
+ y := calcMemSize(stack.Back(2), stack.Back(3))
+
+ return common.BigMax(x, y)
+}
+
+func memoryReturn(stack *Stack) *big.Int {
+ return calcMemSize(stack.Back(0), stack.Back(1))
+}
+
+func memoryLog(stack *Stack) *big.Int {
+ mSize, mStart := stack.Back(1), stack.Back(0)
+ return calcMemSize(mStart, mSize)
+}