summaryrefslogtreecommitdiff
path: root/deps/v8/src/codegen/signature.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/codegen/signature.h')
-rw-r--r--deps/v8/src/codegen/signature.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/deps/v8/src/codegen/signature.h b/deps/v8/src/codegen/signature.h
index d6d8b5da0f..8098ca8ada 100644
--- a/deps/v8/src/codegen/signature.h
+++ b/deps/v8/src/codegen/signature.h
@@ -127,9 +127,12 @@ using MachineSignature = Signature<MachineType>;
template <typename T>
size_t hash_value(const Signature<T>& sig) {
- size_t hash = base::hash_combine(sig.parameter_count(), sig.return_count());
- for (const T& t : sig.all()) hash = base::hash_combine(hash, t);
- return hash;
+ // Hash over all contained representations, plus the parameter count to
+ // differentiate signatures with the same representation array but different
+ // parameter/return count.
+ size_t seed = base::hash_value(sig.parameter_count());
+ for (T rep : sig.all()) seed = base::hash_combine(seed, base::hash<T>{}(rep));
+ return seed;
}
template <typename T, size_t kNumReturns = 0, size_t kNumParams = 0>