Ok, since I'm not getting answers, I believe this is a really
localized problem to my own R&D.

Just a simple question: what the MethodDefinition.NoInlining and
MethodDefinition.NoOptimization properties do when saving the
Assembly?

Thanks

On Jul 12, 3:56 pm, "Indiefreaks.com" <[email protected]>
wrote:
> I have been trying to find out why my injected code doesn't run in
> vain. I wanted to share some IL code resulting from my game profiler
> to see if anyone could help identify the issue.
>
> As a reminder, CommanderApplication inherits from Application which
> holds an instance of a GameState class.
> The following methods get called
> CommanderApplication.Update()
> {_profilerAttributeXXX.StartProfilingMethod()},
> Application.Update(){_profilerAttributeXXX.StartProfilingMethod()},
> Application.Update(){_profilerAttributeXXX.EndProfilingMethod()},
> CommanderApplication.Draw()
> {_profilerAttributeXXX.StartProfilingMethod()},
> Application.Draw(){_profilerAttributeXXX.StartProfilingMethod()}
> Application.Draw(){_profilerAttributeXXX.EndProfilingMethod()}
>
> but these don't:
> CommanderApplication.Update()
> {_profilerAttributeXXX.EndProfilingMethod()},
> CommanderApplication.Draw()
> {_profilerAttributeXXX.EndProfilingMethod()},
>
> CommanderApplication Update:
> C#
> protected override void Update(GameTime gameTime)
> {
>     __profilerAttribute131.ProfilingMethodStart(this, (MethodInfo)
> MethodBase.GetCurrentMethod());
>     base.Update(gameTime);
>     __profilerAttribute131.ProfilingMethodEnd();
>
> }
>
> IL
> .method family hidebysig virtual instance void Update(class
> [Microsoft.Xna.Framework.Game]Microsoft.Xna.Framework.GameTime
> gameTime) cil managed
> {
>     .maxstack 8
>     L_0000: ldsfld class
> [Indiefreaks.AOP.Profiler]Indiefreaks.AOP.Profiler.ProfilerAttribute
> Indiefreaks.Commander.CommanderApplication::__profilerAttribute131
>     L_0005: ldarg.0
>     L_0006: call class [mscorlib]System.Reflection.MethodBase
> [mscorlib]System.Reflection.MethodBase::GetCurrentMethod()
>     L_000b: castclass [mscorlib]System.Reflection.MethodInfo
>     L_0010: callvirt instance void
> [Indiefreaks.AOP.Profiler]Indiefreaks.AOP.Profiler.ProfilerAttribute::Profi­lingMethodStart(object,
> class [mscorlib]System.Reflection.MethodInfo)
>     L_0015: ldarg.0
>     L_0016: ldarg.1
>     L_0017: call instance void
> [Indiefreaks.Game.Framework]Indiefreaks.Xna.Core.Application::Update(class
> [Microsoft.Xna.Framework.Game]Microsoft.Xna.Framework.GameTime)
>     L_001c: ldsfld class
> [Indiefreaks.AOP.Profiler]Indiefreaks.AOP.Profiler.ProfilerAttribute
> Indiefreaks.Commander.CommanderApplication::__profilerAttribute131
>     L_0021: call instance void
> [Indiefreaks.AOP.Profiler]Indiefreaks.AOP.Profiler.ProfilerAttribute::Profi­lingMethodEnd()
>     L_0026: ret
>
> }
>
> CommanderApplication Draw:
> C#
> protected override void Draw(GameTime gameTime)
> {
>     __profilerAttribute132.ProfilingMethodStart(this, (MethodInfo)
> MethodBase.GetCurrentMethod());
>     base.Draw(gameTime);
>     __profilerAttribute132.ProfilingMethodEnd();
>     ProfilingManager.Update();
>
> }
>
> IL
> .method family hidebysig virtual instance void Draw(class
> [Microsoft.Xna.Framework.Game]Microsoft.Xna.Framework.GameTime
> gameTime) cil managed
> {
>     .maxstack 8
>     L_0000: ldsfld class
> [Indiefreaks.AOP.Profiler]Indiefreaks.AOP.Profiler.ProfilerAttribute
> Indiefreaks.Commander.CommanderApplication::__profilerAttribute132
>     L_0005: ldarg.0
>     L_0006: call class [mscorlib]System.Reflection.MethodBase
> [mscorlib]System.Reflection.MethodBase::GetCurrentMethod()
>     L_000b: castclass [mscorlib]System.Reflection.MethodInfo
>     L_0010: callvirt instance void
> [Indiefreaks.AOP.Profiler]Indiefreaks.AOP.Profiler.ProfilerAttribute::Profi­lingMethodStart(object,
> class [mscorlib]System.Reflection.MethodInfo)
>     L_0015: ldarg.0
>     L_0016: ldarg.1
>     L_0017: call instance void
> [Indiefreaks.Game.Framework]Indiefreaks.Xna.Core.Application::Draw(class
> [Microsoft.Xna.Framework.Game]Microsoft.Xna.Framework.GameTime)
>     L_001c: ldsfld class
> [Indiefreaks.AOP.Profiler]Indiefreaks.AOP.Profiler.ProfilerAttribute
> Indiefreaks.Commander.CommanderApplication::__profilerAttribute132
>     L_0021: call instance void
> [Indiefreaks.AOP.Profiler]Indiefreaks.AOP.Profiler.ProfilerAttribute::Profi­lingMethodEnd()
>     L_0026: call void
> [Indiefreaks.AOP.Profiler]Indiefreaks.AOP.Profiler.ProfilingManager::Update­()
>     L_002b: ret
>
> }
>
> Application Update:
> C#
> protected override void Update(GameTime gameTime)
> {
>     __profilerAttribute463.ProfilingMethodStart(this, (MethodInfo)
> MethodBase.GetCurrentMethod());
>     if ((SunBurn.Editor != null) && SunBurn.Editor.EditorAttached)
>     {
>         Input.Enabled = false;
>     }
>     else
>     {
>         Input.Enabled = true;
>     }
>     base.Update(gameTime);
>     this.Threads.Update();
>     Interpolator.Update((float)
> gameTime.ElapsedGameTime.TotalSeconds);
>     Timer.Update((float) gameTime.ElapsedGameTime.TotalSeconds);
>     if (((this.ActiveGameState != null) &&
> this.ActiveGameState.IsLoadingComplete) && ((this._loadingGameState ==
> null) || this._loadingGameState.ShouldRenderLoadedGameState))
>     {
>         ((IUpdate) this.ActiveGameState).Update(gameTime);
>     }
>     if (((this._loadingGameState != null) &&
> this._loadingGameState.IsLoadingComplete) && !
> this._loadingGameState.ShouldRenderLoadedGameState)
>     {
>         ((IUpdate) this._loadingGameState).Update(gameTime);
>     }
>     __profilerAttribute463.ProfilingMethodEnd();
>
> }
>
> IL
> .method family hidebysig virtual instance void Update(class
> [Microsoft.Xna.Framework.Game]Microsoft.Xna.Framework.GameTime
> gameTime) cil managed
> {
>     .maxstack 3
>     .locals init (
>         [0] valuetype [mscorlib]System.TimeSpan CS$0$0000,
>         [1] valuetype [mscorlib]System.TimeSpan CS$0$0001)
>     L_0000: ldsfld class
> [Indiefreaks.AOP.Profiler]Indiefreaks.AOP.Profiler.ProfilerAttribute
> Indiefreaks.Xna.Core.Application::__profilerAttribute463
>     L_0005: ldarg.0
>     L_0006: call class [mscorlib]System.Reflection.MethodBase
> [mscorlib]System.Reflection.MethodBase::GetCurrentMethod()
>     L_000b: castclass [mscorlib]System.Reflection.MethodInfo
>     L_0010: callvirt instance void
> [Indiefreaks.AOP.Profiler]Indiefreaks.AOP.Profiler.ProfilerAttribute::Profi­lingMethodStart(object,
> class [mscorlib]System.Reflection.MethodInfo)
>     L_0015: call class [SynapseGaming-SunBurn-
> Pro]SynapseGaming.LightingSystem.Core.SceneInterface
> Indiefreaks.Xna.Core.Application::get_SunBurn()
>     L_001a: callvirt instance class [SynapseGaming-SunBurn-
> Pro]SynapseGaming.LightingSystem.Editor.LightingSystemEditor
> [SynapseGaming-SunBurn-
> Pro]SynapseGaming.LightingSystem.Core.SceneInterface::get_Editor()
>     L_001f: brfalse.s L_003f
>     L_0021: call class [SynapseGaming-SunBurn-
> Pro]SynapseGaming.LightingSystem.Core.SceneInterface
> Indiefreaks.Xna.Core.Application::get_SunBurn()
>     L_0026: callvirt instance class [SynapseGaming-SunBurn-
> Pro]SynapseGaming.LightingSystem.Editor.LightingSystemEditor
> [SynapseGaming-SunBurn-
> Pro]SynapseGaming.LightingSystem.Core.SceneInterface::get_Editor()
>     L_002b: callvirt instance bool [SynapseGaming-SunBurn-
> Pro]SynapseGaming.LightingSystem.Editor.LightingSystemEditor::get_EditorAtt­ached()
>     L_0030: brfalse.s L_003f
>     L_0032: call class Indiefreaks.Xna.Input.InputManager
> Indiefreaks.Xna.Core.Application::get_Input()
>     L_0037: ldc.i4.0
>     L_0038: callvirt instance void
> [Microsoft.Xna.Framework.Game]Microsoft.Xna.Framework.GameComponent::set_En­abled(bool)
>     L_003d: br.s L_004a
>     L_003f: call class Indiefreaks.Xna.Input.InputManager
> Indiefreaks.Xna.Core.Application::get_Input()
>     L_0044: ldc.i4.1
>     L_0045: callvirt instance void
> [Microsoft.Xna.Framework.Game]Microsoft.Xna.Framework.GameComponent::set_En­abled(bool)
>     L_004a: ldarg.0
>     L_004b: ldarg.1
>     L_004c: call instance void
> [Microsoft.Xna.Framework.Game]Microsoft.Xna.Framework.Game::Update(class
> [Microsoft.Xna.Framework.Game]Microsoft.Xna.Framework.GameTime)
>     L_0051: ldarg.0
>     L_0052: call instance class Indiefreaks.Xna.Threading.ThreadPool
> Indiefreaks.Xna.Core.Application::get_Threads()
>     L_0057: callvirt instance void
> Indiefreaks.Xna.Threading.ThreadPool::Update()
>     L_005c: ldarg.1
>     L_005d: callvirt instance valuetype [mscorlib]System.TimeSpan
> [Microsoft.Xna.Framework.Game]Microsoft.Xna.Framework.GameTime::get_Elapsed­GameTime()
>     L_0062: stloc.0
>     L_0063: ldloca.s CS$0$0000
>     L_0065: call instance float64
> [mscorlib]System.TimeSpan::get_TotalSeconds()
>     L_006a: conv.r4
>     L_006b: call void
> Indiefreaks.Xna.Core.Interpolator::Update(float32)
>     L_0070: ldarg.1
>     L_0071: callvirt instance valuetype [mscorlib]System.TimeSpan
> [Microsoft.Xna.Framework.Game]Microsoft.Xna.Framework.GameTime::get_Elapsed­GameTime()
>     L_0076: stloc.1
>     L_0077: ldloca.s CS$0$0001
>     L_0079: call instance float64
> [mscorlib]System.TimeSpan::get_TotalSeconds()
>     L_007e: conv.r4
>     L_007f: call void Indiefreaks.Xna.Core.Timer::Update(float32)
>     L_0084: ldarg.0
>     L_0085: call instance class Indiefreaks.Xna.Core.GameState
> Indiefreaks.Xna.Core.Application::get_ActiveGameState()
>     L_008a: brfalse.s L_00ba
>     L_008c: ldarg.0
>     L_008d: call instance class Indiefreaks.Xna.Core.GameState
> Indiefreaks.Xna.Core.Application::get_ActiveGameState()
>     L_0092: callvirt instance bool
> Indiefreaks.Xna.Core.GameState::get_IsLoadingComplete()
>     L_0097: brfalse.s L_00ba
>     L_0099: ldarg.0
>     L_009a: ldfld class Indiefreaks.Xna.Core.LoadingGameState
> Indiefreaks.Xna.Core.Application::_loadingGameState
>     L_009f: brfalse.s L_00ae
>     L_00a1: ldarg.0
>     L_00a2: ldfld class Indiefreaks.Xna.Core.LoadingGameState
> Indiefreaks.Xna.Core.Application::_loadingGameState
>     L_00a7: callvirt instance bool
> Indiefreaks.Xna.Core.LoadingGameState::get_ShouldRenderLoadedGameState()
>     L_00ac: brfalse.s L_00ba
>     L_00ae: ldarg.0
>     L_00af: call instance class Indiefreaks.Xna.Core.GameState
> Indiefreaks.Xna.Core.Application::get_ActiveGameState()
>     L_00b4: ldarg.1
>     L_00b5: callvirt instance void
> Indiefreaks.Xna.Core.IUpdate::Update(class
> [Microsoft.Xna.Framework.Game]Microsoft.Xna.Framework.GameTime)
>     L_00ba: ldarg.0
>     L_00bb: ldfld class...
>
> read more »

-- 
--
mono-cecil

Reply via email to