Skip to content

Commit

Permalink
restore hashing and comparison bahvaiour of Testnet
Browse files Browse the repository at this point in the history
  • Loading branch information
turbolent committed Oct 13, 2021
1 parent a9aa6e3 commit 7fd65a4
Showing 1 changed file with 20 additions and 25 deletions.
45 changes: 20 additions & 25 deletions runtime/interpreter/value.go
Original file line number Diff line number Diff line change
Expand Up @@ -7344,6 +7344,16 @@ func (v *CompositeValue) Destroy(interpreter *Interpreter, getLocationRange func
v.isDestroyed = true
}

func compositeFieldComparator(storage atree.SlabStorage, value atree.Value, other atree.Storable) (bool, error) {
a := value.(*StringValue)
b := StoredValue(other, storage).(*StringValue)
return a.Str == b.Str, nil
}

func compositeFieldHashInputProvider(value atree.Value, _ []byte) ([]byte, error) {
return []byte(value.(*StringValue).Str), nil
}

func (v *CompositeValue) GetMember(interpreter *Interpreter, getLocationRange func() LocationRange, name string) Value {

if v.Kind == common.CompositeKindResource &&
Expand All @@ -7352,12 +7362,9 @@ func (v *CompositeValue) GetMember(interpreter *Interpreter, getLocationRange fu
return v.OwnerValue(interpreter, getLocationRange)
}

valueComparator := newValueComparator(interpreter, getLocationRange)
hashInputProvider := newHashInputProvider(interpreter, getLocationRange)

storable, err := v.dictionary.Get(
valueComparator,
hashInputProvider,
compositeFieldComparator,
compositeFieldHashInputProvider,
NewStringValue(name),
)
if err != nil {
Expand Down Expand Up @@ -7468,12 +7475,9 @@ func (v *CompositeValue) SetMember(
address,
)

valueComparator := newValueComparator(interpreter, getLocationRange)
hashInputProvider := newHashInputProvider(interpreter, getLocationRange)

existingStorable, err := v.dictionary.Set(
valueComparator,
hashInputProvider,
compositeFieldComparator,
compositeFieldHashInputProvider,
NewStringValue(name),
value,
)
Expand Down Expand Up @@ -7543,12 +7547,9 @@ func formatComposite(typeId string, fields []CompositeField, seenReferences Seen

func (v *CompositeValue) GetField(interpreter *Interpreter, getLocationRange func() LocationRange, name string) Value {

valueComparator := newValueComparator(interpreter, getLocationRange)
hashInputProvider := newHashInputProvider(interpreter, getLocationRange)

storable, err := v.dictionary.Get(
valueComparator,
hashInputProvider,
compositeFieldComparator,
compositeFieldHashInputProvider,
NewStringValue(name),
)
if err != nil {
Expand Down Expand Up @@ -7744,16 +7745,13 @@ func (v *CompositeValue) DeepCopy(
panic(ExternalError{err})
}

valueComparator := newValueComparator(interpreter, getLocationRange)
hashInputProvider := newHashInputProvider(interpreter, getLocationRange)

dictionary, err := atree.NewMapFromBatchData(
interpreter.Storage,
address,
atree.NewDefaultDigesterBuilder(),
v.dictionary.Type(),
valueComparator,
hashInputProvider,
compositeFieldComparator,
compositeFieldHashInputProvider,
v.dictionary.Seed(),
func() (atree.Value, atree.Value, error) {

Expand Down Expand Up @@ -7846,12 +7844,9 @@ func (v *CompositeValue) RemoveField(
getLocationRange func() LocationRange,
name string,
) {
valueComparator := newValueComparator(interpreter, getLocationRange)
hashInputProvider := newHashInputProvider(interpreter, getLocationRange)

existingKeyStorable, existingValueStorable, err := v.dictionary.Remove(
valueComparator,
hashInputProvider,
compositeFieldComparator,
compositeFieldHashInputProvider,
NewStringValue(name),
)
if err != nil {
Expand Down

0 comments on commit 7fd65a4

Please sign in to comment.