Loading include/utils/JenkinsHash.h +3 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,9 @@ namespace android { /* The Jenkins hash of a sequence of 32 bit words A, B, C is: * Whiten(Mix(Mix(Mix(0, A), B), C)) */ #ifdef __clang__ __attribute__((no_sanitize("integer"))) #endif inline uint32_t JenkinsHashMix(uint32_t hash, uint32_t data) { hash += data; hash += (hash << 10); Loading libutils/JenkinsHash.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -19,10 +19,14 @@ * should still be quite good. **/ #include <stdlib.h> #include <utils/JenkinsHash.h> namespace android { #ifdef __clang__ __attribute__((no_sanitize("integer"))) #endif hash_t JenkinsHashWhiten(uint32_t hash) { hash += (hash << 3); hash ^= (hash >> 11); Loading @@ -31,6 +35,9 @@ hash_t JenkinsHashWhiten(uint32_t hash) { } uint32_t JenkinsHashMixBytes(uint32_t hash, const uint8_t* bytes, size_t size) { if (size > UINT32_MAX) { abort(); } hash = JenkinsHashMix(hash, (uint32_t)size); size_t i; for (i = 0; i < (size & -4); i += 4) { Loading @@ -47,6 +54,9 @@ uint32_t JenkinsHashMixBytes(uint32_t hash, const uint8_t* bytes, size_t size) { } uint32_t JenkinsHashMixShorts(uint32_t hash, const uint16_t* shorts, size_t size) { if (size > UINT32_MAX) { abort(); } hash = JenkinsHashMix(hash, (uint32_t)size); size_t i; for (i = 0; i < (size & -2); i += 2) { Loading libutils/VectorImpl.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -551,6 +551,10 @@ size_t SortedVectorImpl::orderOf(const void* item) const ssize_t SortedVectorImpl::_indexOrderOf(const void* item, size_t* order) const { if (order) *order = 0; if (isEmpty()) { return NAME_NOT_FOUND; } // binary search ssize_t err = NAME_NOT_FOUND; ssize_t l = 0; Loading Loading
include/utils/JenkinsHash.h +3 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,9 @@ namespace android { /* The Jenkins hash of a sequence of 32 bit words A, B, C is: * Whiten(Mix(Mix(Mix(0, A), B), C)) */ #ifdef __clang__ __attribute__((no_sanitize("integer"))) #endif inline uint32_t JenkinsHashMix(uint32_t hash, uint32_t data) { hash += data; hash += (hash << 10); Loading
libutils/JenkinsHash.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -19,10 +19,14 @@ * should still be quite good. **/ #include <stdlib.h> #include <utils/JenkinsHash.h> namespace android { #ifdef __clang__ __attribute__((no_sanitize("integer"))) #endif hash_t JenkinsHashWhiten(uint32_t hash) { hash += (hash << 3); hash ^= (hash >> 11); Loading @@ -31,6 +35,9 @@ hash_t JenkinsHashWhiten(uint32_t hash) { } uint32_t JenkinsHashMixBytes(uint32_t hash, const uint8_t* bytes, size_t size) { if (size > UINT32_MAX) { abort(); } hash = JenkinsHashMix(hash, (uint32_t)size); size_t i; for (i = 0; i < (size & -4); i += 4) { Loading @@ -47,6 +54,9 @@ uint32_t JenkinsHashMixBytes(uint32_t hash, const uint8_t* bytes, size_t size) { } uint32_t JenkinsHashMixShorts(uint32_t hash, const uint16_t* shorts, size_t size) { if (size > UINT32_MAX) { abort(); } hash = JenkinsHashMix(hash, (uint32_t)size); size_t i; for (i = 0; i < (size & -2); i += 2) { Loading
libutils/VectorImpl.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -551,6 +551,10 @@ size_t SortedVectorImpl::orderOf(const void* item) const ssize_t SortedVectorImpl::_indexOrderOf(const void* item, size_t* order) const { if (order) *order = 0; if (isEmpty()) { return NAME_NOT_FOUND; } // binary search ssize_t err = NAME_NOT_FOUND; ssize_t l = 0; Loading