/* * Increment profile counter for this trace, and decrement * sample counter. If sample counter goes below zero, turn * off profiling. * * On entry * (ra-16) is address of pointer to counter. Note: the counter * actually exists 16 bytes before the return target for mips. * - 4 bytes for prof count addr. * - 4 bytes for chain cell offset (2bytes 32 bit aligned). * - 4 bytes for call TEMPLATE_PERIODIC_PROFILING. * - 4 bytes for call delay slot. */ lw a0, -16(ra) lw a1, offThread_pProfileCountdown(rSELF) lw a2, 0(a0) # get counter lw a3, 0(a1) # get countdown timer addu a2, 1 sub a3, 1 # FIXME - bug in ARM code??? bltz a3, .L${opcode}_disable_profiling sw a2, 0(a0) sw a3, 0(a1) RETURN .L${opcode}_disable_profiling: la a0, dvmJitTraceProfilingOff JALR(a0) # The ra register is preserved by the JALR macro. jr ra