In astartup.asm I expected ifdef PROFILE_GRAPH / endif around:
profile_current_cost_centre label ptr dq 0
You removed a dq 0 in astartup.asm:
garbage_collector_name: ifndef PROFILE_GRAPH dq 0 endif db "garbage_collector" db 0
But in macho64/astartup.s you added a quad 0:
garbage_collector_name: .if !PROFILE_GRAPH .quad 0 .endif .quad 0 .ascii "garbage_collector" .byte 0
Is this intended ?
profile_current_cost_centreis exported because it is used in GraphCopy. It must be present in the other runtime systems as well to prevent linking errors.
The change to
macho64/astartup.sshould have been the same as the one to
astartup.asm. I have fixed this now, thanks.
I also noticed that my latest change to count tail calls and returns was not applied to
macho64/aprofilegraph.s. I have pushed this as well now.
In functions code_build_u and code_fill_u are 3 tests of callgraph_profiling. The last one can be merged with the previous one if you replace: parameter->p=graph_5; with parameter[b_size].p=graph_5; Could you also remove unnecessary changes to the number of tabs in empty lines and add an empty line after the declaration of INSTRUCTION_GRAPH graph_5 ? Not all labels have a label_name, so test if label_name!=NULL before using strcmp in cgaas.c and cgawas.c.