From d504d1f6796f911c4e6e8f62742814cfe5e0ecd1 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 2 Aug 2025 17:28:35 +0100 Subject: [PATCH] remember heap used by locals --- .../ScriptEngine/YEngine/XMRHeapTracker.cs | 3 +-- .../ScriptEngine/YEngine/XMRInstCapture.cs | 16 ++++++++++++++++ .../Region/ScriptEngine/YEngine/XMRInstCtor.cs | 7 +++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/YEngine/XMRHeapTracker.cs b/OpenSim/Region/ScriptEngine/YEngine/XMRHeapTracker.cs index 5f6795040d..caa078a4d3 100644 --- a/OpenSim/Region/ScriptEngine/YEngine/XMRHeapTracker.cs +++ b/OpenSim/Region/ScriptEngine/YEngine/XMRHeapTracker.cs @@ -55,8 +55,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine public HeapTrackerBase(XMRInstAbstract inst) { - if(inst == null) - throw new ArgumentNullException("inst"); + ArgumentNullException.ThrowIfNull(inst); instance = inst; usage = 0; } diff --git a/OpenSim/Region/ScriptEngine/YEngine/XMRInstCapture.cs b/OpenSim/Region/ScriptEngine/YEngine/XMRInstCapture.cs index 67cae3d6dc..641c42a291 100644 --- a/OpenSim/Region/ScriptEngine/YEngine/XMRInstCapture.cs +++ b/OpenSim/Region/ScriptEngine/YEngine/XMRInstCapture.cs @@ -184,6 +184,22 @@ namespace OpenSim.Region.ScriptEngine.Yengine scriptStateN.AppendChild(plugins); //m_RunOnePhase = "GetExecutionState H"; + if(m_localsHeapUsed > 0) + { + XmlElement lheap = doc.CreateElement("", "LHeapUse", ""); + lheap.AppendChild(doc.CreateTextNode(m_localsHeapUsed.ToString())); + scriptStateN.AppendChild(lheap); + } + + /* + if(m_StackLeft < m_StackSize) + { + XmlElement stk = doc.CreateElement("", "stkLft", ""); + stk.AppendChild(doc.CreateTextNode(m_StackLeft.ToString())); + scriptStateN.AppendChild(stk); + } + */ + // Let script run again. suspendOnCheckRunHold = false; diff --git a/OpenSim/Region/ScriptEngine/YEngine/XMRInstCtor.cs b/OpenSim/Region/ScriptEngine/YEngine/XMRInstCtor.cs index 7608b87b26..e403db11f5 100644 --- a/OpenSim/Region/ScriptEngine/YEngine/XMRInstCtor.cs +++ b/OpenSim/Region/ScriptEngine/YEngine/XMRInstCtor.cs @@ -544,6 +544,13 @@ namespace OpenSim.Region.ScriptEngine.Yengine MigrateInEventHandler(ms); } + XmlElement localHeapN = (XmlElement)scriptStateN.SelectSingleNode("LHeapUse"); + if (localHeapN != null) + m_localsHeapUsed = int.Parse(localHeapN.InnerText); + //XmlElement stkN = (XmlElement)scriptStateN.SelectSingleNode("stkLft"); + //if (stkN != null) + // m_StackLeft = int.Parse(stkN.InnerText); + XmlElement permissionsN = (XmlElement)scriptStateN.SelectSingleNode("Permissions"); m_Item.PermsGranter = new UUID(permissionsN.GetAttribute("granter")); m_Item.PermsMask = Convert.ToInt32(permissionsN.GetAttribute("mask"));