diff -up v8-5.2.258/samples/shell.cc.gcc7 v8-5.2.258/samples/shell.cc --- v8-5.2.258/samples/shell.cc.gcc7 2017-02-28 15:33:38.931424708 -0500 +++ v8-5.2.258/samples/shell.cc 2017-02-28 15:34:00.759853299 -0500 @@ -361,6 +361,8 @@ bool ExecuteString(v8::Isolate* isolate, } else { v8::Local result; if (!script->Run(context).ToLocal(&result)) { +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wgnu" assert(try_catch.HasCaught()); // Print errors that happened during execution. if (report_exceptions) @@ -368,6 +370,7 @@ bool ExecuteString(v8::Isolate* isolate, return false; } else { assert(!try_catch.HasCaught()); +#pragma GCC diagnostic pop if (print_result && !result->IsUndefined()) { // If all went well and the result wasn't undefined then print // the returned value. diff -up v8-5.2.258/src/crankshaft/lithium.cc.gcc7 v8-5.2.258/src/crankshaft/lithium.cc --- v8-5.2.258/src/crankshaft/lithium.cc.gcc7 2016-05-09 10:28:43.000000000 -0400 +++ v8-5.2.258/src/crankshaft/lithium.cc 2017-02-28 14:42:17.188361709 -0500 @@ -128,11 +128,6 @@ void LOperand::PrintTo(StringStream* str template -LSubKindOperand* -LSubKindOperand::cache = NULL; - - -template void LSubKindOperand::SetUpCache() { if (cache) return; cache = new LSubKindOperand[kNumCachedOperands]; diff -up v8-5.2.258/src/crankshaft/lithium.h.gcc7 v8-5.2.258/src/crankshaft/lithium.h --- v8-5.2.258/src/crankshaft/lithium.h.gcc7 2016-05-09 10:28:43.000000000 -0400 +++ v8-5.2.258/src/crankshaft/lithium.h 2017-02-28 14:42:17.188361709 -0500 @@ -338,6 +338,9 @@ class LSubKindOperand final : public LOp explicit LSubKindOperand(int index) : LOperand(kOperandKind, index) { } }; +template +LSubKindOperand* +LSubKindOperand::cache = NULL; #define LITHIUM_TYPEDEF_SUBKIND_OPERAND_CLASS(name, type, number) \ typedef LSubKindOperand L##name; diff -up v8-5.2.258/src/objects-body-descriptors.h.gcc7 v8-5.2.258/src/objects-body-descriptors.h --- v8-5.2.258/src/objects-body-descriptors.h.gcc7 2016-05-09 10:28:43.000000000 -0400 +++ v8-5.2.258/src/objects-body-descriptors.h 2017-02-28 14:42:17.189361685 -0500 @@ -99,7 +99,7 @@ class FixedBodyDescriptor final : public template static inline void IterateBody(HeapObject* obj, int object_size) { - IterateBody(obj); + IterateBody(obj); } }; diff -up v8-5.2.258/src/objects.h.gcc7 v8-5.2.258/src/objects.h --- v8-5.2.258/src/objects.h.gcc7 2016-05-09 10:28:43.000000000 -0400 +++ v8-5.2.258/src/objects.h 2017-02-28 14:42:17.190361661 -0500 @@ -3182,22 +3182,10 @@ class HashTableBase : public FixedArray template class HashTable : public HashTableBase { public: - // 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-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 -up v8-5.2.258/src/objects-inl.h.gcc7 v8-5.2.258/src/objects-inl.h --- v8-5.2.258/src/objects-inl.h.gcc7 2016-05-09 10:28:43.000000000 -0400 +++ v8-5.2.258/src/objects-inl.h 2017-02-28 14:42:17.191361638 -0500 @@ -35,6 +35,25 @@ 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); + } +} + PropertyDetails::PropertyDetails(Smi* smi) { value_ = smi->value(); }