From 83e2fee71be695b78438e0c9dc50b649a539d0e3 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Fri, 2 Feb 2018 12:49:40 +0000 Subject: add experimental script engine XMRengine donated by mrieker (DreamNation) And our Melanie. ***DANGER*** ***TESTONLY*** ***disable HG*** dont leave running when not looking... tp/crossing to Xengine will reset scripts. i do see a few issues but should be testable, so we can decide if we should invest more on it. --- .../ScriptEngine/XMREngine/MMRScriptMyILGen.cs | 81 ++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 OpenSim/Region/ScriptEngine/XMREngine/MMRScriptMyILGen.cs (limited to 'OpenSim/Region/ScriptEngine/XMREngine/MMRScriptMyILGen.cs') diff --git a/OpenSim/Region/ScriptEngine/XMREngine/MMRScriptMyILGen.cs b/OpenSim/Region/ScriptEngine/XMREngine/MMRScriptMyILGen.cs new file mode 100644 index 0000000..ecc217e --- /dev/null +++ b/OpenSim/Region/ScriptEngine/XMREngine/MMRScriptMyILGen.cs @@ -0,0 +1,81 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Reflection; +using System.Reflection.Emit; + +namespace OpenSim.Region.ScriptEngine.XMREngine +{ + public interface ScriptMyILGen + { + string methName { get; } + ScriptMyLocal DeclareLocal (Type type, string name); + ScriptMyLabel DefineLabel (string name); + void BeginExceptionBlock (); + void BeginCatchBlock (Type excType); + void BeginFinallyBlock (); + void EndExceptionBlock (); + void Emit (Token errorAt, OpCode opcode); + void Emit (Token errorAt, OpCode opcode, FieldInfo field); + void Emit (Token errorAt, OpCode opcode, ScriptMyLocal myLocal); + void Emit (Token errorAt, OpCode opcode, Type type); + void Emit (Token errorAt, OpCode opcode, ScriptMyLabel myLabel); + void Emit (Token errorAt, OpCode opcode, ScriptMyLabel[] myLabels); + void Emit (Token errorAt, OpCode opcode, ScriptObjWriter method); + void Emit (Token errorAt, OpCode opcode, MethodInfo method); + void Emit (Token errorAt, OpCode opcode, ConstructorInfo ctor); + void Emit (Token errorAt, OpCode opcode, double value); + void Emit (Token errorAt, OpCode opcode, float value); + void Emit (Token errorAt, OpCode opcode, int value); + void Emit (Token errorAt, OpCode opcode, string value); + void MarkLabel (ScriptMyLabel myLabel); + } + + /** + * @brief One of these per label defined in the function. + */ + public class ScriptMyLabel { + public string name; + public int number; + + public GraphNodeMarkLabel whereAmI; + public Type[] stackDepth; + public bool[] stackBoxeds; + } + + /** + * @brief One of these per local variable defined in the function. + */ + public class ScriptMyLocal { + public string name; + public Type type; + public int number; + + public bool isReferenced; + } +} -- cgit v1.1