diff options
author | Steve MacLean <sdmaclea.qdt@qualcommdatacenter.com> | 2017-06-08 19:02:33 -0400 |
---|---|---|
committer | Maoni Stephens <Maoni0@users.noreply.github.com> | 2017-06-08 16:02:33 -0700 |
commit | 4af0f91b0f3b9a99b8cb9bc3551576494b058732 (patch) | |
tree | 54b855573e05e30f41086d7e9713741295ebbd63 /src/gc/softwarewritewatch.cpp | |
parent | 46201b3b92bcacfff7518bf98b3627879158c322 (diff) | |
download | coreclr-4af0f91b0f3b9a99b8cb9bc3551576494b058732.tar.gz coreclr-4af0f91b0f3b9a99b8cb9bc3551576494b058732.tar.bz2 coreclr-4af0f91b0f3b9a99b8cb9bc3551576494b058732.zip |
[Arm64/Unix] Fix SOFTWARE_WRITE_WATCH for 64K pages (#11413)
* Decouple Software Write Watch from page size
* Use WRITE_WATCH_UNIT_SIZE in revisit_written_page(s)
* GC add align_write_watch_lower_page
Diffstat (limited to 'src/gc/softwarewritewatch.cpp')
-rw-r--r-- | src/gc/softwarewritewatch.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/gc/softwarewritewatch.cpp b/src/gc/softwarewritewatch.cpp index b85293857a..e1f305e76f 100644 --- a/src/gc/softwarewritewatch.cpp +++ b/src/gc/softwarewritewatch.cpp @@ -10,7 +10,7 @@ #ifdef FEATURE_USE_SOFTWARE_WRITE_WATCH_FOR_GC_HEAP #ifndef DACCESS_COMPILE -static_assert((static_cast<size_t>(1) << SOFTWARE_WRITE_WATCH_AddressToTableByteIndexShift) == OS_PAGE_SIZE, "Unexpected OS_PAGE_SIZE"); +static_assert((static_cast<size_t>(1) << SOFTWARE_WRITE_WATCH_AddressToTableByteIndexShift) == WRITE_WATCH_UNIT_SIZE, "Unexpected WRITE_WATCH_UNIT_SIZE"); extern "C" { @@ -95,7 +95,7 @@ bool SoftwareWriteWatch::GetDirtyFromBlock( block[byteIndex] = 0; } - void *pageAddress = firstPageAddressInBlock + byteIndex * OS_PAGE_SIZE; + void *pageAddress = firstPageAddressInBlock + byteIndex * WRITE_WATCH_UNIT_SIZE; assert(pageAddress >= GetHeapStartAddress()); assert(pageAddress < GetHeapEndAddress()); assert(dirtyPageIndex < dirtyPageCount); @@ -184,7 +184,7 @@ void SoftwareWriteWatch::GetDirty( break; } currentBlock += sizeof(size_t); - firstPageAddressInCurrentBlock += sizeof(size_t) * OS_PAGE_SIZE; + firstPageAddressInCurrentBlock += sizeof(size_t) * WRITE_WATCH_UNIT_SIZE; } while (currentBlock < fullBlockEnd) @@ -202,7 +202,7 @@ void SoftwareWriteWatch::GetDirty( break; } currentBlock += sizeof(size_t); - firstPageAddressInCurrentBlock += sizeof(size_t) * OS_PAGE_SIZE; + firstPageAddressInCurrentBlock += sizeof(size_t) * WRITE_WATCH_UNIT_SIZE; } if (currentBlock < fullBlockEnd) { |