Add the runtime code versioning feature
authornoahfalk <noahfalk@microsoft.com>
Tue, 25 Jul 2017 00:38:30 +0000 (17:38 -0700)
committernoahfalk <noahfalk@microsoft.com>
Tue, 25 Jul 2017 00:38:30 +0000 (17:38 -0700)
commitfd1998903d5eef356f27c54e5a9d490711cbc9e7
treeb1d3d7ff1978483060a0f7c879b22006edd417b4
parent39cd3cfcb078154f9b595ae476f2c5fb7b445e18
Add the runtime code versioning feature

This makes tiered compilation work properly with profiler ReJIT, and positions the runtime to integrate other versioning related features together in the future. See the newly added code-versioning design-doc in this commit for more information.

Breaking changes for profilers: See code-versioning-profiler-breaking-changes.md for more details.
66 files changed:
Documentation/design-docs/code-versioning-ideal-tree-active.png [new file with mode: 0644]
Documentation/design-docs/code-versioning-ideal-tree-update.png [new file with mode: 0644]
Documentation/design-docs/code-versioning-ideal-tree.png [new file with mode: 0644]
Documentation/design-docs/code-versioning-profiler-breaking-changes.md [new file with mode: 0644]
Documentation/design-docs/code-versioning.md [new file with mode: 0644]
clr.coreclr.props
clr.defines.targets
clrdefinitions.cmake
crossgen.cmake
src/debug/daccess/dacdbiimpl.cpp
src/debug/daccess/dacdbiimpl.h
src/debug/daccess/request.cpp
src/debug/di/module.cpp
src/debug/di/rsfunction.cpp
src/debug/di/rspriv.h
src/debug/di/rsstackwalk.cpp
src/debug/inc/dacdbiinterface.h
src/debug/inc/dbgipcevents.h
src/inc/corhlpr.h
src/inc/corjit.h
src/inc/shash.h
src/jit/jitee.h
src/vm/CMakeLists.txt
src/vm/appdomain.cpp
src/vm/appdomain.hpp
src/vm/callcounter.cpp
src/vm/callcounter.h
src/vm/ceeload.cpp
src/vm/ceeload.h
src/vm/ceeload.inl
src/vm/classcompat.cpp
src/vm/codeversion.cpp [new file with mode: 0644]
src/vm/codeversion.h [new file with mode: 0644]
src/vm/crossgen/CMakeLists.txt
src/vm/crossgencompile.cpp
src/vm/crst.h
src/vm/dllimport.cpp
src/vm/eventtrace.cpp
src/vm/gccover.cpp
src/vm/i386/stublinkerx86.cpp
src/vm/ilinstrumentation.cpp [new file with mode: 0644]
src/vm/ilinstrumentation.h [new file with mode: 0644]
src/vm/interpreter.cpp
src/vm/interpreter.h
src/vm/jitinterface.cpp
src/vm/jitinterface.h
src/vm/listlock.cpp [deleted file]
src/vm/listlock.h
src/vm/listlock.inl [deleted file]
src/vm/loaderallocator.hpp
src/vm/memberload.cpp
src/vm/method.cpp
src/vm/method.hpp
src/vm/method.inl
src/vm/methodtable.cpp
src/vm/multicorejit.cpp
src/vm/multicorejit.h
src/vm/multicorejitplayer.cpp
src/vm/prestub.cpp
src/vm/profilingenumerators.cpp
src/vm/proftoeeinterfaceimpl.cpp
src/vm/rejit.cpp
src/vm/rejit.h
src/vm/rejit.inl
src/vm/tieredcompilation.cpp
src/vm/tieredcompilation.h