[...] retAddr <- %rsp r10 = frameDescr rdi = thisClosure rsi = arg0 rdx = arg1 rcx = arg2
push r10 push rdi push rsi push rdx push rcx
[code for val]
[code for func] pop %rdi [code for a1] pop %rsi [code for a2] pop %rdx [code for a3] pop %rcx mov frameDescr, %r10 [test and extract codeptr to %rax] call %rax push %rax
[code for x] pop %rax add $8 * frameSize, %rsp ret
[code for func] pop %rdi [code for a1] pop %rsi [code for a2] pop %rdx [code for a3] pop %rcx add $8, frameSize [test and extract codeptr to %rax] jmp %rax
mov allocSize, %rdi mov %rsp, %rsi mov frameDescr, %rdx mov threadState, %rcx call collectAndAlloc