Skip to content

Commit

Permalink
Merge branch 'ethereum:master' into portal
Browse files Browse the repository at this point in the history
  • Loading branch information
GrapeBaBa authored Jun 18, 2024
2 parents 13e8f62 + 7cf6a63 commit 346440e
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 17 deletions.
2 changes: 1 addition & 1 deletion common/math/big.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ func NewHexOrDecimal256(x int64) *HexOrDecimal256 {
// It is similar to UnmarshalText, but allows parsing real decimals too, not just
// quoted decimal strings.
func (i *HexOrDecimal256) UnmarshalJSON(input []byte) error {
if len(input) > 0 && input[0] == '"' {
if len(input) > 1 && input[0] == '"' {
input = input[1 : len(input)-1]
}
return i.UnmarshalText(input)
Expand Down
2 changes: 1 addition & 1 deletion common/math/integer.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ type HexOrDecimal64 uint64
// It is similar to UnmarshalText, but allows parsing real decimals too, not just
// quoted decimal strings.
func (i *HexOrDecimal64) UnmarshalJSON(input []byte) error {
if len(input) > 0 && input[0] == '"' {
if len(input) > 1 && input[0] == '"' {
input = input[1 : len(input)-1]
}
return i.UnmarshalText(input)
Expand Down
11 changes: 7 additions & 4 deletions core/state/snapshot/snapshot.go
Original file line number Diff line number Diff line change
Expand Up @@ -666,6 +666,9 @@ func diffToDisk(bottom *diffLayer) *diskLayer {

// Release releases resources
func (t *Tree) Release() {
t.lock.RLock()
defer t.lock.RUnlock()

if dl := t.disklayer(); dl != nil {
dl.Release()
}
Expand Down Expand Up @@ -850,8 +853,8 @@ func (t *Tree) diskRoot() common.Hash {
// generating is an internal helper function which reports whether the snapshot
// is still under the construction.
func (t *Tree) generating() (bool, error) {
t.lock.Lock()
defer t.lock.Unlock()
t.lock.RLock()
defer t.lock.RUnlock()

layer := t.disklayer()
if layer == nil {
Expand All @@ -864,8 +867,8 @@ func (t *Tree) generating() (bool, error) {

// DiskRoot is an external helper function to return the disk layer root.
func (t *Tree) DiskRoot() common.Hash {
t.lock.Lock()
defer t.lock.Unlock()
t.lock.RLock()
defer t.lock.RUnlock()

return t.diskRoot()
}
Expand Down
11 changes: 3 additions & 8 deletions triedb/pathdb/history.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import (
"github.com/ethereum/go-ethereum/ethdb"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/trie/triestate"
"golang.org/x/exp/maps"
)

// State history records the state changes involved in executing a block. The
Expand Down Expand Up @@ -244,19 +245,13 @@ type history struct {
// newHistory constructs the state history object with provided state change set.
func newHistory(root common.Hash, parent common.Hash, block uint64, states *triestate.Set) *history {
var (
accountList []common.Address
accountList = maps.Keys(states.Accounts)
storageList = make(map[common.Address][]common.Hash)
)
for addr := range states.Accounts {
accountList = append(accountList, addr)
}
slices.SortFunc(accountList, common.Address.Cmp)

for addr, slots := range states.Storages {
slist := make([]common.Hash, 0, len(slots))
for slotHash := range slots {
slist = append(slist, slotHash)
}
slist := maps.Keys(slots)
slices.SortFunc(slist, common.Hash.Cmp)
storageList[addr] = slist
}
Expand Down
5 changes: 2 additions & 3 deletions triedb/pathdb/nodebuffer.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ package pathdb
import (
"bytes"
"fmt"
"maps"
"time"

"github.com/VictoriaMetrics/fastcache"
Expand Down Expand Up @@ -90,12 +91,10 @@ func (b *nodebuffer) commit(nodes map[common.Hash]map[string]*trienode.Node) *no
// The nodes belong to original diff layer are still accessible even
// after merging, thus the ownership of nodes map should still belong
// to original layer and any mutation on it should be prevented.
current = make(map[string]*trienode.Node, len(subset))
for path, n := range subset {
current[path] = n
delta += int64(len(n.Blob) + len(path))
}
b.nodes[owner] = current
b.nodes[owner] = maps.Clone(subset)
continue
}
for path, n := range subset {
Expand Down

0 comments on commit 346440e

Please sign in to comment.