Chromium Code Reviews| Index: runtime/vm/assembler_x64.h |
| =================================================================== |
| --- runtime/vm/assembler_x64.h (revision 27479) |
| +++ runtime/vm/assembler_x64.h (working copy) |
| @@ -12,6 +12,7 @@ |
| #include "platform/assert.h" |
| #include "platform/utils.h" |
| #include "vm/constants_x64.h" |
| +#include "vm/hash_map.h" |
| namespace dart { |
| @@ -837,6 +838,43 @@ |
| // Patchability of pool entries. |
| GrowableArray<Patchability> patchable_pool_entries_; |
| + // Pair type parameter for DirectChainedHashMap. |
| + class ObjIndexPair { |
| + public: |
| + // TODO(zra): When an identity map is added to the VM, use that here |
| + // instead. In the meantime... |
| + // CAUTION: the RawObject* below is only safe because: |
| + // The HashMap that will use this pair type will not contain any RawObject* |
| + // keys that are not in the object_pool_ array. Since the keys will be |
| + // visited by the GC when it visits the object_pool_, and since all objects |
| + // in the object_pool_ are Old (and so will not be moved) the GC does not |
| + // also need to visit the keys here in the HashMap. |
|
Ivan Posva
2013/09/13 17:25:09
+fschneider: After discussing this more with Zach
zra
2013/09/13 17:46:18
Done. Issue 13305.
|
| + typedef RawObject* Key; |
|
Ivan Posva
2013/09/13 17:25:09
Please add a separate comment about why these type
zra
2013/09/13 17:46:18
Done.
|
| + typedef intptr_t Value; |
| + typedef ObjIndexPair Pair; |
| + |
| + ObjIndexPair(Key key, Value value) : key_(key), value_(value) { } |
| + |
| + static Key KeyOf(Pair kv) { return kv.key_; } |
| + |
| + static Value ValueOf(Pair kv) { return kv.value_; } |
| + |
| + static intptr_t Hashcode(Key key) { |
| + return String::Hash(reinterpret_cast<uint8_t*>(&key), sizeof(&key)); |
|
Ivan Posva
2013/09/13 17:25:09
Please do not use a pointer as a string.
zra
2013/09/13 17:46:18
Done.
|
| + } |
| + |
| + static inline bool IsKeyEqual(Pair kv, Key key) { |
| + return kv.key_ == key; |
| + } |
| + |
| + private: |
| + Key key_; |
| + Value value_; |
| + }; |
| + |
| + // Hashmap for fast lookup in object pool. |
| + DirectChainedHashMap<ObjIndexPair> object_pool_index_table_; |
| + |
| int prologue_offset_; |
| class CodeComment : public ZoneAllocated { |