| Index: src/hashmap.h
 | 
| ===================================================================
 | 
| --- src/hashmap.h	(revision 12363)
 | 
| +++ src/hashmap.h	(working copy)
 | 
| @@ -59,7 +59,8 @@
 | 
|    struct Entry {
 | 
|      void* key;
 | 
|      void* value;
 | 
| -    uint32_t hash;  // the full hash value for key
 | 
| +    uint32_t hash;  // The full hash value for key
 | 
| +    int order;  // If you never remove entries this is the insertion order.
 | 
|    };
 | 
|  
 | 
|    // If an entry with matching key is found, Lookup()
 | 
| @@ -140,6 +141,7 @@
 | 
|      p->key = key;
 | 
|      p->value = NULL;
 | 
|      p->hash = hash;
 | 
| +    p->order = occupancy_;
 | 
|      occupancy_++;
 | 
|  
 | 
|      // Grow the map if we reached >= 80% occupancy.
 | 
| @@ -297,7 +299,9 @@
 | 
|    // Rehash all current entries.
 | 
|    for (Entry* p = map; n > 0; p++) {
 | 
|      if (p->key != NULL) {
 | 
| -      Lookup(p->key, p->hash, true, allocator)->value = p->value;
 | 
| +      Entry* entry = Lookup(p->key, p->hash, true, allocator);
 | 
| +      entry->value = p->value;
 | 
| +      entry->order = p->order;
 | 
|        n--;
 | 
|      }
 | 
|    }
 | 
| 
 |