func runVmBench(test vmBench, b *testing.B) { db, _ := ethdb.NewMemDatabase() sender := state.NewStateObject(common.Address{}, db) if test.precompile && !test.forcejit { NewProgram(test.code) } env := NewEnv() EnableJit = !test.nojit ForceJit = test.forcejit b.ResetTimer() for i := 0; i < b.N; i++ { context := NewContext(sender, sender, big.NewInt(100), big.NewInt(10000), big.NewInt(0)) context.Code = test.code context.CodeAddr = &common.Address{} _, err := New(env).Run(context, test.input) if err != nil { b.Error(err) b.FailNow() } } }
func (self *State) safeGet(addr string) *state.StateObject { object := self.state.GetStateObject(common.HexToAddress(addr)) if object == nil { object = state.NewStateObject(common.HexToAddress(addr), self.xeth.backend.ChainDb()) } return object }
func StateObjectFromAccount(db common.Database, addr string, account Account) *state.StateObject { obj := state.NewStateObject(common.HexToAddress(addr), db) obj.SetBalance(common.Big(account.Balance)) if common.IsHex(account.Code) { account.Code = account.Code[2:] } obj.SetCode(common.Hex2Bytes(account.Code)) obj.SetNonce(common.Big(account.Nonce).Uint64()) return obj }