From 1e46dcfba99bc17a58729439dd3fba44b47d4b9c Mon Sep 17 00:00:00 2001 From: Hecate2 <2474101468@qq.com> Date: Fri, 24 Jan 2025 16:35:10 +0800 Subject: [PATCH] use INC DEC (#1286) --- .../Optimizer/Strategies/Optimizer.cs | 1 + .../Optimizer/Strategies/Peephole.cs | 118 ++++++++++++++++++ .../Contract_ContractCall.cs | 2 +- .../TestingArtifacts/Contract1.cs | 14 +-- .../Contract_ComplexAssign.cs | 36 +++--- .../TestingArtifacts/Contract_Continue.cs | 39 +++--- .../TestingArtifacts/Contract_ContractCall.cs | 4 +- .../TestingArtifacts/Contract_IndexOrRange.cs | 20 +-- .../TestingArtifacts/Contract_Inline.cs | 15 ++- .../TestingArtifacts/Contract_Lambda.cs | 20 +-- .../TestingArtifacts/Contract_MemberAccess.cs | 15 ++- .../TestingArtifacts/Contract_Record.cs | 22 ++-- .../TestingArtifacts/Contract_Recursion.cs | 51 ++++---- .../TestingArtifacts/Contract_StaticClass.cs | 8 +- .../Contract_StaticConstruct.cs | 2 +- .../TestingArtifacts/Contract_Switch.cs | 8 +- .../TestingArtifacts/Contract_TryCatch.cs | 8 +- .../TestingArtifacts/Contract_WriteInTry.cs | 35 +++--- .../UnitTest_Contract1.cs | 20 +-- .../UnitTest_ContractCall.cs | 2 +- .../UnitTest_Contract_ComplexAssign.cs | 8 +- .../UnitTest_IndexOrRange.cs | 2 +- .../UnitTest_Inline.cs | 2 +- .../UnitTest_Lambda.cs | 6 +- .../UnitTest_MemberAccess.cs | 4 +- .../UnitTest_Record.cs | 4 +- .../UnitTest_Recursion.cs | 10 +- .../UnitTest_StaticClass.cs | 2 +- .../UnitTest_StaticConstruct.cs | 2 +- .../UnitTest_Switch.cs | 2 +- .../UnitTest_TryCatch.cs | 4 +- 31 files changed, 291 insertions(+), 195 deletions(-) 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