[PATCH] D58718: [Memory] Add basic support for large/huge memory pages

Zachary Turner via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 27 13:00:42 PST 2019


zturner added inline comments.


================
Comment at: lib/Support/Windows/Memory.inc:105-115
   // While we'd be happy to allocate single pages, the Windows allocation
   // granularity may be larger than a single page (in practice, it is 64K)
   // so mapping less than that will create an unreachable fragment of memory.
   // Avoid using one-time initialization of static locals here, since they
   // aren't thread safe with MSVC.
   static volatile size_t GranularityCached;
   size_t Granularity = GranularityCached;
----------------
FWIW, this comment about static locals is no longer accurate.  I wonder if we could write this as:

```
static size_t DefaultGranularity = getAllocationGranularity();
static Optional<size_t> LargePageGranularity = getLargePargeGranularity();

DWORD Flags = MEM_RESERVE | MEM_COMMIT;

size_t Granularity = DefaultGranularity;
if ((Flags & MF_HUGE_HINT) && LargePageGranularity.hasValue()) {
  Flags |= MEM_LARGE_PAGES;
  Granularity = *LargePageGranularity;
}
```


Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D58718/new/

https://reviews.llvm.org/D58718





More information about the llvm-commits mailing list