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 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
301 PartitionBucket* bucket = &root->buckets[i]; | 301 PartitionBucket* bucket = &root->buckets[i]; |
302 foundLeak |= partitionAllocShutdownBucket(bucket); | 302 foundLeak |= partitionAllocShutdownBucket(bucket); |
303 } | 303 } |
304 foundLeak |= partitionAllocBaseShutdown(root); | 304 foundLeak |= partitionAllocBaseShutdown(root); |
305 return !foundLeak; | 305 return !foundLeak; |
306 } | 306 } |
307 | 307 |
308 #if !CPU(64BIT) | 308 #if !CPU(64BIT) |
309 static NEVER_INLINE void partitionOutOfMemoryWithLotsOfUncommitedPages() | 309 static NEVER_INLINE void partitionOutOfMemoryWithLotsOfUncommitedPages() |
310 { | 310 { |
311 IMMEDIATE_CRASH(); | 311 OOM_CRASH(); |
312 } | 312 } |
313 #endif | 313 #endif |
314 | 314 |
315 static NEVER_INLINE void partitionOutOfMemory(const PartitionRootBase* root) | 315 static NEVER_INLINE void partitionOutOfMemory(const PartitionRootBase* root) |
316 { | 316 { |
317 #if !CPU(64BIT) | 317 #if !CPU(64BIT) |
318 // Check whether this OOM is due to a lot of super pages that are allocated | 318 // Check whether this OOM is due to a lot of super pages that are allocated |
319 // but not committed, probably due to http://crbug.com/421387. | 319 // but not committed, probably due to http://crbug.com/421387. |
320 if (root->totalSizeOfSuperPages + root->totalSizeOfDirectMappedPages - root-
>totalSizeOfCommittedPages > kReasonableSizeOfUnusedPages) { | 320 if (root->totalSizeOfSuperPages + root->totalSizeOfDirectMappedPages - root-
>totalSizeOfCommittedPages > kReasonableSizeOfUnusedPages) { |
321 partitionOutOfMemoryWithLotsOfUncommitedPages(); | 321 partitionOutOfMemoryWithLotsOfUncommitedPages(); |
322 } | 322 } |
323 #endif | 323 #endif |
324 if (PartitionRootBase::gOomHandlingFunction) | 324 if (PartitionRootBase::gOomHandlingFunction) |
325 (*PartitionRootBase::gOomHandlingFunction)(); | 325 (*PartitionRootBase::gOomHandlingFunction)(); |
326 IMMEDIATE_CRASH(); | 326 OOM_CRASH(); |
327 } | 327 } |
328 | 328 |
329 static NEVER_INLINE void partitionExcessiveAllocationSize() | 329 static NEVER_INLINE void partitionExcessiveAllocationSize() |
330 { | 330 { |
331 IMMEDIATE_CRASH(); | 331 OOM_CRASH(); |
332 } | 332 } |
333 | 333 |
334 static NEVER_INLINE void partitionBucketFull() | 334 static NEVER_INLINE void partitionBucketFull() |
335 { | 335 { |
336 IMMEDIATE_CRASH(); | 336 OOM_CRASH(); |
337 } | 337 } |
338 | 338 |
339 // partitionPageStateIs* | 339 // partitionPageStateIs* |
340 // Note that it's only valid to call these functions on pages found on one of | 340 // Note that it's only valid to call these functions on pages found on one of |
341 // the page lists. Specifically, you can't call these functions on full pages | 341 // the page lists. Specifically, you can't call these functions on full pages |
342 // that were detached from the active list. | 342 // that were detached from the active list. |
343 static bool ALWAYS_INLINE partitionPageStateIsActive(const PartitionPage* page) | 343 static bool ALWAYS_INLINE partitionPageStateIsActive(const PartitionPage* page) |
344 { | 344 { |
345 ASSERT(page != &PartitionRootGeneric::gSeedPage); | 345 ASSERT(page != &PartitionRootGeneric::gSeedPage); |
346 ASSERT(!page->pageOffset); | 346 ASSERT(!page->pageOffset); |
(...skipping 1058 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1405 partitionStats.totalDiscardableBytes += memoryStats[i].discardableBy
tes; | 1405 partitionStats.totalDiscardableBytes += memoryStats[i].discardableBy
tes; |
1406 if (!isLightDump) | 1406 if (!isLightDump) |
1407 partitionStatsDumper->partitionsDumpBucketStats(partitionName, &
memoryStats[i]); | 1407 partitionStatsDumper->partitionsDumpBucketStats(partitionName, &
memoryStats[i]); |
1408 } | 1408 } |
1409 } | 1409 } |
1410 partitionStatsDumper->partitionDumpTotals(partitionName, &partitionStats); | 1410 partitionStatsDumper->partitionDumpTotals(partitionName, &partitionStats); |
1411 } | 1411 } |
1412 | 1412 |
1413 } // namespace WTF | 1413 } // namespace WTF |
1414 | 1414 |
OLD | NEW |