Browse Source

core/state: more memory efficient preimage allocation (#16663)

atsushi-ishibashi 6 years ago
parent
commit
81801ccc2b
2 changed files with 10 additions and 1 deletions
  1. 1 1
      core/state/statedb.go
  2. 9 0
      core/state/statedb_test.go

+ 1 - 1
core/state/statedb.go

@@ -502,7 +502,7 @@ func (self *StateDB) Copy() *StateDB {
 		refund:            self.refund,
 		logs:              make(map[common.Hash][]*types.Log, len(self.logs)),
 		logSize:           self.logSize,
-		preimages:         make(map[common.Hash][]byte),
+		preimages:         make(map[common.Hash][]byte, len(self.preimages)),
 		journal:           newJournal(),
 	}
 	// Copy the dirty states, logs, and preimages

+ 9 - 0
core/state/statedb_test.go

@@ -276,6 +276,15 @@ func newTestAction(addr common.Address, r *rand.Rand) testAction {
 			},
 			args: make([]int64, 1),
 		},
+		{
+			name: "AddPreimage",
+			fn: func(a testAction, s *StateDB) {
+				preimage := []byte{1}
+				hash := common.BytesToHash(preimage)
+				s.AddPreimage(hash, preimage)
+			},
+			args: make([]int64, 1),
+		},
 	}
 	action := actions[r.Intn(len(actions))]
 	var nameargs []string