void StompWriteBarrierEphemeral(bool isRuntimeSuspended);
void StompWriteBarrierResize(bool isRuntimeSuspended, bool bReqUpperBoundsCheck);
+bool IsSuspendEEThread();
class CLRConfig
{
//
// Global memory info
//
-
+
// Return the size of the user-mode portion of the virtual address space of this process.
// Return:
// non zero if it has succeeded, 0 if it has failed
#ifdef FEATURE_USE_SOFTWARE_WRITE_WATCH_FOR_GC_HEAP
SoftwareWriteWatch::GetDirty(base_address, region_size, dirty_pages, dirty_page_count_ref, reset, is_runtime_suspended);
#else // !FEATURE_USE_SOFTWARE_WRITE_WATCH_FOR_GC_HEAP
+ UNREFERENCED_PARAMETER(is_runtime_suspended);
bool success = GCToOSInterface::GetWriteWatch(reset, base_address, region_size, dirty_pages, dirty_page_count_ref);
assert(success);
#endif // FEATURE_USE_SOFTWARE_WRITE_WATCH_FOR_GC_HEAP
{
}
+bool IsSuspendEEThread()
+{
+ return false;
+}
+
void SwitchToWriteWatchBarrier()
{
}
Thread * GetThread();
-inline BOOL IsSuspendEEThread()
-{
- // TODO: Implement
- return false;
-}
-
class ThreadStore
{
public:
// ms - pointer to the structure that will be filled in with the memory status
void GCToOSInterface::GetMemoryStatus(uint32_t* memory_load, uint64_t* available_physical, uint64_t* available_page_file)
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- }
- CONTRACTL_END;
-
MEMORYSTATUSEX memStatus;
memStatus.dwLength = sizeof(MEMORYSTATUSEX);
#include "common.h"
#include "softwarewritewatch.h"
-#include "../inc/static_assert.h"
#include "gcenv.h"
#ifdef FEATURE_USE_SOFTWARE_WRITE_WATCH_FOR_GC_HEAP
#ifndef DACCESS_COMPILE
-static_assert_no_msg((static_cast<size_t>(1) << SOFTWARE_WRITE_WATCH_AddressToTableByteIndexShift) == OS_PAGE_SIZE);
+static_assert((static_cast<size_t>(1) << SOFTWARE_WRITE_WATCH_AddressToTableByteIndexShift) == OS_PAGE_SIZE, "Unexpected OS_PAGE_SIZE");
extern "C"
{
while (dirtyBytes != 0)
{
DWORD bitIndex;
- static_assert_no_msg(sizeof(size_t) <= 8);
+ static_assert(sizeof(size_t) <= 8, "Unexpected sizeof(size_t)");
if (sizeof(size_t) == 8)
{
BitScanForward64(&bitIndex, static_cast<DWORD64>(dirtyBytes));