Added a new wrapper script that will help automate more of the process of setting up and running oprofile on a remote device. There is more work to be done here once the kernel perf event issues that hinder reliability (bug: 2975913) are resolved. Change-Id: I942ee74912f1e4c87b4c43aca9937b3f3f1780f6
There have been a few patches to oprofile for newer ARM architectures since 0.9.6. Pruned out irrelevant auto-generated files from the previous dump so this is closer to being a mirror of the actual oprofile repository. Change-Id: I889053d30aae433a199a0a18585c66b88ff8de14
This patch modifies the inline x86 assembly fragments to properly save ebx when calling the cpuid instruction. Otherwise, the compiler will error, complaining that the PIC register (ebx) is clobbered. Change-Id: Ibc091484068dfb87812c59dbc3976d26d922eebc
Oprofile's hash function uses a 64-bit value for the key where the high 32-bit are the 'from' address in a backtrace, and the low 32-bits are the current PC. However, the hash function was: uint32_t temp = (value >> 32) ^ value; return ((temp << 0) ^ (temp >> 8)) & data->hash_mask; If 'from' and 'to' are the same (recursive function), this hashes to 0, and you end up with lots of collisions, turning the theoretically O(1) operation into O(n). To fix it, I just drop the high 32-bits from the hash: uint32_t temp = value & 0xffffffff; return ((temp << 0) ^ (temp >> 8)) & data->hash_mask; In testing, this drastically reduces the oprofile overhead for some tracing. Change-Id: I8ae65a8a73771c89b576c895f135efd7b730eaf5
1) Display samples collected in the code cache into dalvik-jit-code-cache. 2) Tolerate phantom event on counter 3 when it is not configured.