summaryrefslogtreecommitdiff
path: root/src/vm/zapsig.h
diff options
context:
space:
mode:
authorFadi Hanna <fadim@microsoft.com>2016-08-03 18:00:49 -0700
committerGitHub <noreply@github.com>2016-08-03 18:00:49 -0700
commit693fff99049bc7d63459b2c444237ca532036b47 (patch)
treeb6c9b7fdc517276f1480f6a9deb23c506ffc8fdd /src/vm/zapsig.h
parentd18ddfda61efdfe4521d2dce816fa01021bf26a8 (diff)
downloadcoreclr-693fff99049bc7d63459b2c444237ca532036b47.tar.gz
coreclr-693fff99049bc7d63459b2c444237ca532036b47.tar.bz2
coreclr-693fff99049bc7d63459b2c444237ca532036b47.zip
Adding Support for FieldDescSlot generic dictionary entries for R2R generic code. (#6200)
This enables generic code with ldtoken instructions for fields on generic types to be compiled into R2R. This change makes newer versions of the runtime compatible with older version R2R images, but not vice-versa. Therefore, the major version is increased to 2 with this change. This change adds more encodings to a R2R image without changing the format of any previously encoded entity, and is backwards compatible.
Diffstat (limited to 'src/vm/zapsig.h')
-rw-r--r--src/vm/zapsig.h62
1 files changed, 37 insertions, 25 deletions
diff --git a/src/vm/zapsig.h b/src/vm/zapsig.h
index ef837ad2d2..258e821aa8 100644
--- a/src/vm/zapsig.h
+++ b/src/vm/zapsig.h
@@ -154,28 +154,39 @@ public:
// fromModule is the module in which the type is defined.
// pBuffer contains the signature encoding for the type.
// level is the class load level (see classloadlevel.h) to which the type should be loaded
- static TypeHandle DecodeType(Module *referencingModule,
- Module *fromModule,
- PCCOR_SIGNATURE pBuffer,
- ClassLoadLevel level = CLASS_LOADED);
-
- static MethodDesc *DecodeMethod(Module *referencingModule,
- Module *fromModule,
- PCCOR_SIGNATURE pBuffer,
- TypeHandle * ppTH = NULL);
-
- static MethodDesc *DecodeMethod(Module *referencingModule,
- Module *fromModule,
- PCCOR_SIGNATURE pBuffer,
- SigTypeContext *pContext,
- TypeHandle * ppTH = NULL,
- PCCOR_SIGNATURE *ppOwnerTypeSpecWithVars = NULL,
- PCCOR_SIGNATURE *ppMethodSpecWithVars = NULL);
-
- static FieldDesc *DecodeField(Module *referencingModule,
- Module *fromModule,
- PCCOR_SIGNATURE pBuffer,
- TypeHandle * ppTH = NULL);
+ static TypeHandle DecodeType(
+ Module *referencingModule,
+ Module *fromModule,
+ PCCOR_SIGNATURE pBuffer,
+ ClassLoadLevel level = CLASS_LOADED);
+
+ static MethodDesc *DecodeMethod(
+ Module *referencingModule,
+ Module *fromModule,
+ PCCOR_SIGNATURE pBuffer,
+ TypeHandle *ppTH = NULL);
+
+ static MethodDesc *DecodeMethod(
+ Module *referencingModule,
+ Module *fromModule,
+ PCCOR_SIGNATURE pBuffer,
+ SigTypeContext *pContext,
+ TypeHandle *ppTH = NULL,
+ PCCOR_SIGNATURE *ppOwnerTypeSpecWithVars = NULL,
+ PCCOR_SIGNATURE *ppMethodSpecWithVars = NULL);
+
+ static FieldDesc *DecodeField(
+ Module *referencingModule,
+ Module *fromModule,
+ PCCOR_SIGNATURE pBuffer,
+ TypeHandle *ppTH = NULL);
+
+ static FieldDesc *DecodeField(
+ Module *pReferencingModule,
+ Module *pInfoModule,
+ PCCOR_SIGNATURE pBuffer,
+ SigTypeContext *pContext,
+ TypeHandle *ppTH = NULL);
static BOOL EncodeMethod(
MethodDesc *pMethod,
@@ -184,8 +195,8 @@ public:
LPVOID pReferencingModule,
ENCODEMODULE_CALLBACK pfnEncodeModule,
DEFINETOKEN_CALLBACK pfnDefineToken,
- CORINFO_RESOLVED_TOKEN * pResolvedToken = NULL,
- CORINFO_RESOLVED_TOKEN * pConstrainedResolvedToken = NULL,
+ CORINFO_RESOLVED_TOKEN *pResolvedToken = NULL,
+ CORINFO_RESOLVED_TOKEN *pConstrainedResolvedToken = NULL,
BOOL fEncodeUsingResolvedTokenSpecStreams = FALSE);
static void EncodeField(
@@ -194,7 +205,8 @@ public:
SigBuilder *pSigBuilder,
LPVOID pReferencingModule,
ENCODEMODULE_CALLBACK pfnEncodeModule,
- CORINFO_RESOLVED_TOKEN * pResolvedToken = NULL);
+ CORINFO_RESOLVED_TOKEN *pResolvedToken = NULL,
+ BOOL fEncodeUsingResolvedTokenSpecStreams = FALSE);
};