From 1810c3af03d3da56d42f93c4521e33332156dcb6 Mon Sep 17 00:00:00 2001
From: jm <jm.huang@cobinhood.com>
Date: Wed, 16 Jan 2019 17:32:29 +0800
Subject: core: vm: extract stateDB and contract out

Extract stateDB and contract out from core/vm/evm to core/vm,
such that other vm type can use the common modules.
---
 dex/api_tracer.go | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

(limited to 'dex/api_tracer.go')

diff --git a/dex/api_tracer.go b/dex/api_tracer.go
index 450f0bfab..c4dbf78a5 100644
--- a/dex/api_tracer.go
+++ b/dex/api_tracer.go
@@ -32,7 +32,8 @@ import (
 	"github.com/dexon-foundation/dexon/core/rawdb"
 	"github.com/dexon-foundation/dexon/core/state"
 	"github.com/dexon-foundation/dexon/core/types"
-	vm "github.com/dexon-foundation/dexon/core/vm/evm"
+	"github.com/dexon-foundation/dexon/core/vm"
+	"github.com/dexon-foundation/dexon/core/vm/evm"
 	"github.com/dexon-foundation/dexon/eth/tracers"
 	"github.com/dexon-foundation/dexon/internal/ethapi"
 	"github.com/dexon-foundation/dexon/log"
@@ -54,7 +55,7 @@ const (
 
 // TraceConfig holds extra parameters to trace functions.
 type TraceConfig struct {
-	*vm.LogConfig
+	*evm.LogConfig
 	Tracer  *string
 	Timeout *string
 	Reexec  *uint64
@@ -275,7 +276,7 @@ func (api *PrivateDebugAPI) traceChain(ctx context.Context, start, end *types.Bl
 				traced += uint64(len(txs))
 			}
 			// Generate the next state snapshot fast without tracing
-			_, _, _, err := api.dex.blockchain.Processor().Process(block, statedb, vm.Config{})
+			_, _, _, err := api.dex.blockchain.Processor().Process(block, statedb, evm.Config{})
 			if err != nil {
 				failed = err
 				break
@@ -448,7 +449,7 @@ func (api *PrivateDebugAPI) traceBlock(ctx context.Context, block *types.Block,
 		msg, _ := tx.AsMessage(signer)
 		vmctx := core.NewEVMContext(msg, block.Header(), api.dex.blockchain, nil)
 
-		vmenv := vm.NewEVM(vmctx, statedb, api.config, vm.Config{})
+		vmenv := evm.NewEVM(vmctx, statedb, api.config, evm.Config{})
 		if _, _, _, err := core.ApplyMessage(vmenv, msg, new(core.GasPool).AddGas(msg.Gas())); err != nil {
 			failed = err
 			break
@@ -512,7 +513,7 @@ func (api *PrivateDebugAPI) computeStateDB(block *types.Block, reexec uint64) (*
 		if block = api.dex.blockchain.GetBlockByNumber(block.NumberU64() + 1); block == nil {
 			return nil, fmt.Errorf("block #%d not found", block.NumberU64()+1)
 		}
-		_, _, _, err := api.dex.blockchain.Processor().Process(block, statedb, vm.Config{})
+		_, _, _, err := api.dex.blockchain.Processor().Process(block, statedb, evm.Config{})
 		if err != nil {
 			return nil, err
 		}
@@ -561,7 +562,7 @@ func (api *PrivateDebugAPI) TraceTransaction(ctx context.Context, hash common.Ha
 func (api *PrivateDebugAPI) traceTx(ctx context.Context, message core.Message, vmctx vm.Context, statedb *state.StateDB, config *TraceConfig) (interface{}, error) {
 	// Assemble the structured logger or the JavaScript tracer
 	var (
-		tracer vm.Tracer
+		tracer evm.Tracer
 		err    error
 	)
 	switch {
@@ -586,13 +587,13 @@ func (api *PrivateDebugAPI) traceTx(ctx context.Context, message core.Message, v
 		defer cancel()
 
 	case config == nil:
-		tracer = vm.NewStructLogger(nil)
+		tracer = evm.NewStructLogger(nil)
 
 	default:
-		tracer = vm.NewStructLogger(config.LogConfig)
+		tracer = evm.NewStructLogger(config.LogConfig)
 	}
 	// Run the transaction with tracing enabled.
-	vmenv := vm.NewEVM(vmctx, statedb, api.config, vm.Config{Debug: true, Tracer: tracer})
+	vmenv := evm.NewEVM(vmctx, statedb, api.config, evm.Config{Debug: true, Tracer: tracer})
 
 	ret, gas, failed, err := core.ApplyMessage(vmenv, message, new(core.GasPool).AddGas(message.Gas()))
 	if err != nil {
@@ -600,7 +601,7 @@ func (api *PrivateDebugAPI) traceTx(ctx context.Context, message core.Message, v
 	}
 	// Depending on the tracer type, format and return the output
 	switch tracer := tracer.(type) {
-	case *vm.StructLogger:
+	case *evm.StructLogger:
 		return &ethapi.ExecutionResult{
 			Gas:         gas,
 			Failed:      failed,
@@ -642,7 +643,7 @@ func (api *PrivateDebugAPI) computeTxEnv(blockHash common.Hash, txIndex int, ree
 			return msg, context, statedb, nil
 		}
 		// Not yet the searched for transaction, execute on top of the current state
-		vmenv := vm.NewEVM(context, statedb, api.config, vm.Config{})
+		vmenv := evm.NewEVM(context, statedb, api.config, evm.Config{})
 		if _, _, _, err := core.ApplyMessage(vmenv, msg, new(core.GasPool).AddGas(tx.Gas())); err != nil {
 			return nil, vm.Context{}, nil, fmt.Errorf("tx %x failed: %v", tx.Hash(), err)
 		}
-- 
cgit v1.2.3