diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index 80ff7340b1e87c..becf4177c19800 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -1717,6 +1717,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/literal-objects.cc", "src/objects/literal-objects.h", diff --git a/deps/v8/src/objects-body-descriptors.h b/deps/v8/src/objects-body-descriptors.h index 9f080eb7551bd6..b201c20fbb0294 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); } }; diff --git a/deps/v8/src/objects-inl.h b/deps/v8/src/objects-inl.h index 4b819d43f44f45..66d258f1281f70 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 00000000000000..7b2db384954d57 --- /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 221598b711b568..b274d94cd4585a 100644 --- a/deps/v8/src/objects/hash-table.h +++ b/deps/v8/src/objects/hash-table.h @@ -135,22 +135,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 1f94a0680a5da5..a8efcdcf3f4000 100644 --- a/deps/v8/src/v8.gyp +++ b/deps/v8/src/v8.gyp @@ -1118,6 +1118,7 @@ 'objects/dictionary.h', 'objects/frame-array.h', 'objects/frame-array-inl.h', + 'objects/hash-table-inl.h', 'objects/hash-table.h', 'objects/literal-objects.cc', 'objects/literal-objects.h',