You need to call emit_pushresult_Ptr after the first helper call to get the return value pushed onto the stack:
<emit the first helper call with a "normal" emit macro, without problem> emit_pushresult_Ptr(); enregisterTOS; mov_register_indirect_to(ARG_1, TOS_REG_1); callInfo.reset(); emit_callhelper_D(func); -Jan -----Original Message----- From: Discussion of the Rotor Shared Source CLI implementation [mailto:[EMAIL PROTECTED] On Behalf Of J. Redondo Sent: Monday, March 21, 2005 1:43 AM To: DOTNET-ROTOR@DISCUSS.DEVELOP.COM Subject: [DOTNET-ROTOR] Using helper return into native code Hello, In my quest to explore and study the FJit a bit more, I'm having trouble accessing to certain data that I need to fully implement my own Rotor project. The problem is that, once I managed to insert calls to jit interface helpers in the places I wanted, thanks to your valuable help, there is a special case in which I'm not having too much success. The problem is that when a helper call is performed, I need its return value to pass it as a parameter to another helper call which follows the first (performed with another emit_callhelper_X macro or similar). The first helper returns an int value and the second helper only admits an int parameter, although I pretend to add some extra parameters once I solve this issue. So, the steps I follow are: <emit the first helper call with a "normal" emit macro, without problem> enregisterTOS; mov_register_indirect_to(ARG_1, TOS_REG_1); callInfo.reset(); emit_callhelper_D(func); As far as I know, when a function returns, it's return value is placed in the stack, so I basically try to place the top of the stack into a register (enregisterTOS place the value into the TOS_REG_1 register), move the value to be the first argument of my second call, and perform the call. However, an error related to the method table of the current object is shown, because I think that the value I move is the pointer to the 'this' object. If that it's true, that means that the return value of the first helper is not in the top of the stack, but then I'm completely clueless about where is it placed. ¿Anybody can give me a clue about this problem? Thank you very much in advance, J. Redondo =================================== This list is hosted by DevelopMentor® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com =================================== This list is hosted by DevelopMentor® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com