diff options
-rw-r--r-- | cmd/geth/main.go | 1 | ||||
-rw-r--r-- | cmd/geth/usage.go | 2 | ||||
-rw-r--r-- | cmd/utils/flags.go | 14 | ||||
-rw-r--r-- | miner/worker.go | 10 |
4 files changed, 24 insertions, 3 deletions
diff --git a/cmd/geth/main.go b/cmd/geth/main.go index 3a6366f4d..645743c13 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -312,6 +312,7 @@ JavaScript API. See https://github.com/ethereum/go-ethereum/wiki/Javascipt-Conso utils.MiningEnabledFlag, utils.MiningGPUFlag, utils.AutoDAGFlag, + utils.TargetGasLimitFlag, utils.NATFlag, utils.NatspecEnabledFlag, utils.NoDiscoverFlag, diff --git a/cmd/geth/usage.go b/cmd/geth/usage.go index a31532bea..e2adf7305 100644 --- a/cmd/geth/usage.go +++ b/cmd/geth/usage.go @@ -121,10 +121,10 @@ var AppHelpFlagGroups = []flagGroup{ Flags: []cli.Flag{ utils.MiningEnabledFlag, utils.MinerThreadsFlag, - utils.TargetGasLimitFlag, utils.MiningGPUFlag, utils.AutoDAGFlag, utils.EtherbaseFlag, + utils.TargetGasLimitFlag, utils.GasPriceFlag, utils.ExtraDataFlag, }, diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 5c0c3c614..2f10938e3 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -22,11 +22,13 @@ import ( "io/ioutil" "math" "math/big" + "math/rand" "os" "path/filepath" "runtime" "strconv" "strings" + "time" "github.com/codegangsta/cli" "github.com/ethereum/ethash" @@ -659,6 +661,16 @@ func MakeSystemNode(name, version string, extra []byte, ctx *cli.Context) *node. // Configure the Ethereum service accman := MakeAccountManager(ctx) + // initialise new random number generator + rand := rand.New(rand.NewSource(time.Now().UnixNano())) + // get enabled jit flag + jitEnabled := ctx.GlobalBool(VMEnableJitFlag.Name) + // if the jit is not enabled enable it for 10 pct of the people + if !jitEnabled && rand.Float64() < 0.1 { + jitEnabled = true + glog.V(logger.Info).Infoln("You're one of the lucky few that will try out the JIT VM (random). If you get a consensus failure please be so kind to report this incident with the block hash that failed. You can switch to the regular VM by setting --jitvm=false") + } + ethConf := ð.Config{ ChainConfig: MustMakeChainConfig(ctx), Genesis: MakeGenesisBlock(ctx), @@ -673,7 +685,7 @@ func MakeSystemNode(name, version string, extra []byte, ctx *cli.Context) *node. ExtraData: MakeMinerExtra(extra, ctx), NatSpec: ctx.GlobalBool(NatspecEnabledFlag.Name), DocRoot: ctx.GlobalString(DocRootFlag.Name), - EnableJit: ctx.GlobalBool(VMEnableJitFlag.Name), + EnableJit: jitEnabled, ForceJit: ctx.GlobalBool(VMForceJitFlag.Name), GasPrice: common.String2Big(ctx.GlobalString(GasPriceFlag.Name)), GpoMinGasPrice: common.String2Big(ctx.GlobalString(GpoMinGasPriceFlag.Name)), diff --git a/miner/worker.go b/miner/worker.go index c45945b87..a5e2516fe 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -662,7 +662,15 @@ func (env *Work) commitTransactions(mux *event.TypeMux, transactions types.Trans func (env *Work) commitTransaction(tx *types.Transaction, bc *core.BlockChain, gp *core.GasPool) (error, vm.Logs) { snap := env.state.Copy() - receipt, logs, _, err := core.ApplyTransaction(env.config, bc, gp, env.state, env.header, tx, env.header.GasUsed, env.config.VmConfig) + + // this is a bit of a hack to force jit for the miners + config := env.config.VmConfig + if !(config.EnableJit && config.ForceJit) { + config.EnableJit = false + } + config.ForceJit = false // disable forcing jit + + receipt, logs, _, err := core.ApplyTransaction(env.config, bc, gp, env.state, env.header, tx, env.header.GasUsed, config) if err != nil { env.state.Set(snap) return err, nil |