/* * Increment profile counter for this trace, and decrement * sample counter. If sample counter goes below zero, turn * off profiling. * * On entry * (lr-11) is address of pointer to counter. Note: the counter * actually exists 10 bytes before the return target, but because * we are arriving from thumb mode, lr will have its low bit set. */ ldr r0, [lr,#-11] ldr r1, [rSELF, #offThread_pProfileCountdown] ldr r2, [r0] @ get counter ldr r3, [r1] @ get countdown timer add r2, #1 subs r2, #1 blt .L${opcode}_disable_profiling str r2, [r0] str r3, [r1] bx lr .L${opcode}_disable_profiling: mov r4, lr @ preserve lr ldr r0, .LdvmJitTraceProfilingOff blx r0 bx r4