OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/metrics/persistent_histogram_allocator.h" | 5 #include "base/metrics/persistent_histogram_allocator.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
473 Set(WrapUnique(new GlobalHistogramAllocator( | 473 Set(WrapUnique(new GlobalHistogramAllocator( |
474 WrapUnique(new LocalPersistentMemoryAllocator(size, id, name))))); | 474 WrapUnique(new LocalPersistentMemoryAllocator(size, id, name))))); |
475 } | 475 } |
476 | 476 |
477 // static | 477 // static |
478 void GlobalHistogramAllocator::CreateWithSharedMemory( | 478 void GlobalHistogramAllocator::CreateWithSharedMemory( |
479 std::unique_ptr<SharedMemory> memory, | 479 std::unique_ptr<SharedMemory> memory, |
480 size_t size, | 480 size_t size, |
481 uint64_t id, | 481 uint64_t id, |
482 StringPiece name) { | 482 StringPiece name) { |
483 if (!memory->memory() && !memory->Map(size)) | 483 if ((!memory->memory() && !memory->Map(size)) || |
| 484 !SharedPersistentMemoryAllocator::IsSharedMemoryAcceptable(*memory)) { |
484 NOTREACHED(); | 485 NOTREACHED(); |
| 486 return; |
| 487 } |
485 | 488 |
486 if (memory->memory()) { | 489 DCHECK_LE(memory->mapped_size(), size); |
487 DCHECK_LE(memory->mapped_size(), size); | 490 Set(WrapUnique(new GlobalHistogramAllocator( |
488 Set(WrapUnique(new GlobalHistogramAllocator( | 491 WrapUnique(new SharedPersistentMemoryAllocator( |
489 WrapUnique(new SharedPersistentMemoryAllocator( | 492 std::move(memory), 0, StringPiece(), /*readonly=*/false))))); |
490 std::move(memory), 0, StringPiece(), /*readonly=*/false))))); | |
491 } | |
492 } | 493 } |
493 | 494 |
494 // static | 495 // static |
495 void GlobalHistogramAllocator::CreateWithSharedMemoryHandle( | 496 void GlobalHistogramAllocator::CreateWithSharedMemoryHandle( |
496 const SharedMemoryHandle& handle, | 497 const SharedMemoryHandle& handle, |
497 size_t size) { | 498 size_t size) { |
498 std::unique_ptr<SharedMemory> shm( | 499 std::unique_ptr<SharedMemory> shm( |
499 new SharedMemory(handle, /*readonly=*/false)); | 500 new SharedMemory(handle, /*readonly=*/false)); |
500 if (!shm->Map(size)) { | 501 if (!shm->Map(size) || |
| 502 !SharedPersistentMemoryAllocator::IsSharedMemoryAcceptable(*shm)) { |
501 NOTREACHED(); | 503 NOTREACHED(); |
502 return; | 504 return; |
503 } | 505 } |
504 | 506 |
505 Set(WrapUnique(new GlobalHistogramAllocator( | 507 Set(WrapUnique(new GlobalHistogramAllocator( |
506 WrapUnique(new SharedPersistentMemoryAllocator( | 508 WrapUnique(new SharedPersistentMemoryAllocator( |
507 std::move(shm), 0, StringPiece(), /*readonly=*/false))))); | 509 std::move(shm), 0, StringPiece(), /*readonly=*/false))))); |
508 } | 510 } |
509 | 511 |
510 // static | 512 // static |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
580 while (true) { | 582 while (true) { |
581 std::unique_ptr<HistogramBase> histogram = | 583 std::unique_ptr<HistogramBase> histogram = |
582 import_iterator_.GetNextWithIgnore(record_to_ignore); | 584 import_iterator_.GetNextWithIgnore(record_to_ignore); |
583 if (!histogram) | 585 if (!histogram) |
584 break; | 586 break; |
585 StatisticsRecorder::RegisterOrDeleteDuplicate(histogram.release()); | 587 StatisticsRecorder::RegisterOrDeleteDuplicate(histogram.release()); |
586 } | 588 } |
587 } | 589 } |
588 | 590 |
589 } // namespace base | 591 } // namespace base |
OLD | NEW |