diff options
| author | You Kim <you.kim72@gmail.com> | 2012-12-19 14:25:21 +0900 |
|---|---|---|
| committer | You Kim <you.kim72@gmail.com> | 2012-12-19 14:35:37 +0900 |
| commit | c4119e180f83d8632c8c5647159c3092989eabeb (patch) | |
| tree | 5a8bc181e78d2e34a9a9551b952e30b8a799db4f /vm/Hash.cpp | |
| parent | 72d8557fbc8e82ded7d163a476ac5963a91c5128 (diff) | |
Optimize dvmHash Loops.
pHashTable->tableSize is working as volatile variable & is evaluated on every iteration.
Help compiler to define tableSize as local(Register) variable.
Change-Id: Iecdea3ecb810319d461ff3924ef21fd6c2d69d1e
Diffstat (limited to 'vm/Hash.cpp')
| -rw-r--r-- | vm/Hash.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/vm/Hash.cpp b/vm/Hash.cpp index bf57ae1b2..cd4530a5d 100644 --- a/vm/Hash.cpp +++ b/vm/Hash.cpp @@ -290,9 +290,11 @@ bool dvmHashTableRemove(HashTable* pHashTable, u4 itemHash, void* item) */ int dvmHashForeachRemove(HashTable* pHashTable, HashForeachRemoveFunc func) { - int i, val; + int i, val, tableSize; - for (i = 0; i < pHashTable->tableSize; i++) { + tableSize = pHashTable->tableSize; + + for (i = 0; i < tableSize; i++) { HashEntry* pEnt = &pHashTable->pEntries[i]; if (pEnt->data != NULL && pEnt->data != HASH_TOMBSTONE) { @@ -318,9 +320,11 @@ int dvmHashForeachRemove(HashTable* pHashTable, HashForeachRemoveFunc func) */ int dvmHashForeach(HashTable* pHashTable, HashForeachFunc func, void* arg) { - int i, val; + int i, val, tableSize; - for (i = 0; i < pHashTable->tableSize; i++) { + tableSize = pHashTable->tableSize; + + for (i = 0; i < tableSize; i++) { HashEntry* pEnt = &pHashTable->pEntries[i]; if (pEnt->data != NULL && pEnt->data != HASH_TOMBSTONE) { |
