From 47c90038968b8e4293f12a70c6c9040fcad73d09 Mon Sep 17 00:00:00 2001 From: Jonathan Oppenheimer Date: Wed, 24 Sep 2025 16:51:24 -0400 Subject: [PATCH 1/6] add custom logs --- vms/evm/customlogs/log_ext.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 vms/evm/customlogs/log_ext.go diff --git a/vms/evm/customlogs/log_ext.go b/vms/evm/customlogs/log_ext.go new file mode 100644 index 000000000000..ad1a2b70b893 --- /dev/null +++ b/vms/evm/customlogs/log_ext.go @@ -0,0 +1,14 @@ +// Copyright (C) 2019-2025, Ava Labs, Inc. All rights reserved. +// See the file LICENSE for licensing terms. +package customlogs + +import ethtypes "github.com/ava-labs/libevm/core/types" + +// FlattenLogs converts a nested array of logs to a single array of logs. +func FlattenLogs(list [][]*ethtypes.Log) []*ethtypes.Log { + var flat []*ethtypes.Log + for _, logs := range list { + flat = append(flat, logs...) + } + return flat +} From 779a766d139df60dd54c05f91ae2d6737de10f30 Mon Sep 17 00:00:00 2001 From: Jonathan Oppenheimer Date: Wed, 24 Sep 2025 16:57:05 -0400 Subject: [PATCH 2/6] optimize loop --- vms/evm/customlogs/log_ext.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/vms/evm/customlogs/log_ext.go b/vms/evm/customlogs/log_ext.go index ad1a2b70b893..2f399a1d49f6 100644 --- a/vms/evm/customlogs/log_ext.go +++ b/vms/evm/customlogs/log_ext.go @@ -6,7 +6,13 @@ import ethtypes "github.com/ava-labs/libevm/core/types" // FlattenLogs converts a nested array of logs to a single array of logs. func FlattenLogs(list [][]*ethtypes.Log) []*ethtypes.Log { - var flat []*ethtypes.Log + totalLen := 0 + for _, logs := range list { + totalLen += len(logs) + } + + // Pre-allocate slice with exact capacity + flat := make([]*ethtypes.Log, 0, totalLen) for _, logs := range list { flat = append(flat, logs...) } From 363de5529f9f6c7e56e72bd3ca00cdf57eb3d959 Mon Sep 17 00:00:00 2001 From: Jonathan Oppenheimer Date: Wed, 24 Sep 2025 16:57:48 -0400 Subject: [PATCH 3/6] lint --- vms/evm/customlogs/log_ext.go | 1 + 1 file changed, 1 insertion(+) diff --git a/vms/evm/customlogs/log_ext.go b/vms/evm/customlogs/log_ext.go index 2f399a1d49f6..cbc79fc0e021 100644 --- a/vms/evm/customlogs/log_ext.go +++ b/vms/evm/customlogs/log_ext.go @@ -1,5 +1,6 @@ // Copyright (C) 2019-2025, Ava Labs, Inc. All rights reserved. // See the file LICENSE for licensing terms. + package customlogs import ethtypes "github.com/ava-labs/libevm/core/types" From aafa4503940e11ca65296a1b72fa8693d9f1b20c Mon Sep 17 00:00:00 2001 From: Jonathan Oppenheimer Date: Thu, 25 Sep 2025 10:23:48 -0400 Subject: [PATCH 4/6] Apply suggestions from code review Co-authored-by: rodrigo <77309055+RodrigoVillar@users.noreply.github.com> Signed-off-by: Jonathan Oppenheimer <147infiniti@gmail.com> --- vms/evm/customlogs/log_ext.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vms/evm/customlogs/log_ext.go b/vms/evm/customlogs/log_ext.go index cbc79fc0e021..400b991f3327 100644 --- a/vms/evm/customlogs/log_ext.go +++ b/vms/evm/customlogs/log_ext.go @@ -3,11 +3,11 @@ package customlogs -import ethtypes "github.com/ava-labs/libevm/core/types" +import "github.com/ava-labs/libevm/core/types" // FlattenLogs converts a nested array of logs to a single array of logs. func FlattenLogs(list [][]*ethtypes.Log) []*ethtypes.Log { - totalLen := 0 + numLogs := 0 for _, logs := range list { totalLen += len(logs) } From 9a7aeeceb4607d2ccefc56f6bad58e3bcac9693b Mon Sep 17 00:00:00 2001 From: Jonathan Oppenheimer Date: Thu, 25 Sep 2025 10:25:02 -0400 Subject: [PATCH 5/6] clean up suggestions --- vms/evm/customlogs/log_ext.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vms/evm/customlogs/log_ext.go b/vms/evm/customlogs/log_ext.go index 400b991f3327..25b8be1c7e25 100644 --- a/vms/evm/customlogs/log_ext.go +++ b/vms/evm/customlogs/log_ext.go @@ -6,14 +6,14 @@ package customlogs import "github.com/ava-labs/libevm/core/types" // FlattenLogs converts a nested array of logs to a single array of logs. -func FlattenLogs(list [][]*ethtypes.Log) []*ethtypes.Log { +func FlattenLogs(list [][]*types.Log) []*types.Log { numLogs := 0 for _, logs := range list { - totalLen += len(logs) + numLogs += len(logs) } // Pre-allocate slice with exact capacity - flat := make([]*ethtypes.Log, 0, totalLen) + flat := make([]*types.Log, 0, numLogs) for _, logs := range list { flat = append(flat, logs...) } From 5aebd54a85d781fb61afe2e9f13aad3f53595b42 Mon Sep 17 00:00:00 2001 From: Jonathan Oppenheimer Date: Thu, 25 Sep 2025 11:14:36 -0400 Subject: [PATCH 6/6] remove comment --- vms/evm/customlogs/log_ext.go | 1 - 1 file changed, 1 deletion(-) diff --git a/vms/evm/customlogs/log_ext.go b/vms/evm/customlogs/log_ext.go index 25b8be1c7e25..12ee3c7727e1 100644 --- a/vms/evm/customlogs/log_ext.go +++ b/vms/evm/customlogs/log_ext.go @@ -12,7 +12,6 @@ func FlattenLogs(list [][]*types.Log) []*types.Log { numLogs += len(logs) } - // Pre-allocate slice with exact capacity flat := make([]*types.Log, 0, numLogs) for _, logs := range list { flat = append(flat, logs...)