Skip to content

Commit

Permalink
refactor: move GetConsecutiveValues functionality to memory package (#…
Browse files Browse the repository at this point in the history
…396)

* refactor: move GetConsecutiveValues functionality to memory package

* refactor: rename GetConsecutiveValues func and cleanup reference to it

* fix: fix unit tests bugs
  • Loading branch information
MoigeMatino committed May 15, 2024
1 parent 60548a3 commit 2556573
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 35 deletions.
19 changes: 0 additions & 19 deletions pkg/hintrunner/hinter/operand.go
Original file line number Diff line number Diff line change
Expand Up @@ -231,25 +231,6 @@ func (v Immediate) ApplyApTracking(hint, ref zero.ApTracking) Reference {
return v
}

func GetConsecutiveValues(vm *VM.VirtualMachine, addr mem.MemoryAddress, size int16) ([]mem.MemoryValue, error) {
values := make([]mem.MemoryValue, size)
for i := int16(0); i < size; i++ {
nAddr, err := addr.AddOffset(i)
if err != nil {
return nil, err
}

v, err := vm.Memory.ReadFromAddress(&nAddr)
if err != nil {
return nil, err
}

values[i] = v
}

return values, nil
}

func WriteToNthStructField(vm *VM.VirtualMachine, addr mem.MemoryAddress, value mem.MemoryValue, field int16) error {
nAddr, err := addr.AddOffset(field)
if err != nil {
Expand Down
20 changes: 10 additions & 10 deletions pkg/hintrunner/zero/zerohint_ec.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ func newEcNegateHint(point hinter.ResOperander) hinter.Hinter {
return err
}

pointMemoryValues, err := hinter.GetConsecutiveValues(vm, pointAddr, int16(6))
pointMemoryValues, err := vm.Memory.GetConsecutiveMemoryValues(pointAddr, int16(6))
if err != nil {
return err
}
Expand Down Expand Up @@ -161,7 +161,7 @@ func newFastEcAddAssignNewXHint(slope, point0, point1 hinter.ResOperander) hinte
if err != nil {
return err
}
slopeMemoryValues, err := hinter.GetConsecutiveValues(vm, slopeAddr, int16(3))
slopeMemoryValues, err := vm.Memory.GetConsecutiveMemoryValues(slopeAddr, int16(3))
if err != nil {
return err
}
Expand All @@ -170,7 +170,7 @@ func newFastEcAddAssignNewXHint(slope, point0, point1 hinter.ResOperander) hinte
if err != nil {
return err
}
point0MemoryValues, err := hinter.GetConsecutiveValues(vm, point0Addr, int16(6))
point0MemoryValues, err := vm.Memory.GetConsecutiveMemoryValues(point0Addr, int16(6))
if err != nil {
return err
}
Expand All @@ -179,7 +179,7 @@ func newFastEcAddAssignNewXHint(slope, point0, point1 hinter.ResOperander) hinte
if err != nil {
return err
}
point1MemoryValues, err := hinter.GetConsecutiveValues(vm, point1Addr, int16(3))
point1MemoryValues, err := vm.Memory.GetConsecutiveMemoryValues(point1Addr, int16(3))
if err != nil {
return err
}
Expand Down Expand Up @@ -353,7 +353,7 @@ func newEcDoubleSlopeV1Hint(point hinter.ResOperander) hinter.Hinter {
if err != nil {
return err
}
pointMemoryValues, err := hinter.GetConsecutiveValues(vm, pointAddr, int16(6))
pointMemoryValues, err := vm.Memory.GetConsecutiveMemoryValues(pointAddr, int16(6))
if err != nil {
return err
}
Expand Down Expand Up @@ -431,7 +431,7 @@ func newReduceV1Hint(x hinter.ResOperander) hinter.Hinter {
return err
}

xMemoryValues, err := hinter.GetConsecutiveValues(vm, xAddr, int16(3))
xMemoryValues, err := vm.Memory.GetConsecutiveMemoryValues(xAddr, int16(3))
if err != nil {
return err
}
Expand Down Expand Up @@ -487,7 +487,7 @@ func newEcDoubleAssignNewXV1Hint(slope, point hinter.ResOperander) hinter.Hinter
if err != nil {
return err
}
slopeMemoryValues, err := hinter.GetConsecutiveValues(vm, slopeAddr, int16(3))
slopeMemoryValues, err := vm.Memory.GetConsecutiveMemoryValues(slopeAddr, int16(3))
if err != nil {
return err
}
Expand All @@ -496,7 +496,7 @@ func newEcDoubleAssignNewXV1Hint(slope, point hinter.ResOperander) hinter.Hinter
if err != nil {
return err
}
pointMemoryValues, err := hinter.GetConsecutiveValues(vm, pointAddr, int16(6))
pointMemoryValues, err := vm.Memory.GetConsecutiveMemoryValues(pointAddr, int16(6))
if err != nil {
return err
}
Expand Down Expand Up @@ -654,7 +654,7 @@ func newComputeSlopeV1Hint(point0, point1 hinter.ResOperander) hinter.Hinter {
if err != nil {
return err
}
point0MemoryValues, err := hinter.GetConsecutiveValues(vm, point0Addr, int16(6))
point0MemoryValues, err := vm.Memory.GetConsecutiveMemoryValues(point0Addr, int16(6))
if err != nil {
return err
}
Expand All @@ -663,7 +663,7 @@ func newComputeSlopeV1Hint(point0, point1 hinter.ResOperander) hinter.Hinter {
if err != nil {
return err
}
point1MemoryValues, err := hinter.GetConsecutiveValues(vm, point1Addr, int16(6))
point1MemoryValues, err := vm.Memory.GetConsecutiveMemoryValues(point1Addr, int16(6))
if err != nil {
return err
}
Expand Down
8 changes: 4 additions & 4 deletions pkg/hintrunner/zero/zerohint_signature.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ func newVerifyZeroHint(val, q hinter.ResOperander) hinter.Hinter {
return err
}

valMemoryValues, err := hinter.GetConsecutiveValues(vm, valAddr, int16(3))
valMemoryValues, err := vm.Memory.GetConsecutiveMemoryValues(valAddr, int16(3))
if err != nil {
return err
}
Expand Down Expand Up @@ -177,7 +177,7 @@ func newGetPointFromXHint(xCube, v hinter.ResOperander) hinter.Hinter {
return err
}

xCubeMemoryValues, err := hinter.GetConsecutiveValues(vm, xCubeAddr, 3)
xCubeMemoryValues, err := vm.Memory.GetConsecutiveMemoryValues(xCubeAddr, int16(3))
if err != nil {
return err
}
Expand Down Expand Up @@ -334,7 +334,7 @@ func newDivModNPackedDivmodV1Hint(a, b hinter.ResOperander) hinter.Hinter {
if err != nil {
return err
}
aMemoryValues, err := hinter.GetConsecutiveValues(vm, aAddr, int16(3))
aMemoryValues, err := vm.Memory.GetConsecutiveMemoryValues(aAddr, int16(3))
if err != nil {
return err
}
Expand All @@ -343,7 +343,7 @@ func newDivModNPackedDivmodV1Hint(a, b hinter.ResOperander) hinter.Hinter {
if err != nil {
return err
}
bMemoryValues, err := hinter.GetConsecutiveValues(vm, bAddr, int16(3))
bMemoryValues, err := vm.Memory.GetConsecutiveMemoryValues(bAddr, int16(3))
if err != nil {
return err
}
Expand Down
3 changes: 1 addition & 2 deletions pkg/hintrunner/zero/zerohint_utils_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import (
runnerutil "github.com/NethermindEth/cairo-vm-go/pkg/hintrunner/utils"
"github.com/NethermindEth/cairo-vm-go/pkg/parsers/starknet"
"github.com/NethermindEth/cairo-vm-go/pkg/vm"
VM "github.com/NethermindEth/cairo-vm-go/pkg/vm"
"github.com/NethermindEth/cairo-vm-go/pkg/vm/memory"
"github.com/consensys/gnark-crypto/ecc/stark-curve/fp"
"github.com/stretchr/testify/require"
Expand Down Expand Up @@ -67,7 +66,7 @@ func feltAdd(x, y *fp.Element) *fp.Element {

func apValueEquals(expected *fp.Element) func(t *testing.T, ctx *hintTestContext) {
return func(t *testing.T, ctx *hintTestContext) {
actual := runnerutil.ReadFrom(ctx.vm, VM.ExecutionSegment, ctx.vm.Context.Ap)
actual := runnerutil.ReadFrom(ctx.vm, vm.ExecutionSegment, ctx.vm.Context.Ap)
actualFelt, err := actual.FieldElement()
if err != nil {
t.Fatal(err)
Expand Down
16 changes: 16 additions & 0 deletions pkg/vm/memory/memory_value.go
Original file line number Diff line number Diff line change
Expand Up @@ -315,3 +315,19 @@ func (mv *MemoryValue) Uint64() (uint64, error) {
func (mv *MemoryValue) addrUnsafe() *MemoryAddress {
return (*MemoryAddress)(unsafe.Pointer(&mv.felt))
}

func (memory *Memory) GetConsecutiveMemoryValues(addr MemoryAddress, size int16) ([]MemoryValue, error) {
values := make([]MemoryValue, size)
for i := int16(0); i < size; i++ {
nAddr, err := addr.AddOffset(i)
if err != nil {
return nil, err
}
v, err := memory.ReadFromAddress(&nAddr)
if err != nil {
return nil, err
}
values[i] = v
}
return values, nil
}

0 comments on commit 2556573

Please sign in to comment.