diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index 80d6f34133..2060cb1981 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -1748,6 +1748,7 @@ v8_source_set("v8_base") { "src/objects/dictionary.h", "src/objects/frame-array-inl.h", "src/objects/frame-array.h", + "src/objects/hash-table-inl.h", "src/objects/hash-table.h", "src/objects/intl-objects.cc", "src/objects/intl-objects.h", diff --git a/deps/v8/src/objects-body-descriptors.h b/deps/v8/src/objects-body-descriptors.h index 499c48a930..3eb3bb539e 100644 --- a/deps/v8/src/objects-body-descriptors.h +++ b/deps/v8/src/objects-body-descriptors.h @@ -99,7 +99,7 @@ class FixedBodyDescriptor final : public BodyDescriptorBase { template static inline void IterateBody(HeapObject* obj, int object_size) { - IterateBody(obj); + IterateBody(obj); } static inline int SizeOf(Map* map, HeapObject* object) { return kSize; } diff --git a/deps/v8/src/objects-inl.h b/deps/v8/src/objects-inl.h index 406f49d996..9afd19c8ca 100644 --- a/deps/v8/src/objects-inl.h +++ b/deps/v8/src/objects-inl.h @@ -31,6 +31,7 @@ #include "src/lookup-cache-inl.h" #include "src/lookup.h" #include "src/objects.h" +#include "src/objects/hash-table-inl.h" #include "src/objects/literal-objects.h" #include "src/objects/module-info.h" #include "src/objects/regexp-match-info.h" diff --git a/deps/v8/src/objects/hash-table-inl.h b/deps/v8/src/objects/hash-table-inl.h new file mode 100644 index 0000000000..7b2db38495 --- /dev/null +++ b/deps/v8/src/objects/hash-table-inl.h @@ -0,0 +1,34 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef V8_OBJECTS_HASH_TABLE_INL_H_ +#define V8_OBJECTS_HASH_TABLE_INL_H_ + +#include "src/objects/hash-table.h" + +namespace v8 { +namespace internal { + +template +uint32_t HashTable::Hash(Key key) { + if (Shape::UsesSeed) { + return Shape::SeededHash(key, GetHeap()->HashSeed()); + } else { + return Shape::Hash(key); + } +} + +template +uint32_t HashTable::HashForObject(Key key, Object* object) { + if (Shape::UsesSeed) { + return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object); + } else { + return Shape::HashForObject(key, object); + } +} + +} // namespace internal +} // namespace v8 + +#endif // V8_OBJECTS_HASH_TABLE_INL_H_ diff --git a/deps/v8/src/objects/hash-table.h b/deps/v8/src/objects/hash-table.h index f3c68a82c5..0eac3a2342 100644 --- a/deps/v8/src/objects/hash-table.h +++ b/deps/v8/src/objects/hash-table.h @@ -138,22 +138,10 @@ class HashTable : public HashTableBase { public: typedef Shape ShapeT; - // Wrapper methods - inline uint32_t Hash(Key key) { - if (Shape::UsesSeed) { - return Shape::SeededHash(key, GetHeap()->HashSeed()); - } else { - return Shape::Hash(key); - } - } - - inline uint32_t HashForObject(Key key, Object* object) { - if (Shape::UsesSeed) { - return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object); - } else { - return Shape::HashForObject(key, object); - } - } + // Wrapper methods. Defined in src/objects/hash-table-inl.h + // to break a cycle with src/heap/heap.h + inline uint32_t Hash(Key key); + inline uint32_t HashForObject(Key key, Object* object); // Returns a new HashTable object. MUST_USE_RESULT static Handle New( diff --git a/deps/v8/src/v8.gyp b/deps/v8/src/v8.gyp index e7e19f5059..8015a6bda6 100644 --- a/deps/v8/src/v8.gyp +++ b/deps/v8/src/v8.gyp @@ -1228,6 +1228,7 @@ 'objects/dictionary.h', 'objects/frame-array.h', 'objects/frame-array-inl.h', + 'objects/hash-table-inl.h', 'objects/hash-table.h', 'objects/intl-objects.cc', 'objects/intl-objects.h',