From 44cd221ed93f36e86757a5dfdd5f3fb7d128b459 Mon Sep 17 00:00:00 2001 From: Asuka Date: Fri, 26 Jun 2026 19:46:15 +0800 Subject: [PATCH] perf(vm): hoist allowDynamicEnergy out of the opcode loop --- actuator/src/main/java/org/tron/core/vm/VM.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/actuator/src/main/java/org/tron/core/vm/VM.java b/actuator/src/main/java/org/tron/core/vm/VM.java index b1d7b027601..585c52b0ce0 100644 --- a/actuator/src/main/java/org/tron/core/vm/VM.java +++ b/actuator/src/main/java/org/tron/core/vm/VM.java @@ -23,8 +23,10 @@ public static void play(Program program, JumpTable jumpTable) { try { long factor = DYNAMIC_ENERGY_FACTOR_DECIMAL; long energyUsage = 0L; + // hoist once per execution: avoids a per-opcode VMConfig.current() thread-local lookup + final boolean allowDynamicEnergy = VMConfig.allowDynamicEnergy(); - if (VMConfig.allowDynamicEnergy()) { + if (allowDynamicEnergy) { factor = program.updateContextContractFactor(); } @@ -47,7 +49,7 @@ public static void play(Program program, JumpTable jumpTable) { String opName = Op.getNameOf(op.getOpcode()); /* spend energy before execution */ long energy = op.getEnergyCost(program); - if (VMConfig.allowDynamicEnergy()) { + if (allowDynamicEnergy) { long actualEnergy = energy; // CALL Ops have special calculation on energy. if (CALL_OPS.contains(op.getOpcode())) { @@ -101,7 +103,7 @@ public static void play(Program program, JumpTable jumpTable) { } } - if (VMConfig.allowDynamicEnergy()) { + if (allowDynamicEnergy) { program.addContextContractUsage(energyUsage); }