From 2369ce413d7d6e2b5b368ef11239263eec5eac74 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Fri, 9 Mar 2018 22:44:58 +0000 Subject: [PATCH] Yengine: only retry compile if there was a object file in cache with wrong version or signature --- OpenSim/Region/ScriptEngine/YEngine/MMRScriptCodeGen.cs | 8 +------- OpenSim/Region/ScriptEngine/YEngine/MMRScriptCompile.cs | 8 +------- OpenSim/Region/ScriptEngine/YEngine/MMRScriptObjCode.cs | 6 +++--- OpenSim/Region/ScriptEngine/YEngine/XMREngine.cs | 2 +- 4 files changed, 6 insertions(+), 18 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/YEngine/MMRScriptCodeGen.cs b/OpenSim/Region/ScriptEngine/YEngine/MMRScriptCodeGen.cs index 8bcb995971..5f00f867c8 100644 --- a/OpenSim/Region/ScriptEngine/YEngine/MMRScriptCodeGen.cs +++ b/OpenSim/Region/ScriptEngine/YEngine/MMRScriptCodeGen.cs @@ -6540,14 +6540,8 @@ namespace OpenSim.Region.ScriptEngine.Yengine public class CVVMismatchException: Exception { - public int oldcvv; - public int newcvv; - - public CVVMismatchException(int oldcvv, int newcvv) : base("object version is " + oldcvv.ToString() + - " but accept only " + newcvv.ToString()) + public CVVMismatchException(string msg) : base(msg) { - this.oldcvv = oldcvv; - this.newcvv = newcvv; } } } diff --git a/OpenSim/Region/ScriptEngine/YEngine/MMRScriptCompile.cs b/OpenSim/Region/ScriptEngine/YEngine/MMRScriptCompile.cs index bb5fdf7246..f37efd48d1 100644 --- a/OpenSim/Region/ScriptEngine/YEngine/MMRScriptCompile.cs +++ b/OpenSim/Region/ScriptEngine/YEngine/MMRScriptCompile.cs @@ -124,13 +124,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine finally { // In case something went wrong writing temp file, delete it. - try - { - File.Delete (tmpFileName); - } - catch - { - } + File.Delete (tmpFileName); } // Since we just wrote the .xmrobj file, maybe save disassembly. diff --git a/OpenSim/Region/ScriptEngine/YEngine/MMRScriptObjCode.cs b/OpenSim/Region/ScriptEngine/YEngine/MMRScriptObjCode.cs index ba72e39397..bbdec99e18 100644 --- a/OpenSim/Region/ScriptEngine/YEngine/MMRScriptObjCode.cs +++ b/OpenSim/Region/ScriptEngine/YEngine/MMRScriptObjCode.cs @@ -90,12 +90,12 @@ namespace OpenSim.Region.ScriptEngine.Yengine // Check version number to make sure we know how to process file contents. char[] ocm = objFileReader.ReadChars(ScriptCodeGen.OBJECT_CODE_MAGIC.Length); if(new String(ocm) != ScriptCodeGen.OBJECT_CODE_MAGIC) - throw new Exception("not an Yengine object file (bad magic)"); + throw new CVVMismatchException("Not an Yengine object file (bad magic)"); int cvv = objFileReader.ReadInt32(); if(cvv != ScriptCodeGen.COMPILED_VERSION_VALUE) - throw new CVVMismatchException(cvv, ScriptCodeGen.COMPILED_VERSION_VALUE); - + throw new CVVMismatchException( + "Object version is " + cvv.ToString() + " but accept only " + ScriptCodeGen.COMPILED_VERSION_VALUE.ToString()); // Fill in simple parts of scriptObjCode object. sourceHash = objFileReader.ReadString(); glblSizes.ReadFromFile(objFileReader); diff --git a/OpenSim/Region/ScriptEngine/YEngine/XMREngine.cs b/OpenSim/Region/ScriptEngine/YEngine/XMREngine.cs index 464fce329d..45e44691c2 100644 --- a/OpenSim/Region/ScriptEngine/YEngine/XMREngine.cs +++ b/OpenSim/Region/ScriptEngine/YEngine/XMREngine.cs @@ -1283,7 +1283,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine { initerr = e1; } - if((initerr != null) && !instance.m_ForceRecomp) + if(initerr != null && !instance.m_ForceRecomp && initerr is CVVMismatchException) { UUID itemID = instance.m_ItemID; Verbose("[YEngine]: {0}/{2} first load failed ({1}), retrying after recompile",