.ifndef _listops_s_file _listops_s_file: .include "include/primops.s" # | n | list | -> cont .primop2 list_int_index mov 010(%rsi), %rdx # the list constructor id, must be 1 cmp $1, %rdx jne list_int_index_not_found mov 020(%rbp), %rcx mov 010(%rcx), %rcx test %rcx, %rcx jz list_int_index_found #we are taking 0, all happy, return it #more probably we need to continue, make replacement thunks sub $1, %rcx pushq %rcx pushq $INT_code mov %rsp, %r11 pushq 030(%rsi) # tail push %r11 pushq $2 pushq $list_int_index mov %rsp, %r11 primop2_cont_indirect %r11 list_int_index_not_found: movq 0, %rax #fault list_int_index_found: mov 020(%rsi), %rax #head primop2_cont_indirect %rax .endif # _listops_s_file