summaryrefslogtreecommitdiff
path: root/src/inc/corcompile.h
diff options
context:
space:
mode:
authorFadi Hanna <fadim@microsoft.com>2016-05-13 20:35:54 -0700
committerFadi Hanna <fadim@microsoft.com>2016-05-13 20:35:54 -0700
commit97b4ff0b438261ba11b357008630076054a6f25d (patch)
tree320c32b25b556124cb354ab06a86c8f6ae806d98 /src/inc/corcompile.h
parent5b065284dc57bc3a9eaee9f86b0df258b1d3d7af (diff)
downloadcoreclr-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.h13
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 */