[Local GC] Move operations on CLREventStatic to the EE interface (dotnet/coreclr...
authorSean Gillespie <sean@swgillespie.me>
Fri, 14 Apr 2017 16:51:10 +0000 (09:51 -0700)
committerGitHub <noreply@github.com>
Fri, 14 Apr 2017 16:51:10 +0000 (09:51 -0700)
commit7ad5804999874c4be1990b12251ce02410c37b1a
tree20d8bf69d31d0e6c825b90808b03e4eebc2cd41f
parentebe79e053634419f5c73c2b7e40ab1401788b403
[Local GC] Move operations on CLREventStatic to the EE interface (dotnet/coreclr#10813)

* [Local GC] Move operations on CLREventStatic to the EE and add their functionality to the interface

* Fix a missed case

* Split GetWaitForGCEvent into two smaller interface methods to avoid exposing the event itself on the interface

* Initial implementation for Unix

* Complete unix implementation

* Make it work on Windows

* Remove redudant methods from GCToEEInterface

* Fix the Linux build

* First part of code review feedback: make GCEvent dispatch statically (Windows)

* Second part of code review feedback: make GCEvent dispatch statically (Unix)

* Standardize implementation across Windows/Unix (apparently MSVC is more lenient about constructor names than clang)

* Address code review feedback: Add Create*Event methods back onto GCEvent and remove them from GCToOSInterface

* Address code review feedback: remove a dead define

* Remove a bad comment, remove an unnecessary friend class, fix some formatting issues

* Fix an issue when initializing a GCEvent on Linux (should not be allocating an Impl in the constructor)

* Fix the same issue on Windows (less bad, just leaks memory instead of asserting)

Commit migrated from https://github.com/dotnet/coreclr/commit/13812bfd0f6eda442c944f416e8c871b18d99e3f
15 files changed:
src/coreclr/src/gc/env/gcenv.os.h
src/coreclr/src/gc/gc.cpp
src/coreclr/src/gc/gcee.cpp
src/coreclr/src/gc/gcimpl.h
src/coreclr/src/gc/gcinterface.h
src/coreclr/src/gc/gcpriv.h
src/coreclr/src/gc/unix/CMakeLists.txt
src/coreclr/src/gc/unix/config.h.in
src/coreclr/src/gc/unix/configure.cmake
src/coreclr/src/gc/unix/events.cpp [new file with mode: 0644]
src/coreclr/src/gc/unix/gcenv.unix.cpp
src/coreclr/src/gc/unix/globals.h [new file with mode: 0644]
src/coreclr/src/gc/windows/gcenv.windows.cpp
src/coreclr/src/vm/gcenv.os.cpp
src/coreclr/src/vm/threadsuspend.cpp