diff options
Diffstat (limited to 'deps/v8/src/codegen/signature.h')
-rw-r--r-- | deps/v8/src/codegen/signature.h | 9 |
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> |