History log of /external/oprofile/libdb/odb.h
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
8a572b129c9755959b4421970947aeda4119c3b7 11-Nov-2010 Mike Dodd <mdodd@google.com> oprofile fix for hashing backtraces.

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
/external/oprofile/libdb/odb.h
5a4eb4eb367eccd4b976d1feae96cea96d2c50f2 15-Sep-2009 Ben Cheng <bccheng@google.com> Refresh OProfile code running on the target side to 0.9.5 for ARMV7.
/external/oprofile/libdb/odb.h
10e23eebca4175a8dfe3a788b2bebacb1fcfce54 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/external/oprofile/libdb/odb.h
dfb3f050a7cebd2030ea23dc6fa8964530e4ddcc 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/external/oprofile/libdb/odb.h
7984f7ab3e13cda0c3b04ffeb2608f232e57f93a 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589
/external/oprofile/libdb/odb.h
cc2ee177dbb3befca43e36cfc56778b006c3d050 12-Jan-1970 Upstream <upstream-import@none> external/oprofile 0.9.1
/external/oprofile/libdb/odb.h