From f2dd6c86f79d01cbb885331dcef00b794258d448 Mon Sep 17 00:00:00 2001 From: Tedd Hansen Date: Fri, 17 Aug 2007 18:39:04 +0000 Subject: Added RAIL.dll Updated DotSets.dll and Mono.PEToolkit.dll Started on microthreading - currently display exception during startup --- .../TempDotNetMicroThreadingCodeInjector.cs | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 OpenSim/Region/ScriptEngine/DotNetEngine/TempDotNetMicroThreadingCodeInjector.cs (limited to 'OpenSim/Region/ScriptEngine/DotNetEngine/TempDotNetMicroThreadingCodeInjector.cs') diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/TempDotNetMicroThreadingCodeInjector.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/TempDotNetMicroThreadingCodeInjector.cs new file mode 100644 index 0000000..dd3ce09 --- /dev/null +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/TempDotNetMicroThreadingCodeInjector.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Rail.Transformation; +using Rail.Reflect; +using Rail.Exceptions; +using Rail.MSIL; + +namespace OpenSim.Region.ScriptEngine.DotNetEngine +{ + class TempDotNetMicroThreadingCodeInjector + { + public static string TestFix(string FileName) + { + string ret = System.IO.Path.GetFileNameWithoutExtension(FileName + "_fixed.dll"); + + Console.WriteLine("Loading: \"" + FileName + "\""); + RAssemblyDef rAssembly = RAssemblyDef.LoadAssembly(FileName); + + + //Get the type of the method to copy from assembly Teste2.exe to assembly Teste.exe + RTypeDef type = (RTypeDef)rAssembly.RModuleDef.GetType("SecondLife.Script"); + + //Get the methods in the type + RMethod[] m = type.GetMethods(); + + //Create a MethodPrologueAdder visitor object with the method to add + //and with the flag that enables local variable creation set to true + MethodPrologueAdder mpa = new MethodPrologueAdder((RMethodDef)m[0], true); + + //Apply the changes to the assembly + rAssembly.Accept(mpa); + + //Save the new assembly + rAssembly.SaveAssembly(ret); + + return ret; + + } + } +} -- cgit v1.1