code: func NewEVMInterpreter(evm *EVM, cfg Config) *EVMInterpreter {
  	// We use the STOP instruction whether to see
  	// the jump table was initialised. If it was not
  	// we'll set the default jump table.
  	if !cfg.JumpTable[STOP].valid {
  		switch {
  		case evm.ChainConfig().IsConstantinople(evm.BlockNumber):
  			cfg.JumpTable = constantinopleInstructionSet
  		case evm.ChainConfig().IsByzantium(evm.BlockNumber):
  			cfg.JumpTable = byzantiumInstructionSet
  		case evm.ChainConfig().IsHomestead(evm.BlockNumber):
  			cfg.JumpTable = homesteadInstructionSet
  		default:
  			cfg.JumpTable = frontierInstructionSet
  		}
  	}
  
  	return &EVMInterpreter{
  		evm:      evm,
  		cfg:      cfg,
  		gasTable: evm.ChainConfig().GasTable(evm.BlockNumber),
  	}
  }
docs: // NewEVMInterpreter returns a new instance of the Interpreter.