Anton Korobeynikov
2008-Feb-19 01:43 UTC
[LLVMdev] LLVM2.2 x64 JIT trouble on VStudio build
Hello, Chuck> Would my life be made fantastically simpler if I were using a different > calling convention for my callback functions on x64 running on Windows?Yes, surely. You can still use 'normal' x86-64 CC if you don't want to call any external functions from code being JITed. Also note a Win64 fixme in the X86CompilationCallback2 function, this can be your case. I think the code there should be carefully inspected to be compatible with windows64. Anyway, win64 version of compilation callback function should be added, otherwise you'll quickly result to messed stack, invalid incoming args, etc (this can be exactly your case now, btw). Also, I think that you should carefully inspect, what to save there, because you will 'mix' two CCs: JITer itself will be compiled with win64 CC and function JITed with normal x86-64 CC and they shouldn't trash the states of each other during crossing of 'CC border'. -- WBR, Anton Korobeynikov
I think a Win64 version of X86CompilationCallback{2} is still needed. Also, it's not clear to me how to force a non-Windows CC. It may require some FE extension to support it? Evan On Feb 18, 2008, at 5:43 PM, Anton Korobeynikov wrote:> > Hello, Chuck > >> Would my life be made fantastically simpler if I were using a >> different >> calling convention for my callback functions on x64 running on >> Windows? > Yes, surely. You can still use 'normal' x86-64 CC if you don't want to > call any external functions from code being JITed. Also note a Win64 > fixme in the X86CompilationCallback2 function, this can be your > case. I > think the code there should be carefully inspected to be compatible > with > windows64. > > Anyway, win64 version of compilation callback function should be > added, > otherwise you'll quickly result to messed stack, invalid incoming > args, > etc (this can be exactly your case now, btw). > > Also, I think that you should carefully inspect, what to save there, > because you will 'mix' two CCs: JITer itself will be compiled with > win64 > CC and function JITed with normal x86-64 CC and they shouldn't trash > the > states of each other during crossing of 'CC border'. > > -- > WBR, Anton Korobeynikov