Initial implementation of generic dictionary access for R2R. (dotnet/coreclr#4519)
authorFadi Hanna <fadim@microsoft.com>
Sat, 14 May 2016 03:35:54 +0000 (20:35 -0700)
committerFadi Hanna <fadim@microsoft.com>
Sat, 14 May 2016 03:35:54 +0000 (20:35 -0700)
commit98d07cd3d4d6915767b219ed79da9d0af2fe1290
treebf6bbf083994a38f6b9ee30e8e91af5a2d3f07d4
parent276a3b060bc6262213631c79414afc778f1a1584
Initial implementation of generic dictionary access for R2R. (dotnet/coreclr#4519)

For now, only TypeHandle dictionary entry slots are supported and encoded in a R2R version resilient format (the rest to come soon).
Support is only limited for x64 Windows platforms (rest is still TODO)

The basic idea: each dictionary access is initally a call to a DynamicHelper R2R cell that computes the dictionary signature, and patches the R2R cell address with an assembly stub that performs the dictionary lookup.

Commit migrated from https://github.com/dotnet/coreclr/commit/97b4ff0b438261ba11b357008630076054a6f25d
19 files changed:
src/coreclr/src/inc/corcompile.h
src/coreclr/src/inc/corinfo.h
src/coreclr/src/inc/readytorun.h
src/coreclr/src/inc/readytorunhelpers.h
src/coreclr/src/jit/compiler.h
src/coreclr/src/jit/importer.cpp
src/coreclr/src/vm/amd64/cgenamd64.cpp
src/coreclr/src/vm/i386/cgenx86.cpp
src/coreclr/src/vm/jitinterface.cpp
src/coreclr/src/vm/jitinterface.h
src/coreclr/src/vm/prestub.cpp
src/coreclr/src/vm/readytoruninfo.h
src/coreclr/src/vm/zapsig.cpp
src/coreclr/src/zap/zapimage.cpp
src/coreclr/src/zap/zapimport.cpp
src/coreclr/src/zap/zapimport.h
src/coreclr/src/zap/zapinfo.cpp
src/coreclr/src/zap/zapinfo.h
src/coreclr/src/zap/zapreadytorun.cpp