Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(192)

Side by Side Diff: third_party/WebKit/Source/wtf/Partitions.h

Issue 1463683002: Switch wtf/SpinLock to std::atomic (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: asan iwyu Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 return partitionReallocGeneric(Partitions::fastMallocPartition(), p, n, typeName); 118 return partitionReallocGeneric(Partitions::fastMallocPartition(), p, n, typeName);
119 } 119 }
120 static void fastFree(void* p) 120 static void fastFree(void* p)
121 { 121 {
122 partitionFreeGeneric(Partitions::fastMallocPartition(), p); 122 partitionFreeGeneric(Partitions::fastMallocPartition(), p);
123 } 123 }
124 124
125 static void handleOutOfMemory(); 125 static void handleOutOfMemory();
126 126
127 private: 127 private:
128 static int s_initializationLock; 128 static SpinLock s_initializationLock;
129 static bool s_initialized; 129 static bool s_initialized;
130 130
131 // We have the following four partitions. 131 // We have the following four partitions.
132 // - Node partition: A partition to allocate Nodes. We prepare a 132 // - Node partition: A partition to allocate Nodes. We prepare a
133 // dedicated partition for Nodes because Nodes are likely to be 133 // dedicated partition for Nodes because Nodes are likely to be
134 // a source of use-after-frees. Another reason is for performance: 134 // a source of use-after-frees. Another reason is for performance:
135 // Since Nodes are guaranteed to be used only by the main 135 // Since Nodes are guaranteed to be used only by the main
136 // thread, we can bypass acquiring a lock. Also we can improve memory 136 // thread, we can bypass acquiring a lock. Also we can improve memory
137 // locality by putting Nodes together. 137 // locality by putting Nodes together.
138 // - Layout object partition: A partition to allocate LayoutObjects. 138 // - Layout object partition: A partition to allocate LayoutObjects.
139 // we prepare a dedicated partition for the same reason as Nodes. 139 // we prepare a dedicated partition for the same reason as Nodes.
140 // - Buffer partition: A partition to allocate objects that have a strong 140 // - Buffer partition: A partition to allocate objects that have a strong
141 // risk where the length and/or the contents are exploited from user 141 // risk where the length and/or the contents are exploited from user
142 // scripts. Vectors, HashTables, ArrayBufferContents and Strings are 142 // scripts. Vectors, HashTables, ArrayBufferContents and Strings are
143 // allocated in the buffer partition. 143 // allocated in the buffer partition.
144 // - Fast malloc partition: A partition to allocate all other objects. 144 // - Fast malloc partition: A partition to allocate all other objects.
145 static PartitionAllocatorGeneric m_fastMallocAllocator; 145 static PartitionAllocatorGeneric m_fastMallocAllocator;
146 static PartitionAllocatorGeneric m_bufferAllocator; 146 static PartitionAllocatorGeneric m_bufferAllocator;
147 static SizeSpecificPartitionAllocator<3328> m_nodeAllocator; 147 static SizeSpecificPartitionAllocator<3328> m_nodeAllocator;
148 static SizeSpecificPartitionAllocator<1024> m_layoutAllocator; 148 static SizeSpecificPartitionAllocator<1024> m_layoutAllocator;
149 static HistogramEnumerationFunction m_histogramEnumeration; 149 static HistogramEnumerationFunction m_histogramEnumeration;
150 }; 150 };
151 151
152 } // namespace WTF 152 } // namespace WTF
153 153
154 #endif // Partitions_h 154 #endif // Partitions_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698