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 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 const size_t sizeMask = ~heapObjectAgeMask & ~static_cast<size_t>(7); | 87 const size_t sizeMask = ~heapObjectAgeMask & ~static_cast<size_t>(7); |
88 #else | 88 #else |
89 const size_t sizeMask = ~static_cast<size_t>(7); | 89 const size_t sizeMask = ~static_cast<size_t>(7); |
90 #endif | 90 #endif |
91 const uint8_t freelistZapValue = 42; | 91 const uint8_t freelistZapValue = 42; |
92 const uint8_t finalizedZapValue = 24; | 92 const uint8_t finalizedZapValue = 24; |
93 // The orphaned zap value must be zero in the lowest bits to allow for using | 93 // The orphaned zap value must be zero in the lowest bits to allow for using |
94 // the mark bit when tracing. | 94 // the mark bit when tracing. |
95 const uint8_t orphanedZapValue = 240; | 95 const uint8_t orphanedZapValue = 240; |
96 | 96 |
97 const int numberOfMarkingThreads = 2; | 97 const int maxNumberOfMarkingThreads = 4; |
98 | 98 |
99 const int numberOfPagesToConsiderForCoalescing = 100; | 99 const int numberOfPagesToConsiderForCoalescing = 100; |
100 | 100 |
101 enum CallbackInvocationMode { | 101 enum CallbackInvocationMode { |
102 GlobalMarking, | 102 GlobalMarking, |
103 ThreadLocalMarking, | 103 ThreadLocalMarking, |
104 }; | 104 }; |
105 | 105 |
106 class CallbackStack; | 106 class CallbackStack; |
107 class HeapStats; | 107 class HeapStats; |
(...skipping 844 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
952 | 952 |
953 template<typename T, typename HeapTraits> static Address allocate(size_t); | 953 template<typename T, typename HeapTraits> static Address allocate(size_t); |
954 // FIXME: remove this once c++11 is allowed everywhere: | 954 // FIXME: remove this once c++11 is allowed everywhere: |
955 template<typename T> static Address allocate(size_t); | 955 template<typename T> static Address allocate(size_t); |
956 | 956 |
957 template<typename T> static Address reallocate(void* previous, size_t); | 957 template<typename T> static Address reallocate(void* previous, size_t); |
958 | 958 |
959 static void collectGarbage(ThreadState::StackState, ThreadState::CauseOfGC =
ThreadState::NormalGC); | 959 static void collectGarbage(ThreadState::StackState, ThreadState::CauseOfGC =
ThreadState::NormalGC); |
960 static void collectGarbageForTerminatingThread(ThreadState*); | 960 static void collectGarbageForTerminatingThread(ThreadState*); |
961 static void collectAllGarbage(); | 961 static void collectAllGarbage(); |
962 static void processMarkingStackEntries(int* numberOfMarkingThreads); | 962 static void processMarkingStackEntries(int*); |
963 static void processMarkingStackOnMultipleThreads(); | 963 static void processMarkingStackOnMultipleThreads(); |
964 static void processMarkingStackInParallel(); | 964 static void processMarkingStackInParallel(); |
965 template<CallbackInvocationMode Mode> static void processMarkingStack(); | 965 template<CallbackInvocationMode Mode> static void processMarkingStack(); |
966 static void postMarkingProcessing(); | 966 static void postMarkingProcessing(); |
967 static void globalWeakProcessing(); | 967 static void globalWeakProcessing(); |
968 static void setForcePreciseGCForTesting(); | 968 static void setForcePreciseGCForTesting(); |
969 | 969 |
970 static void prepareForGC(); | 970 static void prepareForGC(); |
971 | 971 |
972 // Conservatively checks whether an address is a pointer in any of the threa
d | 972 // Conservatively checks whether an address is a pointer in any of the threa
d |
(...skipping 1477 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2450 }; | 2450 }; |
2451 | 2451 |
2452 template<typename T> | 2452 template<typename T> |
2453 struct IfWeakMember<WeakMember<T> > { | 2453 struct IfWeakMember<WeakMember<T> > { |
2454 static bool isDead(Visitor* visitor, const WeakMember<T>& t) { return !visit
or->isAlive(t.get()); } | 2454 static bool isDead(Visitor* visitor, const WeakMember<T>& t) { return !visit
or->isAlive(t.get()); } |
2455 }; | 2455 }; |
2456 | 2456 |
2457 } | 2457 } |
2458 | 2458 |
2459 #endif // Heap_h | 2459 #endif // Heap_h |
OLD | NEW |