Disable JIT_TailCall invocation on Unix
authorJan Vorlicek <janvorli@microsoft.com>
Tue, 14 Apr 2015 11:32:51 +0000 (13:32 +0200)
committerJan Vorlicek <janvorli@microsoft.com>
Tue, 14 Apr 2015 15:28:10 +0000 (17:28 +0200)
commit0d796e67df3771590b510d87b9799d8d9d280943
tree322f828f5ff43b32a9f37c9e900cdee64ea72267
parent1426853c339e0c101e9301bf442c94e2afb7555f
Disable JIT_TailCall invocation on Unix

This change prevents jitter from performing tail calls in case the tail call
would require a tailcall helper.
The reason is that we don't have the JIT_TailCall function implemented for Unix
and even if we did, the underlying function to copy the arguments, the
StubLinkerCPU::CreateTailCallCopyArgsThunk, would be difficult to port to Unix due
to the fact that it assumes that va_list is represented as the parameters
being placed in memory one after another while on Unix, it is an opaque structure.
Jan Kotas has recommended to disable this kind of tail calls on Unix and
create a work item to refactor the way these tail calls are implemented.
Besides these Unix specific issues, the current implementation has performance
and maintainability issues, according to Jan Kotas.
src/jit/morph.cpp