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

Unified Diff: chrome/app/file_pre_reader_win.cc

Issue 2280183002: Remove all code related to the PreRead field trial. (Closed)
Patch Set: fix include Created 4 years, 4 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/app/file_pre_reader_win.h ('k') | chrome/app/main_dll_loader_win.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/app/file_pre_reader_win.cc
diff --git a/chrome/app/file_pre_reader_win.cc b/chrome/app/file_pre_reader_win.cc
index f95c0276b5dbff0ff4b1e5ace5e6015842ef31b4..c62c8c0dfd916021074222208bc704c00fc34bf1 100644
--- a/chrome/app/file_pre_reader_win.cc
+++ b/chrome/app/file_pre_reader_win.cc
@@ -7,21 +7,16 @@
#include <windows.h>
#include "base/files/file.h"
-#include "base/files/memory_mapped_file.h"
-#include "base/logging.h"
-#include "base/threading/platform_thread.h"
-#include "base/threading/thread_restrictions.h"
-#include "components/startup_metric_utils/common/pre_read_field_trial_utils_win.h"
-namespace {
-
-// Pre-reads |file_path| using ::ReadFile.
-void PreReadFileUsingReadFile(const base::FilePath& file_path) {
+void PreReadFile(const base::FilePath& file_path) {
base::File file(file_path, base::File::FLAG_OPEN | base::File::FLAG_READ |
base::File::FLAG_SEQUENTIAL_SCAN);
if (!file.IsValid())
return;
+ // This could be replaced with ::PrefetchVirtualMemory once we drop support
+ // for Win7. The performance of ::PrefetchVirtualMemory is roughly equivalent
+ // to these buffered reads.
const DWORD kStepSize = 1024 * 1024;
char* buffer = reinterpret_cast<char*>(
::VirtualAlloc(nullptr, kStepSize, MEM_COMMIT, PAGE_READWRITE));
@@ -32,62 +27,3 @@ void PreReadFileUsingReadFile(const base::FilePath& file_path) {
::VirtualFree(buffer, 0, MEM_RELEASE);
}
-
-// Pre-reads |file_path| using ::PrefetchVirtualMemory, if available. Otherwise,
-// falls back on using ::ReadFile.
-void PreReadFileUsingPrefetchVirtualMemory(const base::FilePath& file_path) {
- // Load ::PrefetchVirtualMemory dynamically, because it is only available on
- // Win8+.
- using PrefetchVirtualMemoryPtr = decltype(::PrefetchVirtualMemory)*;
- PrefetchVirtualMemoryPtr prefetch_virtual_memory =
- reinterpret_cast<PrefetchVirtualMemoryPtr>(::GetProcAddress(
- ::GetModuleHandle(L"kernel32.dll"), "PrefetchVirtualMemory"));
- if (!prefetch_virtual_memory) {
- // If ::PrefetchVirtualMemory is not available, fall back to
- // PreReadFileUsingReadFile().
- PreReadFileUsingReadFile(file_path);
- return;
- }
-
- base::MemoryMappedFile memory_mapped_file;
- if (!memory_mapped_file.Initialize(file_path)) {
- // Initializing the memory map should not fail. If it does fail in a debug
- // build, we want to be warned about it so that we can investigate the
- // failure.
- NOTREACHED();
- PreReadFileUsingReadFile(file_path);
- return;
- }
-
- WIN32_MEMORY_RANGE_ENTRY memory_range;
- memory_range.VirtualAddress = const_cast<void*>(
- reinterpret_cast<const void*>(memory_mapped_file.data()));
- memory_range.NumberOfBytes = memory_mapped_file.length();
- prefetch_virtual_memory(::GetCurrentProcess(), 1U, &memory_range, 0);
-}
-
-} // namespace
-
-void PreReadFile(const base::FilePath& file_path,
- const startup_metric_utils::PreReadOptions& pre_read_options) {
- DCHECK(pre_read_options.pre_read);
- base::ThreadRestrictions::AssertIOAllowed();
-
- // Increase thread priority if necessary.
- base::ThreadPriority previous_priority = base::ThreadPriority::NORMAL;
- if (pre_read_options.high_priority) {
- previous_priority = base::PlatformThread::GetCurrentThreadPriority();
- base::PlatformThread::SetCurrentThreadPriority(
- base::ThreadPriority::DISPLAY);
- }
-
- // Pre-read |file_path|.
- if (pre_read_options.prefetch_virtual_memory)
- PreReadFileUsingPrefetchVirtualMemory(file_path);
- else
- PreReadFileUsingReadFile(file_path);
-
- // Reset thread priority.
- if (pre_read_options.high_priority)
- base::PlatformThread::SetCurrentThreadPriority(previous_priority);
-}
« no previous file with comments | « chrome/app/file_pre_reader_win.h ('k') | chrome/app/main_dll_loader_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698