| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 5266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5277 class TraceTypeNonEagerly1 { }; | 5277 class TraceTypeNonEagerly1 { }; |
| 5278 WILL_NOT_BE_EAGERLY_TRACED(TraceTypeNonEagerly1); | 5278 WILL_NOT_BE_EAGERLY_TRACED(TraceTypeNonEagerly1); |
| 5279 class TraceTypeNonEagerly2 : public TraceTypeNonEagerly1 { }; | 5279 class TraceTypeNonEagerly2 : public TraceTypeNonEagerly1 { }; |
| 5280 | 5280 |
| 5281 class TraceTypeNonEagerly3 { }; | 5281 class TraceTypeNonEagerly3 { }; |
| 5282 WILL_NOT_BE_EAGERLY_TRACED_CLASS(TraceTypeNonEagerly3); | 5282 WILL_NOT_BE_EAGERLY_TRACED_CLASS(TraceTypeNonEagerly3); |
| 5283 class TraceTypeNonEagerly4 : public TraceTypeNonEagerly3 { }; | 5283 class TraceTypeNonEagerly4 : public TraceTypeNonEagerly3 { }; |
| 5284 | 5284 |
| 5285 TEST(HeapTest, TraceTypesEagerly) | 5285 TEST(HeapTest, TraceTypesEagerly) |
| 5286 { | 5286 { |
| 5287 COMPILE_ASSERT(TraceEagerlyTrait<TraceTypeEagerly1>::value, ShouldBeTrue); | 5287 static_assert(TraceEagerlyTrait<TraceTypeEagerly1>::value, "should be true")
; |
| 5288 COMPILE_ASSERT(TraceEagerlyTrait<Member<TraceTypeEagerly1>>::value, ShouldBe
True); | 5288 static_assert(TraceEagerlyTrait<Member<TraceTypeEagerly1>>::value, "should b
e true"); |
| 5289 COMPILE_ASSERT(TraceEagerlyTrait<WeakMember<TraceTypeEagerly1>>::value, Shou
ldBeTrue); | 5289 static_assert(TraceEagerlyTrait<WeakMember<TraceTypeEagerly1>>::value, "shou
ld be true"); |
| 5290 COMPILE_ASSERT(TraceEagerlyTrait<RawPtr<TraceTypeEagerly1>>::value == MARKER
_EAGER_TRACING, ShouldBeTrue); | 5290 static_assert(TraceEagerlyTrait<RawPtr<TraceTypeEagerly1>>::value == MARKER_
EAGER_TRACING, "should be true"); |
| 5291 COMPILE_ASSERT(TraceEagerlyTrait<HeapVector<Member<TraceTypeEagerly1>>>::val
ue, ShouldBeTrue); | 5291 static_assert(TraceEagerlyTrait<HeapVector<Member<TraceTypeEagerly1>>>::valu
e, "should be true"); |
| 5292 COMPILE_ASSERT(TraceEagerlyTrait<HeapVector<WeakMember<TraceTypeEagerly1>>>:
:value, ShouldBeTrue); | 5292 static_assert(TraceEagerlyTrait<HeapVector<WeakMember<TraceTypeEagerly1>>>::
value, "should be true"); |
| 5293 COMPILE_ASSERT(TraceEagerlyTrait<HeapHashSet<Member<TraceTypeEagerly1>>>::va
lue, ShouldBeTrue); | 5293 static_assert(TraceEagerlyTrait<HeapHashSet<Member<TraceTypeEagerly1>>>::val
ue, "should be true"); |
| 5294 COMPILE_ASSERT(TraceEagerlyTrait<HeapHashSet<Member<TraceTypeEagerly1>>>::va
lue, ShouldBeTrue); | 5294 static_assert(TraceEagerlyTrait<HeapHashSet<Member<TraceTypeEagerly1>>>::val
ue, "should be true"); |
| 5295 using HashMapIntToObj = HeapHashMap<int, Member<TraceTypeEagerly1>>; | 5295 using HashMapIntToObj = HeapHashMap<int, Member<TraceTypeEagerly1>>; |
| 5296 COMPILE_ASSERT(TraceEagerlyTrait<HashMapIntToObj>::value, ShouldBeTrue); | 5296 static_assert(TraceEagerlyTrait<HashMapIntToObj>::value, "should be true"); |
| 5297 using HashMapObjToInt = HeapHashMap<Member<TraceTypeEagerly1>, int>; | 5297 using HashMapObjToInt = HeapHashMap<Member<TraceTypeEagerly1>, int>; |
| 5298 COMPILE_ASSERT(TraceEagerlyTrait<HashMapObjToInt>::value, ShouldBeTrue); | 5298 static_assert(TraceEagerlyTrait<HashMapObjToInt>::value, "should be true"); |
| 5299 | 5299 |
| 5300 COMPILE_ASSERT(TraceEagerlyTrait<TraceTypeEagerly2>::value, ShouldBeTrue); | 5300 static_assert(TraceEagerlyTrait<TraceTypeEagerly2>::value, "should be true")
; |
| 5301 COMPILE_ASSERT(TraceEagerlyTrait<Member<TraceTypeEagerly2>>::value, ShouldBe
True); | 5301 static_assert(TraceEagerlyTrait<Member<TraceTypeEagerly2>>::value, "should b
e true"); |
| 5302 | 5302 |
| 5303 COMPILE_ASSERT(!TraceEagerlyTrait<TraceTypeNonEagerly1>::value, ShouldBeTrue
); | 5303 static_assert(!TraceEagerlyTrait<TraceTypeNonEagerly1>::value, "should be tr
ue"); |
| 5304 COMPILE_ASSERT(!TraceEagerlyTrait<TraceTypeNonEagerly2>::value, ShouldBeTrue
); | 5304 static_assert(!TraceEagerlyTrait<TraceTypeNonEagerly2>::value, "should be tr
ue"); |
| 5305 COMPILE_ASSERT(!TraceEagerlyTrait<TraceTypeNonEagerly3>::value, ShouldBeTrue
); | 5305 static_assert(!TraceEagerlyTrait<TraceTypeNonEagerly3>::value, "should be tr
ue"); |
| 5306 COMPILE_ASSERT(TraceEagerlyTrait<TraceTypeNonEagerly4>::value == MARKER_EAGE
R_TRACING, ShouldBeTrue); | 5306 static_assert(TraceEagerlyTrait<TraceTypeNonEagerly4>::value == MARKER_EAGER
_TRACING, "should be true"); |
| 5307 } | 5307 } |
| 5308 | 5308 |
| 5309 class DeepEagerly final : public GarbageCollected<DeepEagerly> { | 5309 class DeepEagerly final : public GarbageCollected<DeepEagerly> { |
| 5310 public: | 5310 public: |
| 5311 DeepEagerly(DeepEagerly* next) | 5311 DeepEagerly(DeepEagerly* next) |
| 5312 : m_next(next) | 5312 : m_next(next) |
| 5313 { | 5313 { |
| 5314 } | 5314 } |
| 5315 | 5315 |
| 5316 void trace(Visitor* visitor) | 5316 void trace(Visitor* visitor) |
| (...skipping 24 matching lines...) Expand all Loading... |
| 5341 Heap::collectGarbage(ThreadState::NoHeapPointersOnStack); | 5341 Heap::collectGarbage(ThreadState::NoHeapPointersOnStack); |
| 5342 | 5342 |
| 5343 // Verify that the DeepEagerly chain isn't completely unravelled | 5343 // Verify that the DeepEagerly chain isn't completely unravelled |
| 5344 // by performing eager trace() calls, but the explicit mark | 5344 // by performing eager trace() calls, but the explicit mark |
| 5345 // stack is switched once some nesting limit is exceeded. | 5345 // stack is switched once some nesting limit is exceeded. |
| 5346 EXPECT_GT(DeepEagerly::sTraceLazy, 2); | 5346 EXPECT_GT(DeepEagerly::sTraceLazy, 2); |
| 5347 #endif | 5347 #endif |
| 5348 } | 5348 } |
| 5349 | 5349 |
| 5350 } // namespace blink | 5350 } // namespace blink |
| OLD | NEW |