diff options
author | Fadi Hanna <fadim@microsoft.com> | 2016-05-13 20:35:54 -0700 |
---|---|---|
committer | Fadi Hanna <fadim@microsoft.com> | 2016-05-13 20:35:54 -0700 |
commit | 97b4ff0b438261ba11b357008630076054a6f25d (patch) | |
tree | 320c32b25b556124cb354ab06a86c8f6ae806d98 /src/inc/corcompile.h | |
parent | 5b065284dc57bc3a9eaee9f86b0df258b1d3d7af (diff) | |
download | coreclr-97b4ff0b438261ba11b357008630076054a6f25d.tar.gz coreclr-97b4ff0b438261ba11b357008630076054a6f25d.tar.bz2 coreclr-97b4ff0b438261ba11b357008630076054a6f25d.zip |
Initial implementation of generic dictionary access for R2R. (#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.
Diffstat (limited to 'src/inc/corcompile.h')
-rw-r--r-- | src/inc/corcompile.h | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/inc/corcompile.h b/src/inc/corcompile.h index fd728212bc..0b87b3e253 100644 --- a/src/inc/corcompile.h +++ b/src/inc/corcompile.h @@ -683,11 +683,15 @@ enum CORCOMPILE_GCREFMAP_TOKENS // Tags for fixup blobs enum CORCOMPILE_FIXUP_BLOB_KIND { - ENCODE_NONE = 0, + ENCODE_NONE = 0, - ENCODE_MODULE_OVERRIDE = 0x80, /* When the high bit is set, override of the module immediately follows */ + ENCODE_MODULE_OVERRIDE = 0x80, /* When the high bit is set, override of the module immediately follows */ - ENCODE_TYPE_HANDLE = 0x10, /* Type handle */ + ENCODE_DICTIONARY_LOOKUP_THISOBJ = 0x07, + ENCODE_DICTIONARY_LOOKUP_TYPE = 0x08, + ENCODE_DICTIONARY_LOOKUP_METHOD = 0x09, + + ENCODE_TYPE_HANDLE = 0x10, /* Type handle */ ENCODE_METHOD_HANDLE, /* Method handle */ ENCODE_FIELD_HANDLE, /* Field handle */ @@ -728,7 +732,8 @@ enum CORCOMPILE_FIXUP_BLOB_KIND ENCODE_DELEGATE_CTOR, - ENCODE_MODULE_HANDLE = 0x50, /* Module token */ + + ENCODE_MODULE_HANDLE = 0x50, /* Module token */ ENCODE_STATIC_FIELD_ADDRESS, /* For accessing a static field */ ENCODE_MODULE_ID_FOR_STATICS, /* For accessing static fields */ ENCODE_MODULE_ID_FOR_GENERIC_STATICS, /* For accessing static fields */ |