From a464aa8b8c905a1b1ddd19d0f9706037d96bb413 Mon Sep 17 00:00:00 2001 From: Liulei Date: Mon, 17 Feb 2025 15:35:58 +0800 Subject: [PATCH] feat(tvm): compare dataword in mcopy energy cost --- actuator/src/main/java/org/tron/core/vm/EnergyCost.java | 8 +++----- .../java/org/tron/core/vm/repository/RepositoryImpl.java | 2 +- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/actuator/src/main/java/org/tron/core/vm/EnergyCost.java b/actuator/src/main/java/org/tron/core/vm/EnergyCost.java index 74dbaa741c3..b758438c940 100644 --- a/actuator/src/main/java/org/tron/core/vm/EnergyCost.java +++ b/actuator/src/main/java/org/tron/core/vm/EnergyCost.java @@ -1,7 +1,5 @@ package org.tron.core.vm; -import static org.tron.common.math.Maths.max; - import java.math.BigInteger; import org.tron.common.runtime.vm.DataWord; import org.tron.core.vm.config.VMConfig; @@ -248,9 +246,9 @@ public static long getMCopyCost(Program program) { Stack stack = program.getStack(); long oldMemSize = program.getMemSize(); - int dstOffset = stack.peek().intValue(); - int srcOffset = stack.get(stack.size() - 2).intValue(); - DataWord maxOffset = new DataWord(max(dstOffset, srcOffset, VMConfig.allowStrictMath2())); + DataWord dstOffset = stack.peek(); + DataWord srcOffset = stack.get(stack.size() - 2); + DataWord maxOffset = dstOffset.compareTo(srcOffset) > 0 ? dstOffset : srcOffset; return VERY_LOW_TIER + calcMemEnergy(oldMemSize, memNeeded(maxOffset, stack.get(stack.size() - 3)), stack.get(stack.size() - 3).longValueSafe(), Op.MCOPY); diff --git a/actuator/src/main/java/org/tron/core/vm/repository/RepositoryImpl.java b/actuator/src/main/java/org/tron/core/vm/repository/RepositoryImpl.java index 321efb729b9..e81aba2a862 100644 --- a/actuator/src/main/java/org/tron/core/vm/repository/RepositoryImpl.java +++ b/actuator/src/main/java/org/tron/core/vm/repository/RepositoryImpl.java @@ -456,7 +456,7 @@ public byte[] getTransientStorageValue(byte[] address, byte[] key) { byte[] value; if (parent != null) { value = parent.getTransientStorageValue(address, key); - } else{ + } else { value = null; }