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

Side by Side Diff: util/win/process_info.cc

Issue 1498133002: Add AlignedVector and use it for vector<MEMORY_BASIC_INFORMATION64> (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Address review feedback 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
« no previous file with comments | « util/win/process_info.h ('k') | util/win/process_info_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Crashpad Authors. All rights reserved. 1 // Copyright 2015 The Crashpad Authors. All rights reserved.
2 // 2 //
3 // Licensed under the Apache License, Version 2.0 (the "License"); 3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License. 4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at 5 // You may obtain a copy of the License at
6 // 6 //
7 // http://www.apache.org/licenses/LICENSE-2.0 7 // http://www.apache.org/licenses/LICENSE-2.0
8 // 8 //
9 // Unless required by applicable law or agreed to in writing, software 9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS, 10 // distributed under the License is distributed on an "AS IS" BASIS,
(...skipping 571 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 *peb_address = peb_address_; 582 *peb_address = peb_address_;
583 *peb_size = peb_size_; 583 *peb_size = peb_size_;
584 } 584 }
585 585
586 bool ProcessInfo::Modules(std::vector<Module>* modules) const { 586 bool ProcessInfo::Modules(std::vector<Module>* modules) const {
587 INITIALIZATION_STATE_DCHECK_VALID(initialized_); 587 INITIALIZATION_STATE_DCHECK_VALID(initialized_);
588 *modules = modules_; 588 *modules = modules_;
589 return true; 589 return true;
590 } 590 }
591 591
592 const std::vector<MEMORY_BASIC_INFORMATION64>& ProcessInfo::MemoryInfo() const { 592 const ProcessInfo::MemoryBasicInformation64Vector& ProcessInfo::MemoryInfo()
593 const {
593 INITIALIZATION_STATE_DCHECK_VALID(initialized_); 594 INITIALIZATION_STATE_DCHECK_VALID(initialized_);
594 return memory_info_; 595 return memory_info_;
595 } 596 }
596 597
597 std::vector<CheckedRange<WinVMAddress, WinVMSize>> 598 std::vector<CheckedRange<WinVMAddress, WinVMSize>>
598 ProcessInfo::GetReadableRanges( 599 ProcessInfo::GetReadableRanges(
599 const CheckedRange<WinVMAddress, WinVMSize>& range) const { 600 const CheckedRange<WinVMAddress, WinVMSize>& range) const {
600 return GetReadableRangesOfMemoryMap(range, MemoryInfo()); 601 return GetReadableRangesOfMemoryMap(range, MemoryInfo());
601 } 602 }
602 603
(...skipping 19 matching lines...) Expand all
622 623
623 const std::vector<ProcessInfo::Handle>& ProcessInfo::Handles() const { 624 const std::vector<ProcessInfo::Handle>& ProcessInfo::Handles() const {
624 INITIALIZATION_STATE_DCHECK_VALID(initialized_); 625 INITIALIZATION_STATE_DCHECK_VALID(initialized_);
625 if (handles_.empty()) 626 if (handles_.empty())
626 handles_ = BuildHandleVector(process_); 627 handles_ = BuildHandleVector(process_);
627 return handles_; 628 return handles_;
628 } 629 }
629 630
630 std::vector<CheckedRange<WinVMAddress, WinVMSize>> GetReadableRangesOfMemoryMap( 631 std::vector<CheckedRange<WinVMAddress, WinVMSize>> GetReadableRangesOfMemoryMap(
631 const CheckedRange<WinVMAddress, WinVMSize>& range, 632 const CheckedRange<WinVMAddress, WinVMSize>& range,
632 const std::vector<MEMORY_BASIC_INFORMATION64>& memory_info) { 633 const ProcessInfo::MemoryBasicInformation64Vector& memory_info) {
633 using Range = CheckedRange<WinVMAddress, WinVMSize>; 634 using Range = CheckedRange<WinVMAddress, WinVMSize>;
634 635
635 // Find all the ranges that overlap the target range, maintaining their order. 636 // Find all the ranges that overlap the target range, maintaining their order.
636 std::vector<MEMORY_BASIC_INFORMATION64> overlapping; 637 ProcessInfo::MemoryBasicInformation64Vector overlapping;
637 for (const auto& mi : memory_info) { 638 for (const auto& mi : memory_info) {
638 static_assert(base::is_same<decltype(mi.BaseAddress), WinVMAddress>::value, 639 static_assert(base::is_same<decltype(mi.BaseAddress), WinVMAddress>::value,
639 "expected range address to be WinVMAddress"); 640 "expected range address to be WinVMAddress");
640 static_assert(base::is_same<decltype(mi.RegionSize), WinVMSize>::value, 641 static_assert(base::is_same<decltype(mi.RegionSize), WinVMSize>::value,
641 "expected range size to be WinVMSize"); 642 "expected range size to be WinVMSize");
642 if (range.OverlapsRange(Range(mi.BaseAddress, mi.RegionSize))) 643 if (range.OverlapsRange(Range(mi.BaseAddress, mi.RegionSize)))
643 overlapping.push_back(mi); 644 overlapping.push_back(mi);
644 } 645 }
645 if (overlapping.empty()) 646 if (overlapping.empty())
646 return std::vector<Range>(); 647 return std::vector<Range>();
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 } else { 684 } else {
684 result.push_back(as_ranges[i]); 685 result.push_back(as_ranges[i]);
685 } 686 }
686 DCHECK(result.back().IsValid()); 687 DCHECK(result.back().IsValid());
687 } 688 }
688 689
689 return result; 690 return result;
690 } 691 }
691 692
692 } // namespace crashpad 693 } // namespace crashpad
OLDNEW
« no previous file with comments | « util/win/process_info.h ('k') | util/win/process_info_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698