From fe5ad101e87df0cd46952080370176632719d864 Mon Sep 17 00:00:00 2001 From: MariusVanDerWijden Date: Thu, 12 Feb 2026 11:01:21 +0100 Subject: [PATCH] eth/tracers/native: make opcode counter array --- cmd/evm/internal/t8ntool/transition.go | 2 +- eth/tracers/native/opcode_counter.go | 12 +++--------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/cmd/evm/internal/t8ntool/transition.go b/cmd/evm/internal/t8ntool/transition.go index 2e10812bf9..96a05dfa1b 100644 --- a/cmd/evm/internal/t8ntool/transition.go +++ b/cmd/evm/internal/t8ntool/transition.go @@ -195,7 +195,7 @@ func Transition(ctx *cli.Context) error { // Configure opcode counter var counter *native.OpcodeCounter if ctx.IsSet(OpcodeCountFlag.Name) && ctx.String(OpcodeCountFlag.Name) != "" { - counter = native.NewOpcodeCounter() + counter = new(native.OpcodeCounter) if vmConfig.Tracer != nil { // If we have an existing tracer, multiplex with the opcode tracer tExisting := tracers.Tracer{Hooks: vmConfig.Tracer} diff --git a/eth/tracers/native/opcode_counter.go b/eth/tracers/native/opcode_counter.go index 9922f9a687..43d30453f0 100644 --- a/eth/tracers/native/opcode_counter.go +++ b/eth/tracers/native/opcode_counter.go @@ -23,19 +23,13 @@ import ( // OpcodeCounter is a simple tracer that counts how many times each opcode is executed. type OpcodeCounter struct { - counts map[vm.OpCode]uint64 -} - -func NewOpcodeCounter() *OpcodeCounter { - return &OpcodeCounter{ - counts: make(map[vm.OpCode]uint64), - } + counts [256]uint64 } func (c *OpcodeCounter) Hooks() *tracing.Hooks { return &tracing.Hooks{ OnOpcode: func(pc uint64, op byte, gas, cost uint64, scope tracing.OpContext, rData []byte, depth int, err error) { - c.counts[vm.OpCode(op)]++ + c.counts[op]++ }, } } @@ -44,7 +38,7 @@ func (c *OpcodeCounter) Hooks() *tracing.Hooks { func (c *OpcodeCounter) Results() map[string]uint64 { out := make(map[string]uint64, len(c.counts)) for op, count := range c.counts { - out[op.String()] = count + out[vm.OpCode(op).String()] = count } return out }