Index: third_party/WebKit/Source/platform/heap/Visitor.cpp |
diff --git a/third_party/WebKit/Source/platform/heap/Visitor.cpp b/third_party/WebKit/Source/platform/heap/Visitor.cpp |
index 6f5d00fbaf3f812f5692f202b3d57277f2a446e4..4cf3995e7fff9c1672781d061ea9e4928d03b3ef 100644 |
--- a/third_party/WebKit/Source/platform/heap/Visitor.cpp |
+++ b/third_party/WebKit/Source/platform/heap/Visitor.cpp |
@@ -12,18 +12,36 @@ namespace blink { |
PassOwnPtr<Visitor> Visitor::create(ThreadState* state, BlinkGC::GCType gcType) |
{ |
- switch (gcType) { |
- case BlinkGC::GCWithSweep: |
- case BlinkGC::GCWithoutSweep: |
- return adoptPtr(new MarkingVisitor<Visitor::GlobalMarking>(state)); |
- case BlinkGC::TakeSnapshot: |
- return adoptPtr(new MarkingVisitor<Visitor::SnapshotMarking>(state)); |
- case BlinkGC::ThreadTerminationGC: |
- return adoptPtr(new MarkingVisitor<Visitor::ThreadLocalMarking>(state)); |
- case BlinkGC::ThreadLocalWeakProcessing: |
- return adoptPtr(new MarkingVisitor<Visitor::WeakProcessing>(state)); |
- default: |
- ASSERT_NOT_REACHED(); |
+ bool perThreadHeapEnabled = false; |
+ if (perThreadHeapEnabled) { |
+ switch (gcType) { |
+ case BlinkGC::GCWithSweep: |
+ case BlinkGC::GCWithoutSweep: |
+ // InlinedGlobalMarkingVisitor does not support per thread heap disabled heaps. |
+ return adoptPtr(new MarkingVisitor<Visitor::ThreadLocalMarking, true>(state)); |
+ case BlinkGC::TakeSnapshot: |
+ return adoptPtr(new MarkingVisitor<Visitor::SnapshotMarking, true>(state)); |
+ case BlinkGC::ThreadTerminationGC: |
+ return adoptPtr(new MarkingVisitor<Visitor::ThreadTerminationMarking, true>(state)); |
+ case BlinkGC::ThreadLocalWeakProcessing: |
+ return adoptPtr(new MarkingVisitor<Visitor::WeakProcessing, true>(state)); |
+ default: |
+ ASSERT_NOT_REACHED(); |
+ } |
+ } else { |
+ switch (gcType) { |
+ case BlinkGC::GCWithSweep: |
+ case BlinkGC::GCWithoutSweep: |
+ return adoptPtr(new MarkingVisitor<Visitor::GlobalMarking, false>(state)); |
+ case BlinkGC::TakeSnapshot: |
+ return adoptPtr(new MarkingVisitor<Visitor::SnapshotMarking, false>(state)); |
+ case BlinkGC::ThreadTerminationGC: |
+ return adoptPtr(new MarkingVisitor<Visitor::ThreadTerminationMarking, false>(state)); |
+ case BlinkGC::ThreadLocalWeakProcessing: |
+ return adoptPtr(new MarkingVisitor<Visitor::WeakProcessing, false>(state)); |
+ default: |
+ ASSERT_NOT_REACHED(); |
+ } |
} |
return nullptr; |
} |