|
| 1 | +From 11c7e0164af7f6b33df13a658fc1c0effb502662 Mon Sep 17 00:00:00 2001 |
| 2 | +From: Zuzana Svetlikova < [email protected]> |
| 3 | +Date: Fri, 9 Jun 2017 14:07:19 +0200 |
| 4 | +Subject: [PATCH] v8: fix build errors with g++ 7 |
| 5 | + |
| 6 | +This is a local patch because upstream fixed it differently by moving |
| 7 | +large chunks of code out of objects.h. We cannot easily back-port |
| 8 | +those changes due to their size and invasiveness. |
| 9 | + |
| 10 | +Fixes: https://github.com/nodejs/node/issues/10388 |
| 11 | +PR-URL: https://github.com/nodejs/node/pull/12392 |
| 12 | +Backport-PR-URL: https://github.com/nodejs/node/pull/13574 |
| 13 | +Reviewed-By: Anna Henningsen < [email protected]> |
| 14 | +Reviewed-By: Benjamin Gruenbaum < [email protected]> |
| 15 | +Reviewed-By: Daniel Bevenius < [email protected]> |
| 16 | +Reviewed-By: James M Snell < [email protected]> |
| 17 | +--- |
| 18 | + deps/v8/src/objects-body-descriptors.h | 2 +- |
| 19 | + deps/v8/src/objects-inl.h | 21 +++++++++++++++++++++ |
| 20 | + deps/v8/src/objects.h | 20 ++++---------------- |
| 21 | + 3 files changed, 26 insertions(+), 17 deletions(-) |
| 22 | + |
| 23 | +diff --git a/deps/v8/src/objects-body-descriptors.h b/deps/v8/src/objects-body-descriptors.h |
| 24 | +index 91cb8883be8..a1c3634bd76 100644 |
| 25 | +--- a/deps/v8/src/objects-body-descriptors.h |
| 26 | ++++ b/deps/v8/src/objects-body-descriptors.h |
| 27 | +@@ -99,7 +99,7 @@ class FixedBodyDescriptor final : public BodyDescriptorBase { |
| 28 | + |
| 29 | + template <typename StaticVisitor> |
| 30 | + static inline void IterateBody(HeapObject* obj, int object_size) { |
| 31 | +- IterateBody(obj); |
| 32 | ++ IterateBody<StaticVisitor>(obj); |
| 33 | + } |
| 34 | + }; |
| 35 | + |
| 36 | +diff --git a/deps/v8/src/objects-inl.h b/deps/v8/src/objects-inl.h |
| 37 | +index 11f4d7498d7..72208c2f00f 100644 |
| 38 | +--- a/deps/v8/src/objects-inl.h |
| 39 | ++++ b/deps/v8/src/objects-inl.h |
| 40 | +@@ -36,6 +36,27 @@ |
| 41 | + namespace v8 { |
| 42 | + namespace internal { |
| 43 | + |
| 44 | ++template <typename Derived, typename Shape, typename Key> |
| 45 | ++uint32_t HashTable<Derived, Shape, Key>::Hash(Key key) { |
| 46 | ++ if (Shape::UsesSeed) { |
| 47 | ++ return Shape::SeededHash(key, GetHeap()->HashSeed()); |
| 48 | ++ } else { |
| 49 | ++ return Shape::Hash(key); |
| 50 | ++ } |
| 51 | ++} |
| 52 | ++ |
| 53 | ++ |
| 54 | ++template <typename Derived, typename Shape, typename Key> |
| 55 | ++uint32_t HashTable<Derived, Shape, Key>::HashForObject(Key key, |
| 56 | ++ Object* object) { |
| 57 | ++ if (Shape::UsesSeed) { |
| 58 | ++ return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object); |
| 59 | ++ } else { |
| 60 | ++ return Shape::HashForObject(key, object); |
| 61 | ++ } |
| 62 | ++} |
| 63 | ++ |
| 64 | ++ |
| 65 | + PropertyDetails::PropertyDetails(Smi* smi) { |
| 66 | + value_ = smi->value(); |
| 67 | + } |
| 68 | +diff --git a/deps/v8/src/objects.h b/deps/v8/src/objects.h |
| 69 | +index d1632c9deb2..47b02dadcff 100644 |
| 70 | +--- a/deps/v8/src/objects.h |
| 71 | ++++ b/deps/v8/src/objects.h |
| 72 | +@@ -3261,22 +3261,10 @@ class HashTableBase : public FixedArray { |
| 73 | + template <typename Derived, typename Shape, typename Key> |
| 74 | + class HashTable : public HashTableBase { |
| 75 | + public: |
| 76 | +- // Wrapper methods |
| 77 | +- inline uint32_t Hash(Key key) { |
| 78 | +- if (Shape::UsesSeed) { |
| 79 | +- return Shape::SeededHash(key, GetHeap()->HashSeed()); |
| 80 | +- } else { |
| 81 | +- return Shape::Hash(key); |
| 82 | +- } |
| 83 | +- } |
| 84 | +- |
| 85 | +- inline uint32_t HashForObject(Key key, Object* object) { |
| 86 | +- if (Shape::UsesSeed) { |
| 87 | +- return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object); |
| 88 | +- } else { |
| 89 | +- return Shape::HashForObject(key, object); |
| 90 | +- } |
| 91 | +- } |
| 92 | ++ // Wrapper methods. Defined in src/objects-inl.h |
| 93 | ++ // to break a cycle with src/heap/heap.h. |
| 94 | ++ inline uint32_t Hash(Key key); |
| 95 | ++ inline uint32_t HashForObject(Key key, Object* object); |
| 96 | + |
| 97 | + // Returns a new HashTable object. |
| 98 | + MUST_USE_RESULT static Handle<Derived> New( |
0 commit comments