Hello, I'm triying to insert a helper call into the code that the compileCEE_CALLVIRT method placed the fjit.cpp file generates. I've tested the profiler (wich had a helper call similar to the one I'm triying to do), but the parameters passed to that helper are not useful for me and I wasn't able to mimic the structure to suit my own needs.
What I am trying to do is to make a helper call wich receives the object and the MethodDesc as a parameter to make some calculations, and I certainly did that, but I wasn't able to make it work everytime. Here is a brief description of my code: FJitResult compileCEE_CALLVIRT() { ... ...//Body of the method ... argBytes = buildCall (...); (1) //My code was inserted here if (...) (2) { void *func = jitInfo->getHelperFtn (...);(3) emit_DUP_I4(); emit_LDFLD_helper(func, targetMethod);(4) } } (1) I inserted my call here because as far as I know, after buildCall the stack will be ordered as I need (this pointer on top). (2) I did not perform this call for some types of methods and classes (constructors, static methods, value classes, ...). (3) I declared a helper like this: HCIMPL2(void, func, Object *obj, MethodDesc *m) (4) It migth be strange that I use this macro here, but I think it exactly does the operations that I need to perform the call. As I said, the results that I'm obtaining are not completely correct. After several correct calls, with the parameters passed as intended (non corrupted data), I obtain a call to the same method several times until a "Fatal Stack overflow error" is shown. Additionaly, the same code seems to work flawlessly in the compileCEE_CALL method. I've also modified the compileCEE_LDFLD method in a similar fashion apparently without problems. I think that in this case I'm doing something wrong with the stack, but I wasn't able to find what. Can anybody tell me what I'm doing wrong? Thank you in advance, Jose M. Redondo =================================== This list is hosted by DevelopMentorŪ http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com