Skip to content

Commit

Permalink
trie, consensus/clique: use maps.Clone (ethereum#29616)
Browse files Browse the repository at this point in the history
  • Loading branch information
AaronChen0 authored Apr 24, 2024
1 parent ac21f9b commit 7362691
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 30 deletions.
23 changes: 6 additions & 17 deletions consensus/clique/snapshot.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ package clique
import (
"bytes"
"encoding/json"
"maps"
"slices"
"time"

Expand Down Expand Up @@ -108,28 +109,16 @@ func (s *Snapshot) store(db ethdb.Database) error {

// copy creates a deep copy of the snapshot, though not the individual votes.
func (s *Snapshot) copy() *Snapshot {
cpy := &Snapshot{
return &Snapshot{
config: s.config,
sigcache: s.sigcache,
Number: s.Number,
Hash: s.Hash,
Signers: make(map[common.Address]struct{}),
Recents: make(map[uint64]common.Address),
Votes: make([]*Vote, len(s.Votes)),
Tally: make(map[common.Address]Tally),
}
for signer := range s.Signers {
cpy.Signers[signer] = struct{}{}
Signers: maps.Clone(s.Signers),
Recents: maps.Clone(s.Recents),
Votes: slices.Clone(s.Votes),
Tally: maps.Clone(s.Tally),
}
for block, signer := range s.Recents {
cpy.Recents[block] = signer
}
for address, tally := range s.Tally {
cpy.Tally[address] = tally
}
copy(cpy.Votes, s.Votes)

return cpy
}

// validVote returns whether it makes sense to cast the specified vote in the
Expand Down
18 changes: 5 additions & 13 deletions trie/tracer.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
package trie

import (
"maps"

"github.com/ethereum/go-ethereum/common"
)

Expand Down Expand Up @@ -92,23 +94,13 @@ func (t *tracer) reset() {

// copy returns a deep copied tracer instance.
func (t *tracer) copy() *tracer {
var (
inserts = make(map[string]struct{})
deletes = make(map[string]struct{})
accessList = make(map[string][]byte)
)
for path := range t.inserts {
inserts[path] = struct{}{}
}
for path := range t.deletes {
deletes[path] = struct{}{}
}
accessList := make(map[string][]byte, len(t.accessList))
for path, blob := range t.accessList {
accessList[path] = common.CopyBytes(blob)
}
return &tracer{
inserts: inserts,
deletes: deletes,
inserts: maps.Clone(t.inserts),
deletes: maps.Clone(t.deletes),
accessList: accessList,
}
}
Expand Down

0 comments on commit 7362691

Please sign in to comment.