remember heap used by locals

This commit is contained in:
UbitUmarov
2025-08-02 17:28:35 +01:00
parent 484ecad89e
commit d504d1f679
3 changed files with 24 additions and 2 deletions

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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"));