| Index: Source/platform/heap/Visitor.h | 
| diff --git a/Source/platform/heap/Visitor.h b/Source/platform/heap/Visitor.h | 
| index b4ef6e45793b9490de381f3256aae8f8d0cb83e6..df2b5568ffa6af5c70ac01b0ab046c12a3aa3dfd 100644 | 
| --- a/Source/platform/heap/Visitor.h | 
| +++ b/Source/platform/heap/Visitor.h | 
| @@ -65,10 +65,10 @@ template<typename T> class WeakMember; | 
| class Visitor; | 
|  | 
| template <typename T> struct IsGarbageCollectedType; | 
| -#define COMPILE_ASSERT_IS_GARBAGE_COLLECTED(T, ErrorMessage) \ | 
| -    COMPILE_ASSERT(IsGarbageCollectedType<T>::value, ErrorMessage) | 
| -#define COMPILE_ASSERT_IS_NOT_GARBAGE_COLLECTED(T, ErrorMessage) \ | 
| -    COMPILE_ASSERT(!IsGarbageCollectedType<T>::value, ErrorMessage) | 
| +#define STATIC_ASSERT_IS_GARBAGE_COLLECTED(T, ErrorMessage) \ | 
| +    static_assert(IsGarbageCollectedType<T>::value, ErrorMessage) | 
| +#define STATIC_ASSERT_IS_NOT_GARBAGE_COLLECTED(T, ErrorMessage) \ | 
| +    static_assert(!IsGarbageCollectedType<T>::value, ErrorMessage) | 
|  | 
| template<bool needsTracing, WTF::WeakHandlingFlag weakHandlingFlag, WTF::ShouldWeakPointersBeMarkedStrongly strongify, typename T, typename Traits> struct CollectionBackingTraceTrait; | 
|  | 
| @@ -284,7 +284,7 @@ public: | 
| #endif | 
| TraceTrait<T>::mark(toDerived(), t); | 
|  | 
| -        COMPILE_ASSERT_IS_GARBAGE_COLLECTED(T, AttemptedToMarkNonGarbageCollectedObject); | 
| +        STATIC_ASSERT_IS_GARBAGE_COLLECTED(T, "attempted to mark non garbage collected object"); | 
| } | 
|  | 
| // Member version of the one-argument templated trace method. | 
| @@ -318,9 +318,9 @@ public: | 
| void trace(const WeakMember<T>& t) | 
| { | 
| // Check that we actually know the definition of T when tracing. | 
| -        COMPILE_ASSERT(sizeof(T), WeNeedToKnowTheDefinitionOfTheTypeWeAreTracing); | 
| +        static_assert(sizeof(T), "we need to know the definition of the type we are tracing"); | 
| registerWeakCell(const_cast<WeakMember<T>&>(t).cell()); | 
| -        COMPILE_ASSERT_IS_GARBAGE_COLLECTED(T, AttemptedToWeakTraceNonGarbageCollectedObject); | 
| +        STATIC_ASSERT_IS_GARBAGE_COLLECTED(T, "cannot weak trace non garbage collected object"); | 
| } | 
|  | 
| template<typename T> | 
| @@ -394,35 +394,35 @@ public: | 
| // those off-heap collection backing stores. | 
| template<typename T, size_t inlineCapacity> void trace(const Vector<OwnPtr<T>, inlineCapacity>& vector) | 
| { | 
| -        COMPILE_ASSERT_IS_NOT_GARBAGE_COLLECTED(T, AttemptedToTraceGarbageCollectedObjectInsideVector); | 
| +        STATIC_ASSERT_IS_NOT_GARBAGE_COLLECTED(T, "cannot trace garbage collected object inside Vector"); | 
| } | 
| template<typename T, size_t inlineCapacity> void trace(const Vector<RefPtr<T>, inlineCapacity>& vector) | 
| { | 
| -        COMPILE_ASSERT_IS_NOT_GARBAGE_COLLECTED(T, AttemptedToTraceGarbageCollectedObjectInsideVector); | 
| +        STATIC_ASSERT_IS_NOT_GARBAGE_COLLECTED(T, "cannot trace garbage collected object inside Vector"); | 
| } | 
| template<typename T, size_t inlineCapacity> void trace(const Vector<RawPtr<T>, inlineCapacity>& vector) | 
| { | 
| -        COMPILE_ASSERT_IS_NOT_GARBAGE_COLLECTED(T, AttemptedToTraceGarbageCollectedObjectInsideVector); | 
| +        STATIC_ASSERT_IS_NOT_GARBAGE_COLLECTED(T, "cannot trace garbage collected object inside Vector"); | 
| } | 
| template<typename T, size_t inlineCapacity> void trace(const Vector<WeakPtr<T>, inlineCapacity>& vector) | 
| { | 
| -        COMPILE_ASSERT_IS_NOT_GARBAGE_COLLECTED(T, AttemptedToTraceGarbageCollectedObjectInsideVector); | 
| +        STATIC_ASSERT_IS_NOT_GARBAGE_COLLECTED(T, "cannot trace garbage collected object inside Vector"); | 
| } | 
| template<typename T, size_t N> void trace(const Deque<OwnPtr<T>, N>& deque) | 
| { | 
| -        COMPILE_ASSERT_IS_NOT_GARBAGE_COLLECTED(T, AttemptedToTraceGarbageCollectedObjectInsideDeque); | 
| +        STATIC_ASSERT_IS_NOT_GARBAGE_COLLECTED(T, "cannot trace garbage collected object inside Deque"); | 
| } | 
| template<typename T, size_t N> void trace(const Deque<RefPtr<T>, N>& deque) | 
| { | 
| -        COMPILE_ASSERT_IS_NOT_GARBAGE_COLLECTED(T, AttemptedToTraceGarbageCollectedObjectInsideDeque); | 
| +        STATIC_ASSERT_IS_NOT_GARBAGE_COLLECTED(T, "cannot trace garbage collected object inside Deque"); | 
| } | 
| template<typename T, size_t N> void trace(const Deque<RawPtr<T>, N>& deque) | 
| { | 
| -        COMPILE_ASSERT_IS_NOT_GARBAGE_COLLECTED(T, AttemptedToTraceGarbageCollectedObjectInsideDeque); | 
| +        STATIC_ASSERT_IS_NOT_GARBAGE_COLLECTED(T, "cannot trace garbage collected object inside Deque"); | 
| } | 
| template<typename T, size_t N> void trace(const Deque<WeakPtr<T>, N>& deque) | 
| { | 
| -        COMPILE_ASSERT_IS_NOT_GARBAGE_COLLECTED(T, AttemptedToTraceGarbageCollectedObjectInsideDeque); | 
| +        STATIC_ASSERT_IS_NOT_GARBAGE_COLLECTED(T, "cannot trace garbage collected object inside Deque"); | 
| } | 
| #endif | 
|  | 
| @@ -434,7 +434,7 @@ public: | 
| template<typename T> inline bool isAlive(T* obj) | 
| { | 
| // Check that we actually know the definition of T when tracing. | 
| -        COMPILE_ASSERT(sizeof(T), WeNeedToKnowTheDefinitionOfTheTypeWeAreTracing); | 
| +        static_assert(sizeof(T), "T must be fully defined"); | 
| // The strongification of collections relies on the fact that once a | 
| // collection has been strongified, there is no way that it can contain | 
| // non-live entries, so no entries will be removed. Since you can't set | 
| @@ -758,7 +758,7 @@ public: \ | 
| virtual void adjustAndMark(blink::Visitor* visitor) const override \ | 
| { \ | 
| typedef WTF::IsSubclassOfTemplate<typename WTF::RemoveConst<TYPE>::Type, blink::GarbageCollected> IsSubclassOfGarbageCollected; \ | 
| -        COMPILE_ASSERT(IsSubclassOfGarbageCollected::value, OnlyGarbageCollectedObjectsCanHaveGarbageCollectedMixins);                  \ | 
| +        static_assert(IsSubclassOfGarbageCollected::value, "only garbage collected objects can have garbage collected mixins");         \ | 
| if (TraceEagerlyTrait<TYPE>::value) {                                           \ | 
| if (visitor->ensureMarked(static_cast<const TYPE*>(this)))                  \ | 
| TraceTrait<TYPE>::trace(visitor, const_cast<TYPE*>(this));              \ | 
|  |