diff --git a/src/Neo.Compiler.CSharp/Optimizer/Strategies/Optimizer.cs b/src/Neo.Compiler.CSharp/Optimizer/Strategies/Optimizer.cs
index 1544a2418..5b36fe092 100644
--- a/src/Neo.Compiler.CSharp/Optimizer/Strategies/Optimizer.cs
+++ b/src/Neo.Compiler.CSharp/Optimizer/Strategies/Optimizer.cs
@@ -66,6 +66,7 @@ public static (NefFile, ContractManifest, JObject?) Optimize(NefFile nef, Contra
(nef, manifest, debugInfo) = JumpCompresser.FoldJump(nef, manifest, debugInfo);
(nef, manifest, debugInfo) = Reachability.RemoveUncoveredInstructions(nef, manifest, debugInfo);
(nef, manifest, debugInfo) = Peephole.RemoveDupDrop(nef, manifest, debugInfo);
+ (nef, manifest, debugInfo) = Peephole.UseIncDec(nef, manifest, debugInfo);
(nef, manifest, debugInfo) = Peephole.FoldNotInEqual(nef, manifest, debugInfo);
(nef, manifest, debugInfo) = Peephole.UseNz(nef, manifest, debugInfo);
(nef, manifest, debugInfo) = Peephole.UseIsNull(nef, manifest, debugInfo);
diff --git a/src/Neo.Compiler.CSharp/Optimizer/Strategies/Peephole.cs b/src/Neo.Compiler.CSharp/Optimizer/Strategies/Peephole.cs
index 56e1d5027..8282859bc 100644
--- a/src/Neo.Compiler.CSharp/Optimizer/Strategies/Peephole.cs
+++ b/src/Neo.Compiler.CSharp/Optimizer/Strategies/Peephole.cs
@@ -90,6 +90,124 @@ public static (NefFile, ContractManifest, JObject?) RemoveDupDrop(NefFile nef, C
oldAddressToInstruction);
}
+ ///
+ /// PUSH1 ADD -> INC
+ /// PUSH1 SUB -> DEC
+ /// PUSH2 ADD -> INC INC
+ /// PUSH2 SUB -> DEC DEC
+ ///
+ /// Nef file
+ /// Manifest
+ /// Debug information
+ ///
+ [Strategy(Priority = 1 << 9)]
+ public static (NefFile, ContractManifest, JObject?) UseIncDec(NefFile nef, ContractManifest manifest, JObject? debugInfo = null)
+ {
+ ContractInBasicBlocks contractInBasicBlocks = new(nef, manifest, debugInfo);
+ List<(int a, Instruction i)> oldAddressAndInstructionsList = contractInBasicBlocks.coverage.addressAndInstructions;
+ Dictionary oldAddressToInstruction = contractInBasicBlocks.coverage.addressToInstructions;
+ (Dictionary jumpSourceToTargets,
+ Dictionary trySourceToTargets,
+ Dictionary> jumpTargetToSources) =
+ (contractInBasicBlocks.coverage.jumpInstructionSourceToTargets,
+ contractInBasicBlocks.coverage.tryInstructionSourceToTargets,
+ contractInBasicBlocks.coverage.jumpTargetToSources);
+ Dictionary oldSequencePointAddressToNew = new();
+ System.Collections.Specialized.OrderedDictionary simplifiedInstructionsToAddress = new();
+ int currentAddress = 0;
+ foreach ((int oldStartAddr, List basicBlock) in contractInBasicBlocks.sortedListInstructions)
+ {
+ int oldAddr = oldStartAddr;
+ for (int index = 0; index < basicBlock.Count; index++)
+ {
+ if (index + 1 < basicBlock.Count)
+ {
+ Instruction current = basicBlock[index];
+ Instruction next = basicBlock[index + 1];
+ if (OpCodeTypes.pushInt.Contains(current.OpCode)
+ && new System.Numerics.BigInteger(current.Operand.Span) == 1
+ || current.OpCode == OpCode.PUSH1)
+ {
+ if (next.OpCode == OpCode.ADD)
+ {
+ Script script = new Script(new byte[] { (byte)OpCode.INC });
+ Instruction inc = script.GetInstruction(0);
+ simplifiedInstructionsToAddress.Add(inc, currentAddress);
+ oldSequencePointAddressToNew.Add(oldAddr, currentAddress);
+ oldAddr += current.Size;
+ currentAddress += inc.Size;
+ oldAddr += next.Size;
+ index += 1;
+ OptimizedScriptBuilder.RetargetJump(current, inc,
+ jumpSourceToTargets, trySourceToTargets, jumpTargetToSources);
+ continue;
+ }
+ if (next.OpCode == OpCode.SUB)
+ {
+ Script script = new Script(new byte[] { (byte)OpCode.DEC });
+ Instruction dec = script.GetInstruction(0);
+ simplifiedInstructionsToAddress.Add(dec, currentAddress);
+ oldSequencePointAddressToNew.Add(oldAddr, currentAddress);
+ oldAddr += current.Size;
+ currentAddress += dec.Size;
+ oldAddr += next.Size;
+ index += 1;
+ OptimizedScriptBuilder.RetargetJump(current, dec,
+ jumpSourceToTargets, trySourceToTargets, jumpTargetToSources);
+ continue;
+ }
+ }
+ if (OpCodeTypes.pushInt.Contains(current.OpCode)
+ && new System.Numerics.BigInteger(current.Operand.Span) == 2
+ || current.OpCode == OpCode.PUSH2)
+ {
+ if (next.OpCode == OpCode.ADD)
+ {
+ Script script = new Script(new byte[] { (byte)OpCode.INC, (byte)OpCode.INC });
+ Instruction inc = script.GetInstruction(0);
+ simplifiedInstructionsToAddress.Add(inc, currentAddress);
+ oldSequencePointAddressToNew.Add(oldAddr, currentAddress);
+ oldAddr += current.Size;
+ currentAddress += inc.Size;
+ simplifiedInstructionsToAddress.Add(script.GetInstruction(inc.Size), currentAddress);
+ oldSequencePointAddressToNew.Add(oldAddr, currentAddress);
+ oldAddr += next.Size;
+ currentAddress += inc.Size;
+ index += 1;
+ OptimizedScriptBuilder.RetargetJump(current, inc,
+ jumpSourceToTargets, trySourceToTargets, jumpTargetToSources);
+ continue;
+ }
+ if (next.OpCode == OpCode.SUB)
+ {
+ Script script = new Script(new byte[] { (byte)OpCode.DEC, (byte)OpCode.DEC });
+ Instruction dec = script.GetInstruction(0);
+ simplifiedInstructionsToAddress.Add(dec, currentAddress);
+ oldSequencePointAddressToNew.Add(oldAddr, currentAddress);
+ oldAddr += current.Size;
+ currentAddress += dec.Size;
+ simplifiedInstructionsToAddress.Add(script.GetInstruction(dec.Size), currentAddress);
+ oldSequencePointAddressToNew.Add(oldAddr, currentAddress);
+ oldAddr += next.Size;
+ currentAddress += dec.Size;
+ index += 1;
+ OptimizedScriptBuilder.RetargetJump(current, dec,
+ jumpSourceToTargets, trySourceToTargets, jumpTargetToSources);
+ continue;
+ }
+ }
+ }
+ simplifiedInstructionsToAddress.Add(basicBlock[index], currentAddress);
+ currentAddress += basicBlock[index].Size;
+ oldAddr += basicBlock[index].Size;
+ }
+ }
+ return AssetBuilder.BuildOptimizedAssets(nef, manifest, debugInfo,
+ simplifiedInstructionsToAddress,
+ jumpSourceToTargets, trySourceToTargets,
+ oldAddressToInstruction, oldSequencePointAddressToNew: oldSequencePointAddressToNew);
+ }
+
///
/// PUSH0 NUMEQUAL -> NZ NOT
/// PUSH0 NUMNOTEQUAL -> NZ
diff --git a/tests/Neo.Compiler.CSharp.TestContracts/Contract_ContractCall.cs b/tests/Neo.Compiler.CSharp.TestContracts/Contract_ContractCall.cs
index d1c4547fd..edb53cf44 100644
--- a/tests/Neo.Compiler.CSharp.TestContracts/Contract_ContractCall.cs
+++ b/tests/Neo.Compiler.CSharp.TestContracts/Contract_ContractCall.cs
@@ -13,7 +13,7 @@
namespace Neo.Compiler.CSharp.TestContracts
{
- [Contract("0e26a6a9b6f37a54d5666aaa2efb71dc75abfdfa")]
+ [Contract("0xb6ae1662a8228ed73e372b0d0ea11716445a4281")]
public class Contract_Call
{
#pragma warning disable CS0626 // Method, operator, or accessor is marked external and has no attributes on it
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract1.cs b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract1.cs
index b82ab5fc9..73c540a06 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract1.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract1.cs
@@ -16,7 +16,7 @@ public abstract class Contract1(Neo.SmartContract.Testing.SmartContractInitializ
///
/// Optimization: "All"
///
- public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNXAQAMBAECAwTbMHBoQFcBAAwEAQIDBNswcEBXAQEMBAECAwPbMHB4SmgTUdBFaEBXAAF4QFcAAngSnkoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ+AeEBXAAJ4Ep5KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfgHh5nkoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9A94cdyg==").AsSerializable();
+ public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNXAQAMBAECAwTbMHBoQFcBAAwEAQIDBNswcEBXAQEMBAECAwPbMHB4SmgTUdBFaEBXAAF4QFcAAnicnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ+AeEBXAAJ4nJxKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfgHh5nkoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9A164YTw==").AsSerializable();
#endregion
@@ -60,11 +60,11 @@ public abstract class Contract1(Neo.SmartContract.Testing.SmartContractInitializ
/// Unsafe method
///
///
- /// Script: VwACeBKeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn4B4QA==
+ /// Script: VwACeJycSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn4B4QA==
/// INITSLOT 0002 [64 datoshi]
/// LDARG0 [2 datoshi]
- /// PUSH2 [1 datoshi]
- /// ADD [8 datoshi]
+ /// INC [4 datoshi]
+ /// INC [4 datoshi]
/// DUP [2 datoshi]
/// PUSHINT32 00000080 [1 datoshi]
/// JMPGE 04 [2 datoshi]
@@ -90,11 +90,11 @@ public abstract class Contract1(Neo.SmartContract.Testing.SmartContractInitializ
/// Unsafe method
///
///
- /// Script: VwACeBKeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn4B4eZ5KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfQA==
+ /// Script: VwACeJycSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn4B4eZ5KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfQA==
/// INITSLOT 0002 [64 datoshi]
/// LDARG0 [2 datoshi]
- /// PUSH2 [1 datoshi]
- /// ADD [8 datoshi]
+ /// INC [4 datoshi]
+ /// INC [4 datoshi]
/// DUP [2 datoshi]
/// PUSHINT32 00000080 [1 datoshi]
/// JMPGE 04 [2 datoshi]
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_ComplexAssign.cs b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_ComplexAssign.cs
index a49b5ece7..b1ddfc6d6 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_ComplexAssign.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_ComplexAssign.cs
@@ -11,12 +11,12 @@ public abstract class Contract_ComplexAssign(Neo.SmartContract.Testing.SmartCont
{
#region Compiled data
- public static Neo.SmartContract.Manifest.ContractManifest Manifest => Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""Contract_ComplexAssign"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""unitTest_Add_Assign_Checked"",""parameters"":[],""returntype"":""Array"",""offset"":0,""safe"":false},{""name"":""unitTest_Add_Assign_UnChecked"",""parameters"":[],""returntype"":""Array"",""offset"":68,""safe"":false},{""name"":""unitTest_Sub_Assign_Checked"",""parameters"":[],""returntype"":""Array"",""offset"":174,""safe"":false},{""name"":""unitTest_Sub_Assign_UnChecked"",""parameters"":[],""returntype"":""Array"",""offset"":234,""safe"":false},{""name"":""unitTest_Mul_Assign_Checked"",""parameters"":[],""returntype"":""Array"",""offset"":332,""safe"":false},{""name"":""unitTest_Mul_Assign_UnChecked"",""parameters"":[],""returntype"":""Array"",""offset"":400,""safe"":false},{""name"":""unitTest_Left_Shift_Assign_Checked"",""parameters"":[],""returntype"":""Array"",""offset"":506,""safe"":false},{""name"":""unitTest_Left_Shift_Assign_UnChecked"",""parameters"":[],""returntype"":""Array"",""offset"":574,""safe"":false},{""name"":""unitTest_Right_Shift_Assign_Checked"",""parameters"":[],""returntype"":""Array"",""offset"":680,""safe"":false},{""name"":""unitTest_Right_Shift_Assign_UnChecked"",""parameters"":[],""returntype"":""Array"",""offset"":740,""safe"":false},{""name"":""unitTest_Member_Element_Complex_Assign"",""parameters"":[],""returntype"":""Void"",""offset"":838,""safe"":false}],""events"":[]},""permissions"":[],""trusts"":[],""extra"":{""nef"":{""optimization"":""All""}}}");
+ public static Neo.SmartContract.Manifest.ContractManifest Manifest => Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""Contract_ComplexAssign"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""unitTest_Add_Assign_Checked"",""parameters"":[],""returntype"":""Array"",""offset"":0,""safe"":false},{""name"":""unitTest_Add_Assign_UnChecked"",""parameters"":[],""returntype"":""Array"",""offset"":66,""safe"":false},{""name"":""unitTest_Sub_Assign_Checked"",""parameters"":[],""returntype"":""Array"",""offset"":170,""safe"":false},{""name"":""unitTest_Sub_Assign_UnChecked"",""parameters"":[],""returntype"":""Array"",""offset"":228,""safe"":false},{""name"":""unitTest_Mul_Assign_Checked"",""parameters"":[],""returntype"":""Array"",""offset"":324,""safe"":false},{""name"":""unitTest_Mul_Assign_UnChecked"",""parameters"":[],""returntype"":""Array"",""offset"":392,""safe"":false},{""name"":""unitTest_Left_Shift_Assign_Checked"",""parameters"":[],""returntype"":""Array"",""offset"":498,""safe"":false},{""name"":""unitTest_Left_Shift_Assign_UnChecked"",""parameters"":[],""returntype"":""Array"",""offset"":566,""safe"":false},{""name"":""unitTest_Right_Shift_Assign_Checked"",""parameters"":[],""returntype"":""Array"",""offset"":672,""safe"":false},{""name"":""unitTest_Right_Shift_Assign_UnChecked"",""parameters"":[],""returntype"":""Array"",""offset"":732,""safe"":false},{""name"":""unitTest_Member_Element_Complex_Assign"",""parameters"":[],""returntype"":""Void"",""offset"":830,""safe"":false}],""events"":[]},""permissions"":[],""trusts"":[],""extra"":{""nef"":{""optimization"":""All""}}}");
///
/// Optimization: "All"
///
- public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP2dA1cCAAP/////AAAAAHAC////f3FoEZ5KEC4DOkoD/////wAAAAAyAzpwaRGeSgIAAACALgM6SgL///9/MgM6cWloEr9AVwIAA/////8AAAAAcAL///9/cWgRnkoQLgQiDkoD/////wAAAAAyDAP/////AAAAAJFwaRGeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3FpaBK/QFcCABBwAgAAAIBxaBGfShAuAzpKA/////8AAAAAMgM6cGkRn0oCAAAAgC4DOkoC////fzIDOnFpaBK/QFcCABBwAgAAAIBxaBGfShAuBCIOSgP/////AAAAADIMA/////8AAAAAkXBpEZ9KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcWloEr9AVwIAA/////8AAAAAcAL///9/cWgSoEoQLgM6SgP/////AAAAADIDOnBpEqBKAgAAAIAuAzpKAv///38yAzpxaWgSv0BXAgAD/////wAAAABwAv///39xaBKgShAuBCIOSgP/////AAAAADIMA/////8AAAAAkXBpEqBKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcWloEr9AVwIAA/////8AAAAAcAL///9/cWgRqEoQLgM6SgP/////AAAAADIDOnBpEahKAgAAAIAuAzpKAv///38yAzpxaWgSv0BXAgAD/////wAAAABwAv///39xaBGoShAuBCIOSgP/////AAAAADIMA/////8AAAAAkXBpEahKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcWloEr9AVwIAEHACAAAAgHFoEalKEC4DOkoD/////wAAAAAyAzpwaRGpSgIAAACALgM6SgL///9/MgM6cWloEr9AVwIAEHACAAAAgHFoEalKEC4EIg5KA/////8AAAAAMgwD/////wAAAACRcGkRqUoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9xaWgSv0BXAQAMBAABAgPbMBcSwHBoShDOE6JKEC4EIghKAf8AMgYB/wCRThBQ0EVoEM4RlzloEc4TS0vOFJFKEC4EIghKAf8AMgYB/wCRSlRT0EVoEc4QzhCXOUCPzZu8").AsSerializable();
+ public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP2VA1cCAAP/////AAAAAHAC////f3FonEoQLgM6SgP/////AAAAADIDOnBpnEoCAAAAgC4DOkoC////fzIDOnFpaBK/QFcCAAP/////AAAAAHAC////f3FonEoQLgQiDkoD/////wAAAAAyDAP/////AAAAAJFwaZxKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcWloEr9AVwIAEHACAAAAgHFonUoQLgM6SgP/////AAAAADIDOnBpnUoCAAAAgC4DOkoC////fzIDOnFpaBK/QFcCABBwAgAAAIBxaJ1KEC4EIg5KA/////8AAAAAMgwD/////wAAAACRcGmdSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3FpaBK/QFcCAAP/////AAAAAHAC////f3FoEqBKEC4DOkoD/////wAAAAAyAzpwaRKgSgIAAACALgM6SgL///9/MgM6cWloEr9AVwIAA/////8AAAAAcAL///9/cWgSoEoQLgQiDkoD/////wAAAAAyDAP/////AAAAAJFwaRKgSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3FpaBK/QFcCAAP/////AAAAAHAC////f3FoEahKEC4DOkoD/////wAAAAAyAzpwaRGoSgIAAACALgM6SgL///9/MgM6cWloEr9AVwIAA/////8AAAAAcAL///9/cWgRqEoQLgQiDkoD/////wAAAAAyDAP/////AAAAAJFwaRGoSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3FpaBK/QFcCABBwAgAAAIBxaBGpShAuAzpKA/////8AAAAAMgM6cGkRqUoCAAAAgC4DOkoC////fzIDOnFpaBK/QFcCABBwAgAAAIBxaBGpShAuBCIOSgP/////AAAAADIMA/////8AAAAAkXBpEalKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcWloEr9AVwEADAQAAQID2zAXEsBwaEoQzhOiShAuBCIISgH/ADIGAf8AkU4QUNBFaBDOEZc5aBHOE0tLzhSRShAuBCIISgH/ADIGAf8AkUpUU9BFaBHOEM4QlzlA3ytQlw==").AsSerializable();
#endregion
@@ -26,15 +26,14 @@ public abstract class Contract_ComplexAssign(Neo.SmartContract.Testing.SmartCont
/// Unsafe method
///
///
- /// Script: VwIAA/////8AAAAAcAL///9/cWgRnkoQLgM6SgP/////AAAAADIDOnBpEZ5KAgAAAIAuAzpKAv///38yAzpxaWgSv0A=
+ /// Script: VwIAA/////8AAAAAcAL///9/cWicShAuAzpKA/////8AAAAAMgM6cGmcSgIAAACALgM6SgL///9/MgM6cWloEr9A
/// INITSLOT 0200 [64 datoshi]
/// PUSHINT64 FFFFFFFF00000000 [1 datoshi]
/// STLOC0 [2 datoshi]
/// PUSHINT32 FFFFFF7F [1 datoshi]
/// STLOC1 [2 datoshi]
/// LDLOC0 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// ADD [8 datoshi]
+ /// INC [4 datoshi]
/// DUP [2 datoshi]
/// PUSH0 [1 datoshi]
/// JMPGE 03 [2 datoshi]
@@ -45,8 +44,7 @@ public abstract class Contract_ComplexAssign(Neo.SmartContract.Testing.SmartCont
/// THROW [512 datoshi]
/// STLOC0 [2 datoshi]
/// LDLOC1 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// ADD [8 datoshi]
+ /// INC [4 datoshi]
/// DUP [2 datoshi]
/// PUSHINT32 00000080 [1 datoshi]
/// JMPGE 03 [2 datoshi]
@@ -69,15 +67,14 @@ public abstract class Contract_ComplexAssign(Neo.SmartContract.Testing.SmartCont
/// Unsafe method
///
///
- /// Script: VwIAA/////8AAAAAcAL///9/cWgRnkoQLgQiDkoD/////wAAAAAyDAP/////AAAAAJFwaRGeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3FpaBK/QA==
+ /// Script: VwIAA/////8AAAAAcAL///9/cWicShAuBCIOSgP/////AAAAADIMA/////8AAAAAkXBpnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9xaWgSv0A=
/// INITSLOT 0200 [64 datoshi]
/// PUSHINT64 FFFFFFFF00000000 [1 datoshi]
/// STLOC0 [2 datoshi]
/// PUSHINT32 FFFFFF7F [1 datoshi]
/// STLOC1 [2 datoshi]
/// LDLOC0 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// ADD [8 datoshi]
+ /// INC [4 datoshi]
/// DUP [2 datoshi]
/// PUSH0 [1 datoshi]
/// JMPGE 04 [2 datoshi]
@@ -89,8 +86,7 @@ public abstract class Contract_ComplexAssign(Neo.SmartContract.Testing.SmartCont
/// AND [8 datoshi]
/// STLOC0 [2 datoshi]
/// LDLOC1 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// ADD [8 datoshi]
+ /// INC [4 datoshi]
/// DUP [2 datoshi]
/// PUSHINT32 00000080 [1 datoshi]
/// JMPGE 04 [2 datoshi]
@@ -472,15 +468,14 @@ public abstract class Contract_ComplexAssign(Neo.SmartContract.Testing.SmartCont
/// Unsafe method
///
///
- /// Script: VwIAEHACAAAAgHFoEZ9KEC4DOkoD/////wAAAAAyAzpwaRGfSgIAAACALgM6SgL///9/MgM6cWloEr9A
+ /// Script: VwIAEHACAAAAgHFonUoQLgM6SgP/////AAAAADIDOnBpnUoCAAAAgC4DOkoC////fzIDOnFpaBK/QA==
/// INITSLOT 0200 [64 datoshi]
/// PUSH0 [1 datoshi]
/// STLOC0 [2 datoshi]
/// PUSHINT32 00000080 [1 datoshi]
/// STLOC1 [2 datoshi]
/// LDLOC0 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// SUB [8 datoshi]
+ /// DEC [4 datoshi]
/// DUP [2 datoshi]
/// PUSH0 [1 datoshi]
/// JMPGE 03 [2 datoshi]
@@ -491,8 +486,7 @@ public abstract class Contract_ComplexAssign(Neo.SmartContract.Testing.SmartCont
/// THROW [512 datoshi]
/// STLOC0 [2 datoshi]
/// LDLOC1 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// SUB [8 datoshi]
+ /// DEC [4 datoshi]
/// DUP [2 datoshi]
/// PUSHINT32 00000080 [1 datoshi]
/// JMPGE 03 [2 datoshi]
@@ -515,15 +509,14 @@ public abstract class Contract_ComplexAssign(Neo.SmartContract.Testing.SmartCont
/// Unsafe method
///
///
- /// Script: VwIAEHACAAAAgHFoEZ9KEC4EIg5KA/////8AAAAAMgwD/////wAAAACRcGkRn0oCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9xaWgSv0A=
+ /// Script: VwIAEHACAAAAgHFonUoQLgQiDkoD/////wAAAAAyDAP/////AAAAAJFwaZ1KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcWloEr9A
/// INITSLOT 0200 [64 datoshi]
/// PUSH0 [1 datoshi]
/// STLOC0 [2 datoshi]
/// PUSHINT32 00000080 [1 datoshi]
/// STLOC1 [2 datoshi]
/// LDLOC0 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// SUB [8 datoshi]
+ /// DEC [4 datoshi]
/// DUP [2 datoshi]
/// PUSH0 [1 datoshi]
/// JMPGE 04 [2 datoshi]
@@ -535,8 +528,7 @@ public abstract class Contract_ComplexAssign(Neo.SmartContract.Testing.SmartCont
/// AND [8 datoshi]
/// STLOC0 [2 datoshi]
/// LDLOC1 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// SUB [8 datoshi]
+ /// DEC [4 datoshi]
/// DUP [2 datoshi]
/// PUSHINT32 00000080 [1 datoshi]
/// JMPGE 04 [2 datoshi]
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Continue.cs b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Continue.cs
index 17a2fa16f..a2eef45cf 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Continue.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Continue.cs
@@ -16,7 +16,7 @@ public abstract class Contract_Continue(Neo.SmartContract.Testing.SmartContractI
///
/// Optimization: "All"
///
- public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0MAlcGAQwBAAwC/wA10wEAABAMAf812gEAAHAiG2hB81S/HXE7AAU9DwwBAQwC/wA1rwEAAD9oQZwI7Zwk4QwC/wA1vQEAAAwBAZc5EAwB/zWfAQAAcCJ1aEHzVL8dcTsaMhByIg4MCWV4Y2VwdGlvbjpqE7Uk8T1Ucgkk/zsABz0CPUkMAQAMAv8ANVQBAAA/DAL/ADVqAQAADAEAlzkSERATwEpyynMQdCIcamzOdW0StSYEIg4MAQIMAv8ANSEBAABsnHRsazDkP2hBnAjtnCSHDAL/ADUoAQAADAEClzkQDAH/NQoBAABwI90AAABoQfNUvx1xPFQAAAC8AAAAEHIiM2qcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3JqE7UkzHgmDgwJZXhjZXB0aW9uOj1/chBzaxO1JjZrEZ5KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcyLJaxOXOTsOEwwBAwwC/wA0Smo6dD0CPSwMAv8ANF0MAQOXOQwBAgwC/wA0Lz8MAv8ANEgMAQKXOQwBAwwC/wA0Gj9oQZwI7ZwlIv///wwC/wA0KAwBA5c5QFcAAnl4QZv2Z85B5j8YhEBXAAJ5eEH2tGviQd8wuJpAVwABeEH2tGviQZJd6DFAWIz11w==").AsSerializable();
+ public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0LAlcGAQwBAAwC/wA10gEAABAMAf812QEAAHAiG2hB81S/HXE7AAU9DwwBAQwC/wA1rgEAAD9oQZwI7Zwk4QwC/wA1vAEAAAwBAZc5EAwB/zWeAQAAcCJ1aEHzVL8dcTsaMhByIg4MCWV4Y2VwdGlvbjpqE7Uk8T1Ucgkk/zsABz0CPUkMAQAMAv8ANVMBAAA/DAL/ADVpAQAADAEAlzkSERATwEpyynMQdCIcamzOdW0StSYEIg4MAQIMAv8ANSABAABsnHRsazDkP2hBnAjtnCSHDAL/ADUnAQAADAEClzkQDAH/NQkBAABwI9wAAABoQfNUvx1xPFQAAAC7AAAAEHIiM2qcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3JqE7UkzHgmDgwJZXhjZXB0aW9uOj1+chBzaxO1JjVrnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9zIsprE5c5Ow4TDAEDDAL/ADRKajp0PQI9LAwC/wA0XQwBA5c5DAECDAL/ADQvPwwC/wA0SAwBApc5DAEDDAL/ADQaP2hBnAjtnCUj////DAL/ADQoDAEDlzlAVwACeXhBm/ZnzkHmPxiEQFcAAnl4Qfa0a+JB3zC4mkBXAAF4Qfa0a+JBkl3oMUAPMq7z").AsSerializable();
#endregion
@@ -26,14 +26,14 @@ public abstract class Contract_Continue(Neo.SmartContract.Testing.SmartContractI
/// Unsafe method
///
///
- /// Script: VwYBDAEADAL/ADXTAQAAEAwB/zXaAQAAcCIbaEHzVL8dcTsABT0PDAEBDAL/ADWvAQAAP2hBnAjtnCThDAL/ADW9AQAADAEBlzkQDAH/NZ8BAABwInVoQfNUvx1xOxoyEHIiDgwJZXhjZXB0aW9uOmoTtSTxPVRyCST/OwAHPQI9SQwBAAwC/wA1VAEAAD8MAv8ANWoBAAAMAQCXORIREBPASnLKcxB0IhxqbM51bRK1JgQiDgwBAgwC/wA1IQEAAGycdGxrMOQ/aEGcCO2cJIcMAv8ANSgBAAAMAQKXORAMAf81CgEAAHAj3QAAAGhB81S/HXE8VAAAALwAAAAQciIzapxKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcmoTtSTMeCYODAlleGNlcHRpb246PX9yEHNrE7UmNmsRnkoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9zIslrE5c5Ow4TDAEDDAL/ADRKajp0PQI9LAwC/wA0XQwBA5c5DAECDAL/ADQvPwwC/wA0SAwBApc5DAEDDAL/ADQaP2hBnAjtnCUi////DAL/ADQoDAEDlzlA
+ /// Script: VwYBDAEADAL/ADXSAQAAEAwB/zXZAQAAcCIbaEHzVL8dcTsABT0PDAEBDAL/ADWuAQAAP2hBnAjtnCThDAL/ADW8AQAADAEBlzkQDAH/NZ4BAABwInVoQfNUvx1xOxoyEHIiDgwJZXhjZXB0aW9uOmoTtSTxPVRyCST/OwAHPQI9SQwBAAwC/wA1UwEAAD8MAv8ANWkBAAAMAQCXORIREBPASnLKcxB0IhxqbM51bRK1JgQiDgwBAgwC/wA1IAEAAGycdGxrMOQ/aEGcCO2cJIcMAv8ANScBAAAMAQKXORAMAf81CQEAAHAj3AAAAGhB81S/HXE8VAAAALsAAAAQciIzapxKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcmoTtSTMeCYODAlleGNlcHRpb246PX5yEHNrE7UmNWucSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3MiymsTlzk7DhMMAQMMAv8ANEpqOnQ9Aj0sDAL/ADRdDAEDlzkMAQIMAv8ANC8/DAL/ADRIDAEClzkMAQMMAv8ANBo/aEGcCO2cJSP///8MAv8ANCgMAQOXOUA=
/// INITSLOT 0601 [64 datoshi]
/// PUSHDATA1 00 [8 datoshi]
/// PUSHDATA1 FF00 [8 datoshi]
- /// CALL_L D3010000 [512 datoshi]
+ /// CALL_L D2010000 [512 datoshi]
/// PUSH0 [1 datoshi]
/// PUSHDATA1 FF '?' [8 datoshi]
- /// CALL_L DA010000 [512 datoshi]
+ /// CALL_L D9010000 [512 datoshi]
/// STLOC0 [2 datoshi]
/// JMP 1B [2 datoshi]
/// LDLOC0 [2 datoshi]
@@ -43,19 +43,19 @@ public abstract class Contract_Continue(Neo.SmartContract.Testing.SmartContractI
/// ENDTRY 0F [4 datoshi]
/// PUSHDATA1 01 [8 datoshi]
/// PUSHDATA1 FF00 [8 datoshi]
- /// CALL_L AF010000 [512 datoshi]
+ /// CALL_L AE010000 [512 datoshi]
/// ENDFINALLY [4 datoshi]
/// LDLOC0 [2 datoshi]
/// SYSCALL 9C08ED9C 'System.Iterator.Next' [32768 datoshi]
/// JMPIF E1 [2 datoshi]
/// PUSHDATA1 FF00 [8 datoshi]
- /// CALL_L BD010000 [512 datoshi]
+ /// CALL_L BC010000 [512 datoshi]
/// PUSHDATA1 01 [8 datoshi]
/// EQUAL [32 datoshi]
/// ASSERT [1 datoshi]
/// PUSH0 [1 datoshi]
/// PUSHDATA1 FF '?' [8 datoshi]
- /// CALL_L 9F010000 [512 datoshi]
+ /// CALL_L 9E010000 [512 datoshi]
/// STLOC0 [2 datoshi]
/// JMP 75 [2 datoshi]
/// LDLOC0 [2 datoshi]
@@ -80,10 +80,10 @@ public abstract class Contract_Continue(Neo.SmartContract.Testing.SmartContractI
/// ENDTRY 49 [4 datoshi]
/// PUSHDATA1 00 [8 datoshi]
/// PUSHDATA1 FF00 [8 datoshi]
- /// CALL_L 54010000 [512 datoshi]
+ /// CALL_L 53010000 [512 datoshi]
/// ENDFINALLY [4 datoshi]
/// PUSHDATA1 FF00 [8 datoshi]
- /// CALL_L 6A010000 [512 datoshi]
+ /// CALL_L 69010000 [512 datoshi]
/// PUSHDATA1 00 [8 datoshi]
/// EQUAL [32 datoshi]
/// ASSERT [1 datoshi]
@@ -110,7 +110,7 @@ public abstract class Contract_Continue(Neo.SmartContract.Testing.SmartContractI
/// JMP 0E [2 datoshi]
/// PUSHDATA1 02 [8 datoshi]
/// PUSHDATA1 FF00 [8 datoshi]
- /// CALL_L 21010000 [512 datoshi]
+ /// CALL_L 20010000 [512 datoshi]
/// LDLOC4 [2 datoshi]
/// INC [4 datoshi]
/// STLOC4 [2 datoshi]
@@ -122,19 +122,19 @@ public abstract class Contract_Continue(Neo.SmartContract.Testing.SmartContractI
/// SYSCALL 9C08ED9C 'System.Iterator.Next' [32768 datoshi]
/// JMPIF 87 [2 datoshi]
/// PUSHDATA1 FF00 [8 datoshi]
- /// CALL_L 28010000 [512 datoshi]
+ /// CALL_L 27010000 [512 datoshi]
/// PUSHDATA1 02 [8 datoshi]
/// EQUAL [32 datoshi]
/// ASSERT [1 datoshi]
/// PUSH0 [1 datoshi]
/// PUSHDATA1 FF '?' [8 datoshi]
- /// CALL_L 0A010000 [512 datoshi]
+ /// CALL_L 09010000 [512 datoshi]
/// STLOC0 [2 datoshi]
- /// JMP_L DD000000 [2 datoshi]
+ /// JMP_L DC000000 [2 datoshi]
/// LDLOC0 [2 datoshi]
/// SYSCALL F354BF1D 'System.Iterator.Value' [16 datoshi]
/// STLOC1 [2 datoshi]
- /// TRY_L 54000000BC000000 [4 datoshi]
+ /// TRY_L 54000000BB000000 [4 datoshi]
/// PUSH0 [1 datoshi]
/// STLOC2 [2 datoshi]
/// JMP 33 [2 datoshi]
@@ -163,17 +163,16 @@ public abstract class Contract_Continue(Neo.SmartContract.Testing.SmartContractI
/// JMPIFNOT 0E [2 datoshi]
/// PUSHDATA1 657863657074696F6E 'exception' [8 datoshi]
/// THROW [512 datoshi]
- /// ENDTRY 7F [4 datoshi]
+ /// ENDTRY 7E [4 datoshi]
/// STLOC2 [2 datoshi]
/// PUSH0 [1 datoshi]
/// STLOC3 [2 datoshi]
/// LDLOC3 [2 datoshi]
/// PUSH3 [1 datoshi]
/// LT [8 datoshi]
- /// JMPIFNOT 36 [2 datoshi]
+ /// JMPIFNOT 35 [2 datoshi]
/// LDLOC3 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// ADD [8 datoshi]
+ /// INC [4 datoshi]
/// DUP [2 datoshi]
/// PUSHINT32 00000080 [1 datoshi]
/// JMPGE 04 [2 datoshi]
@@ -189,7 +188,7 @@ public abstract class Contract_Continue(Neo.SmartContract.Testing.SmartContractI
/// PUSHINT64 0000000001000000 [1 datoshi]
/// SUB [8 datoshi]
/// STLOC3 [2 datoshi]
- /// JMP C9 [2 datoshi]
+ /// JMP CA [2 datoshi]
/// LDLOC3 [2 datoshi]
/// PUSH3 [1 datoshi]
/// EQUAL [32 datoshi]
@@ -223,7 +222,7 @@ public abstract class Contract_Continue(Neo.SmartContract.Testing.SmartContractI
/// ENDFINALLY [4 datoshi]
/// LDLOC0 [2 datoshi]
/// SYSCALL 9C08ED9C 'System.Iterator.Next' [32768 datoshi]
- /// JMPIF_L 22FFFFFF [2 datoshi]
+ /// JMPIF_L 23FFFFFF [2 datoshi]
/// PUSHDATA1 FF00 [8 datoshi]
/// CALL 28 [512 datoshi]
/// PUSHDATA1 03 [8 datoshi]
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_ContractCall.cs b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_ContractCall.cs
index a03d119e5..34c13c5a1 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_ContractCall.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_ContractCall.cs
@@ -11,12 +11,12 @@ public abstract class Contract_ContractCall(Neo.SmartContract.Testing.SmartContr
{
#region Compiled data
- public static Neo.SmartContract.Manifest.ContractManifest Manifest => Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""Contract_ContractCall"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""testContractCall"",""parameters"":[],""returntype"":""ByteArray"",""offset"":0,""safe"":false},{""name"":""testContractCallVoid"",""parameters"":[],""returntype"":""Void"",""offset"":5,""safe"":false}],""events"":[]},""permissions"":[{""contract"":""0x0e26a6a9b6f37a54d5666aaa2efb71dc75abfdfa"",""methods"":[""testArgs1"",""testVoid""]}],""trusts"":[],""extra"":{""nef"":{""optimization"":""All""}}}");
+ public static Neo.SmartContract.Manifest.ContractManifest Manifest => Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""Contract_ContractCall"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""testContractCall"",""parameters"":[],""returntype"":""ByteArray"",""offset"":0,""safe"":false},{""name"":""testContractCallVoid"",""parameters"":[],""returntype"":""Void"",""offset"":5,""safe"":false}],""events"":[]},""permissions"":[{""contract"":""0xb6ae1662a8228ed73e372b0d0ea11716445a4281"",""methods"":[""testArgs1"",""testVoid""]}],""trusts"":[],""extra"":{""nef"":{""optimization"":""All""}}}");
///
/// Optimization: "All"
///
- public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL6/at13HH7LqpqZtVUevO2qaYmDgl0ZXN0QXJnczEBAAEP+v2rddxx+y6qambVVHrztqmmJg4IdGVzdFZvaWQAAAAPAAAJFDcAAEA3AQBAPzwuew==").AsSerializable();
+ public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBQlpEFhehDg0rNz7XjiKoYhautgl0ZXN0QXJnczEBAAEPgUJaRBYXoQ4NKzc+144iqGIWrrYIdGVzdFZvaWQAAAAPAAAJFDcAAEA3AQBA3RHAvA==").AsSerializable();
#endregion
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_IndexOrRange.cs b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_IndexOrRange.cs
index f2279e33c..b0b2e8267 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_IndexOrRange.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_IndexOrRange.cs
@@ -16,7 +16,7 @@ public abstract class Contract_IndexOrRange(Neo.SmartContract.Testing.SmartContr
///
/// Optimization: "All"
///
- public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHA7znO4OTpJcbCoGp54UQN2G/OrARpdG9hAQABDwAA/a4BVxQADAoBAgMEBQYHCAkK2zBwaErKUBBRS5+McWgTUBBRS5+McmhKylASUUufjHNoFVATUUufjHRoSspQSsoSn1FLn4x1aErKE59QEFFLn4x2aErKFJ9QE1FLn4x3B2hKyhKfUErKFJ9RS5+MdwhoEM53CWnKNwAAQc/nR5ZqyjcAAEHP50eWa8o3AABBz+dHlmzKNwAAQc/nR5ZtyjcAAEHP50eWbso3AABBz+dHlm8HyjcAAEHP50eWbwjKNwAAQc/nR5ZvCTcAAEHP50eWDAkxMjM0NTY3ODl3Cm8KSspQEFFLn4zbKHcLbwoTUBBRS5+M2yh3DG8KSspQElFLn4zbKHcNbwoVUBNRS5+M2yh3Dm8KSspQSsoSn1FLn4zbKHcPbwpKyhOfUBBRS5+M2yh3EG8KSsoUn1ATUUufjNsodxFvCkrKEp9QSsoUn1FLn4zbKHcSbwoQzncTbwvbKEHP50eWbwzbKEHP50eWbw3bKEHP50eWbw7bKEHP50eWbw/bKEHP50eWbxDbKEHP50eWbxHbKEHP50eWbxLbKEHP50eWbxPbKEHP50eWQFm4evg=").AsSerializable();
+ public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHA7znO4OTpJcbCoGp54UQN2G/OrARpdG9hAQABDwAA/a4BVxQADAoBAgMEBQYHCAkK2zBwaErKUBBRS5+McWgTUBBRS5+McmhKylASUUufjHNoFVATUUufjHRoSspQSsqdnVFLn4x1aErKE59QEFFLn4x2aErKFJ9QE1FLn4x3B2hKyp2dUErKFJ9RS5+MdwhoEM53CWnKNwAAQc/nR5ZqyjcAAEHP50eWa8o3AABBz+dHlmzKNwAAQc/nR5ZtyjcAAEHP50eWbso3AABBz+dHlm8HyjcAAEHP50eWbwjKNwAAQc/nR5ZvCTcAAEHP50eWDAkxMjM0NTY3ODl3Cm8KSspQEFFLn4zbKHcLbwoTUBBRS5+M2yh3DG8KSspQElFLn4zbKHcNbwoVUBNRS5+M2yh3Dm8KSspQSsqdnVFLn4zbKHcPbwpKyhOfUBBRS5+M2yh3EG8KSsoUn1ATUUufjNsodxFvCkrKnZ1QSsoUn1FLn4zbKHcSbwoQzncTbwvbKEHP50eWbwzbKEHP50eWbw3bKEHP50eWbw7bKEHP50eWbw/bKEHP50eWbxDbKEHP50eWbxHbKEHP50eWbxLbKEHP50eWbxPbKEHP50eWQKCEoxg=").AsSerializable();
#endregion
@@ -26,7 +26,7 @@ public abstract class Contract_IndexOrRange(Neo.SmartContract.Testing.SmartContr
/// Unsafe method
///
///
- /// Script: VxQADAoBAgMEBQYHCAkK2zBwaErKUBBRS5+McWgTUBBRS5+McmhKylASUUufjHNoFVATUUufjHRoSspQSsoSn1FLn4x1aErKE59QEFFLn4x2aErKFJ9QE1FLn4x3B2hKyhKfUErKFJ9RS5+MdwhoEM53CWnKNwAAQc/nR5ZqyjcAAEHP50eWa8o3AABBz+dHlmzKNwAAQc/nR5ZtyjcAAEHP50eWbso3AABBz+dHlm8HyjcAAEHP50eWbwjKNwAAQc/nR5ZvCTcAAEHP50eWDAkxMjM0NTY3ODl3Cm8KSspQEFFLn4zbKHcLbwoTUBBRS5+M2yh3DG8KSspQElFLn4zbKHcNbwoVUBNRS5+M2yh3Dm8KSspQSsoSn1FLn4zbKHcPbwpKyhOfUBBRS5+M2yh3EG8KSsoUn1ATUUufjNsodxFvCkrKEp9QSsoUn1FLn4zbKHcSbwoQzncTbwvbKEHP50eWbwzbKEHP50eWbw3bKEHP50eWbw7bKEHP50eWbw/bKEHP50eWbxDbKEHP50eWbxHbKEHP50eWbxLbKEHP50eWbxPbKEHP50eWQA==
+ /// Script: VxQADAoBAgMEBQYHCAkK2zBwaErKUBBRS5+McWgTUBBRS5+McmhKylASUUufjHNoFVATUUufjHRoSspQSsqdnVFLn4x1aErKE59QEFFLn4x2aErKFJ9QE1FLn4x3B2hKyp2dUErKFJ9RS5+MdwhoEM53CWnKNwAAQc/nR5ZqyjcAAEHP50eWa8o3AABBz+dHlmzKNwAAQc/nR5ZtyjcAAEHP50eWbso3AABBz+dHlm8HyjcAAEHP50eWbwjKNwAAQc/nR5ZvCTcAAEHP50eWDAkxMjM0NTY3ODl3Cm8KSspQEFFLn4zbKHcLbwoTUBBRS5+M2yh3DG8KSspQElFLn4zbKHcNbwoVUBNRS5+M2yh3Dm8KSspQSsqdnVFLn4zbKHcPbwpKyhOfUBBRS5+M2yh3EG8KSsoUn1ATUUufjNsodxFvCkrKnZ1QSsoUn1FLn4zbKHcSbwoQzncTbwvbKEHP50eWbwzbKEHP50eWbw3bKEHP50eWbw7bKEHP50eWbw/bKEHP50eWbxDbKEHP50eWbxHbKEHP50eWbxLbKEHP50eWbxPbKEHP50eWQA==
/// INITSLOT 1400 [64 datoshi]
/// PUSHDATA1 0102030405060708090A [8 datoshi]
/// CONVERT 30 'Buffer' [8192 datoshi]
@@ -75,8 +75,8 @@ public abstract class Contract_IndexOrRange(Neo.SmartContract.Testing.SmartContr
/// SWAP [2 datoshi]
/// DUP [2 datoshi]
/// SIZE [4 datoshi]
- /// PUSH2 [1 datoshi]
- /// SUB [8 datoshi]
+ /// DEC [4 datoshi]
+ /// DEC [4 datoshi]
/// ROT [2 datoshi]
/// OVER [2 datoshi]
/// SUB [8 datoshi]
@@ -109,8 +109,8 @@ public abstract class Contract_IndexOrRange(Neo.SmartContract.Testing.SmartContr
/// LDLOC0 [2 datoshi]
/// DUP [2 datoshi]
/// SIZE [4 datoshi]
- /// PUSH2 [1 datoshi]
- /// SUB [8 datoshi]
+ /// DEC [4 datoshi]
+ /// DEC [4 datoshi]
/// SWAP [2 datoshi]
/// DUP [2 datoshi]
/// SIZE [4 datoshi]
@@ -210,8 +210,8 @@ public abstract class Contract_IndexOrRange(Neo.SmartContract.Testing.SmartContr
/// SWAP [2 datoshi]
/// DUP [2 datoshi]
/// SIZE [4 datoshi]
- /// PUSH2 [1 datoshi]
- /// SUB [8 datoshi]
+ /// DEC [4 datoshi]
+ /// DEC [4 datoshi]
/// ROT [2 datoshi]
/// OVER [2 datoshi]
/// SUB [8 datoshi]
@@ -247,8 +247,8 @@ public abstract class Contract_IndexOrRange(Neo.SmartContract.Testing.SmartContr
/// LDLOC 0A [2 datoshi]
/// DUP [2 datoshi]
/// SIZE [4 datoshi]
- /// PUSH2 [1 datoshi]
- /// SUB [8 datoshi]
+ /// DEC [4 datoshi]
+ /// DEC [4 datoshi]
/// SWAP [2 datoshi]
/// DUP [2 datoshi]
/// SIZE [4 datoshi]
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Inline.cs b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Inline.cs
index 049622e94..7c29c7f3b 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Inline.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Inline.cs
@@ -11,12 +11,12 @@ public abstract class Contract_Inline(Neo.SmartContract.Testing.SmartContractIni
{
#region Compiled data
- public static Neo.SmartContract.Manifest.ContractManifest Manifest => Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""Contract_Inline"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""testInline"",""parameters"":[{""name"":""method"",""type"":""String""}],""returntype"":""Integer"",""offset"":0,""safe"":false},{""name"":""arrowMethod"",""parameters"":[],""returntype"":""Integer"",""offset"":331,""safe"":false},{""name"":""arrowMethodNoRerurn"",""parameters"":[],""returntype"":""Void"",""offset"":381,""safe"":false}],""events"":[]},""permissions"":[],""trusts"":[],""extra"":{""nef"":{""optimization"":""All""}}}");
+ public static Neo.SmartContract.Manifest.ContractManifest Manifest => Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""Contract_Inline"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""testInline"",""parameters"":[{""name"":""method"",""type"":""String""}],""returntype"":""Integer"",""offset"":0,""safe"":false},{""name"":""arrowMethod"",""parameters"":[],""returntype"":""Integer"",""offset"":331,""safe"":false},{""name"":""arrowMethodNoRerurn"",""parameters"":[],""returntype"":""Void"",""offset"":380,""safe"":false}],""events"":[]},""permissions"":[],""trusts"":[],""extra"":{""nef"":{""optimization"":""All""}}}");
///
/// Optimization: "All"
///
- public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP24AVcBAXhwaAwGaW5saW5llyYEEUBoDBppbmxpbmVfd2l0aF9vbmVfcGFyYW1ldGVyc5cmBBNAaAwcaW5saW5lX3dpdGhfbXVsdGlfcGFyYW1ldGVyc5cmNBMSnkoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9AaAwKbm90X2lubGluZZcmBTR0QGgMHm5vdF9pbmxpbmVfd2l0aF9vbmVfcGFyYW1ldGVyc5cmBhM0TkBoDCBub3RfaW5saW5lX3dpdGhfbXVsdGlfcGFyYW1ldGVyc5cmBxMSNChAaAwNaW5saW5lX25lc3RlZJcmBTRHQAgmBQBjQGg6EUBXAAF4QFcAAnh5nkoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9AE0ASEZ5KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfQBERNARFQFcAAnh5nkoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9Arb2CVw==").AsSerializable();
+ public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP23AVcBAXhwaAwGaW5saW5llyYEEUBoDBppbmxpbmVfd2l0aF9vbmVfcGFyYW1ldGVyc5cmBBNAaAwcaW5saW5lX3dpdGhfbXVsdGlfcGFyYW1ldGVyc5cmNBOcnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9AaAwKbm90X2lubGluZZcmBTR0QGgMHm5vdF9pbmxpbmVfd2l0aF9vbmVfcGFyYW1ldGVyc5cmBhM0TkBoDCBub3RfaW5saW5lX3dpdGhfbXVsdGlfcGFyYW1ldGVyc5cmBxMSNChAaAwNaW5saW5lX25lc3RlZJcmBTRHQAgmBQBjQGg6EUBXAAF4QFcAAnh5nkoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9AE0ASnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9AERE0BEVAVwACeHmeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn0C6sh+O").AsSerializable();
#endregion
@@ -26,10 +26,9 @@ public abstract class Contract_Inline(Neo.SmartContract.Testing.SmartContractIni
/// Unsafe method
///
///
- /// Script: EhGeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn0A=
+ /// Script: EpxKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfQA==
/// PUSH2 [1 datoshi]
- /// PUSH1 [1 datoshi]
- /// ADD [8 datoshi]
+ /// INC [4 datoshi]
/// DUP [2 datoshi]
/// PUSHINT32 00000080 [1 datoshi]
/// JMPGE 04 [2 datoshi]
@@ -67,7 +66,7 @@ public abstract class Contract_Inline(Neo.SmartContract.Testing.SmartContractIni
/// Unsafe method
///
///
- /// Script: VwEBeHBoDAZpbmxpbmWXJgQRQGgMGmlubGluZV93aXRoX29uZV9wYXJhbWV0ZXJzlyYEE0BoDBxpbmxpbmVfd2l0aF9tdWx0aV9wYXJhbWV0ZXJzlyY0ExKeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn0BoDApub3RfaW5saW5llyYFNHRAaAwebm90X2lubGluZV93aXRoX29uZV9wYXJhbWV0ZXJzlyYGEzROQGgMIG5vdF9pbmxpbmVfd2l0aF9tdWx0aV9wYXJhbWV0ZXJzlyYHExI0KEBoDA1pbmxpbmVfbmVzdGVklyYFNEdACCYFAGNAaDo=
+ /// Script: VwEBeHBoDAZpbmxpbmWXJgQRQGgMGmlubGluZV93aXRoX29uZV9wYXJhbWV0ZXJzlyYEE0BoDBxpbmxpbmVfd2l0aF9tdWx0aV9wYXJhbWV0ZXJzlyY0E5ycSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn0BoDApub3RfaW5saW5llyYFNHRAaAwebm90X2lubGluZV93aXRoX29uZV9wYXJhbWV0ZXJzlyYGEzROQGgMIG5vdF9pbmxpbmVfd2l0aF9tdWx0aV9wYXJhbWV0ZXJzlyYHExI0KEBoDA1pbmxpbmVfbmVzdGVklyYFNEdACCYFAGNAaDo=
/// INITSLOT 0101 [64 datoshi]
/// LDARG0 [2 datoshi]
/// STLOC0 [2 datoshi]
@@ -88,8 +87,8 @@ public abstract class Contract_Inline(Neo.SmartContract.Testing.SmartContractIni
/// EQUAL [32 datoshi]
/// JMPIFNOT 34 [2 datoshi]
/// PUSH3 [1 datoshi]
- /// PUSH2 [1 datoshi]
- /// ADD [8 datoshi]
+ /// INC [4 datoshi]
+ /// INC [4 datoshi]
/// DUP [2 datoshi]
/// PUSHINT32 00000080 [1 datoshi]
/// JMPGE 04 [2 datoshi]
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Lambda.cs b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Lambda.cs
index 1e00d77b4..596f3307a 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Lambda.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Lambda.cs
@@ -11,12 +11,12 @@ public abstract class Contract_Lambda(Neo.SmartContract.Testing.SmartContractIni
{
#region Compiled data
- public static Neo.SmartContract.Manifest.ContractManifest Manifest => Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""Contract_Lambda"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""checkZero"",""parameters"":[{""name"":""i"",""type"":""Integer""}],""returntype"":""Boolean"",""offset"":0,""safe"":false},{""name"":""checkZero2"",""parameters"":[{""name"":""num"",""type"":""Integer""}],""returntype"":""Boolean"",""offset"":11,""safe"":false},{""name"":""checkZero3"",""parameters"":[{""name"":""num"",""type"":""Integer""}],""returntype"":""Boolean"",""offset"":30,""safe"":false},{""name"":""checkPositiveOdd"",""parameters"":[{""name"":""i"",""type"":""Integer""}],""returntype"":""Boolean"",""offset"":53,""safe"":false},{""name"":""invokeSum"",""parameters"":[{""name"":""a"",""type"":""Integer""},{""name"":""b"",""type"":""Integer""}],""returntype"":""Integer"",""offset"":64,""safe"":false},{""name"":""invokeSum2"",""parameters"":[{""name"":""a"",""type"":""Integer""},{""name"":""b"",""type"":""Integer""}],""returntype"":""Integer"",""offset"":76,""safe"":false},{""name"":""fibo"",""parameters"":[{""name"":""c"",""type"":""Integer""}],""returntype"":""Integer"",""offset"":202,""safe"":false},{""name"":""changeName"",""parameters"":[{""name"":""name"",""type"":""String""}],""returntype"":""String"",""offset"":379,""safe"":false},{""name"":""changeName2"",""parameters"":[{""name"":""name"",""type"":""String""}],""returntype"":""String"",""offset"":406,""safe"":false},{""name"":""forEachVar"",""parameters"":[{""name"":""array"",""type"":""Array""}],""returntype"":""Array"",""offset"":449,""safe"":false},{""name"":""forVar"",""parameters"":[{""name"":""array"",""type"":""Array""}],""returntype"":""Array"",""offset"":515,""safe"":false},{""name"":""anyGreatThanZero"",""parameters"":[{""name"":""array"",""type"":""Array""}],""returntype"":""Boolean"",""offset"":626,""safe"":false},{""name"":""anyGreatThan"",""parameters"":[{""name"":""array"",""type"":""Array""},{""name"":""target"",""type"":""Integer""}],""returntype"":""Boolean"",""offset"":677,""safe"":false},{""name"":""whereGreaterThanZero"",""parameters"":[{""name"":""array"",""type"":""Array""}],""returntype"":""Array"",""offset"":700,""safe"":false},{""name"":""testLambdaDefault"",""parameters"":[{""name"":""a"",""type"":""Integer""}],""returntype"":""Integer"",""offset"":754,""safe"":false},{""name"":""testLambdaNotDefault"",""parameters"":[{""name"":""a"",""type"":""Integer""},{""name"":""b"",""type"":""Integer""}],""returntype"":""Integer"",""offset"":821,""safe"":false},{""name"":""_initialize"",""parameters"":[],""returntype"":""Void"",""offset"":888,""safe"":false}],""events"":[]},""permissions"":[],""trusts"":[],""extra"":{""nef"":{""optimization"":""All""}}}");
+ public static Neo.SmartContract.Manifest.ContractManifest Manifest => Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""Contract_Lambda"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""checkZero"",""parameters"":[{""name"":""i"",""type"":""Integer""}],""returntype"":""Boolean"",""offset"":0,""safe"":false},{""name"":""checkZero2"",""parameters"":[{""name"":""num"",""type"":""Integer""}],""returntype"":""Boolean"",""offset"":11,""safe"":false},{""name"":""checkZero3"",""parameters"":[{""name"":""num"",""type"":""Integer""}],""returntype"":""Boolean"",""offset"":30,""safe"":false},{""name"":""checkPositiveOdd"",""parameters"":[{""name"":""i"",""type"":""Integer""}],""returntype"":""Boolean"",""offset"":53,""safe"":false},{""name"":""invokeSum"",""parameters"":[{""name"":""a"",""type"":""Integer""},{""name"":""b"",""type"":""Integer""}],""returntype"":""Integer"",""offset"":64,""safe"":false},{""name"":""invokeSum2"",""parameters"":[{""name"":""a"",""type"":""Integer""},{""name"":""b"",""type"":""Integer""}],""returntype"":""Integer"",""offset"":76,""safe"":false},{""name"":""fibo"",""parameters"":[{""name"":""c"",""type"":""Integer""}],""returntype"":""Integer"",""offset"":202,""safe"":false},{""name"":""changeName"",""parameters"":[{""name"":""name"",""type"":""String""}],""returntype"":""String"",""offset"":378,""safe"":false},{""name"":""changeName2"",""parameters"":[{""name"":""name"",""type"":""String""}],""returntype"":""String"",""offset"":405,""safe"":false},{""name"":""forEachVar"",""parameters"":[{""name"":""array"",""type"":""Array""}],""returntype"":""Array"",""offset"":448,""safe"":false},{""name"":""forVar"",""parameters"":[{""name"":""array"",""type"":""Array""}],""returntype"":""Array"",""offset"":514,""safe"":false},{""name"":""anyGreatThanZero"",""parameters"":[{""name"":""array"",""type"":""Array""}],""returntype"":""Boolean"",""offset"":625,""safe"":false},{""name"":""anyGreatThan"",""parameters"":[{""name"":""array"",""type"":""Array""},{""name"":""target"",""type"":""Integer""}],""returntype"":""Boolean"",""offset"":676,""safe"":false},{""name"":""whereGreaterThanZero"",""parameters"":[{""name"":""array"",""type"":""Array""}],""returntype"":""Array"",""offset"":699,""safe"":false},{""name"":""testLambdaDefault"",""parameters"":[{""name"":""a"",""type"":""Integer""}],""returntype"":""Integer"",""offset"":753,""safe"":false},{""name"":""testLambdaNotDefault"",""parameters"":[{""name"":""a"",""type"":""Integer""},{""name"":""b"",""type"":""Integer""}],""returntype"":""Integer"",""offset"":820,""safe"":false},{""name"":""_initialize"",""parameters"":[],""returntype"":""Void"",""offset"":887,""safe"":false}],""events"":[]},""permissions"":[],""trusts"":[],""extra"":{""nef"":{""optimization"":""All""}}}");
///
/// Optimization: "All"
///
- public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP3HA1cAAXgKdwMAADZAVwABeApsAwAANANAVwACeXg2QFcBARBweGhhCggAAAA07EBXAAF4WZdAVwABeApJAwAANkBXAAJ5eApNAwAANkBXAQIRcHl4aGQKEAAAADQDQFcAA3p5eDZAVwACeHmeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn1yeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn0BXAQELcGhlCgoAAABleF02QFcAAXgStSYEeEB4EZ9KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfXTZ4Ep9KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfXTaeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn0BXAQF4ZgoUAAAAcF4MBCAhISGL2yhmaDZAXkBXAgF4ZwcKEgAAAHAKHAAAAHFoNkVpNkBfBwwEICEhIYvbKGcHXwdAXwdAVwYBwnB4SnHKchBzIhNpa850aGxnCAopAAAAz2ucc2tqMO3CcWhKcspzEHQiDWpsznVpbTbPbJx0bGsw82lAXwhAVwYBwnAQcSJDeGnOcmhqZwkKWwAAAM9pSpxKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcUVpeMq1JLvCcWhKcspzEHQiDWpsznVpbTbPbJx0bGsw82lAXwlAVwABCikAAAB4NANAVwQCeEpwynEQciIQaGrOc2t5NiYECEBqnHJqaTDwCUBXAAF4ELdAVwACeWcKCgkAAAB4NM1AVwABeF8Kt0BXAAEKLAAAAHg0A0BXBQLCcHhKccpyEHMiEWlrznRseTYmBWhsz2ucc2tqMO9oQFcAAXgQt0BXAQEKCwAAAHAReGg2QFcAAnh5nkoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9AVwECCgsAAABweXhoNkBXAAJ4eZ5KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfQFYMQFcAAXgQl0BXAAF4ELckBAlAeBKiEZdAVwACeHmeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn0CJI/8f").AsSerializable();
+ public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP3GA1cAAXgKdgMAADZAVwABeAprAwAANANAVwACeXg2QFcBARBweGhhCggAAAA07EBXAAF4WZdAVwABeApIAwAANkBXAAJ5eApMAwAANkBXAQIRcHl4aGQKEAAAADQDQFcAA3p5eDZAVwACeHmeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn1yeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn0BXAQELcGhlCgoAAABleF02QFcAAXgStSYEeEB4nUoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9dNnidnUoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9dNp5KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfQFcBAXhmChQAAABwXgwEICEhIYvbKGZoNkBeQFcCAXhnBwoSAAAAcAocAAAAcWg2RWk2QF8HDAQgISEhi9soZwdfB0BfB0BXBgHCcHhKccpyEHMiE2lrznRobGcICikAAADPa5xza2ow7cJxaEpyynMQdCINamzOdWltNs9snHRsazDzaUBfCEBXBgHCcBBxIkN4ac5yaGpnCQpbAAAAz2lKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9xRWl4yrUku8JxaEpyynMQdCINamzOdWltNs9snHRsazDzaUBfCUBXAAEKKQAAAHg0A0BXBAJ4SnDKcRByIhBoas5za3k2JgQIQGqccmppMPAJQFcAAXgQt0BXAAJ5ZwoKCQAAAHg0zUBXAAF4Xwq3QFcAAQosAAAAeDQDQFcFAsJweEpxynIQcyIRaWvOdGx5NiYFaGzPa5xza2ow72hAVwABeBC3QFcBAQoLAAAAcBF4aDZAVwACeHmeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn0BXAQIKCwAAAHB5eGg2QFcAAnh5nkoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9AVgxAVwABeBCXQFcAAXgQtyQECUB4EqIRl0BXAAJ4eZ5KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfQCalOvE=").AsSerializable();
#endregion
@@ -100,10 +100,10 @@ public abstract class Contract_Lambda(Neo.SmartContract.Testing.SmartContractIni
/// Unsafe method
///
///
- /// Script: VwABeApJAwAANkA=
+ /// Script: VwABeApIAwAANkA=
/// INITSLOT 0001 [64 datoshi]
/// LDARG0 [2 datoshi]
- /// PUSHA 49030000 [4 datoshi]
+ /// PUSHA 48030000 [4 datoshi]
/// CALLA [512 datoshi]
/// RET [0 datoshi]
///
@@ -114,10 +114,10 @@ public abstract class Contract_Lambda(Neo.SmartContract.Testing.SmartContractIni
/// Unsafe method
///
///
- /// Script: VwABeAp3AwAANkA=
+ /// Script: VwABeAp2AwAANkA=
/// INITSLOT 0001 [64 datoshi]
/// LDARG0 [2 datoshi]
- /// PUSHA 77030000 [4 datoshi]
+ /// PUSHA 76030000 [4 datoshi]
/// CALLA [512 datoshi]
/// RET [0 datoshi]
///
@@ -128,10 +128,10 @@ public abstract class Contract_Lambda(Neo.SmartContract.Testing.SmartContractIni
/// Unsafe method
///
///
- /// Script: VwABeApsAwAANANA
+ /// Script: VwABeAprAwAANANA
/// INITSLOT 0001 [64 datoshi]
/// LDARG0 [2 datoshi]
- /// PUSHA 6C030000 [4 datoshi]
+ /// PUSHA 6B030000 [4 datoshi]
/// CALL 03 [512 datoshi]
/// RET [0 datoshi]
///
@@ -315,11 +315,11 @@ public abstract class Contract_Lambda(Neo.SmartContract.Testing.SmartContractIni
/// Unsafe method
///
///
- /// Script: VwACeXgKTQMAADZA
+ /// Script: VwACeXgKTAMAADZA
/// INITSLOT 0002 [64 datoshi]
/// LDARG1 [2 datoshi]
/// LDARG0 [2 datoshi]
- /// PUSHA 4D030000 [4 datoshi]
+ /// PUSHA 4C030000 [4 datoshi]
/// CALLA [512 datoshi]
/// RET [0 datoshi]
///
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_MemberAccess.cs b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_MemberAccess.cs
index 91c4e564d..949cb0ff9 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_MemberAccess.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_MemberAccess.cs
@@ -11,12 +11,12 @@ public abstract class Contract_MemberAccess(Neo.SmartContract.Testing.SmartContr
{
#region Compiled data
- public static Neo.SmartContract.Manifest.ContractManifest Manifest => Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""Contract_MemberAccess"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""testMain"",""parameters"":[],""returntype"":""Void"",""offset"":0,""safe"":false},{""name"":""testComplexAssignment"",""parameters"":[],""returntype"":""Void"",""offset"":59,""safe"":false},{""name"":""testStaticComplexAssignment"",""parameters"":[],""returntype"":""Void"",""offset"":331,""safe"":false},{""name"":""_initialize"",""parameters"":[],""returntype"":""Void"",""offset"":414,""safe"":false}],""events"":[]},""permissions"":[{""contract"":""0xacce6fd80d44e1796aa0c2c625e9e4e0ce39efc0"",""methods"":[""itoa""]}],""trusts"":[],""extra"":{""nef"":{""optimization"":""All""}}}");
+ public static Neo.SmartContract.Manifest.ContractManifest Manifest => Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""Contract_MemberAccess"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""testMain"",""parameters"":[],""returntype"":""Void"",""offset"":0,""safe"":false},{""name"":""testComplexAssignment"",""parameters"":[],""returntype"":""Void"",""offset"":59,""safe"":false},{""name"":""testStaticComplexAssignment"",""parameters"":[],""returntype"":""Void"",""offset"":330,""safe"":false},{""name"":""_initialize"",""parameters"":[],""returntype"":""Void"",""offset"":412,""safe"":false}],""events"":[]},""permissions"":[{""contract"":""0xacce6fd80d44e1796aa0c2c625e9e4e0ce39efc0"",""methods"":[""itoa""]}],""trusts"":[],""extra"":{""nef"":{""optimization"":""All""}}}");
///
/// Optimization: "All"
///
- public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHA7znO4OTpJcbCoGp54UQN2G/OrARpdG9hAQABDwAA/aUBVwEAFQwFaGVsbG8QE8BwaBDONwAAQc/nR5YMA21zZ0HP50eWaBHOQc/nR5ZoNAhBz+dHlkBXAAEMAEBXAQAVDAVoZWxsbxATwHBoNHMPlzloShDOD6FKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfTlAQUdARlzloNG4QlzloNaYAAAAMBmhlbGxvMpc5aEoRzgwCMzOL2yhOEVDQDAhoZWxsbzIzM5c5QFcAAXhKEM4Rn0oCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9OUBBR0EBXAAF4ShLOeBLOk0oCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9OElDQQFcAAXhKEc4MATKL2yhOEVDQQBBgWBCXOVgRnkoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9gWBGXOVkJlzlZCKxhWQiXOVkIk9sgYVkJlzlAVgITYAlhQFa5l84=").AsSerializable();
+ public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHA7znO4OTpJcbCoGp54UQN2G/OrARpdG9hAQABDwAA/aMBVwEAFQwFaGVsbG8QE8BwaBDONwAAQc/nR5YMA21zZ0HP50eWaBHOQc/nR5ZoNAhBz+dHlkBXAAEMAEBXAQAVDAVoZWxsbxATwHBoNHMPlzloShDOD6FKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfTlAQUdARlzloNG0QlzloNaUAAAAMBmhlbGxvMpc5aEoRzgwCMzOL2yhOEVDQDAhoZWxsbzIzM5c5QFcAAXhKEM6dSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn05QEFHQQFcAAXhKEs54Es6TSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn04SUNBAVwABeEoRzgwBMovbKE4RUNBAEGBYEJc5WJxKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfYFgRlzlZCZc5WQisYVkIlzlZCJPbIGFZCZc5QFYCE2AJYUD9Z5N3").AsSerializable();
#endregion
@@ -26,7 +26,7 @@ public abstract class Contract_MemberAccess(Neo.SmartContract.Testing.SmartContr
/// Unsafe method
///
///
- /// Script: VwEAFQwFaGVsbG8QE8BwaDRzD5c5aEoQzg+hSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn05QEFHQEZc5aDRuEJc5aDWmAAAADAZoZWxsbzKXOWhKEc4MAjMzi9soThFQ0AwIaGVsbG8yMzOXOUA=
+ /// Script: VwEAFQwFaGVsbG8QE8BwaDRzD5c5aEoQzg+hSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn05QEFHQEZc5aDRtEJc5aDWlAAAADAZoZWxsbzKXOWhKEc4MAjMzi9soThFQ0AwIaGVsbG8yMzOXOUA=
/// INITSLOT 0100 [64 datoshi]
/// PUSH5 [1 datoshi]
/// PUSHDATA1 68656C6C6F 'hello' [8 datoshi]
@@ -68,12 +68,12 @@ public abstract class Contract_MemberAccess(Neo.SmartContract.Testing.SmartContr
/// EQUAL [32 datoshi]
/// ASSERT [1 datoshi]
/// LDLOC0 [2 datoshi]
- /// CALL 6E [512 datoshi]
+ /// CALL 6D [512 datoshi]
/// PUSH0 [1 datoshi]
/// EQUAL [32 datoshi]
/// ASSERT [1 datoshi]
/// LDLOC0 [2 datoshi]
- /// CALL_L A6000000 [512 datoshi]
+ /// CALL_L A5000000 [512 datoshi]
/// PUSHDATA1 68656C6C6F32 'hello2' [8 datoshi]
/// EQUAL [32 datoshi]
/// ASSERT [1 datoshi]
@@ -131,7 +131,7 @@ public abstract class Contract_MemberAccess(Neo.SmartContract.Testing.SmartContr
/// Unsafe method
///
///
- /// Script: EGBYEJc5WBGeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn2BYEZc5WQmXOVkIrGFZCJc5WQiT2yBhWQmXOUA=
+ /// Script: EGBYEJc5WJxKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfYFgRlzlZCZc5WQisYVkIlzlZCJPbIGFZCZc5QA==
/// PUSH0 [1 datoshi]
/// STSFLD0 [2 datoshi]
/// LDSFLD0 [2 datoshi]
@@ -139,8 +139,7 @@ public abstract class Contract_MemberAccess(Neo.SmartContract.Testing.SmartContr
/// EQUAL [32 datoshi]
/// ASSERT [1 datoshi]
/// LDSFLD0 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// ADD [8 datoshi]
+ /// INC [4 datoshi]
/// DUP [2 datoshi]
/// PUSHINT32 00000080 [1 datoshi]
/// JMPGE 04 [2 datoshi]
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Record.cs b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Record.cs
index 79c22bf6c..9136aaf87 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Record.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Record.cs
@@ -11,12 +11,12 @@ public abstract class Contract_Record(Neo.SmartContract.Testing.SmartContractIni
{
#region Compiled data
- public static Neo.SmartContract.Manifest.ContractManifest Manifest => Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""Contract_Record"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""test_CreateRecord"",""parameters"":[{""name"":""n"",""type"":""String""},{""name"":""a"",""type"":""Integer""}],""returntype"":""Any"",""offset"":0,""safe"":false},{""name"":""test_CreateRecord2"",""parameters"":[{""name"":""n"",""type"":""String""},{""name"":""a"",""type"":""Integer""}],""returntype"":""Any"",""offset"":28,""safe"":false},{""name"":""test_UpdateRecord"",""parameters"":[{""name"":""n"",""type"":""String""},{""name"":""a"",""type"":""Integer""}],""returntype"":""Any"",""offset"":58,""safe"":false},{""name"":""test_UpdateRecord2"",""parameters"":[{""name"":""n"",""type"":""String""},{""name"":""a"",""type"":""Integer""}],""returntype"":""Any"",""offset"":138,""safe"":false},{""name"":""test_DeconstructRecord"",""parameters"":[{""name"":""n"",""type"":""String""},{""name"":""a"",""type"":""Integer""}],""returntype"":""String"",""offset"":231,""safe"":false}],""events"":[]},""permissions"":[],""trusts"":[],""extra"":{""nef"":{""optimization"":""All""}}}");
+ public static Neo.SmartContract.Manifest.ContractManifest Manifest => Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""Contract_Record"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""test_CreateRecord"",""parameters"":[{""name"":""n"",""type"":""String""},{""name"":""a"",""type"":""Integer""}],""returntype"":""Any"",""offset"":0,""safe"":false},{""name"":""test_CreateRecord2"",""parameters"":[{""name"":""n"",""type"":""String""},{""name"":""a"",""type"":""Integer""}],""returntype"":""Any"",""offset"":28,""safe"":false},{""name"":""test_UpdateRecord"",""parameters"":[{""name"":""n"",""type"":""String""},{""name"":""a"",""type"":""Integer""}],""returntype"":""Any"",""offset"":58,""safe"":false},{""name"":""test_UpdateRecord2"",""parameters"":[{""name"":""n"",""type"":""String""},{""name"":""a"",""type"":""Integer""}],""returntype"":""Any"",""offset"":137,""safe"":false},{""name"":""test_DeconstructRecord"",""parameters"":[{""name"":""n"",""type"":""String""},{""name"":""a"",""type"":""Integer""}],""returntype"":""String"",""offset"":229,""safe"":false}],""events"":[]},""permissions"":[],""trusts"":[],""extra"":{""nef"":{""optimization"":""All""}}}");
///
/// Optimization: "All"
///
- public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0BAVcBAhALEr95eBJNNAVwaEBXAAN4EHnQeBF60EBXAQIQCxK/eEs0CnlLEVHQcGhAVwACeUp4EFHQRUBXAgIQCxK/eXgSTTTLcGjBv3kRnkoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9LNAVxaEBXAAJ4EXnQQFcCAhALEr95eBJNNXv///9waMG/eRGeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn0s0sgwBMHiL2yhLNAVxaUBXAAJ4EHnQQFcDAhALEr95eBJNNR7///9waErBRXFyRWlAv30x1g==").AsSerializable();
+ public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP3/AFcBAhALEr95eBJNNAVwaEBXAAN4EHnQeBF60EBXAQIQCxK/eEs0CnlLEVHQcGhAVwACeUp4EFHQRUBXAgIQCxK/eXgSTTTLcGjBv3mcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn0s0BXFoQFcAAngRedBAVwICEAsSv3l4Ek01fP///3Bowb95nEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9LNLMMATB4i9soSzQFcWlAVwACeBB50EBXAwIQCxK/eXgSTTUg////cGhKwUVxckVpQIie/tQ=").AsSerializable();
#endregion
@@ -73,7 +73,7 @@ public abstract class Contract_Record(Neo.SmartContract.Testing.SmartContractIni
/// Unsafe method
///
///
- /// Script: VwMCEAsSv3l4Ek01Hv///3BoSsFFcXJFaUA=
+ /// Script: VwMCEAsSv3l4Ek01IP///3BoSsFFcXJFaUA=
/// INITSLOT 0302 [64 datoshi]
/// PUSH0 [1 datoshi]
/// PUSHNULL [1 datoshi]
@@ -83,7 +83,7 @@ public abstract class Contract_Record(Neo.SmartContract.Testing.SmartContractIni
/// LDARG0 [2 datoshi]
/// PUSH2 [1 datoshi]
/// PICK [2 datoshi]
- /// CALL_L 1EFFFFFF [512 datoshi]
+ /// CALL_L 20FFFFFF [512 datoshi]
/// STLOC0 [2 datoshi]
/// LDLOC0 [2 datoshi]
/// DUP [2 datoshi]
@@ -102,7 +102,7 @@ public abstract class Contract_Record(Neo.SmartContract.Testing.SmartContractIni
/// Unsafe method
///
///
- /// Script: VwICEAsSv3l4Ek00y3Bowb95EZ5KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfSzQFcWhA
+ /// Script: VwICEAsSv3l4Ek00y3Bowb95nEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9LNAVxaEA=
/// INITSLOT 0202 [64 datoshi]
/// PUSH0 [1 datoshi]
/// PUSHNULL [1 datoshi]
@@ -118,8 +118,7 @@ public abstract class Contract_Record(Neo.SmartContract.Testing.SmartContractIni
/// UNPACK [2048 datoshi]
/// PACKSTRUCT [2048 datoshi]
/// LDARG1 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// ADD [8 datoshi]
+ /// INC [4 datoshi]
/// DUP [2 datoshi]
/// PUSHINT32 00000080 [1 datoshi]
/// JMPGE 04 [2 datoshi]
@@ -147,7 +146,7 @@ public abstract class Contract_Record(Neo.SmartContract.Testing.SmartContractIni
/// Unsafe method
///
///
- /// Script: VwICEAsSv3l4Ek01e////3Bowb95EZ5KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfSzSyDAEweIvbKEs0BXFpQA==
+ /// Script: VwICEAsSv3l4Ek01fP///3Bowb95nEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9LNLMMATB4i9soSzQFcWlA
/// INITSLOT 0202 [64 datoshi]
/// PUSH0 [1 datoshi]
/// PUSHNULL [1 datoshi]
@@ -157,14 +156,13 @@ public abstract class Contract_Record(Neo.SmartContract.Testing.SmartContractIni
/// LDARG0 [2 datoshi]
/// PUSH2 [1 datoshi]
/// PICK [2 datoshi]
- /// CALL_L 7BFFFFFF [512 datoshi]
+ /// CALL_L 7CFFFFFF [512 datoshi]
/// STLOC0 [2 datoshi]
/// LDLOC0 [2 datoshi]
/// UNPACK [2048 datoshi]
/// PACKSTRUCT [2048 datoshi]
/// LDARG1 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// ADD [8 datoshi]
+ /// INC [4 datoshi]
/// DUP [2 datoshi]
/// PUSHINT32 00000080 [1 datoshi]
/// JMPGE 04 [2 datoshi]
@@ -180,7 +178,7 @@ public abstract class Contract_Record(Neo.SmartContract.Testing.SmartContractIni
/// PUSHINT64 0000000001000000 [1 datoshi]
/// SUB [8 datoshi]
/// OVER [2 datoshi]
- /// CALL B2 [512 datoshi]
+ /// CALL B3 [512 datoshi]
/// PUSHDATA1 30 '0' [8 datoshi]
/// LDARG0 [2 datoshi]
/// CAT [2048 datoshi]
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Recursion.cs b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Recursion.cs
index ead555c4c..3cbac4487 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Recursion.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Recursion.cs
@@ -11,12 +11,12 @@ public abstract class Contract_Recursion(Neo.SmartContract.Testing.SmartContract
{
#region Compiled data
- public static Neo.SmartContract.Manifest.ContractManifest Manifest => Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""Contract_Recursion"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""factorial"",""parameters"":[{""name"":""a"",""type"":""Integer""}],""returntype"":""Integer"",""offset"":0,""safe"":false},{""name"":""hanoiTower"",""parameters"":[{""name"":""n"",""type"":""Integer""},{""name"":""src"",""type"":""Integer""},{""name"":""aux"",""type"":""Integer""},{""name"":""dst"",""type"":""Integer""}],""returntype"":""Array"",""offset"":52,""safe"":false},{""name"":""even"",""parameters"":[{""name"":""n"",""type"":""Integer""}],""returntype"":""Boolean"",""offset"":146,""safe"":false},{""name"":""odd"",""parameters"":[{""name"":""n"",""type"":""Integer""}],""returntype"":""Boolean"",""offset"":172,""safe"":false}],""events"":[]},""permissions"":[],""trusts"":[],""extra"":{""nef"":{""optimization"":""All""}}}");
+ public static Neo.SmartContract.Manifest.ContractManifest Manifest => Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""Contract_Recursion"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""factorial"",""parameters"":[{""name"":""a"",""type"":""Integer""}],""returntype"":""Integer"",""offset"":0,""safe"":false},{""name"":""hanoiTower"",""parameters"":[{""name"":""n"",""type"":""Integer""},{""name"":""src"",""type"":""Integer""},{""name"":""aux"",""type"":""Integer""},{""name"":""dst"",""type"":""Integer""}],""returntype"":""Array"",""offset"":51,""safe"":false},{""name"":""even"",""parameters"":[{""name"":""n"",""type"":""Integer""}],""returntype"":""Boolean"",""offset"":143,""safe"":false},{""name"":""odd"",""parameters"":[{""name"":""n"",""type"":""Integer""}],""returntype"":""Boolean"",""offset"":167,""safe"":false}],""events"":[]},""permissions"":[],""trusts"":[],""extra"":{""nef"":{""optimization"":""All""}}}");
///
/// Optimization: "All"
///
- public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMZXAAF4ELgkHwwaTWludXMgbnVtYmVyIG5vdCBzdXBwb3J0ZWTgeBK4Jgp4eBGfNNKgQBFAVwUEeBC3JBgME0NvdW50IG9mIGRpc2tzIDw9IDDgeBGXJg3CcGh7eRETv89oQHp7eXgRnzTMcGh7eXgTv897eXp4EZ80vEpxynIQcyIMaWvOdGhsz2ucc2tqMPRoQFcAAXgQlyYECEB4ELUmB3gRniIFeBGfNANAVwABeBCXJgQJQHgQtSYHeBGeIgV4EZ80z0B+ZwPL").AsSerializable();
+ public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL9XAAF4ELgkHwwaTWludXMgbnVtYmVyIG5vdCBzdXBwb3J0ZWTgeBK4Jgl4eJ0006BAEUBXBQR4ELckGAwTQ291bnQgb2YgZGlza3MgPD0gMOB4EZcmDcJwaHt5ERO/z2hAent5eJ00zXBoe3l4E7/Pe3l6eJ00vkpxynIQcyIMaWvOdGhsz2ucc2tqMPRoQFcAAXgQlyYECEB4ELUmBnicIgR4nTQDQFcAAXgQlyYECUB4ELUmBnicIgR4nTTTQFqeaIA=").AsSerializable();
#endregion
@@ -26,7 +26,7 @@ public abstract class Contract_Recursion(Neo.SmartContract.Testing.SmartContract
/// Unsafe method
///
///
- /// Script: VwABeBCXJgQIQHgQtSYHeBGeIgV4EZ80A0A=
+ /// Script: VwABeBCXJgQIQHgQtSYGeJwiBHidNANA
/// INITSLOT 0001 [64 datoshi]
/// LDARG0 [2 datoshi]
/// PUSH0 [1 datoshi]
@@ -37,14 +37,12 @@ public abstract class Contract_Recursion(Neo.SmartContract.Testing.SmartContract
/// LDARG0 [2 datoshi]
/// PUSH0 [1 datoshi]
/// LT [8 datoshi]
- /// JMPIFNOT 07 [2 datoshi]
+ /// JMPIFNOT 06 [2 datoshi]
/// LDARG0 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// ADD [8 datoshi]
- /// JMP 05 [2 datoshi]
+ /// INC [4 datoshi]
+ /// JMP 04 [2 datoshi]
/// LDARG0 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// SUB [8 datoshi]
+ /// DEC [4 datoshi]
/// CALL 03 [512 datoshi]
/// RET [0 datoshi]
///
@@ -55,7 +53,7 @@ public abstract class Contract_Recursion(Neo.SmartContract.Testing.SmartContract
/// Unsafe method
///
///
- /// Script: VwABeBC4JB8MGk1pbnVzIG51bWJlciBub3Qgc3VwcG9ydGVk4HgSuCYKeHgRnzTSoEARQA==
+ /// Script: VwABeBC4JB8MGk1pbnVzIG51bWJlciBub3Qgc3VwcG9ydGVk4HgSuCYJeHidNNOgQBFA
/// INITSLOT 0001 [64 datoshi]
/// LDARG0 [2 datoshi]
/// PUSH0 [1 datoshi]
@@ -66,12 +64,11 @@ public abstract class Contract_Recursion(Neo.SmartContract.Testing.SmartContract
/// LDARG0 [2 datoshi]
/// PUSH2 [1 datoshi]
/// GE [8 datoshi]
- /// JMPIFNOT 0A [2 datoshi]
+ /// JMPIFNOT 09 [2 datoshi]
/// LDARG0 [2 datoshi]
/// LDARG0 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// SUB [8 datoshi]
- /// CALL D2 [512 datoshi]
+ /// DEC [4 datoshi]
+ /// CALL D3 [512 datoshi]
/// MUL [8 datoshi]
/// RET [0 datoshi]
/// PUSH1 [1 datoshi]
@@ -84,7 +81,7 @@ public abstract class Contract_Recursion(Neo.SmartContract.Testing.SmartContract
/// Unsafe method
///
///
- /// Script: VwUEeBC3JBgME0NvdW50IG9mIGRpc2tzIDw9IDDgeBGXJg3CcGh7eRETv89oQHp7eXgRnzTMcGh7eXgTv897eXp4EZ80vEpxynIQcyIMaWvOdGhsz2ucc2tqMPRoQA==
+ /// Script: VwUEeBC3JBgME0NvdW50IG9mIGRpc2tzIDw9IDDgeBGXJg3CcGh7eRETv89oQHp7eXidNM1waHt5eBO/z3t5enidNL5KccpyEHMiDGlrznRobM9rnHNrajD0aEA=
/// INITSLOT 0504 [64 datoshi]
/// LDARG0 [2 datoshi]
/// PUSH0 [1 datoshi]
@@ -111,9 +108,8 @@ public abstract class Contract_Recursion(Neo.SmartContract.Testing.SmartContract
/// LDARG3 [2 datoshi]
/// LDARG1 [2 datoshi]
/// LDARG0 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// SUB [8 datoshi]
- /// CALL CC [512 datoshi]
+ /// DEC [4 datoshi]
+ /// CALL CD [512 datoshi]
/// STLOC0 [2 datoshi]
/// LDLOC0 [2 datoshi]
/// LDARG3 [2 datoshi]
@@ -126,9 +122,8 @@ public abstract class Contract_Recursion(Neo.SmartContract.Testing.SmartContract
/// LDARG1 [2 datoshi]
/// LDARG2 [2 datoshi]
/// LDARG0 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// SUB [8 datoshi]
- /// CALL BC [512 datoshi]
+ /// DEC [4 datoshi]
+ /// CALL BE [512 datoshi]
/// DUP [2 datoshi]
/// STLOC1 [2 datoshi]
/// SIZE [4 datoshi]
@@ -159,7 +154,7 @@ public abstract class Contract_Recursion(Neo.SmartContract.Testing.SmartContract
/// Unsafe method
///
///
- /// Script: VwABeBCXJgQJQHgQtSYHeBGeIgV4EZ80z0A=
+ /// Script: VwABeBCXJgQJQHgQtSYGeJwiBHidNNNA
/// INITSLOT 0001 [64 datoshi]
/// LDARG0 [2 datoshi]
/// PUSH0 [1 datoshi]
@@ -170,15 +165,13 @@ public abstract class Contract_Recursion(Neo.SmartContract.Testing.SmartContract
/// LDARG0 [2 datoshi]
/// PUSH0 [1 datoshi]
/// LT [8 datoshi]
- /// JMPIFNOT 07 [2 datoshi]
+ /// JMPIFNOT 06 [2 datoshi]
/// LDARG0 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// ADD [8 datoshi]
- /// JMP 05 [2 datoshi]
+ /// INC [4 datoshi]
+ /// JMP 04 [2 datoshi]
/// LDARG0 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// SUB [8 datoshi]
- /// CALL CF [512 datoshi]
+ /// DEC [4 datoshi]
+ /// CALL D3 [512 datoshi]
/// RET [0 datoshi]
///
[DisplayName("odd")]
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_StaticClass.cs b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_StaticClass.cs
index 039dc5e85..ac674147f 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_StaticClass.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_StaticClass.cs
@@ -11,12 +11,12 @@ public abstract class Contract_StaticClass(Neo.SmartContract.Testing.SmartContra
{
#region Compiled data
- public static Neo.SmartContract.Manifest.ContractManifest Manifest => Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""Contract_StaticClass"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""testStaticClass"",""parameters"":[],""returntype"":""Integer"",""offset"":0,""safe"":false},{""name"":""_initialize"",""parameters"":[],""returntype"":""Void"",""offset"":66,""safe"":false}],""events"":[]},""permissions"":[],""trusts"":[],""extra"":{""nef"":{""optimization"":""All""}}}");
+ public static Neo.SmartContract.Manifest.ContractManifest Manifest => Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""Contract_StaticClass"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""testStaticClass"",""parameters"":[],""returntype"":""Integer"",""offset"":0,""safe"":false},{""name"":""_initialize"",""parameters"":[],""returntype"":""Void"",""offset"":65,""safe"":false}],""events"":[]},""permissions"":[],""trusts"":[],""extra"":{""nef"":{""optimization"":""All""}}}");
///
/// Optimization: "All"
///
- public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEtZNAZaNDlAVwABWBGeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn2BAVwABWEBWAxFgwmHCYkBDH0c0").AsSerializable();
+ public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEpZNAZaNDhAVwABWJxKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfYEBXAAFYQFYDEWDCYcJiQHYCoHQ=").AsSerializable();
#endregion
@@ -26,11 +26,11 @@ public abstract class Contract_StaticClass(Neo.SmartContract.Testing.SmartContra
/// Unsafe method
///
///
- /// Script: WTQGWjQ5QA==
+ /// Script: WTQGWjQ4QA==
/// LDSFLD1 [2 datoshi]
/// CALL 06 [512 datoshi]
/// LDSFLD2 [2 datoshi]
- /// CALL 39 [512 datoshi]
+ /// CALL 38 [512 datoshi]
/// RET [0 datoshi]
///
[DisplayName("testStaticClass")]
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_StaticConstruct.cs b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_StaticConstruct.cs
index 5098882a5..d3781d578 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_StaticConstruct.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_StaticConstruct.cs
@@ -16,7 +16,7 @@ public abstract class Contract_StaticConstruct(Neo.SmartContract.Testing.SmartCo
///
/// Optimization: "All"
///
- public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxYQFcBAFYBE3BoEZ5KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfYEAGZpSh").AsSerializable();
+ public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADtYQFcBAFYBE3BonEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9gQJueKnc=").AsSerializable();
#endregion
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Switch.cs b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Switch.cs
index ba87aa789..2d97984d2 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Switch.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Switch.cs
@@ -16,7 +16,7 @@ public abstract class Contract_Switch(Neo.SmartContract.Testing.SmartContractIni
///
/// Optimization: "All"
///
- public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP1gA1cBAXhwaAwBMJclrQAAAGgMATGXJaUAAABoDAEylyWdAAAAaAwBM5cllQAAAGgMATSXJY0AAABoDAE1lyWFAAAAaAwBNpckfWgMATeXJHhoDAE4lyRzaAwBOZckbmgMAjEwlyRoaAwCMTGXJGJoDAIxMpckXGgMAjEzlyRWaAwCMTSXJFBoDAIxNZckSmgMAjE2lyREaAwCMTeXJD9oDAIxOJckOmgMAjE5lyQ1aAwCMjCXJDAiMRFAEkATQBRAFUAWQBdAGEAZQBpAG0AcQB1AHkAfQCBAABFAABJAABNAABRAABVAAGNAVwEBeHBoDAEwlyQnaAwBMZckImgMATKXJB1oDAEzlyQYaAwBNJckE2gMATWXJA4iDhFAEkATQBRAFUAWQABjQFcBAXhwaAwBMJcmBBFAaAwBMZcmBBJAaAwBMpcmBBNAaAwBM5cmBBRAaAwBNJcmBBVAaAwBNZcmBBZACCYFAGNAaDpXAgERcHhxaRGXJA5pEpckDWkTlyQMIg4ScCIME3AiCBZwIgQQcGhAVwIBEXB4cWkMAWGXJEBpDAFjlyRxaQwBYpcloQAAAGkMAWSXJc8AAABpDAFllyX8AAAAaQwBZpclJgEAAGkMAWeXJVABAAAjfwEAAGhKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRSNLAQAAaBKgSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3AjFAEAAGhKnUoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRSPcAAAAaA+gSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3AjpQAAAGhooEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wIm5oE6BKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcCI6aBKeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3AiBmgRoXBoQH2/0+M=").AsSerializable();
+ public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP1gA1cBAXhwaAwBMJclrQAAAGgMATGXJaUAAABoDAEylyWdAAAAaAwBM5cllQAAAGgMATSXJY0AAABoDAE1lyWFAAAAaAwBNpckfWgMATeXJHhoDAE4lyRzaAwBOZckbmgMAjEwlyRoaAwCMTGXJGJoDAIxMpckXGgMAjEzlyRWaAwCMTSXJFBoDAIxNZckSmgMAjE2lyREaAwCMTeXJD9oDAIxOJckOmgMAjE5lyQ1aAwCMjCXJDAiMRFAEkATQBRAFUAWQBdAGEAZQBpAG0AcQB1AHkAfQCBAABFAABJAABNAABRAABVAAGNAVwEBeHBoDAEwlyQnaAwBMZckImgMATKXJB1oDAEzlyQYaAwBNJckE2gMATWXJA4iDhFAEkATQBRAFUAWQABjQFcBAXhwaAwBMJcmBBFAaAwBMZcmBBJAaAwBMpcmBBNAaAwBM5cmBBRAaAwBNJcmBBVAaAwBNZcmBBZACCYFAGNAaDpXAgERcHhxaRGXJA5pEpckDWkTlyQMIg4ScCIME3AiCBZwIgQQcGhAVwIBEXB4cWkMAWGXJEBpDAFjlyRxaQwBYpcloQAAAGkMAWSXJc8AAABpDAFllyX8AAAAaQwBZpclJgEAAGkMAWeXJVABAAAjfwEAAGhKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRSNLAQAAaBKgSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3AjFAEAAGhKnUoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRSPcAAAAaA+gSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3AjpQAAAGhooEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wIm5oE6BKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcCI6aJycSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3AiBmgRoXBoQL6s49U=").AsSerializable();
#endregion
@@ -312,7 +312,7 @@ public abstract class Contract_Switch(Neo.SmartContract.Testing.SmartContractIni
/// Unsafe method
///
///
- /// Script: VwIBEXB4cWkMAWGXJEBpDAFjlyRxaQwBYpcloQAAAGkMAWSXJc8AAABpDAFllyX8AAAAaQwBZpclJgEAAGkMAWeXJVABAAAjfwEAAGhKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRSNLAQAAaBKgSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3AjFAEAAGhKnUoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRSPcAAAAaA+gSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3AjpQAAAGhooEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wIm5oE6BKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcCI6aBKeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3AiBmgRoXBoQA==
+ /// Script: VwIBEXB4cWkMAWGXJEBpDAFjlyRxaQwBYpcloQAAAGkMAWSXJc8AAABpDAFllyX8AAAAaQwBZpclJgEAAGkMAWeXJVABAAAjfwEAAGhKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRSNLAQAAaBKgSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3AjFAEAAGhKnUoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRSPcAAAAaA+gSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3AjpQAAAGhooEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wIm5oE6BKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcCI6aJycSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3AiBmgRoXBoQA==
/// INITSLOT 0201 [64 datoshi]
/// PUSH1 [1 datoshi]
/// STLOC0 [2 datoshi]
@@ -464,8 +464,8 @@ public abstract class Contract_Switch(Neo.SmartContract.Testing.SmartContractIni
/// STLOC0 [2 datoshi]
/// JMP 3A [2 datoshi]
/// LDLOC0 [2 datoshi]
- /// PUSH2 [1 datoshi]
- /// ADD [8 datoshi]
+ /// INC [4 datoshi]
+ /// INC [4 datoshi]
/// DUP [2 datoshi]
/// PUSHINT32 00000080 [1 datoshi]
/// JMPGE 04 [2 datoshi]
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_TryCatch.cs b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_TryCatch.cs
index bce166bbf..38b2e566b 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_TryCatch.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_TryCatch.cs
@@ -16,7 +16,7 @@ public abstract class Contract_TryCatch(Neo.SmartContract.Testing.SmartContractI
///
/// Optimization: "All"
///
- public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP1sCVcCAxBwOxYeEnB4Jg4MCWV4Y2VwdGlvbjo9QXF5JgQTcD05eiY1aEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFP2hAVwADenl4NJ5AVwIDEHA7DBQScHgmBDRFPUFxeSYEE3A9OXomNWhKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRT9oQAwJZXhjZXB0aW9uOlcCBBBwO1QAOwwWEnB4JgQ05D1FcRNweSYENNo9O3omBDTTaEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFPz07cXsmNWhKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRT0CaEBXAgMQcDsWKhFweCYODAlleGNlcHRpb246PRxxEnB5Jg4MCWV4Y2VwdGlvbjo9CHomBBNwPxRwaEBXAQIQcDsAFhJweCYODAlleGNlcHRpb246PTl5JjVoSpxKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcEU/aEBXAQIQcDsADxJweCYHNcb+//89OXkmNWhKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRT9oQFcCAhBwOw8AEnB4Jgc1ef7//z07cXkmNWhKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRT0CaEBXAgYQcDzPAAAABwEAADtHf2hKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRXgmDgwJZXhjZXB0aW9uOj1wcXomNGgSnkoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wPTh8JjRoE55KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcD95Jg4MCWV4Y2VwdGlvbjo9cHF7JjRoFJ5KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcD04fSY0aBWeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3A/aEBXAgMQcDtDSxJweCYMDAYKCwwNDg8iJQwhAkcA2y6Q2fAsT5/IYqusqScl+VtP3cyNf/pThpPs9GOpStgkCUrKACEoAzpxPUFxeSYEE3A9OXomNWhKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRT9oQFcCAhBwOzY+EnAMIQJHANsukNnwLE+fyGKrrKknJflbT93MjX/6U4aT7PRjqUrYJAlKygAhKAM6cT1BcXgmBBNwPTl5JjVoSpxKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcEU/aEBXAgMQcDs2PhJweCYMDAYKCwwNDg8iGAwUfu4aq+tn7R15HUTk9fzzrpFxqHFK2CQJSsoAFCgDOnE9QXF5JgQTcD05eiY1aEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFP2hAVwICEHA7KTEScAwUfu4aq+tn7R15HUTk9fzzrpFxqHFK2CQJSsoAFCgDOnE9QXF4JgQTcD05eSY1aEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFP2hAVwIDEHA7QEgScHgmFQwGCgsMDQ4PStgkK0rKACAoJToMIO3PhnkQTsKRGk/imtfbIypJPluZD7HaevDHuYmUjIklcT1BcXkmBBNwPTl6JjVoSpxKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcEU/aEBXAgIQcDsqMhJwDCDtz4Z5EE7CkRpP4prX2yMqST5bmQ+x2nrwx7mJlIyJJXE9QXF4JgQTcD05eSY1aEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFP2hAVwMDEHAAIYjbKErYJAlKygAhKAM6cTsMFBJweCYEC3E9enJ5JgQTcD1yeiY1aEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFaXJq2CY1aEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFP2loEr9AVwMDEHAAFIjbKErYJAlKygAUKAM6cTsMFBJweCYEC3E9enJ5JgQTcD1yeiY1aEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFaXJq2CY1aEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFP2loEr9AVwMDEHAAIIjbKErYJAlKygAgKAM6cTsMFBJweCYEC3E9enJ5JgQTcD1yeiY1aEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFaXJq2CY1aEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFP2loEr9AVwMDEHAMAzEyM3E7DBQScHgmBAtxPXpyeSYEE3A9cnomNWhKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRWlyatgmNWhKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRT9paBK/QFcCAxBwOwsTEnB4JgM4PUFxeSYEE3A9OXomNWhKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRT9oQM+f6pI=").AsSerializable();
+ public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP1sCVcCAxBwOxYeEnB4Jg4MCWV4Y2VwdGlvbjo9QXF5JgQTcD05eiY1aEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFP2hAVwADenl4NJ5AVwIDEHA7DBQScHgmBDRFPUFxeSYEE3A9OXomNWhKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRT9oQAwJZXhjZXB0aW9uOlcCBBBwO1QAOwwWEnB4JgQ05D1FcRNweSYENNo9O3omBDTTaEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFPz07cXsmNWhKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRT0CaEBXAgMQcDsWKhFweCYODAlleGNlcHRpb246PRxxEnB5Jg4MCWV4Y2VwdGlvbjo9CHomBBNwPxRwaEBXAQIQcDsAFhJweCYODAlleGNlcHRpb246PTl5JjVoSpxKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcEU/aEBXAQIQcDsADxJweCYHNcb+//89OXkmNWhKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRT9oQFcCAhBwOw8AEnB4Jgc1ef7//z07cXkmNWhKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRT0CaEBXAgYQcDzPAAAABwEAADtHf2hKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRXgmDgwJZXhjZXB0aW9uOj1wcXomNGicnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wPTh8JjRoE55KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcD95Jg4MCWV4Y2VwdGlvbjo9cHF7JjRoFJ5KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcD04fSY0aBWeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3A/aEBXAgMQcDtDSxJweCYMDAYKCwwNDg8iJQwhAkcA2y6Q2fAsT5/IYqusqScl+VtP3cyNf/pThpPs9GOpStgkCUrKACEoAzpxPUFxeSYEE3A9OXomNWhKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRT9oQFcCAhBwOzY+EnAMIQJHANsukNnwLE+fyGKrrKknJflbT93MjX/6U4aT7PRjqUrYJAlKygAhKAM6cT1BcXgmBBNwPTl5JjVoSpxKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcEU/aEBXAgMQcDs2PhJweCYMDAYKCwwNDg8iGAwUfu4aq+tn7R15HUTk9fzzrpFxqHFK2CQJSsoAFCgDOnE9QXF5JgQTcD05eiY1aEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFP2hAVwICEHA7KTEScAwUfu4aq+tn7R15HUTk9fzzrpFxqHFK2CQJSsoAFCgDOnE9QXF4JgQTcD05eSY1aEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFP2hAVwIDEHA7QEgScHgmFQwGCgsMDQ4PStgkK0rKACAoJToMIO3PhnkQTsKRGk/imtfbIypJPluZD7HaevDHuYmUjIklcT1BcXkmBBNwPTl6JjVoSpxKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcEU/aEBXAgIQcDsqMhJwDCDtz4Z5EE7CkRpP4prX2yMqST5bmQ+x2nrwx7mJlIyJJXE9QXF4JgQTcD05eSY1aEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFP2hAVwMDEHAAIYjbKErYJAlKygAhKAM6cTsMFBJweCYEC3E9enJ5JgQTcD1yeiY1aEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFaXJq2CY1aEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFP2loEr9AVwMDEHAAFIjbKErYJAlKygAUKAM6cTsMFBJweCYEC3E9enJ5JgQTcD1yeiY1aEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFaXJq2CY1aEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFP2loEr9AVwMDEHAAIIjbKErYJAlKygAgKAM6cTsMFBJweCYEC3E9enJ5JgQTcD1yeiY1aEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFaXJq2CY1aEqcSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3BFP2loEr9AVwMDEHAMAzEyM3E7DBQScHgmBAtxPXpyeSYEE3A9cnomNWhKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRWlyatgmNWhKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRT9paBK/QFcCAxBwOwsTEnB4JgM4PUFxeSYEE3A9OXomNWhKnEoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wRT9oQPNG+n8=").AsSerializable();
#endregion
@@ -1129,7 +1129,7 @@ public abstract class Contract_TryCatch(Neo.SmartContract.Testing.SmartContractI
/// Unsafe method
///
///
- /// Script: VwIGEHA8zwAAAAcBAAA7R39oSpxKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcEV4Jg4MCWV4Y2VwdGlvbjo9cHF6JjRoEp5KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcD04fCY0aBOeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3A/eSYODAlleGNlcHRpb246PXBxeyY0aBSeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3A9OH0mNGgVnkoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wP2hA
+ /// Script: VwIGEHA8zwAAAAcBAAA7R39oSpxKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcEV4Jg4MCWV4Y2VwdGlvbjo9cHF6JjRonJxKAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfcD04fCY0aBOeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3A/eSYODAlleGNlcHRpb246PXBxeyY0aBSeSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAn3A9OH0mNGgVnkoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ9wP2hA
/// INITSLOT 0206 [64 datoshi]
/// PUSH0 [1 datoshi]
/// STLOC0 [2 datoshi]
@@ -1163,8 +1163,8 @@ public abstract class Contract_TryCatch(Neo.SmartContract.Testing.SmartContractI
/// LDARG2 [2 datoshi]
/// JMPIFNOT 34 [2 datoshi]
/// LDLOC0 [2 datoshi]
- /// PUSH2 [1 datoshi]
- /// ADD [8 datoshi]
+ /// INC [4 datoshi]
+ /// INC [4 datoshi]
/// DUP [2 datoshi]
/// PUSHINT32 00000080 [1 datoshi]
/// JMPGE 04 [2 datoshi]
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_WriteInTry.cs b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_WriteInTry.cs
index c3cb15270..93ccd8321 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_WriteInTry.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_WriteInTry.cs
@@ -11,12 +11,12 @@ public abstract class Contract_WriteInTry(Neo.SmartContract.Testing.SmartContrac
{
#region Compiled data
- public static Neo.SmartContract.Manifest.ContractManifest Manifest => Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""Contract_WriteInTry"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""baseTry"",""parameters"":[],""returntype"":""Void"",""offset"":0,""safe"":false},{""name"":""tryWrite"",""parameters"":[],""returntype"":""Void"",""offset"":108,""safe"":false},{""name"":""tryWriteWithVulnerability"",""parameters"":[],""returntype"":""Void"",""offset"":173,""safe"":false},{""name"":""recursiveTry"",""parameters"":[{""name"":""i"",""type"":""Integer""}],""returntype"":""Void"",""offset"":187,""safe"":false},{""name"":""mutualRecursiveTry"",""parameters"":[{""name"":""i"",""type"":""Integer""}],""returntype"":""Void"",""offset"":309,""safe"":false}],""events"":[]},""permissions"":[],""trusts"":[],""extra"":{""nef"":{""optimization"":""All""}}}");
+ public static Neo.SmartContract.Manifest.ContractManifest Manifest => Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""Contract_WriteInTry"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""baseTry"",""parameters"":[],""returntype"":""Void"",""offset"":0,""safe"":false},{""name"":""tryWrite"",""parameters"":[],""returntype"":""Void"",""offset"":108,""safe"":false},{""name"":""tryWriteWithVulnerability"",""parameters"":[],""returntype"":""Void"",""offset"":173,""safe"":false},{""name"":""recursiveTry"",""parameters"":[{""name"":""i"",""type"":""Integer""}],""returntype"":""Void"",""offset"":187,""safe"":false},{""name"":""mutualRecursiveTry"",""parameters"":[{""name"":""i"",""type"":""Integer""}],""returntype"":""Void"",""offset"":307,""safe"":false}],""events"":[]},""permissions"":[],""trusts"":[],""extra"":{""nef"":{""optimization"":""All""}}}");
///
/// Optimization: "All"
///
- public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP2EAVcCADsHLzQ6PTdwOwAHNEk9ADsdAAwXdGhyb3cgaW4gbmVzdGVkIGZpbmFsbHk6cWk6OwoADAEANCU9BHA4P0AQDAEANANAVwACeXhBm/ZnzkHmPxiEQAwBADQDQFcAAXhBm/ZnzkEvWMXtQFcBADsdADTODBV0aHJvdyBpbiBUcnlXcml0ZSB0cnk6cDsAHzTHDBd0aHJvdyBpbiBUcnlXcml0ZSBjYXRjaDo/VwEAOwcANKQ9BXA9AkBXAAE7AEI1f////3gQtyY1eBGfSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAnzS/PTZ4EZ9KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfNAQ/QFcAATsASngQtyY4eBGfSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAnzVK////NTf///813P7//z0DP0AG3exP").AsSerializable();
+ public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"TkVGM1Rlc3RpbmdFbmdpbmUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP2BAVcCADsHLzQ6PTdwOwAHNEk9ADsdAAwXdGhyb3cgaW4gbmVzdGVkIGZpbmFsbHk6cWk6OwoADAEANCU9BHA4P0AQDAEANANAVwACeXhBm/ZnzkHmPxiEQAwBADQDQFcAAXhBm/ZnzkEvWMXtQFcBADsdADTODBV0aHJvdyBpbiBUcnlXcml0ZSB0cnk6cDsAHzTHDBd0aHJvdyBpbiBUcnlXcml0ZSBjYXRjaDo/VwEAOwcANKQ9BXA9AkBXAAE7AEE1f////3gQtyY0eJ1KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfNMA9NXidSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAnzQEP0BXAAE7AEl4ELcmN3idSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAnzVN////NTr///813/7//z0DP0ADkynT").AsSerializable();
#endregion
@@ -57,16 +57,15 @@ public abstract class Contract_WriteInTry(Neo.SmartContract.Testing.SmartContrac
/// Unsafe method
///
///
- /// Script: VwABOwBKeBC3Jjh4EZ9KAgAAAIAuBCIKSgL///9/Mh4D/////wAAAACRSgL///9/MgwDAAAAAAEAAACfNUr///81N////zXc/v//PQM/QA==
+ /// Script: VwABOwBJeBC3Jjd4nUoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ81Tf///zU6////Nd/+//89Az9A
/// INITSLOT 0001 [64 datoshi]
- /// TRY 004A [4 datoshi]
+ /// TRY 0049 [4 datoshi]
/// LDARG0 [2 datoshi]
/// PUSH0 [1 datoshi]
/// GT [8 datoshi]
- /// JMPIFNOT 38 [2 datoshi]
+ /// JMPIFNOT 37 [2 datoshi]
/// LDARG0 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// SUB [8 datoshi]
+ /// DEC [4 datoshi]
/// DUP [2 datoshi]
/// PUSHINT32 00000080 [1 datoshi]
/// JMPGE 04 [2 datoshi]
@@ -81,9 +80,9 @@ public abstract class Contract_WriteInTry(Neo.SmartContract.Testing.SmartContrac
/// JMPLE 0C [2 datoshi]
/// PUSHINT64 0000000001000000 [1 datoshi]
/// SUB [8 datoshi]
- /// CALL_L 4AFFFFFF [512 datoshi]
- /// CALL_L 37FFFFFF [512 datoshi]
- /// CALL_L DCFEFFFF [512 datoshi]
+ /// CALL_L 4DFFFFFF [512 datoshi]
+ /// CALL_L 3AFFFFFF [512 datoshi]
+ /// CALL_L DFFEFFFF [512 datoshi]
/// ENDTRY 03 [4 datoshi]
/// ENDFINALLY [4 datoshi]
/// RET [0 datoshi]
@@ -95,17 +94,16 @@ public abstract class Contract_WriteInTry(Neo.SmartContract.Testing.SmartContrac
/// Unsafe method
///
///
- /// Script: VwABOwBCNX////94ELcmNXgRn0oCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ80vz02eBGfSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAnzQEP0A=
+ /// Script: VwABOwBBNX////94ELcmNHidSgIAAACALgQiCkoC////fzIeA/////8AAAAAkUoC////fzIMAwAAAAABAAAAnzTAPTV4nUoCAAAAgC4EIgpKAv///38yHgP/////AAAAAJFKAv///38yDAMAAAAAAQAAAJ80BD9A
/// INITSLOT 0001 [64 datoshi]
- /// TRY 0042 [4 datoshi]
+ /// TRY 0041 [4 datoshi]
/// CALL_L 7FFFFFFF [512 datoshi]
/// LDARG0 [2 datoshi]
/// PUSH0 [1 datoshi]
/// GT [8 datoshi]
- /// JMPIFNOT 35 [2 datoshi]
+ /// JMPIFNOT 34 [2 datoshi]
/// LDARG0 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// SUB [8 datoshi]
+ /// DEC [4 datoshi]
/// DUP [2 datoshi]
/// PUSHINT32 00000080 [1 datoshi]
/// JMPGE 04 [2 datoshi]
@@ -120,11 +118,10 @@ public abstract class Contract_WriteInTry(Neo.SmartContract.Testing.SmartContrac
/// JMPLE 0C [2 datoshi]
/// PUSHINT64 0000000001000000 [1 datoshi]
/// SUB [8 datoshi]
- /// CALL BF [512 datoshi]
- /// ENDTRY 36 [4 datoshi]
+ /// CALL C0 [512 datoshi]
+ /// ENDTRY 35 [4 datoshi]
/// LDARG0 [2 datoshi]
- /// PUSH1 [1 datoshi]
- /// SUB [8 datoshi]
+ /// DEC [4 datoshi]
/// DUP [2 datoshi]
/// PUSHINT32 00000080 [1 datoshi]
/// JMPGE 04 [2 datoshi]
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Contract1.cs b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Contract1.cs
index 1761fcff7..38d3495a0 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Contract1.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Contract1.cs
@@ -46,39 +46,39 @@ public void Test_testArgs3()
{
// No errors
Assert.AreEqual(3, Contract.TestArgs3(1, 2));
- AssertGasConsumed(1047750);
+ AssertGasConsumed(1047720);
Assert.AreEqual(3, Contract.TestArgs3(BigInteger.One, BigInteger.Zero));
- AssertGasConsumed(1047750);
+ AssertGasConsumed(1047720);
Assert.AreEqual(1, Contract.TestArgs3(BigInteger.MinusOne, BigInteger.MinusOne));
- AssertGasConsumed(1047750);
+ AssertGasConsumed(1047720);
Assert.AreEqual(-2147483647, Contract.TestArgs3(int.MaxValue, int.MaxValue));
- AssertGasConsumed(1048440);
+ AssertGasConsumed(1048410);
Assert.AreEqual(-2147483646, Contract.TestArgs3(int.MinValue, int.MaxValue));
- AssertGasConsumed(1047750);
+ AssertGasConsumed(1047720);
}
[TestMethod]
public void Test_testArgs4()
{
Assert.AreEqual(5, Contract.TestArgs4(1, 2));
- AssertGasConsumed(1048350);
+ AssertGasConsumed(1048320);
Assert.AreEqual(3, Contract.TestArgs4(BigInteger.One, BigInteger.Zero));
- AssertGasConsumed(1048350);
+ AssertGasConsumed(1048320);
Assert.AreEqual(0, Contract.TestArgs4(BigInteger.MinusOne, BigInteger.MinusOne));
- AssertGasConsumed(1048350);
+ AssertGasConsumed(1048320);
Assert.AreEqual(0, Contract.TestArgs4(int.MaxValue, int.MaxValue));
- AssertGasConsumed(1049040);
+ AssertGasConsumed(1049010);
Assert.AreEqual(1, Contract.TestArgs4(int.MinValue, int.MaxValue));
- AssertGasConsumed(1048350);
+ AssertGasConsumed(1048320);
}
[TestMethod]
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_ContractCall.cs b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_ContractCall.cs
index 661b050e6..03194bb32 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_ContractCall.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_ContractCall.cs
@@ -22,7 +22,7 @@ public void Init()
{
Alice.Account = UInt160.Parse("0102030405060708090A0102030405060708090A");
var c1 = Engine.Deploy(Contract1.Nef, Contract1.Manifest);
- Assert.AreEqual("0x0e26a6a9b6f37a54d5666aaa2efb71dc75abfdfa", c1.Hash.ToString());
+ Assert.AreEqual("0xb6ae1662a8228ed73e372b0d0ea11716445a4281", c1.Hash.ToString());
}
[TestMethod]
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Contract_ComplexAssign.cs b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Contract_ComplexAssign.cs
index e2262b2da..285f28d1c 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Contract_ComplexAssign.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Contract_ComplexAssign.cs
@@ -23,14 +23,14 @@ public class UnitTest_CompoundAssignments : DebugAndTestBase(Contract.UnitTest_Add_Assign_Checked);
- AssertGasConsumed(1002120);
+ AssertGasConsumed(1001970);
}
[TestMethod]
public void Test_AddAssign_UnChecked()
{
var values = Contract.UnitTest_Add_Assign_UnChecked()!;
- AssertGasConsumed(1050060);
+ AssertGasConsumed(1049760);
// Asserting the expected values after overflow
Assert.AreEqual(BigInteger.Zero, values[0]); // uint.MaxValue + 1 overflows to 0
Assert.AreEqual(new BigInteger(unchecked(int.MaxValue + 1)), values[1]); // int.MaxValue + 1 overflows to int.MinValue
@@ -40,14 +40,14 @@ public void Test_AddAssign_UnChecked()
public void Test_SubAssign_Checked()
{
Assert.ThrowsException(Contract.UnitTest_Sub_Assign_Checked);
- AssertGasConsumed(1001970);
+ AssertGasConsumed(1001820);
}
[TestMethod]
public void Test_SubAssign_UnChecked()
{
var values = Contract.UnitTest_Sub_Assign_UnChecked()!;
- AssertGasConsumed(1049610);
+ AssertGasConsumed(1049310);
// Asserting the expected values after underflow
Assert.AreEqual(new BigInteger(uint.MaxValue), values[0]); // uint.MinValue - 1 underflows to uint.MaxValue
Assert.AreEqual(new BigInteger(unchecked(int.MinValue - 1)), values[1]); // int.MinValue - 1 underflows to int.MaxValue
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_IndexOrRange.cs b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_IndexOrRange.cs
index 7bec958d8..9c98614ad 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_IndexOrRange.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_IndexOrRange.cs
@@ -24,7 +24,7 @@ public void Test_Main()
var logs = new Queue();
Contract.OnRuntimeLog += (sender, log) => logs.Enqueue(log);
Contract.TestMain();
- AssertGasConsumed(34062420);
+ AssertGasConsumed(34062300);
// Check logs
Assert.AreEqual(18, logs.Count);
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Inline.cs b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Inline.cs
index 9734ba3d6..c739fc293 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Inline.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Inline.cs
@@ -26,7 +26,7 @@ public void Test_Inline()
Assert.AreEqual(new BigInteger(3), Contract.TestInline("inline_with_one_parameters"));
AssertGasConsumed(1049970);
Assert.AreEqual(new BigInteger(5), Contract.TestInline("inline_with_multi_parameters"));
- AssertGasConsumed(1051860);
+ AssertGasConsumed(1051830);
}
[TestMethod]
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Lambda.cs b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Lambda.cs
index 45050d47b..0e06e5f50 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Lambda.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Lambda.cs
@@ -153,15 +153,15 @@ public void Test_InvokeSum2()
public void Test_Fibo()
{
var result = Contract.Fibo(2);
- AssertGasConsumed(1103010);
+ AssertGasConsumed(1102830);
Assert.AreEqual(1, result);
result = Contract.Fibo(3);
- AssertGasConsumed(1140330);
+ AssertGasConsumed(1139970);
Assert.AreEqual(2, result);
result = Contract.Fibo(4);
- AssertGasConsumed(1214970);
+ AssertGasConsumed(1214250);
Assert.AreEqual(3, result);
}
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_MemberAccess.cs b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_MemberAccess.cs
index 75d82e3cc..1bc475a44 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_MemberAccess.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_MemberAccess.cs
@@ -38,14 +38,14 @@ public void Test_Main()
public void Test_ComplexAssignment()
{
Contract.TestComplexAssignment();
- AssertGasConsumed(2964570);
+ AssertGasConsumed(2964420);
}
[TestMethod]
public void Test_StaticComplexAssignment()
{
Contract.TestStaticComplexAssignment();
- AssertGasConsumed(1237410);
+ AssertGasConsumed(1237260);
}
}
}
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Record.cs b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Record.cs
index 42305e498..c7f0daa4a 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Record.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Record.cs
@@ -50,7 +50,7 @@ public void Test_UpdateRecord()
var name = "klsas";
var age = 24;
var result = Contract.Test_UpdateRecord(name, age)! as Struct;
- AssertGasConsumed(2005050);
+ AssertGasConsumed(2004900);
Assert.AreEqual(2, result!.Count);
Assert.AreEqual(name, result[0].GetString());
Assert.AreEqual(age, result[1].GetInteger());
@@ -62,7 +62,7 @@ public void Test_UpdateRecord2()
var name = "klsas";
var age = 2;
var result = Contract.Test_UpdateRecord2(name, age)!;
- AssertGasConsumed(2575800);
+ AssertGasConsumed(2575650);
var arr = result as Struct;
Assert.AreEqual(2, arr!.Count);
Assert.AreEqual("0" + name, arr[0].GetString());
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Recursion.cs b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Recursion.cs
index 6807b592a..cece1b2e6 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Recursion.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_Recursion.cs
@@ -73,15 +73,15 @@ public void Test_HanoiTower()
public void Test_MutualRecursion()
{
Assert.IsTrue(Contract.Odd(7));
- AssertGasConsumed(1181880);
+ AssertGasConsumed(1180830);
Assert.IsFalse(Contract.Even(9));
- AssertGasConsumed(1220100);
+ AssertGasConsumed(1218750);
Assert.IsTrue(Contract.Odd(-11));
- AssertGasConsumed(1258980);
+ AssertGasConsumed(1257330);
Assert.IsTrue(Contract.Even(-10));
- AssertGasConsumed(1239810);
+ AssertGasConsumed(1238310);
Assert.IsFalse(Contract.Even(-9));
- AssertGasConsumed(1220640);
+ AssertGasConsumed(1219290);
}
}
}
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_StaticClass.cs b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_StaticClass.cs
index ff455477d..1156f784c 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_StaticClass.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_StaticClass.cs
@@ -21,7 +21,7 @@ public class UnitTest_StaticClass : DebugAndTestBase
public void Test_StaticClass()
{
Assert.AreEqual(2, Contract.TestStaticClass());
- AssertGasConsumed(1021110);
+ AssertGasConsumed(1020960);
}
}
}
diff --git a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_StaticConstruct.cs b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_StaticConstruct.cs
index 92aafded5..fa050a3dc 100644
--- a/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_StaticConstruct.cs
+++ b/tests/Neo.Compiler.CSharp.UnitTests/UnitTest_StaticConstruct.cs
@@ -21,7 +21,7 @@ public class UnitTest_StaticConstruct : DebugAndTestBase