Call profiling typically involves inserting invocation counters in the JIT code to figure out how often a method call is executed, or inserting code that helps to compute a call graph. The collected profiling information is used to aid various code optimizations, for example to help pick better inlining candidates.
See also Adaptive code generation and JIT compilation.