Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ DispatchTailCalls()

static unsafe void System.Runtime.CompilerServices.RuntimeHelpers.DispatchTailCalls ( IntPtr callersRetAddrSlot,
delegate *< IntPtr, IntPtr, PortableTailCallFrame *, void > callTarget,
IntPtr retVal )
inlinestaticprivate

Definition at line 224 of file RuntimeHelpers.cs.

225 {
228 PortableTailCallFrame* frame = tailCallInfo->Frame;
229 if (intPtr == frame->TailCallAwareReturnAddress)
230 {
231 frame->NextCall = callTarget;
232 return;
233 }
234 System.Runtime.CompilerServices.Unsafe.SkipInit(out PortableTailCallFrame portableTailCallFrame);
236 try
237 {
239 do
240 {
243 }
244 while (callTarget != (delegate*<IntPtr, IntPtr, PortableTailCallFrame*, void>)null);
245 }
246 finally
247 {
248 tailCallInfo->Frame = frame;
249 if (tailCallInfo->ArgBuffer != IntPtr.Zero && *(int*)(void*)tailCallInfo->ArgBuffer == 1)
250 {
251 *(int*)(void*)tailCallInfo->ArgBuffer = 2;
252 }
253 }
254 }
static unsafe TailCallTls * GetTailCallInfo(IntPtr retAddrSlot, IntPtr *retAddr)

References System.Runtime.Serialization.Dictionary, System.Runtime.CompilerServices.RuntimeHelpers.GetTailCallInfo(), System.Runtime.CompilerServices.PortableTailCallFrame.NextCall, System.Runtime.CompilerServices.PortableTailCallFrame.TailCallAwareReturnAddress, and System.IntPtr.Zero.