What do you mean stabilizing the stack? On 7 juil, 14:37, Alex <[email protected]> wrote: > Hi, > > >Well, I tried that method but I get way too many return operations in > > some situations like when a switch operation occurs in the method. > Moreover, if I fear that simply injecting my code before the > OpCodes.Ret instruction wouldn't work neither in some cases like when > a value is returned by the method. > > I don't think that's a problem as long as you correctly stabilize the stack. > > Regards, > Alex > > On Thu, Jul 7, 2011 at 2:30 PM, Indiefreaks.com > > > > <[email protected]> wrote: > > Well, I tried that method but I get way too many return operations in > > some situations like when a switch operation occurs in the method. > > Moreover, if I fear that simply injecting my code before the > > OpCodes.Ret instruction wouldn't work neither in some cases like when > > a value is returned by the method. > > > I may also go down the route of cloning the current method and adding > > it (with a different name) to the current class and then clear the > > current method instructions and surround a call to the cached method > > by my profiling code making sure that I catch the returned value if > > different from "System.Void" to return it back once the original > > method ends... > > > On 7 juil, 13:44, Alex <[email protected]> wrote: > >> Hi, > > >> I think what you propose is the best way to achieve this. I'm not sure > >> if 'ret' is the only opcode that can leave a method normally, though. > > >> Regards, > >> Alex > > >> On Thu, Jul 7, 2011 at 11:47 AM, Indiefreaks.com > > >> <[email protected]> wrote: > >> > Hi, > > >> > In my current Xna game profiler tool (learn more > >> > athttp://indiefreaks.com), > >> > I'm wrapping each method that should be profiled with my profiling > >> > code. > > >> > Right now, in order to do so, I'm getting the first instruction from > >> > the MethodDefinition Body as well as the last one and inject my code > >> > before them. > > >> > It works perfectly fine on most cases except when a control flow > >> > operation code is set in the body. > > >> > My profiling code that is injected before the actual method is invoked > >> > works fine but because of the previous statement, the code I inject at > >> > what I would consider the end of the method never gets called or gets > >> > called inside an if or switch statement which crashes the resulting > >> > assembly. > > >> > From what I understand, if I have such control flow operations, the > >> > last instruction in a method body may not be the end of the current > >> > Method. > > >> > I'm now considering parsing the whole method instructions and look for > >> > each OpCodes.Ret instance to add my custom code there but I wondered > >> > if there was a better solution to find the end of a method or hook to > >> > it. > > >> > Thanks > > >> > -- > >> > -- > >> > mono-cecil- Masquer le texte des messages précédents - > > >> - Afficher le texte des messages précédents - > > > -- > > -- > > mono-cecil- Masquer le texte des messages précédents - > > - Afficher le texte des messages précédents -
-- -- mono-cecil
