From 20e6a3ef9d7551dd3ffd37f662936434f9938ff5 Mon Sep 17 00:00:00 2001 From: wit liu <765765346@qq.com> Date: Tue, 9 Dec 2025 13:31:47 +0800 Subject: [PATCH] core/vm: refactor memory resize #33056 (#1845) --- core/vm/memory.go | 10 +++++++--- core/vm/memory_test.go | 7 +++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/core/vm/memory.go b/core/vm/memory.go index 67bf039fca..825a74e6df 100644 --- a/core/vm/memory.go +++ b/core/vm/memory.go @@ -57,10 +57,14 @@ func (m *Memory) Set32(offset uint64, val *uint256.Int) { val.PutUint256(m.store[offset:]) } -// Resize resizes the memory to size +// Resize grows the memory to the requested size. func (m *Memory) Resize(size uint64) { - if uint64(m.Len()) < size { - m.store = append(m.store, make([]byte, size-uint64(m.Len()))...) + if uint64(len(m.store)) < size { + if uint64(cap(m.store)) >= size { + m.store = m.store[:size] + } else { + m.store = append(m.store, make([]byte, size-uint64(len(m.store)))...) + } } } diff --git a/core/vm/memory_test.go b/core/vm/memory_test.go index c2630b1150..bf91a91c5c 100644 --- a/core/vm/memory_test.go +++ b/core/vm/memory_test.go @@ -67,3 +67,10 @@ func TestMemoryCopy(t *testing.T) { } } } + +func BenchmarkResize(b *testing.B) { + memory := NewMemory() + for i := range b.N { + memory.Resize(uint64(i)) + } +}