From 787a61bb27b9f51f4af67c69eb8f1c5869ae3144 Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Wed, 17 Jun 2015 11:24:40 +0200
Subject: core/state, core/vm: reworked storage get / set to use common.Hash

---
 core/vm/vm.go | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

(limited to 'core/vm')

diff --git a/core/vm/vm.go b/core/vm/vm.go
index 0486fbbc7..336f6cf95 100644
--- a/core/vm/vm.go
+++ b/core/vm/vm.go
@@ -506,14 +506,14 @@ func (self *Vm) Run(context *Context, input []byte) (ret []byte, err error) {
 
 		case SLOAD:
 			loc := common.BigToHash(stack.pop())
-			val := common.Bytes2Big(statedb.GetState(context.Address(), loc))
+			val := statedb.GetState(context.Address(), loc).Big()
 			stack.push(val)
 
 		case SSTORE:
 			loc := common.BigToHash(stack.pop())
 			val := stack.pop()
 
-			statedb.SetState(context.Address(), loc, val)
+			statedb.SetState(context.Address(), loc, common.BigToHash(val))
 
 		case JUMP:
 			if err := jump(pc, stack.pop()); err != nil {
@@ -686,10 +686,10 @@ func (self *Vm) calculateGasAndSize(context *Context, caller ContextRef, op OpCo
 		var g *big.Int
 		y, x := stack.data[stack.len()-2], stack.data[stack.len()-1]
 		val := statedb.GetState(context.Address(), common.BigToHash(x))
-		if len(val) == 0 && len(y.Bytes()) > 0 {
+		if common.EmptyHash(val) && !common.EmptyHash(common.BigToHash(y)) {
 			// 0 => non 0
 			g = params.SstoreSetGas
-		} else if len(val) > 0 && len(y.Bytes()) == 0 {
+		} else if !common.EmptyHash(val) && common.EmptyHash(common.BigToHash(y)) {
 			statedb.Refund(params.SstoreRefundGas)
 
 			g = params.SstoreClearGas
@@ -697,6 +697,13 @@ func (self *Vm) calculateGasAndSize(context *Context, caller ContextRef, op OpCo
 			// non 0 => non 0 (or 0 => 0)
 			g = params.SstoreClearGas
 		}
+
+		/*
+			if len(val) == 0 && len(y.Bytes()) > 0 {
+			} else if len(val) > 0 && len(y.Bytes()) == 0 {
+			} else {
+			}
+		*/
 		gas.Set(g)
 	case SUICIDE:
 		if !statedb.IsDeleted(context.Address()) {
-- 
cgit v1.2.3