diff options
author | UbitUmarov | 2018-02-05 12:48:07 +0000 |
---|---|---|
committer | UbitUmarov | 2018-02-05 12:48:07 +0000 |
commit | 38cd12b3cf00ac137fb474e76fa762f01dfe1283 (patch) | |
tree | c7414257d9eca01685d5918a7617085a9964745f /OpenSim/Region/ScriptEngine/XMREngine/MMRScriptCodeGen.cs | |
parent | fix log4net for .net4.6 (diff) | |
download | opensim-SC-38cd12b3cf00ac137fb474e76fa762f01dfe1283.zip opensim-SC-38cd12b3cf00ac137fb474e76fa762f01dfe1283.tar.gz opensim-SC-38cd12b3cf00ac137fb474e76fa762f01dfe1283.tar.bz2 opensim-SC-38cd12b3cf00ac137fb474e76fa762f01dfe1283.tar.xz |
add mrieker fresh optimization on heap tracker
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/ScriptEngine/XMREngine/MMRScriptCodeGen.cs | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/OpenSim/Region/ScriptEngine/XMREngine/MMRScriptCodeGen.cs b/OpenSim/Region/ScriptEngine/XMREngine/MMRScriptCodeGen.cs index 5219fa8..3b0ba66 100644 --- a/OpenSim/Region/ScriptEngine/XMREngine/MMRScriptCodeGen.cs +++ b/OpenSim/Region/ScriptEngine/XMREngine/MMRScriptCodeGen.cs | |||
@@ -141,9 +141,6 @@ namespace OpenSim.Region.ScriptEngine.XMREngine | |||
141 | new Type[] { typeof (LSL_Vector) }); | 141 | new Type[] { typeof (LSL_Vector) }); |
142 | private static MethodInfo scriptRestoreCatchExceptionUnwrap = GetStaticMethod (typeof (ScriptRestoreCatchException), "Unwrap", new Type[] { typeof (Exception) }); | 142 | private static MethodInfo scriptRestoreCatchExceptionUnwrap = GetStaticMethod (typeof (ScriptRestoreCatchException), "Unwrap", new Type[] { typeof (Exception) }); |
143 | private static MethodInfo thrownExceptionWrapMethodInfo = GetStaticMethod (typeof (ScriptThrownException), "Wrap", new Type[] { typeof (object) }); | 143 | private static MethodInfo thrownExceptionWrapMethodInfo = GetStaticMethod (typeof (ScriptThrownException), "Wrap", new Type[] { typeof (object) }); |
144 | private static MethodInfo heapTrackerListPush = typeof (HeapTrackerList). GetMethod ("Push", new Type[0]); | ||
145 | private static MethodInfo heapTrackerObjectPush = typeof (HeapTrackerObject).GetMethod ("Push", new Type[0]); | ||
146 | private static MethodInfo heapTrackerStringPush = typeof (HeapTrackerString).GetMethod ("Push", new Type[0]); | ||
147 | 144 | ||
148 | private static MethodInfo catchExcToStrMethodInfo = GetStaticMethod (typeof (ScriptCodeGen), | 145 | private static MethodInfo catchExcToStrMethodInfo = GetStaticMethod (typeof (ScriptCodeGen), |
149 | "CatchExcToStr", | 146 | "CatchExcToStr", |
@@ -1510,16 +1507,13 @@ namespace OpenSim.Region.ScriptEngine.XMREngine | |||
1510 | ilGen.Emit (curDeclFunc, OpCodes.Ldloc, lcl); | 1507 | ilGen.Emit (curDeclFunc, OpCodes.Ldloc, lcl); |
1511 | Type t = lcl.type; | 1508 | Type t = lcl.type; |
1512 | if (t == typeof (HeapTrackerList)) { | 1509 | if (t == typeof (HeapTrackerList)) { |
1513 | ilGen.Emit (curDeclFunc, OpCodes.Call, heapTrackerListPush); | 1510 | t = HeapTrackerList.GenPush (curDeclFunc, ilGen); |
1514 | t = typeof (LSL_List); | ||
1515 | } | 1511 | } |
1516 | if (t == typeof (HeapTrackerObject)) { | 1512 | if (t == typeof (HeapTrackerObject)) { |
1517 | ilGen.Emit (curDeclFunc, OpCodes.Call, heapTrackerObjectPush); | 1513 | t = HeapTrackerObject.GenPush (curDeclFunc, ilGen); |
1518 | t = typeof (object); | ||
1519 | } | 1514 | } |
1520 | if (t == typeof (HeapTrackerString)) { | 1515 | if (t == typeof(HeapTrackerString)) { |
1521 | ilGen.Emit (curDeclFunc, OpCodes.Call, heapTrackerStringPush); | 1516 | t = HeapTrackerString.GenPush (curDeclFunc, ilGen); |
1522 | t = typeof (string); | ||
1523 | } | 1517 | } |
1524 | if (t.IsValueType) { | 1518 | if (t.IsValueType) { |
1525 | ilGen.Emit (curDeclFunc, OpCodes.Box, t); | 1519 | ilGen.Emit (curDeclFunc, OpCodes.Box, t); |
@@ -1615,7 +1609,9 @@ namespace OpenSim.Region.ScriptEngine.XMREngine | |||
1615 | ilGen.Emit (curDeclFunc, OpCodes.Castclass, u); | 1609 | ilGen.Emit (curDeclFunc, OpCodes.Castclass, u); |
1616 | } | 1610 | } |
1617 | if (u != t) { | 1611 | if (u != t) { |
1618 | ilGen.Emit (curDeclFunc, OpCodes.Call, t.GetMethod ("Pop", new Type[] { u })); | 1612 | if (t == typeof (HeapTrackerList)) HeapTrackerList.GenPop (curDeclFunc, ilGen); |
1613 | if (t == typeof (HeapTrackerObject)) HeapTrackerObject.GenPop (curDeclFunc, ilGen); | ||
1614 | if (t == typeof (HeapTrackerString)) HeapTrackerString.GenPop (curDeclFunc, ilGen); | ||
1619 | } else { | 1615 | } else { |
1620 | ilGen.Emit (curDeclFunc, OpCodes.Stloc, lcl); | 1616 | ilGen.Emit (curDeclFunc, OpCodes.Stloc, lcl); |
1621 | } | 1617 | } |