summaryrefslogtreecommitdiff
path: root/src/gc/softwarewritewatch.cpp
diff options
context:
space:
mode:
authorSteve MacLean <sdmaclea.qdt@qualcommdatacenter.com>2017-06-08 19:02:33 -0400
committerMaoni Stephens <Maoni0@users.noreply.github.com>2017-06-08 16:02:33 -0700
commit4af0f91b0f3b9a99b8cb9bc3551576494b058732 (patch)
tree54b855573e05e30f41086d7e9713741295ebbd63 /src/gc/softwarewritewatch.cpp
parent46201b3b92bcacfff7518bf98b3627879158c322 (diff)
downloadcoreclr-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.cpp8
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)
{