summaryrefslogtreecommitdiff
path: root/src/gc/env/gcenv.sync.h
AgeCommit message (Collapse)AuthorFilesLines
2018-01-23[Local GC] FEATURE_EVENT_TRACE 1/n: Tracking Event State (#15873)Sean Gillespie1-0/+4
* [Local GC] FEATURE_EVENT_TRACE 1/n: Add infrastructure for keeping event state within the GC and plumbing to communicate event state changes * Code review feedback: use a load without a barrier in IsEnabled and put debug-only code under TRACE_GC_EVENT_STATE * Address code review feedback: add EventPipe callback and comments * Fix the non-FEATURE_PAL build * Fix an issue where the GC fails to react to ETW callbacks to occur before the GC is initialized (e.g. on startup when an ETW session is already active) * Simplify callback locking scheme * Add a separate callback for each EventPipe provider and funnel them all through a common handler * Fix non-FEATURE_PAL build
2016-07-09Fix exceptions in GC (#6192)Jan Vorlicek1-4/+5
The GC code in general doesn't expect exceptions to be thrown from functions it calls. However, the event creation functions were in fact throwing, so in case of OOM, exception would be thrown from various places of the code. This change creates non-throwing versions of the event creation functions and replaces all usages of the throwing ones in the GC. In addition, I've removed blocks with PAL_TRY that were under NO_CATCH_HANDLERS define and also added Object::SetAppDomainNoThrow, which allowed me to removed EX_TRY from GCHeap::StressHeap where the Object::SetAppDomain was called before.
2016-01-27Update license headersdotnet-bot1-4/+3
2015-12-24GC OS interface refactoringJan Vorlicek1-22/+9
This change replaces all calls of OS specific functions in the GC by a call to a platform agnostic interface. Critical sections were abstracted too. The logging file access was changed to use CRT functions instead of Windows specific APIs. A "size" member was added to the card_table_info so that we can pass the right size to the VirtualRelease method when destroying the card table. I have also fixed a bug in the gc_heap::make_card_table error path where when VirtualCommit failed, it called VirtualRelease with size that was not the reserved size, but the committed size. Other related changes - All interlocked operations moved to Interlocked class as static methods - Removed unused function prototypes - Shuffled stuff in the root CMakeLists.txt to enable building the GC sample using the settings inherited from the root CMakeLists.txt and to clean up some things that have rotted over time, like the FEATURE_xxx macros not being in one alphabetically ordered block - Fixed the VOLATILE_MEMORY_BARRIER macro in the gcenv.base.h - Replaced uint32_t thread id by EEThreadId - Removed thread handles storage (g_gc_thread) from the GC. The thread handle is closed right after the thread is launched. That allowed me to get rid of the GCThreadHandle - Renamed the methods of the EEThreadId to be easier to understand - Moved the gcenv.windows.cpp and gcenv.unix.cpp to the sample folder
2015-11-18Replace most windows style types by c++ typesJan Vorlicek1-3/+3
This change replaces DWORD, LONGLONG, ULONGLONG, SIZE_T, BYTE, LONG32 and few more by standard c++ types. The DWORD still remains present in signatures of Windows APIs used by the GC. There are few issues with those that need to get fixed.
2015-10-15Cleanup GC-EE InterfaceJan Kotas1-0/+158
- Add proper abstractions for threading methods to GCToEEInterface - Split sample gcenv into multiple files to avoid redundant content - Add handle table methods needed by .NET Native WinRT implementation Part of #1550