Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(65)

Unified Diff: src/interpreter/constant-array-builder.h

Issue 2336553002: [interpreter] Use hashmap for ConstantArrayBuilder's constant map (Closed)
Patch Set: Rebased onto master Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/interpreter/constant-array-builder.h
diff --git a/src/interpreter/constant-array-builder.h b/src/interpreter/constant-array-builder.h
index 2018f256931c8e6cc18e95c5738f0d4bbc77eae7..63dc24151cf77f62814344eb7fdfee136b217e0d 100644
--- a/src/interpreter/constant-array-builder.h
+++ b/src/interpreter/constant-array-builder.h
@@ -6,6 +6,7 @@
#define V8_INTERPRETER_CONSTANT_ARRAY_BUILDER_H_
#include "src/identity-map.h"
+#include "src/inline-hash-map.h"
#include "src/interpreter/bytecodes.h"
#include "src/zone-containers.h"
@@ -16,6 +17,14 @@ class Isolate;
namespace interpreter {
+// Hashing function specifically for addresses
+struct AddressHash {
+ size_t operator()(Address address) const {
+ // Divide by 8, then knuth multiplicative hash
rmcilroy 2016/09/12 14:17:31 Should we divide 8 or by kPointerSize?
+ return (bit_cast<size_t>(address) >> 3) * 2654435761;
+ }
+};
+
// A helper class for constructing constant arrays for the
// interpreter. Each instance of this class is intended to be used to
// generate exactly one FixedArray of constants via the ToFixedArray
@@ -108,7 +117,7 @@ class ConstantArrayBuilder final BASE_EMBEDDED {
Handle<Object> the_hole_value() const { return the_hole_value_; }
ConstantArraySlice* idx_slice_[3];
- ZoneMap<Address, index_t> constants_map_;
+ ZoneInlineHashMap<Address, index_t, AddressHash> constants_map_;
ZoneMap<Smi*, index_t> smi_map_;
ZoneVector<std::pair<Smi*, index_t>> smi_pairs_;
Handle<Object> the_hole_value_;

Powered by Google App Engine
This is Rietveld 408576698