| 1 | // | 
|---|
| 2 | // Copyright (c) Microsoft. All rights reserved. | 
|---|
| 3 | // Licensed under the MIT license. See LICENSE file in the project root for full license information. | 
|---|
| 4 | // | 
|---|
| 5 |  | 
|---|
| 6 | //---------------------------------------------------------- | 
|---|
| 7 | // MethodContext.h - Primary structure to store all the EE-JIT details required to replay creation of a method | 
|---|
| 8 | //                   CompileResult contains the stuff generated by a compilation | 
|---|
| 9 | //---------------------------------------------------------- | 
|---|
| 10 | #ifndef _MethodContext | 
|---|
| 11 | #define _MethodContext | 
|---|
| 12 |  | 
|---|
| 13 | #include "runtimedetails.h" | 
|---|
| 14 | #include "compileresult.h" | 
|---|
| 15 | #include "lightweightmap.h" | 
|---|
| 16 | #include "errorhandling.h" | 
|---|
| 17 |  | 
|---|
| 18 | #define METHOD_IDENTITY_INFO_SIZE 0x10000 // We assume that the METHOD_IDENTITY_INFO_SIZE will not exceed 64KB | 
|---|
| 19 |  | 
|---|
| 20 | #define MD5_HASH_BYTE_SIZE 16   // MD5 is 128-bit, so we need 16 bytes to store it | 
|---|
| 21 | #define MD5_HASH_BUFFER_SIZE 33 // MD5 is 128-bit, so we need 32 chars + 1 char to store null-terminator | 
|---|
| 22 |  | 
|---|
| 23 | class MethodContext | 
|---|
| 24 | { | 
|---|
| 25 | public: | 
|---|
| 26 | #pragma pack(push, 1) | 
|---|
| 27 | struct Agnostic_CORINFO_SIG_INFO | 
|---|
| 28 | { | 
|---|
| 29 | DWORD     callConv; | 
|---|
| 30 | DWORDLONG retTypeClass; | 
|---|
| 31 | DWORDLONG retTypeSigClass; | 
|---|
| 32 | DWORD     retType; | 
|---|
| 33 | DWORD     flags; | 
|---|
| 34 | DWORD     numArgs; | 
|---|
| 35 | DWORD     sigInst_classInstCount; | 
|---|
| 36 | DWORD     sigInst_classInst_Index; | 
|---|
| 37 | DWORD     sigInst_methInstCount; | 
|---|
| 38 | DWORD     sigInst_methInst_Index; | 
|---|
| 39 | DWORDLONG args; | 
|---|
| 40 | DWORD     pSig_Index; | 
|---|
| 41 | DWORD     cbSig; | 
|---|
| 42 | DWORDLONG scope; | 
|---|
| 43 | DWORD     token; | 
|---|
| 44 | }; | 
|---|
| 45 | struct Agnostic_CORINFO_METHOD_INFO | 
|---|
| 46 | { | 
|---|
| 47 | DWORDLONG                 ftn; | 
|---|
| 48 | DWORDLONG                 scope; | 
|---|
| 49 | DWORD                     ILCode_offset; | 
|---|
| 50 | DWORD                     ILCodeSize; | 
|---|
| 51 | DWORD                     maxStack; | 
|---|
| 52 | DWORD                     EHcount; | 
|---|
| 53 | DWORD                     options; | 
|---|
| 54 | DWORD                     regionKind; | 
|---|
| 55 | Agnostic_CORINFO_SIG_INFO args; | 
|---|
| 56 | Agnostic_CORINFO_SIG_INFO locals; | 
|---|
| 57 | }; | 
|---|
| 58 | struct Agnostic_CompileMethod | 
|---|
| 59 | { | 
|---|
| 60 | Agnostic_CORINFO_METHOD_INFO info; | 
|---|
| 61 | DWORD                        flags; | 
|---|
| 62 | }; | 
|---|
| 63 | struct Agnostic_InitClass | 
|---|
| 64 | { | 
|---|
| 65 | DWORDLONG field; | 
|---|
| 66 | DWORDLONG method; | 
|---|
| 67 | DWORDLONG context; | 
|---|
| 68 | DWORD     speculative; | 
|---|
| 69 | }; | 
|---|
| 70 | struct DLDL | 
|---|
| 71 | { | 
|---|
| 72 | DWORDLONG A; | 
|---|
| 73 | DWORDLONG B; | 
|---|
| 74 | }; | 
|---|
| 75 | struct Agnostic_CanInline | 
|---|
| 76 | { | 
|---|
| 77 | DWORD Restrictions; | 
|---|
| 78 | DWORD result; | 
|---|
| 79 | DWORD exceptionCode; | 
|---|
| 80 | }; | 
|---|
| 81 | struct Agnostic_GetClassGClayout | 
|---|
| 82 | { | 
|---|
| 83 | DWORD gcPtrs_Index; | 
|---|
| 84 | DWORD len; | 
|---|
| 85 | DWORD valCount; | 
|---|
| 86 | }; | 
|---|
| 87 | struct DLD | 
|---|
| 88 | { | 
|---|
| 89 | DWORDLONG A; | 
|---|
| 90 | DWORD     B; | 
|---|
| 91 | }; | 
|---|
| 92 | struct DLDD | 
|---|
| 93 | { | 
|---|
| 94 | DWORDLONG A; | 
|---|
| 95 | DWORD     B; | 
|---|
| 96 | DWORD     C; | 
|---|
| 97 | }; | 
|---|
| 98 | struct Agnostic_CORINFO_METHODNAME_TOKENin | 
|---|
| 99 | { | 
|---|
| 100 | DWORDLONG ftn; | 
|---|
| 101 | DWORD     className; | 
|---|
| 102 | DWORD     namespaceName; | 
|---|
| 103 | DWORD     enclosingClassName; | 
|---|
| 104 | }; | 
|---|
| 105 | struct Agnostic_CORINFO_METHODNAME_TOKENout | 
|---|
| 106 | { | 
|---|
| 107 | DWORD methodName; | 
|---|
| 108 | DWORD className; | 
|---|
| 109 | DWORD namespaceName; | 
|---|
| 110 | DWORD enclosingClassName; | 
|---|
| 111 | }; | 
|---|
| 112 | struct Agnostic_CORINFO_RESOLVED_TOKENin | 
|---|
| 113 | { | 
|---|
| 114 | DWORDLONG tokenContext; | 
|---|
| 115 | DWORDLONG tokenScope; | 
|---|
| 116 | DWORD     token; | 
|---|
| 117 | DWORD     tokenType; | 
|---|
| 118 | }; | 
|---|
| 119 | struct Agnostic_CORINFO_RESOLVED_TOKENout | 
|---|
| 120 | { | 
|---|
| 121 | DWORDLONG hClass; | 
|---|
| 122 | DWORDLONG hMethod; | 
|---|
| 123 | DWORDLONG hField; | 
|---|
| 124 | DWORD     pTypeSpec_Index; | 
|---|
| 125 | DWORD     cbTypeSpec; | 
|---|
| 126 | DWORD     pMethodSpec_Index; | 
|---|
| 127 | DWORD     cbMethodSpec; | 
|---|
| 128 | }; | 
|---|
| 129 | struct GetArgTypeValue | 
|---|
| 130 | { | 
|---|
| 131 | DWORD     flags; | 
|---|
| 132 | DWORD     numArgs; | 
|---|
| 133 | DWORD     sigInst_classInstCount; | 
|---|
| 134 | DWORD     sigInst_classInst_Index; | 
|---|
| 135 | DWORD     sigInst_methInstCount; | 
|---|
| 136 | DWORD     sigInst_methInst_Index; | 
|---|
| 137 | DWORDLONG scope; | 
|---|
| 138 | DWORDLONG args; | 
|---|
| 139 | }; | 
|---|
| 140 | struct GetArgClassValue | 
|---|
| 141 | { | 
|---|
| 142 | DWORD     sigInst_classInstCount; | 
|---|
| 143 | DWORD     sigInst_classInst_Index; | 
|---|
| 144 | DWORD     sigInst_methInstCount; | 
|---|
| 145 | DWORD     sigInst_methInst_Index; | 
|---|
| 146 | DWORDLONG scope; | 
|---|
| 147 | DWORDLONG args; | 
|---|
| 148 | }; | 
|---|
| 149 | struct Agnostic_GetBoundaries | 
|---|
| 150 | { | 
|---|
| 151 | DWORD cILOffsets; | 
|---|
| 152 | DWORD pILOffset_offset; | 
|---|
| 153 | DWORD implicitBoundaries; | 
|---|
| 154 | }; | 
|---|
| 155 | struct Agnostic_CORINFO_EE_INFO | 
|---|
| 156 | { | 
|---|
| 157 | struct Agnostic_InlinedCallFrameInfo | 
|---|
| 158 | { | 
|---|
| 159 | DWORD size; | 
|---|
| 160 | DWORD offsetOfGSCookie; | 
|---|
| 161 | DWORD offsetOfFrameVptr; | 
|---|
| 162 | DWORD offsetOfFrameLink; | 
|---|
| 163 | DWORD offsetOfCallSiteSP; | 
|---|
| 164 | DWORD offsetOfCalleeSavedFP; | 
|---|
| 165 | DWORD offsetOfCallTarget; | 
|---|
| 166 | DWORD offsetOfReturnAddress; | 
|---|
| 167 | } inlinedCallFrameInfo; | 
|---|
| 168 | DWORD offsetOfThreadFrame; | 
|---|
| 169 | DWORD offsetOfGCState; | 
|---|
| 170 | DWORD offsetOfDelegateInstance; | 
|---|
| 171 | DWORD offsetOfDelegateFirstTarget; | 
|---|
| 172 | DWORD offsetOfSecureDelegateIndirectCell; | 
|---|
| 173 | DWORD offsetOfTransparentProxyRP; | 
|---|
| 174 | DWORD offsetOfRealProxyServer; | 
|---|
| 175 | DWORD offsetOfObjArrayData; | 
|---|
| 176 | DWORD sizeOfReversePInvokeFrame; | 
|---|
| 177 | DWORD osPageSize; | 
|---|
| 178 | DWORD maxUncheckedOffsetForNullObject; | 
|---|
| 179 | DWORD targetAbi; | 
|---|
| 180 | DWORD osType; | 
|---|
| 181 | DWORD osMajor; | 
|---|
| 182 | DWORD osMinor; | 
|---|
| 183 | DWORD osBuild; | 
|---|
| 184 | }; | 
|---|
| 185 | struct Agnostic_GetFieldAddress | 
|---|
| 186 | { | 
|---|
| 187 | DWORDLONG ppIndirection; | 
|---|
| 188 | DWORDLONG fieldAddress; | 
|---|
| 189 | DWORD     fieldValue; | 
|---|
| 190 | }; | 
|---|
| 191 | struct Agnostic_GetStaticFieldCurrentClass | 
|---|
| 192 | { | 
|---|
| 193 | DWORDLONG classHandle; | 
|---|
| 194 | bool      isSpeculative; | 
|---|
| 195 | }; | 
|---|
| 196 | struct Agnostic_CORINFO_RESOLVED_TOKEN | 
|---|
| 197 | { | 
|---|
| 198 | Agnostic_CORINFO_RESOLVED_TOKENin inValue; | 
|---|
| 199 |  | 
|---|
| 200 | Agnostic_CORINFO_RESOLVED_TOKENout outValue; | 
|---|
| 201 | }; | 
|---|
| 202 | struct Agnostic_GetFieldInfo | 
|---|
| 203 | { | 
|---|
| 204 | Agnostic_CORINFO_RESOLVED_TOKEN ResolvedToken; | 
|---|
| 205 | DWORDLONG                       callerHandle; | 
|---|
| 206 | DWORD                           flags; | 
|---|
| 207 | }; | 
|---|
| 208 | struct Agnostic_CORINFO_HELPER_ARG | 
|---|
| 209 | { | 
|---|
| 210 | DWORDLONG constant; // one view of a large union of ptr size | 
|---|
| 211 | DWORD     argType; | 
|---|
| 212 | }; | 
|---|
| 213 | struct Agnostic_CORINFO_HELPER_DESC | 
|---|
| 214 | { | 
|---|
| 215 | DWORD                       helperNum; | 
|---|
| 216 | DWORD                       numArgs; | 
|---|
| 217 | Agnostic_CORINFO_HELPER_ARG args[CORINFO_ACCESS_ALLOWED_MAX_ARGS]; | 
|---|
| 218 | }; | 
|---|
| 219 | struct Agnostic_CORINFO_CONST_LOOKUP | 
|---|
| 220 | { | 
|---|
| 221 | DWORD     accessType; | 
|---|
| 222 | DWORDLONG handle; // actually a union of two pointer sized things | 
|---|
| 223 | }; | 
|---|
| 224 | struct Agnostic_CORINFO_LOOKUP_KIND | 
|---|
| 225 | { | 
|---|
| 226 | DWORD needsRuntimeLookup; | 
|---|
| 227 | DWORD runtimeLookupKind; | 
|---|
| 228 | WORD  runtimeLookupFlags; | 
|---|
| 229 | }; | 
|---|
| 230 | struct Agnostic_CORINFO_RUNTIME_LOOKUP | 
|---|
| 231 | { | 
|---|
| 232 | DWORDLONG signature; | 
|---|
| 233 | DWORD     helper; | 
|---|
| 234 | DWORD     indirections; | 
|---|
| 235 | DWORD     testForNull; | 
|---|
| 236 | DWORD     testForFixup; | 
|---|
| 237 | DWORDLONG offsets[CORINFO_MAXINDIRECTIONS]; | 
|---|
| 238 | DWORD     indirectFirstOffset; | 
|---|
| 239 | DWORD     indirectSecondOffset; | 
|---|
| 240 | }; | 
|---|
| 241 | struct Agnostic_CORINFO_LOOKUP | 
|---|
| 242 | { | 
|---|
| 243 | Agnostic_CORINFO_LOOKUP_KIND    lookupKind; | 
|---|
| 244 | Agnostic_CORINFO_RUNTIME_LOOKUP runtimeLookup; // This and constLookup actually a union, but with different | 
|---|
| 245 | // layouts.. :-| copy the right one based on lookupKinds value | 
|---|
| 246 | Agnostic_CORINFO_CONST_LOOKUP constLookup; | 
|---|
| 247 | }; | 
|---|
| 248 | struct Agnostic_CORINFO_FIELD_INFO | 
|---|
| 249 | { | 
|---|
| 250 | DWORD                         fieldAccessor; | 
|---|
| 251 | DWORD                         fieldFlags; | 
|---|
| 252 | DWORD                         helper; | 
|---|
| 253 | DWORD                         offset; | 
|---|
| 254 | DWORD                         fieldType; | 
|---|
| 255 | DWORDLONG                     structType; | 
|---|
| 256 | DWORD                         accessAllowed; | 
|---|
| 257 | Agnostic_CORINFO_HELPER_DESC  accessCalloutHelper; | 
|---|
| 258 | Agnostic_CORINFO_CONST_LOOKUP fieldLookup; | 
|---|
| 259 | }; | 
|---|
| 260 | struct DD | 
|---|
| 261 | { | 
|---|
| 262 | DWORD A; | 
|---|
| 263 | DWORD B; | 
|---|
| 264 | }; | 
|---|
| 265 | struct DDD | 
|---|
| 266 | { | 
|---|
| 267 | DWORD A; | 
|---|
| 268 | DWORD B; | 
|---|
| 269 | DWORD C; | 
|---|
| 270 | }; | 
|---|
| 271 | struct Agnostic_CanTailCall | 
|---|
| 272 | { | 
|---|
| 273 | DWORDLONG callerHnd; | 
|---|
| 274 | DWORDLONG declaredCalleeHnd; | 
|---|
| 275 | DWORDLONG exactCalleeHnd; | 
|---|
| 276 | WORD      fIsTailPrefix; | 
|---|
| 277 | }; | 
|---|
| 278 | struct Agnostic_Environment | 
|---|
| 279 | { | 
|---|
| 280 | DWORD name_index; | 
|---|
| 281 | ; | 
|---|
| 282 | DWORD val_index; | 
|---|
| 283 | }; | 
|---|
| 284 | struct Agnostic_GetCallInfo | 
|---|
| 285 | { | 
|---|
| 286 | Agnostic_CORINFO_RESOLVED_TOKEN ResolvedToken; | 
|---|
| 287 | Agnostic_CORINFO_RESOLVED_TOKEN ConstrainedResolvedToken; | 
|---|
| 288 | DWORDLONG                       callerHandle; | 
|---|
| 289 | DWORD                           flags; | 
|---|
| 290 | }; | 
|---|
| 291 |  | 
|---|
| 292 | struct Agnostic_CORINFO_CALL_INFO | 
|---|
| 293 | { | 
|---|
| 294 | DWORDLONG                     hMethod; | 
|---|
| 295 | DWORD                         methodFlags; | 
|---|
| 296 | DWORD                         classFlags; | 
|---|
| 297 | Agnostic_CORINFO_SIG_INFO     sig; | 
|---|
| 298 | DWORD                         verMethodFlags; | 
|---|
| 299 | Agnostic_CORINFO_SIG_INFO     verSig; | 
|---|
| 300 | DWORD                         accessAllowed; | 
|---|
| 301 | Agnostic_CORINFO_HELPER_DESC  callsiteCalloutHelper; | 
|---|
| 302 | DWORD                         thisTransform; | 
|---|
| 303 | DWORD                         kind; | 
|---|
| 304 | DWORD                         nullInstanceCheck; | 
|---|
| 305 | DWORDLONG                     contextHandle; | 
|---|
| 306 | DWORD                         exactContextNeedsRuntimeLookup; | 
|---|
| 307 | Agnostic_CORINFO_LOOKUP       stubLookup; // first view of union.  others are matching or subordinate | 
|---|
| 308 | Agnostic_CORINFO_CONST_LOOKUP instParamLookup; | 
|---|
| 309 | DWORD                         secureDelegateInvoke; | 
|---|
| 310 | DWORD                         exceptionCode; | 
|---|
| 311 | }; | 
|---|
| 312 | struct Agnostic_GetMethodInfo | 
|---|
| 313 | { | 
|---|
| 314 | Agnostic_CORINFO_METHOD_INFO info; | 
|---|
| 315 | bool                         result; | 
|---|
| 316 | DWORD                        exceptionCode; | 
|---|
| 317 | }; | 
|---|
| 318 | struct Agnostic_FindSig | 
|---|
| 319 | { | 
|---|
| 320 | DWORDLONG module; | 
|---|
| 321 | DWORD     sigTOK; | 
|---|
| 322 | DWORDLONG context; | 
|---|
| 323 | }; | 
|---|
| 324 | struct PInvokeMarshalingRequiredValue | 
|---|
| 325 | { | 
|---|
| 326 | DWORDLONG method; | 
|---|
| 327 | DWORD     pSig_Index; | 
|---|
| 328 | DWORD     cbSig; | 
|---|
| 329 | DWORDLONG scope; | 
|---|
| 330 | }; | 
|---|
| 331 | struct Agnostic_CORINFO_EH_CLAUSE | 
|---|
| 332 | { | 
|---|
| 333 | DWORD Flags; | 
|---|
| 334 | DWORD TryOffset; | 
|---|
| 335 | DWORD TryLength; | 
|---|
| 336 | DWORD HandlerOffset; | 
|---|
| 337 | DWORD HandlerLength; | 
|---|
| 338 | DWORD ClassToken; // first view of a two dword union | 
|---|
| 339 | }; | 
|---|
| 340 | struct Agnostic_GetVars | 
|---|
| 341 | { | 
|---|
| 342 | DWORD cVars; | 
|---|
| 343 | DWORD vars_offset; | 
|---|
| 344 | DWORD extendOthers; | 
|---|
| 345 | }; | 
|---|
| 346 | struct Agnostic_CanAccessClassIn | 
|---|
| 347 | { | 
|---|
| 348 | Agnostic_CORINFO_RESOLVED_TOKEN ResolvedToken; | 
|---|
| 349 | DWORDLONG                       callerHandle; | 
|---|
| 350 | }; | 
|---|
| 351 | struct Agnostic_CanAccessClassOut | 
|---|
| 352 | { | 
|---|
| 353 | Agnostic_CORINFO_HELPER_DESC AccessHelper; | 
|---|
| 354 | DWORD                        result; | 
|---|
| 355 | }; | 
|---|
| 356 | struct Agnostic_AppendClassName | 
|---|
| 357 | { | 
|---|
| 358 | DWORDLONG classHandle; | 
|---|
| 359 | DWORD     fNamespace; | 
|---|
| 360 | DWORD     fFullInst; | 
|---|
| 361 | DWORD     fAssembly; | 
|---|
| 362 | }; | 
|---|
| 363 | struct Agnostic_CheckMethodModifier | 
|---|
| 364 | { | 
|---|
| 365 | DWORDLONG hMethod; | 
|---|
| 366 | DWORD     modifier; | 
|---|
| 367 | DWORD     fOptional; | 
|---|
| 368 | }; | 
|---|
| 369 | struct Agnostic_EmbedGenericHandle | 
|---|
| 370 | { | 
|---|
| 371 | Agnostic_CORINFO_RESOLVED_TOKEN ResolvedToken; | 
|---|
| 372 | DWORD                           fEmbedParent; | 
|---|
| 373 | }; | 
|---|
| 374 | struct Agnostic_CORINFO_GENERICHANDLE_RESULT | 
|---|
| 375 | { | 
|---|
| 376 |  | 
|---|
| 377 | Agnostic_CORINFO_LOOKUP lookup; | 
|---|
| 378 | DWORDLONG               compileTimeHandle; | 
|---|
| 379 | DWORD                   handleType; | 
|---|
| 380 | }; | 
|---|
| 381 | struct Agnostic_GetDelegateCtorIn | 
|---|
| 382 | { | 
|---|
| 383 | DWORDLONG methHnd; | 
|---|
| 384 | DWORDLONG clsHnd; | 
|---|
| 385 | DWORDLONG targetMethodHnd; | 
|---|
| 386 | }; | 
|---|
| 387 | struct Agnostic_DelegateCtorArgs | 
|---|
| 388 | { | 
|---|
| 389 | DWORDLONG pMethod; | 
|---|
| 390 | DWORDLONG pArg3; | 
|---|
| 391 | DWORDLONG pArg4; | 
|---|
| 392 | DWORDLONG pArg5; | 
|---|
| 393 | }; | 
|---|
| 394 | struct Agnostic_GetDelegateCtorOut | 
|---|
| 395 | { | 
|---|
| 396 | Agnostic_DelegateCtorArgs CtorData; | 
|---|
| 397 | DWORDLONG                 result; | 
|---|
| 398 | }; | 
|---|
| 399 | struct Agnostic_FindCallSiteSig | 
|---|
| 400 | { | 
|---|
| 401 | DWORDLONG module; | 
|---|
| 402 | DWORD     methTok; | 
|---|
| 403 | DWORDLONG context; | 
|---|
| 404 | }; | 
|---|
| 405 | struct Agnostic_GetNewHelper | 
|---|
| 406 | { | 
|---|
| 407 | DWORDLONG hClass; | 
|---|
| 408 | DWORDLONG callerHandle; | 
|---|
| 409 | }; | 
|---|
| 410 | struct Agnostic_GetCastingHelper | 
|---|
| 411 | { | 
|---|
| 412 | DWORDLONG hClass; | 
|---|
| 413 | DWORD     fThrowing; | 
|---|
| 414 | }; | 
|---|
| 415 | struct Agnostic_GetClassModuleIdForStatics | 
|---|
| 416 | { | 
|---|
| 417 | DWORDLONG Module; | 
|---|
| 418 | DWORDLONG pIndirection; | 
|---|
| 419 | DWORDLONG result; | 
|---|
| 420 | }; | 
|---|
| 421 | struct Agnostic_IsCompatibleDelegate | 
|---|
| 422 | { | 
|---|
| 423 | DWORDLONG objCls; | 
|---|
| 424 | DWORDLONG methodParentCls; | 
|---|
| 425 | DWORDLONG method; | 
|---|
| 426 | DWORDLONG delegateCls; | 
|---|
| 427 | }; | 
|---|
| 428 | struct Agnostic_GetBBProfileData | 
|---|
| 429 | { | 
|---|
| 430 | DWORD count; | 
|---|
| 431 | DWORD profileBuffer_index; | 
|---|
| 432 | DWORD numRuns; | 
|---|
| 433 | DWORD result; | 
|---|
| 434 | }; | 
|---|
| 435 | struct Agnostic_GetProfilingHandle | 
|---|
| 436 | { | 
|---|
| 437 | DWORD     bHookFunction; | 
|---|
| 438 | DWORDLONG ProfilerHandle; | 
|---|
| 439 | DWORD     bIndirectedHandles; | 
|---|
| 440 | }; | 
|---|
| 441 | struct Agnostic_GetTailCallCopyArgsThunk | 
|---|
| 442 | { | 
|---|
| 443 | Agnostic_CORINFO_SIG_INFO Sig; | 
|---|
| 444 | DWORD                     flags; | 
|---|
| 445 | }; | 
|---|
| 446 | struct Agnostic_GetArgClass_Value | 
|---|
| 447 | { | 
|---|
| 448 | DWORDLONG result; | 
|---|
| 449 | DWORD     exceptionCode; | 
|---|
| 450 | }; | 
|---|
| 451 | struct Agnostic_GetArgType_Value | 
|---|
| 452 | { | 
|---|
| 453 | DWORDLONG vcTypeRet; | 
|---|
| 454 | DWORD     result; | 
|---|
| 455 | DWORD     exceptionCode; | 
|---|
| 456 | }; | 
|---|
| 457 |  | 
|---|
| 458 | // Agnostic_ConfigIntInfo combines as a single key the name | 
|---|
| 459 | // and defaultValue of a integer config query. | 
|---|
| 460 | // Note: nameIndex is treated as a DWORD index to the name string. | 
|---|
| 461 | struct Agnostic_ConfigIntInfo | 
|---|
| 462 | { | 
|---|
| 463 | DWORD nameIndex; | 
|---|
| 464 | DWORD defaultValue; | 
|---|
| 465 | }; | 
|---|
| 466 |  | 
|---|
| 467 | // SYSTEMV_AMD64_CORINFO_STRUCT_REG_PASSING_DESCRIPTOR | 
|---|
| 468 | struct Agnostic_GetSystemVAmd64PassStructInRegisterDescriptor | 
|---|
| 469 | { | 
|---|
| 470 | DWORD passedInRegisters; // Whether the struct is passable/passed (this includes struct returning) in registers. | 
|---|
| 471 | DWORD eightByteCount;    // Number of eightbytes for this struct. | 
|---|
| 472 | DWORD eightByteClassifications[CLR_SYSTEMV_MAX_EIGHTBYTES_COUNT_TO_PASS_IN_REGISTERS]; // The eightbytes type | 
|---|
| 473 | // classification. | 
|---|
| 474 | DWORD eightByteSizes[CLR_SYSTEMV_MAX_EIGHTBYTES_COUNT_TO_PASS_IN_REGISTERS]; // The size of the eightbytes (an | 
|---|
| 475 | // eightbyte could include padding. | 
|---|
| 476 | // This represents the no padding | 
|---|
| 477 | // size of the eightbyte). | 
|---|
| 478 | DWORD eightByteOffsets[CLR_SYSTEMV_MAX_EIGHTBYTES_COUNT_TO_PASS_IN_REGISTERS]; // The start offset of the | 
|---|
| 479 | // eightbytes (in bytes). | 
|---|
| 480 | DWORD result; | 
|---|
| 481 | }; | 
|---|
| 482 |  | 
|---|
| 483 | struct Agnostic_ResolveVirtualMethod | 
|---|
| 484 | { | 
|---|
| 485 | DWORDLONG virtualMethod; | 
|---|
| 486 | DWORDLONG implementingClass; | 
|---|
| 487 | DWORDLONG ownerType; | 
|---|
| 488 | }; | 
|---|
| 489 |  | 
|---|
| 490 | struct ResolveTokenValue | 
|---|
| 491 | { | 
|---|
| 492 | Agnostic_CORINFO_RESOLVED_TOKENout tokenOut; | 
|---|
| 493 | DWORD                              exceptionCode; | 
|---|
| 494 | }; | 
|---|
| 495 |  | 
|---|
| 496 | struct TryResolveTokenValue | 
|---|
| 497 | { | 
|---|
| 498 | Agnostic_CORINFO_RESOLVED_TOKENout tokenOut; | 
|---|
| 499 | DWORD                              success; | 
|---|
| 500 | }; | 
|---|
| 501 |  | 
|---|
| 502 | struct GetTokenTypeAsHandleValue | 
|---|
| 503 | { | 
|---|
| 504 | DWORDLONG hMethod; | 
|---|
| 505 | DWORDLONG hField; | 
|---|
| 506 | }; | 
|---|
| 507 |  | 
|---|
| 508 | struct GetVarArgsHandleValue | 
|---|
| 509 | { | 
|---|
| 510 | DWORD     cbSig; | 
|---|
| 511 | DWORD     pSig_Index; | 
|---|
| 512 | DWORDLONG scope; | 
|---|
| 513 | DWORD     token; | 
|---|
| 514 | }; | 
|---|
| 515 |  | 
|---|
| 516 | struct CanGetVarArgsHandleValue | 
|---|
| 517 | { | 
|---|
| 518 | DWORDLONG scope; | 
|---|
| 519 | DWORD     token; | 
|---|
| 520 | }; | 
|---|
| 521 |  | 
|---|
| 522 | struct GetCookieForPInvokeCalliSigValue | 
|---|
| 523 | { | 
|---|
| 524 | DWORD     cbSig; | 
|---|
| 525 | DWORD     pSig_Index; | 
|---|
| 526 | DWORDLONG scope; | 
|---|
| 527 | DWORD     token; | 
|---|
| 528 | }; | 
|---|
| 529 |  | 
|---|
| 530 | struct CanGetCookieForPInvokeCalliSigValue | 
|---|
| 531 | { | 
|---|
| 532 | DWORDLONG scope; | 
|---|
| 533 | DWORD     token; | 
|---|
| 534 | }; | 
|---|
| 535 |  | 
|---|
| 536 | struct GetReadyToRunHelper_TOKENin | 
|---|
| 537 | { | 
|---|
| 538 | Agnostic_CORINFO_RESOLVED_TOKEN ResolvedToken; | 
|---|
| 539 | Agnostic_CORINFO_LOOKUP_KIND    GenericLookupKind; | 
|---|
| 540 | DWORD                           id; | 
|---|
| 541 | }; | 
|---|
| 542 |  | 
|---|
| 543 | struct GetReadyToRunHelper_TOKENout | 
|---|
| 544 | { | 
|---|
| 545 | Agnostic_CORINFO_CONST_LOOKUP Lookup; | 
|---|
| 546 | bool                          result; | 
|---|
| 547 | }; | 
|---|
| 548 |  | 
|---|
| 549 | struct GetReadyToRunDelegateCtorHelper_TOKENIn | 
|---|
| 550 | { | 
|---|
| 551 | Agnostic_CORINFO_RESOLVED_TOKEN TargetMethod; | 
|---|
| 552 | DWORDLONG                       delegateType; | 
|---|
| 553 | }; | 
|---|
| 554 |  | 
|---|
| 555 | #pragma pack(pop) | 
|---|
| 556 |  | 
|---|
| 557 | MethodContext(); | 
|---|
| 558 |  | 
|---|
| 559 | private: | 
|---|
| 560 | MethodContext(HANDLE hFile); | 
|---|
| 561 | MethodContext(unsigned char* buff, unsigned int totalLen); | 
|---|
| 562 |  | 
|---|
| 563 | void MethodInitHelper(unsigned char* buff, unsigned int totalLen); | 
|---|
| 564 | void MethodInitHelperFile(HANDLE hFile); | 
|---|
| 565 |  | 
|---|
| 566 | bool Initialize(int loadedCount, unsigned char* buff, DWORD size); | 
|---|
| 567 | bool Initialize(int loadedCount, HANDLE hFile); | 
|---|
| 568 |  | 
|---|
| 569 | int dumpMD5HashToBuffer(BYTE* pBuffer, int bufLen, char* buff, int len); | 
|---|
| 570 |  | 
|---|
| 571 | public: | 
|---|
| 572 | static bool Initialize(int loadedCount, unsigned char* buff, DWORD size, /* OUT */ MethodContext** ppmc); | 
|---|
| 573 | static bool Initialize(int loadedCount, HANDLE hFile, /* OUT */ MethodContext** ppmc); | 
|---|
| 574 | ~MethodContext(); | 
|---|
| 575 | void Destroy(); | 
|---|
| 576 |  | 
|---|
| 577 | bool Equal(MethodContext* other); | 
|---|
| 578 | unsigned int saveToFile(HANDLE hFile); | 
|---|
| 579 | unsigned int calculateFileSize(); | 
|---|
| 580 | unsigned int calculateRawFileSize(); | 
|---|
| 581 | void dumpToConsole(int mcNumber = -1); // if mcNumber is not -1, display the method context number before the dumped | 
|---|
| 582 | // info | 
|---|
| 583 | int dumpStatToBuffer(char* buff, int len); | 
|---|
| 584 | static int dumpStatTitleToBuffer(char* buff, int len); | 
|---|
| 585 | int methodSize; | 
|---|
| 586 |  | 
|---|
| 587 | int dumpMethodIdentityInfoToBuffer(char* buff, int len); | 
|---|
| 588 | int dumpMethodMD5HashToBuffer(char* buff, int len); | 
|---|
| 589 |  | 
|---|
| 590 | void recGlobalContext(const MethodContext& other); | 
|---|
| 591 |  | 
|---|
| 592 | void dmpEnvironment(DWORD key, const Agnostic_Environment& value); | 
|---|
| 593 |  | 
|---|
| 594 | void recCompileMethod(CORINFO_METHOD_INFO* info, unsigned flags); | 
|---|
| 595 | void dmpCompileMethod(DWORD key, const Agnostic_CompileMethod& value); | 
|---|
| 596 | void repCompileMethod(CORINFO_METHOD_INFO* info, unsigned* flags); | 
|---|
| 597 |  | 
|---|
| 598 | void recGetMethodClass(CORINFO_METHOD_HANDLE methodHandle, CORINFO_CLASS_HANDLE classHandle); | 
|---|
| 599 | void dmpGetMethodClass(DWORDLONG key, DWORDLONG value); | 
|---|
| 600 | CORINFO_CLASS_HANDLE repGetMethodClass(CORINFO_METHOD_HANDLE methodHandle); | 
|---|
| 601 |  | 
|---|
| 602 | void recGetClassAttribs(CORINFO_CLASS_HANDLE classHandle, DWORD attribs); | 
|---|
| 603 | void dmpGetClassAttribs(DWORDLONG key, DWORD value); | 
|---|
| 604 | DWORD repGetClassAttribs(CORINFO_CLASS_HANDLE classHandle); | 
|---|
| 605 |  | 
|---|
| 606 | void recGetMethodAttribs(CORINFO_METHOD_HANDLE methodHandle, DWORD attribs); | 
|---|
| 607 | void dmpGetMethodAttribs(DWORDLONG key, DWORD value); | 
|---|
| 608 | DWORD repGetMethodAttribs(CORINFO_METHOD_HANDLE methodHandle); | 
|---|
| 609 |  | 
|---|
| 610 | void recGetVars(CORINFO_METHOD_HANDLE ftn, ULONG32* cVars, ICorDebugInfo::ILVarInfo** vars, bool* extendOthers); | 
|---|
| 611 | void dmpGetVars(DWORDLONG key, const Agnostic_GetVars& value); | 
|---|
| 612 | void repGetVars(CORINFO_METHOD_HANDLE ftn, ULONG32* cVars, ICorDebugInfo::ILVarInfo** vars, bool* extendOthers); | 
|---|
| 613 |  | 
|---|
| 614 | void recGetBoundaries(CORINFO_METHOD_HANDLE         ftn, | 
|---|
| 615 | unsigned int*                 cILOffsets, | 
|---|
| 616 | DWORD**                       pILOffsets, | 
|---|
| 617 | ICorDebugInfo::BoundaryTypes* implictBoundaries); | 
|---|
| 618 | void dmpGetBoundaries(DWORDLONG key, const Agnostic_GetBoundaries& value); | 
|---|
| 619 | void repGetBoundaries(CORINFO_METHOD_HANDLE         ftn, | 
|---|
| 620 | unsigned int*                 cILOffsets, | 
|---|
| 621 | DWORD**                       pILOffsets, | 
|---|
| 622 | ICorDebugInfo::BoundaryTypes* implictBoundaries); | 
|---|
| 623 |  | 
|---|
| 624 | void recInitClass(CORINFO_FIELD_HANDLE   field, | 
|---|
| 625 | CORINFO_METHOD_HANDLE  method, | 
|---|
| 626 | CORINFO_CONTEXT_HANDLE context, | 
|---|
| 627 | BOOL                   speculative, | 
|---|
| 628 | CorInfoInitClassResult result); | 
|---|
| 629 | void dmpInitClass(const Agnostic_InitClass& key, DWORD value); | 
|---|
| 630 | CorInfoInitClassResult repInitClass(CORINFO_FIELD_HANDLE   field, | 
|---|
| 631 | CORINFO_METHOD_HANDLE  method, | 
|---|
| 632 | CORINFO_CONTEXT_HANDLE context, | 
|---|
| 633 | BOOL                   speculative); | 
|---|
| 634 |  | 
|---|
| 635 | void recGetMethodName(CORINFO_METHOD_HANDLE ftn, char* methodname, const char** moduleName); | 
|---|
| 636 | void dmpGetMethodName(DLD key, DD value); | 
|---|
| 637 | const char* repGetMethodName(CORINFO_METHOD_HANDLE ftn, const char** moduleName); | 
|---|
| 638 |  | 
|---|
| 639 | void recGetMethodNameFromMetadata(CORINFO_METHOD_HANDLE ftn, | 
|---|
| 640 | char*                 methodname, | 
|---|
| 641 | const char**          moduleName, | 
|---|
| 642 | const char**          namespaceName, | 
|---|
| 643 | const char**          enclosingClassName); | 
|---|
| 644 | void dmpGetMethodNameFromMetadata(Agnostic_CORINFO_METHODNAME_TOKENin key, Agnostic_CORINFO_METHODNAME_TOKENout value); | 
|---|
| 645 | const char* repGetMethodNameFromMetadata(CORINFO_METHOD_HANDLE ftn, | 
|---|
| 646 | const char**          className, | 
|---|
| 647 | const char**          namespaceName, | 
|---|
| 648 | const char**          enclosingClassName); | 
|---|
| 649 |  | 
|---|
| 650 | void recGetJitFlags(CORJIT_FLAGS* jitFlags, DWORD sizeInBytes, DWORD result); | 
|---|
| 651 | void dmpGetJitFlags(DWORD key, DD value); | 
|---|
| 652 | DWORD repGetJitFlags(CORJIT_FLAGS* jitFlags, DWORD sizeInBytes); | 
|---|
| 653 |  | 
|---|
| 654 | void recGetJitTimeLogFilename(LPCWSTR tempFileName); | 
|---|
| 655 | void dmpGetJitTimeLogFilename(DWORD key, DWORD value); | 
|---|
| 656 | LPCWSTR repGetJitTimeLogFilename(); | 
|---|
| 657 |  | 
|---|
| 658 | void recCanInline(CORINFO_METHOD_HANDLE callerHnd, | 
|---|
| 659 | CORINFO_METHOD_HANDLE calleeHnd, | 
|---|
| 660 | DWORD*                pRestrictions, | 
|---|
| 661 | CorInfoInline         response, | 
|---|
| 662 | DWORD                 exceptionCode); | 
|---|
| 663 | void dmpCanInline(DLDL key, const Agnostic_CanInline& value); | 
|---|
| 664 | CorInfoInline repCanInline(CORINFO_METHOD_HANDLE callerHnd, | 
|---|
| 665 | CORINFO_METHOD_HANDLE calleeHnd, | 
|---|
| 666 | DWORD*                pRestrictions, | 
|---|
| 667 | DWORD*                exceptionCode); | 
|---|
| 668 |  | 
|---|
| 669 | void recResolveToken(CORINFO_RESOLVED_TOKEN* pResolvedToken, DWORD exceptionCode); | 
|---|
| 670 | void dmpResolveToken(const Agnostic_CORINFO_RESOLVED_TOKENin& key, const ResolveTokenValue& value); | 
|---|
| 671 | void repResolveToken(CORINFO_RESOLVED_TOKEN* pResolvedToken, DWORD* exceptionCode); | 
|---|
| 672 |  | 
|---|
| 673 | void recTryResolveToken(CORINFO_RESOLVED_TOKEN* pResolvedToken, bool success); | 
|---|
| 674 | void dmpTryResolveToken(const Agnostic_CORINFO_RESOLVED_TOKENin& key, const TryResolveTokenValue& value); | 
|---|
| 675 | bool repTryResolveToken(CORINFO_RESOLVED_TOKEN* pResolvedToken); | 
|---|
| 676 |  | 
|---|
| 677 | void recGetCallInfo(CORINFO_RESOLVED_TOKEN* pResolvedToken, | 
|---|
| 678 | CORINFO_RESOLVED_TOKEN* pConstrainedResolvedToken, | 
|---|
| 679 | CORINFO_METHOD_HANDLE   callerHandle, | 
|---|
| 680 | CORINFO_CALLINFO_FLAGS  flags, | 
|---|
| 681 | CORINFO_CALL_INFO*      pResult, | 
|---|
| 682 | DWORD                   exceptionCode); | 
|---|
| 683 | void dmpGetCallInfo(const Agnostic_GetCallInfo& key, const Agnostic_CORINFO_CALL_INFO& value); | 
|---|
| 684 | void repGetCallInfo(CORINFO_RESOLVED_TOKEN* pResolvedToken, | 
|---|
| 685 | CORINFO_RESOLVED_TOKEN* pConstrainedResolvedToken, | 
|---|
| 686 | CORINFO_METHOD_HANDLE   callerHandle, | 
|---|
| 687 | CORINFO_CALLINFO_FLAGS  flags, | 
|---|
| 688 | CORINFO_CALL_INFO*      pResult, | 
|---|
| 689 | DWORD*                  exceptionCode); | 
|---|
| 690 | void repGetCallInfoFromMethodHandle(CORINFO_METHOD_HANDLE methodHandle, CORINFO_CALL_INFO* pResult); | 
|---|
| 691 |  | 
|---|
| 692 | void recGetIntrinsicID(CORINFO_METHOD_HANDLE method, bool* pMustExpand, CorInfoIntrinsics result); | 
|---|
| 693 | void dmpGetIntrinsicID(DWORDLONG key, DD value); | 
|---|
| 694 | CorInfoIntrinsics repGetIntrinsicID(CORINFO_METHOD_HANDLE method, bool* pMustExpand); | 
|---|
| 695 |  | 
|---|
| 696 | void recGetUnmanagedCallConv(CORINFO_METHOD_HANDLE method, CorInfoUnmanagedCallConv result); | 
|---|
| 697 | void dmpGetUnmanagedCallConv(DWORDLONG key, DWORD result); | 
|---|
| 698 | CorInfoUnmanagedCallConv repGetUnmanagedCallConv(CORINFO_METHOD_HANDLE method); | 
|---|
| 699 |  | 
|---|
| 700 | void recIsInstantiationOfVerifiedGeneric(CORINFO_METHOD_HANDLE method, CorInfoInstantiationVerification result); | 
|---|
| 701 | void dmpIsInstantiationOfVerifiedGeneric(DWORDLONG key, DWORD value); | 
|---|
| 702 | CorInfoInstantiationVerification repIsInstantiationOfVerifiedGeneric(CORINFO_METHOD_HANDLE method); | 
|---|
| 703 |  | 
|---|
| 704 | void recAsCorInfoType(CORINFO_CLASS_HANDLE cls, CorInfoType result); | 
|---|
| 705 | void dmpAsCorInfoType(DWORDLONG key, DWORD value); | 
|---|
| 706 | CorInfoType repAsCorInfoType(CORINFO_CLASS_HANDLE cls); | 
|---|
| 707 |  | 
|---|
| 708 | void recIsValueClass(CORINFO_CLASS_HANDLE cls, BOOL result); | 
|---|
| 709 | void dmpIsValueClass(DWORDLONG key, DWORD value); | 
|---|
| 710 | BOOL repIsValueClass(CORINFO_CLASS_HANDLE cls); | 
|---|
| 711 |  | 
|---|
| 712 | void recIsStructRequiringStackAllocRetBuf(CORINFO_CLASS_HANDLE cls, BOOL result); | 
|---|
| 713 | void dmpIsStructRequiringStackAllocRetBuf(DWORDLONG key, DWORD value); | 
|---|
| 714 | BOOL repIsStructRequiringStackAllocRetBuf(CORINFO_CLASS_HANDLE cls); | 
|---|
| 715 |  | 
|---|
| 716 | void recGetClassSize(CORINFO_CLASS_HANDLE cls, unsigned result); | 
|---|
| 717 | void dmpGetClassSize(DWORDLONG key, DWORD val); | 
|---|
| 718 | unsigned repGetClassSize(CORINFO_CLASS_HANDLE cls); | 
|---|
| 719 |  | 
|---|
| 720 | void recGetHeapClassSize(CORINFO_CLASS_HANDLE cls, unsigned result); | 
|---|
| 721 | void dmpGetHeapClassSize(DWORDLONG key, DWORD val); | 
|---|
| 722 | unsigned repGetHeapClassSize(CORINFO_CLASS_HANDLE cls); | 
|---|
| 723 |  | 
|---|
| 724 | void recCanAllocateOnStack(CORINFO_CLASS_HANDLE cls, BOOL result); | 
|---|
| 725 | void dmpCanAllocateOnStack(DWORDLONG key, DWORD val); | 
|---|
| 726 | BOOL repCanAllocateOnStack(CORINFO_CLASS_HANDLE cls); | 
|---|
| 727 |  | 
|---|
| 728 | void recGetClassNumInstanceFields(CORINFO_CLASS_HANDLE cls, unsigned result); | 
|---|
| 729 | void dmpGetClassNumInstanceFields(DWORDLONG key, DWORD value); | 
|---|
| 730 | unsigned repGetClassNumInstanceFields(CORINFO_CLASS_HANDLE cls); | 
|---|
| 731 |  | 
|---|
| 732 | void recGetNewArrHelper(CORINFO_CLASS_HANDLE arrayCls, CorInfoHelpFunc result); | 
|---|
| 733 | void dmpGetNewArrHelper(DWORDLONG key, DWORD value); | 
|---|
| 734 | CorInfoHelpFunc repGetNewArrHelper(CORINFO_CLASS_HANDLE arrayCls); | 
|---|
| 735 |  | 
|---|
| 736 | void recGetSharedCCtorHelper(CORINFO_CLASS_HANDLE clsHnd, CorInfoHelpFunc result); | 
|---|
| 737 | void dmpGetSharedCCtorHelper(DWORDLONG key, DWORD value); | 
|---|
| 738 | CorInfoHelpFunc repGetSharedCCtorHelper(CORINFO_CLASS_HANDLE clsHnd); | 
|---|
| 739 |  | 
|---|
| 740 | void recGetSecurityPrologHelper(CORINFO_METHOD_HANDLE ftn, CorInfoHelpFunc result); | 
|---|
| 741 | void dmpGetSecurityPrologHelper(DWORDLONG key, DWORD value); | 
|---|
| 742 | CorInfoHelpFunc repGetSecurityPrologHelper(CORINFO_METHOD_HANDLE ftn); | 
|---|
| 743 |  | 
|---|
| 744 | void recGetTypeForBox(CORINFO_CLASS_HANDLE cls, CORINFO_CLASS_HANDLE result); | 
|---|
| 745 | void dmpGetTypeForBox(DWORDLONG key, DWORDLONG value); | 
|---|
| 746 | CORINFO_CLASS_HANDLE repGetTypeForBox(CORINFO_CLASS_HANDLE cls); | 
|---|
| 747 |  | 
|---|
| 748 | void recGetBoxHelper(CORINFO_CLASS_HANDLE cls, CorInfoHelpFunc result); | 
|---|
| 749 | void dmpGetBoxHelper(DWORDLONG key, DWORD value); | 
|---|
| 750 | CorInfoHelpFunc repGetBoxHelper(CORINFO_CLASS_HANDLE cls); | 
|---|
| 751 |  | 
|---|
| 752 | void recGetBuiltinClass(CorInfoClassId classId, CORINFO_CLASS_HANDLE result); | 
|---|
| 753 | void dmpGetBuiltinClass(DWORD key, DWORDLONG value); | 
|---|
| 754 | CORINFO_CLASS_HANDLE repGetBuiltinClass(CorInfoClassId classId); | 
|---|
| 755 |  | 
|---|
| 756 | void recGetTypeForPrimitiveValueClass(CORINFO_CLASS_HANDLE cls, CorInfoType result); | 
|---|
| 757 | void dmpGetTypeForPrimitiveValueClass(DWORDLONG key, DWORD value); | 
|---|
| 758 | CorInfoType repGetTypeForPrimitiveValueClass(CORINFO_CLASS_HANDLE cls); | 
|---|
| 759 |  | 
|---|
| 760 | void recGetTypeForPrimitiveNumericClass(CORINFO_CLASS_HANDLE cls, CorInfoType result); | 
|---|
| 761 | void dmpGetTypeForPrimitiveNumericClass(DWORDLONG key, DWORD value); | 
|---|
| 762 | CorInfoType repGetTypeForPrimitiveNumericClass(CORINFO_CLASS_HANDLE cls); | 
|---|
| 763 |  | 
|---|
| 764 | void recGetParentType(CORINFO_CLASS_HANDLE cls, CORINFO_CLASS_HANDLE result); | 
|---|
| 765 | void dmpGetParentType(DWORDLONG key, DWORDLONG value); | 
|---|
| 766 | CORINFO_CLASS_HANDLE repGetParentType(CORINFO_CLASS_HANDLE cls); | 
|---|
| 767 |  | 
|---|
| 768 | void recIsSDArray(CORINFO_CLASS_HANDLE cls, BOOL result); | 
|---|
| 769 | void dmpIsSDArray(DWORDLONG key, DWORD value); | 
|---|
| 770 | BOOL repIsSDArray(CORINFO_CLASS_HANDLE cls); | 
|---|
| 771 |  | 
|---|
| 772 | void recIsInSIMDModule(CORINFO_CLASS_HANDLE cls, BOOL result); | 
|---|
| 773 | void dmpIsInSIMDModule(DWORDLONG key, DWORD value); | 
|---|
| 774 | BOOL repIsInSIMDModule(CORINFO_CLASS_HANDLE cls); | 
|---|
| 775 |  | 
|---|
| 776 | void recGetFieldClass(CORINFO_FIELD_HANDLE field, CORINFO_CLASS_HANDLE result); | 
|---|
| 777 | void dmpGetFieldClass(DWORDLONG key, DWORDLONG value); | 
|---|
| 778 | CORINFO_CLASS_HANDLE repGetFieldClass(CORINFO_FIELD_HANDLE field); | 
|---|
| 779 |  | 
|---|
| 780 | void recGetFieldOffset(CORINFO_FIELD_HANDLE field, unsigned result); | 
|---|
| 781 | void dmpGetFieldOffset(DWORDLONG key, DWORD value); | 
|---|
| 782 | unsigned repGetFieldOffset(CORINFO_FIELD_HANDLE field); | 
|---|
| 783 |  | 
|---|
| 784 | void recGetLazyStringLiteralHelper(CORINFO_MODULE_HANDLE handle, CorInfoHelpFunc result); | 
|---|
| 785 | void dmpGetLazyStringLiteralHelper(DWORDLONG key, DWORD value); | 
|---|
| 786 | CorInfoHelpFunc repGetLazyStringLiteralHelper(CORINFO_MODULE_HANDLE handle); | 
|---|
| 787 |  | 
|---|
| 788 | void recGetUnBoxHelper(CORINFO_CLASS_HANDLE cls, CorInfoHelpFunc result); | 
|---|
| 789 | void dmpGetUnBoxHelper(DWORDLONG key, DWORD value); | 
|---|
| 790 | CorInfoHelpFunc repGetUnBoxHelper(CORINFO_CLASS_HANDLE cls); | 
|---|
| 791 |  | 
|---|
| 792 | void recGetReadyToRunHelper(CORINFO_RESOLVED_TOKEN* pResolvedToken, | 
|---|
| 793 | CORINFO_LOOKUP_KIND*    pGenericLookupKind, | 
|---|
| 794 | CorInfoHelpFunc         id, | 
|---|
| 795 | CORINFO_CONST_LOOKUP*   pLookup, | 
|---|
| 796 | bool                    result); | 
|---|
| 797 | void dmpGetReadyToRunHelper(GetReadyToRunHelper_TOKENin key, GetReadyToRunHelper_TOKENout value); | 
|---|
| 798 | bool repGetReadyToRunHelper(CORINFO_RESOLVED_TOKEN* pResolvedToken, | 
|---|
| 799 | CORINFO_LOOKUP_KIND*    pGenericLookupKind, | 
|---|
| 800 | CorInfoHelpFunc         id, | 
|---|
| 801 | CORINFO_CONST_LOOKUP*   pLookup); | 
|---|
| 802 |  | 
|---|
| 803 | void recGetReadyToRunDelegateCtorHelper(CORINFO_RESOLVED_TOKEN* pTargetMethod, | 
|---|
| 804 | CORINFO_CLASS_HANDLE    delegateType, | 
|---|
| 805 | CORINFO_LOOKUP*         pLookup); | 
|---|
| 806 | void dmpGetReadyToRunDelegateCtorHelper(GetReadyToRunDelegateCtorHelper_TOKENIn key, | 
|---|
| 807 | Agnostic_CORINFO_LOOKUP                 pLookup); | 
|---|
| 808 | void repGetReadyToRunDelegateCtorHelper(CORINFO_RESOLVED_TOKEN* pTargetMethod, | 
|---|
| 809 | CORINFO_CLASS_HANDLE    delegateType, | 
|---|
| 810 | CORINFO_LOOKUP*         pLookup); | 
|---|
| 811 |  | 
|---|
| 812 | void recGetHelperFtn(CorInfoHelpFunc ftnNum, void** ppIndirection, void* result); | 
|---|
| 813 | void dmpGetHelperFtn(DWORD key, DLDL value); | 
|---|
| 814 | void* repGetHelperFtn(CorInfoHelpFunc ftnNum, void** ppIndirection); | 
|---|
| 815 | bool fndGetHelperFtn(void* functionAddress, CorInfoHelpFunc* pResult); | 
|---|
| 816 |  | 
|---|
| 817 | void recGetJustMyCodeHandle(CORINFO_METHOD_HANDLE         method, | 
|---|
| 818 | CORINFO_JUST_MY_CODE_HANDLE** ppIndirection, | 
|---|
| 819 | CORINFO_JUST_MY_CODE_HANDLE   result); | 
|---|
| 820 | void dmpGetJustMyCodeHandle(DWORDLONG key, DLDL value); | 
|---|
| 821 | CORINFO_JUST_MY_CODE_HANDLE repGetJustMyCodeHandle(CORINFO_METHOD_HANDLE         method, | 
|---|
| 822 | CORINFO_JUST_MY_CODE_HANDLE** ppIndirection); | 
|---|
| 823 |  | 
|---|
| 824 | void recGetFunctionEntryPoint(CORINFO_METHOD_HANDLE ftn, | 
|---|
| 825 | CORINFO_CONST_LOOKUP* pResult, | 
|---|
| 826 | CORINFO_ACCESS_FLAGS  accessFlags); | 
|---|
| 827 | void dmpGetFunctionEntryPoint(DLD key, DLD value); | 
|---|
| 828 | void repGetFunctionEntryPoint(CORINFO_METHOD_HANDLE ftn, | 
|---|
| 829 | CORINFO_CONST_LOOKUP* pResult, | 
|---|
| 830 | CORINFO_ACCESS_FLAGS  accessFlags); | 
|---|
| 831 | bool fndGetFunctionEntryPoint(DLD value, CORINFO_METHOD_HANDLE* pResult); | 
|---|
| 832 |  | 
|---|
| 833 | void recConstructStringLiteral(CORINFO_MODULE_HANDLE module, mdToken metaTok, void* ppValue, InfoAccessType result); | 
|---|
| 834 | void dmpConstructStringLiteral(DLD key, DLD value); | 
|---|
| 835 | InfoAccessType repConstructStringLiteral(CORINFO_MODULE_HANDLE module, mdToken metaTok, void** ppValue); | 
|---|
| 836 |  | 
|---|
| 837 | void recConvertPInvokeCalliToCall(CORINFO_RESOLVED_TOKEN* pResolvedToken, bool fMustConvert, bool result); | 
|---|
| 838 | void dmpConvertPInvokeCalliToCall(DLD key, DWORDLONG value); | 
|---|
| 839 | bool repConvertPInvokeCalliToCall(CORINFO_RESOLVED_TOKEN* pResolvedToken, bool fMustConvert); | 
|---|
| 840 |  | 
|---|
| 841 | void recEmptyStringLiteral(void** ppValue, InfoAccessType result); | 
|---|
| 842 | void dmpEmptyStringLiteral(DWORD key, DLD value); | 
|---|
| 843 | InfoAccessType repEmptyStringLiteral(void** ppValue); | 
|---|
| 844 |  | 
|---|
| 845 | void recGetArgType(CORINFO_SIG_INFO*       sig, | 
|---|
| 846 | CORINFO_ARG_LIST_HANDLE args, | 
|---|
| 847 | CORINFO_CLASS_HANDLE*   vcTypeRet, | 
|---|
| 848 | CorInfoTypeWithMod      result, | 
|---|
| 849 | DWORD                   exception); | 
|---|
| 850 | void dmpGetArgType(const GetArgTypeValue& key, const Agnostic_GetArgType_Value& value); | 
|---|
| 851 | CorInfoTypeWithMod repGetArgType(CORINFO_SIG_INFO*       sig, | 
|---|
| 852 | CORINFO_ARG_LIST_HANDLE args, | 
|---|
| 853 | CORINFO_CLASS_HANDLE*   vcTypeRet, | 
|---|
| 854 | DWORD*                  exception); | 
|---|
| 855 |  | 
|---|
| 856 | void recGetArgNext(CORINFO_ARG_LIST_HANDLE args, CORINFO_ARG_LIST_HANDLE result); | 
|---|
| 857 | void dmpGetArgNext(DWORDLONG key, DWORDLONG value); | 
|---|
| 858 | CORINFO_ARG_LIST_HANDLE repGetArgNext(CORINFO_ARG_LIST_HANDLE args); | 
|---|
| 859 |  | 
|---|
| 860 | void recGetMethodSig(CORINFO_METHOD_HANDLE ftn, CORINFO_SIG_INFO* sig, CORINFO_CLASS_HANDLE memberParent); | 
|---|
| 861 | void dmpGetMethodSig(DLDL key, const Agnostic_CORINFO_SIG_INFO& value); | 
|---|
| 862 | void repGetMethodSig(CORINFO_METHOD_HANDLE ftn, CORINFO_SIG_INFO* sig, CORINFO_CLASS_HANDLE memberParent); | 
|---|
| 863 |  | 
|---|
| 864 | void recGetArgClass(CORINFO_SIG_INFO*       sig, | 
|---|
| 865 | CORINFO_ARG_LIST_HANDLE args, | 
|---|
| 866 | CORINFO_CLASS_HANDLE    result, | 
|---|
| 867 | DWORD                   exceptionCode); | 
|---|
| 868 | void dmpGetArgClass(const GetArgClassValue& key, const Agnostic_GetArgClass_Value& value); | 
|---|
| 869 | CORINFO_CLASS_HANDLE repGetArgClass(CORINFO_SIG_INFO* sig, CORINFO_ARG_LIST_HANDLE args, DWORD* exceptionCode); | 
|---|
| 870 |  | 
|---|
| 871 | void recGetHFAType(CORINFO_CLASS_HANDLE clsHnd, CorInfoType result); | 
|---|
| 872 | void dmpGetHFAType(DWORDLONG key, DWORD value); | 
|---|
| 873 | CorInfoType repGetHFAType(CORINFO_CLASS_HANDLE clsHnd); | 
|---|
| 874 |  | 
|---|
| 875 | void recGetMethodInfo(CORINFO_METHOD_HANDLE ftn, CORINFO_METHOD_INFO* info, bool result, DWORD exceptionCode); | 
|---|
| 876 | void dmpGetMethodInfo(DWORDLONG key, const Agnostic_GetMethodInfo& value); | 
|---|
| 877 | bool repGetMethodInfo(CORINFO_METHOD_HANDLE ftn, CORINFO_METHOD_INFO* info, DWORD* exceptionCode); | 
|---|
| 878 |  | 
|---|
| 879 | void recGetNewHelper(CORINFO_RESOLVED_TOKEN* pResolvedToken, | 
|---|
| 880 | CORINFO_METHOD_HANDLE   callerHandle, | 
|---|
| 881 | bool* pHasSideEffects, | 
|---|
| 882 | CorInfoHelpFunc         result); | 
|---|
| 883 | void dmpGetNewHelper(const Agnostic_GetNewHelper& key, DD value); | 
|---|
| 884 | CorInfoHelpFunc repGetNewHelper(CORINFO_RESOLVED_TOKEN* pResolvedToken, CORINFO_METHOD_HANDLE callerHandle, bool * pHasSideEffects); | 
|---|
| 885 |  | 
|---|
| 886 | void recEmbedGenericHandle(CORINFO_RESOLVED_TOKEN*       pResolvedToken, | 
|---|
| 887 | BOOL                          fEmbedParent, | 
|---|
| 888 | CORINFO_GENERICHANDLE_RESULT* pResult); | 
|---|
| 889 | void dmpEmbedGenericHandle(const Agnostic_EmbedGenericHandle&           key, | 
|---|
| 890 | const Agnostic_CORINFO_GENERICHANDLE_RESULT& value); | 
|---|
| 891 | void repEmbedGenericHandle(CORINFO_RESOLVED_TOKEN*       pResolvedToken, | 
|---|
| 892 | BOOL                          fEmbedParent, | 
|---|
| 893 | CORINFO_GENERICHANDLE_RESULT* pResult); | 
|---|
| 894 |  | 
|---|
| 895 | void recGetEHinfo(CORINFO_METHOD_HANDLE ftn, unsigned EHnumber, CORINFO_EH_CLAUSE* clause); | 
|---|
| 896 | void dmpGetEHinfo(DLD key, const Agnostic_CORINFO_EH_CLAUSE& value); | 
|---|
| 897 | void repGetEHinfo(CORINFO_METHOD_HANDLE ftn, unsigned EHnumber, CORINFO_EH_CLAUSE* clause); | 
|---|
| 898 |  | 
|---|
| 899 | void recGetMethodVTableOffset(CORINFO_METHOD_HANDLE method, | 
|---|
| 900 | unsigned*             offsetOfIndirection, | 
|---|
| 901 | unsigned*             offsetAfterIndirection, | 
|---|
| 902 | bool*                 isRelative); | 
|---|
| 903 | void dmpGetMethodVTableOffset(DWORDLONG key, DDD value); | 
|---|
| 904 | void repGetMethodVTableOffset(CORINFO_METHOD_HANDLE method, | 
|---|
| 905 | unsigned*             offsetOfIndirection, | 
|---|
| 906 | unsigned*             offsetAfterIndirection, | 
|---|
| 907 | bool*                 isRelative); | 
|---|
| 908 |  | 
|---|
| 909 | void recResolveVirtualMethod(CORINFO_METHOD_HANDLE  virtMethod, | 
|---|
| 910 | CORINFO_CLASS_HANDLE   implClass, | 
|---|
| 911 | CORINFO_CONTEXT_HANDLE ownerType, | 
|---|
| 912 | CORINFO_METHOD_HANDLE  result); | 
|---|
| 913 | void dmpResolveVirtualMethod(const Agnostic_ResolveVirtualMethod& key, DWORDLONG value); | 
|---|
| 914 | CORINFO_METHOD_HANDLE repResolveVirtualMethod(CORINFO_METHOD_HANDLE  virtMethod, | 
|---|
| 915 | CORINFO_CLASS_HANDLE   implClass, | 
|---|
| 916 | CORINFO_CONTEXT_HANDLE ownerType); | 
|---|
| 917 |  | 
|---|
| 918 | void recGetUnboxedEntry(CORINFO_METHOD_HANDLE ftn, bool* requiresInstMethodTableArg, CORINFO_METHOD_HANDLE result); | 
|---|
| 919 | void dmpGetUnboxedEntry(DWORDLONG key, DLD value); | 
|---|
| 920 | CORINFO_METHOD_HANDLE repGetUnboxedEntry(CORINFO_METHOD_HANDLE ftn, bool* requiresInstMethodTableArg); | 
|---|
| 921 |  | 
|---|
| 922 | void recGetDefaultEqualityComparerClass(CORINFO_CLASS_HANDLE cls, CORINFO_CLASS_HANDLE result); | 
|---|
| 923 | void dmpGetDefaultEqualityComparerClass(DWORDLONG key, DWORDLONG value); | 
|---|
| 924 | CORINFO_CLASS_HANDLE repGetDefaultEqualityComparerClass(CORINFO_CLASS_HANDLE cls); | 
|---|
| 925 |  | 
|---|
| 926 | void recGetTokenTypeAsHandle(CORINFO_RESOLVED_TOKEN* pResolvedToken, CORINFO_CLASS_HANDLE result); | 
|---|
| 927 | void dmpGetTokenTypeAsHandle(const GetTokenTypeAsHandleValue& key, DWORDLONG value); | 
|---|
| 928 | CORINFO_CLASS_HANDLE repGetTokenTypeAsHandle(CORINFO_RESOLVED_TOKEN* pResolvedToken); | 
|---|
| 929 |  | 
|---|
| 930 | void recGetFieldInfo(CORINFO_RESOLVED_TOKEN* pResolvedToken, | 
|---|
| 931 | CORINFO_METHOD_HANDLE   callerHandle, | 
|---|
| 932 | CORINFO_ACCESS_FLAGS    flags, | 
|---|
| 933 | CORINFO_FIELD_INFO*     pResult); | 
|---|
| 934 | void dmpGetFieldInfo(const Agnostic_GetFieldInfo& key, const Agnostic_CORINFO_FIELD_INFO& value); | 
|---|
| 935 | void repGetFieldInfo(CORINFO_RESOLVED_TOKEN* pResolvedToken, | 
|---|
| 936 | CORINFO_METHOD_HANDLE   callerHandle, | 
|---|
| 937 | CORINFO_ACCESS_FLAGS    flags, | 
|---|
| 938 | CORINFO_FIELD_INFO*     pResult); | 
|---|
| 939 |  | 
|---|
| 940 | void recEmbedMethodHandle(CORINFO_METHOD_HANDLE handle, void** ppIndirection, CORINFO_METHOD_HANDLE result); | 
|---|
| 941 | void dmpEmbedMethodHandle(DWORDLONG key, DLDL value); | 
|---|
| 942 | CORINFO_METHOD_HANDLE repEmbedMethodHandle(CORINFO_METHOD_HANDLE handle, void** ppIndirection); | 
|---|
| 943 |  | 
|---|
| 944 | void recGetFieldAddress(CORINFO_FIELD_HANDLE field, void** ppIndirection, void* result, CorInfoType cit); | 
|---|
| 945 | void dmpGetFieldAddress(DWORDLONG key, const Agnostic_GetFieldAddress& value); | 
|---|
| 946 | void* repGetFieldAddress(CORINFO_FIELD_HANDLE field, void** ppIndirection); | 
|---|
| 947 |  | 
|---|
| 948 | void recGetStaticFieldCurrentClass(CORINFO_FIELD_HANDLE field, bool isSpeculative, CORINFO_CLASS_HANDLE result); | 
|---|
| 949 | void dmpGetStaticFieldCurrentClass(DWORDLONG key, const Agnostic_GetStaticFieldCurrentClass& value); | 
|---|
| 950 | CORINFO_CLASS_HANDLE repGetStaticFieldCurrentClass(CORINFO_FIELD_HANDLE field, bool* pIsSpeculative); | 
|---|
| 951 |  | 
|---|
| 952 | void recGetClassGClayout(CORINFO_CLASS_HANDLE cls, BYTE* gcPtrs, unsigned len, unsigned result); | 
|---|
| 953 | void dmpGetClassGClayout(DWORDLONG key, const Agnostic_GetClassGClayout& value); | 
|---|
| 954 | unsigned repGetClassGClayout(CORINFO_CLASS_HANDLE cls, BYTE* gcPtrs); | 
|---|
| 955 |  | 
|---|
| 956 | void recGetClassAlignmentRequirement(CORINFO_CLASS_HANDLE cls, BOOL fDoubleAlignHint, unsigned result); | 
|---|
| 957 | void dmpGetClassAlignmentRequirement(DLD key, DWORD value); | 
|---|
| 958 | unsigned repGetClassAlignmentRequirement(CORINFO_CLASS_HANDLE cls, BOOL fDoubleAlignHint); | 
|---|
| 959 |  | 
|---|
| 960 | void recCanAccessClass(CORINFO_RESOLVED_TOKEN*      pResolvedToken, | 
|---|
| 961 | CORINFO_METHOD_HANDLE        callerHandle, | 
|---|
| 962 | CORINFO_HELPER_DESC*         pAccessHelper, | 
|---|
| 963 | CorInfoIsAccessAllowedResult result); | 
|---|
| 964 | void dmpCanAccessClass(const Agnostic_CanAccessClassIn& key, const Agnostic_CanAccessClassOut& value); | 
|---|
| 965 | CorInfoIsAccessAllowedResult repCanAccessClass(CORINFO_RESOLVED_TOKEN* pResolvedToken, | 
|---|
| 966 | CORINFO_METHOD_HANDLE   callerHandle, | 
|---|
| 967 | CORINFO_HELPER_DESC*    pAccessHelper); | 
|---|
| 968 |  | 
|---|
| 969 | void recGetCastingHelper(CORINFO_RESOLVED_TOKEN* pResolvedToken, bool fThrowing, CorInfoHelpFunc result); | 
|---|
| 970 | void dmpGetCastingHelper(const Agnostic_GetCastingHelper& key, DWORD value); | 
|---|
| 971 | CorInfoHelpFunc repGetCastingHelper(CORINFO_RESOLVED_TOKEN* pResolvedToken, bool fThrowing); | 
|---|
| 972 |  | 
|---|
| 973 | void recEmbedModuleHandle(CORINFO_MODULE_HANDLE handle, void** ppIndirection, CORINFO_MODULE_HANDLE result); | 
|---|
| 974 | void dmpEmbedModuleHandle(DWORDLONG key, DLDL value); | 
|---|
| 975 | CORINFO_MODULE_HANDLE repEmbedModuleHandle(CORINFO_MODULE_HANDLE handle, void** ppIndirection); | 
|---|
| 976 |  | 
|---|
| 977 | void recEmbedClassHandle(CORINFO_CLASS_HANDLE handle, void** ppIndirection, CORINFO_CLASS_HANDLE result); | 
|---|
| 978 | void dmpEmbedClassHandle(DWORDLONG key, DLDL value); | 
|---|
| 979 | CORINFO_CLASS_HANDLE repEmbedClassHandle(CORINFO_CLASS_HANDLE handle, void** ppIndirection); | 
|---|
| 980 |  | 
|---|
| 981 | void recPInvokeMarshalingRequired(CORINFO_METHOD_HANDLE method, CORINFO_SIG_INFO* callSiteSig, BOOL result); | 
|---|
| 982 | void dmpPInvokeMarshalingRequired(const PInvokeMarshalingRequiredValue& key, DWORD value); | 
|---|
| 983 | BOOL repPInvokeMarshalingRequired(CORINFO_METHOD_HANDLE method, CORINFO_SIG_INFO* callSiteSig); | 
|---|
| 984 |  | 
|---|
| 985 | void recFindSig(CORINFO_MODULE_HANDLE  module, | 
|---|
| 986 | unsigned               sigTOK, | 
|---|
| 987 | CORINFO_CONTEXT_HANDLE context, | 
|---|
| 988 | CORINFO_SIG_INFO*      sig); | 
|---|
| 989 | void dmpFindSig(const Agnostic_FindSig& key, const Agnostic_CORINFO_SIG_INFO& value); | 
|---|
| 990 | void repFindSig(CORINFO_MODULE_HANDLE  module, | 
|---|
| 991 | unsigned               sigTOK, | 
|---|
| 992 | CORINFO_CONTEXT_HANDLE context, | 
|---|
| 993 | CORINFO_SIG_INFO*      sig); | 
|---|
| 994 |  | 
|---|
| 995 | void recGetEEInfo(CORINFO_EE_INFO* pEEInfoOut); | 
|---|
| 996 | void dmpGetEEInfo(DWORD key, const Agnostic_CORINFO_EE_INFO& value); | 
|---|
| 997 | void repGetEEInfo(CORINFO_EE_INFO* pEEInfoOut); | 
|---|
| 998 |  | 
|---|
| 999 | void recGetGSCookie(GSCookie* pCookieVal, GSCookie** ppCookieVal); | 
|---|
| 1000 | void dmpGetGSCookie(DWORD key, DLDL value); | 
|---|
| 1001 | void repGetGSCookie(GSCookie* pCookieVal, GSCookie** ppCookieVal); | 
|---|
| 1002 |  | 
|---|
| 1003 | void recGetClassModuleIdForStatics(CORINFO_CLASS_HANDLE   cls, | 
|---|
| 1004 | CORINFO_MODULE_HANDLE* pModule, | 
|---|
| 1005 | void**                 ppIndirection, | 
|---|
| 1006 | size_t                 result); | 
|---|
| 1007 | void dmpGetClassModuleIdForStatics(DWORDLONG key, const Agnostic_GetClassModuleIdForStatics& value); | 
|---|
| 1008 | size_t repGetClassModuleIdForStatics(CORINFO_CLASS_HANDLE   cls, | 
|---|
| 1009 | CORINFO_MODULE_HANDLE* pModule, | 
|---|
| 1010 | void**                 ppIndirection); | 
|---|
| 1011 |  | 
|---|
| 1012 | void recGetThreadTLSIndex(void** ppIndirection, DWORD result); | 
|---|
| 1013 | void dmpGetThreadTLSIndex(DWORD key, DLD value); | 
|---|
| 1014 | DWORD repGetThreadTLSIndex(void** ppIndirection); | 
|---|
| 1015 |  | 
|---|
| 1016 | void recGetInlinedCallFrameVptr(void** ppIndirection, const void* result); | 
|---|
| 1017 | void dmpGetInlinedCallFrameVptr(DWORD key, DLDL value); | 
|---|
| 1018 | const void* repGetInlinedCallFrameVptr(void** ppIndirection); | 
|---|
| 1019 |  | 
|---|
| 1020 | void recGetAddrOfCaptureThreadGlobal(void** ppIndirection, LONG* result); | 
|---|
| 1021 | void dmpGetAddrOfCaptureThreadGlobal(DWORD key, DLDL value); | 
|---|
| 1022 | LONG* repGetAddrOfCaptureThreadGlobal(void** ppIndirection); | 
|---|
| 1023 |  | 
|---|
| 1024 | void recGetClassDomainID(CORINFO_CLASS_HANDLE cls, void** ppIndirection, unsigned result); | 
|---|
| 1025 | void dmpGetClassDomainID(DWORDLONG key, DLD value); | 
|---|
| 1026 | unsigned repGetClassDomainID(CORINFO_CLASS_HANDLE cls, void** ppIndirection); | 
|---|
| 1027 |  | 
|---|
| 1028 | void recGetLocationOfThisType(CORINFO_METHOD_HANDLE context, CORINFO_LOOKUP_KIND* result); | 
|---|
| 1029 | void dmpGetLocationOfThisType(DWORDLONG key, const Agnostic_CORINFO_LOOKUP_KIND& value); | 
|---|
| 1030 | CORINFO_LOOKUP_KIND repGetLocationOfThisType(CORINFO_METHOD_HANDLE context); | 
|---|
| 1031 |  | 
|---|
| 1032 | void recGetDelegateCtor(CORINFO_METHOD_HANDLE methHnd, | 
|---|
| 1033 | CORINFO_CLASS_HANDLE  clsHnd, | 
|---|
| 1034 | CORINFO_METHOD_HANDLE targetMethodHnd, | 
|---|
| 1035 | DelegateCtorArgs*     pCtorData, | 
|---|
| 1036 | CORINFO_METHOD_HANDLE result); | 
|---|
| 1037 | void dmpGetDelegateCtor(const Agnostic_GetDelegateCtorIn& key, const Agnostic_GetDelegateCtorOut& value); | 
|---|
| 1038 | CORINFO_METHOD_HANDLE repGetDelegateCtor(CORINFO_METHOD_HANDLE methHnd, | 
|---|
| 1039 | CORINFO_CLASS_HANDLE  clsHnd, | 
|---|
| 1040 | CORINFO_METHOD_HANDLE targetMethodHnd, | 
|---|
| 1041 | DelegateCtorArgs*     pCtorData); | 
|---|
| 1042 |  | 
|---|
| 1043 | void recGetFunctionFixedEntryPoint(CORINFO_METHOD_HANDLE ftn, CORINFO_CONST_LOOKUP* pResult); | 
|---|
| 1044 | void dmpGetFunctionFixedEntryPoint(DWORDLONG key, const Agnostic_CORINFO_CONST_LOOKUP& value); | 
|---|
| 1045 | void repGetFunctionFixedEntryPoint(CORINFO_METHOD_HANDLE ftn, CORINFO_CONST_LOOKUP* pResult); | 
|---|
| 1046 |  | 
|---|
| 1047 | void recGetFieldInClass(CORINFO_CLASS_HANDLE clsHnd, INT num, CORINFO_FIELD_HANDLE result); | 
|---|
| 1048 | void dmpGetFieldInClass(DLD key, DWORDLONG value); | 
|---|
| 1049 | CORINFO_FIELD_HANDLE repGetFieldInClass(CORINFO_CLASS_HANDLE clsHnd, INT num); | 
|---|
| 1050 |  | 
|---|
| 1051 | void recGetFieldType(CORINFO_FIELD_HANDLE  field, | 
|---|
| 1052 | CORINFO_CLASS_HANDLE* structType, | 
|---|
| 1053 | CORINFO_CLASS_HANDLE  memberParent, | 
|---|
| 1054 | CorInfoType           result); | 
|---|
| 1055 | void dmpGetFieldType(DLDL key, DLD value); | 
|---|
| 1056 | CorInfoType repGetFieldType(CORINFO_FIELD_HANDLE  field, | 
|---|
| 1057 | CORINFO_CLASS_HANDLE* structType, | 
|---|
| 1058 | CORINFO_CLASS_HANDLE  memberParent); | 
|---|
| 1059 |  | 
|---|
| 1060 | void recGetFieldName(CORINFO_FIELD_HANDLE ftn, const char** moduleName, const char* result); | 
|---|
| 1061 | void dmpGetFieldName(DWORDLONG key, DD value); | 
|---|
| 1062 | const char* repGetFieldName(CORINFO_FIELD_HANDLE ftn, const char** moduleName); | 
|---|
| 1063 |  | 
|---|
| 1064 | void recCanInlineTypeCheck(CORINFO_CLASS_HANDLE         cls, | 
|---|
| 1065 | CorInfoInlineTypeCheckSource source, | 
|---|
| 1066 | CorInfoInlineTypeCheck       result); | 
|---|
| 1067 | void dmpCanInlineTypeCheck(DLD key, DWORD value); | 
|---|
| 1068 | CorInfoInlineTypeCheck repCanInlineTypeCheck(CORINFO_CLASS_HANDLE cls, CorInfoInlineTypeCheckSource source); | 
|---|
| 1069 | void recCanInlineTypeCheckWithObjectVTable(CORINFO_CLASS_HANDLE cls, BOOL result); | 
|---|
| 1070 | void dmpCanInlineTypeCheckWithObjectVTable(DWORDLONG key, DWORD value); | 
|---|
| 1071 | BOOL repCanInlineTypeCheckWithObjectVTable(CORINFO_CLASS_HANDLE cls); | 
|---|
| 1072 |  | 
|---|
| 1073 | void recSatisfiesMethodConstraints(CORINFO_CLASS_HANDLE parent, CORINFO_METHOD_HANDLE method, BOOL result); | 
|---|
| 1074 | void dmpSatisfiesMethodConstraints(DLDL key, DWORD value); | 
|---|
| 1075 | BOOL repSatisfiesMethodConstraints(CORINFO_CLASS_HANDLE parent, CORINFO_METHOD_HANDLE method); | 
|---|
| 1076 |  | 
|---|
| 1077 | void recInitConstraintsForVerification(CORINFO_METHOD_HANDLE method, | 
|---|
| 1078 | BOOL*                 pfHasCircularClassConstraints, | 
|---|
| 1079 | BOOL*                 pfHasCircularMethodConstraint); | 
|---|
| 1080 | void dmpInitConstraintsForVerification(DWORDLONG key, DD value); | 
|---|
| 1081 | void repInitConstraintsForVerification(CORINFO_METHOD_HANDLE method, | 
|---|
| 1082 | BOOL*                 pfHasCircularClassConstraints, | 
|---|
| 1083 | BOOL*                 pfHasCircularMethodConstraint); | 
|---|
| 1084 |  | 
|---|
| 1085 | void recIsValidStringRef(CORINFO_MODULE_HANDLE module, unsigned metaTOK, BOOL result); | 
|---|
| 1086 | void dmpIsValidStringRef(DLD key, DWORD value); | 
|---|
| 1087 | BOOL repIsValidStringRef(CORINFO_MODULE_HANDLE module, unsigned metaTOK); | 
|---|
| 1088 |  | 
|---|
| 1089 | void recGetHelperName(CorInfoHelpFunc funcNum, const char* result); | 
|---|
| 1090 | void dmpGetHelperName(DWORD key, DWORD value); | 
|---|
| 1091 | const char* repGetHelperName(CorInfoHelpFunc funcNum); | 
|---|
| 1092 |  | 
|---|
| 1093 | void recCanCast(CORINFO_CLASS_HANDLE child, CORINFO_CLASS_HANDLE parent, BOOL result); | 
|---|
| 1094 | void dmpCanCast(DLDL key, DWORD value); | 
|---|
| 1095 | BOOL repCanCast(CORINFO_CLASS_HANDLE child, CORINFO_CLASS_HANDLE parent); | 
|---|
| 1096 |  | 
|---|
| 1097 | void recGetChildType(CORINFO_CLASS_HANDLE clsHnd, CORINFO_CLASS_HANDLE* clsRet, CorInfoType result); | 
|---|
| 1098 | void dmpGetChildType(DWORDLONG key, DLD value); | 
|---|
| 1099 | CorInfoType repGetChildType(CORINFO_CLASS_HANDLE clsHnd, CORINFO_CLASS_HANDLE* clsRet); | 
|---|
| 1100 |  | 
|---|
| 1101 | void recGetArrayInitializationData(CORINFO_FIELD_HANDLE field, DWORD size, void* result); | 
|---|
| 1102 | void dmpGetArrayInitializationData(DLD key, DWORDLONG value); | 
|---|
| 1103 | void* repGetArrayInitializationData(CORINFO_FIELD_HANDLE field, DWORD size); | 
|---|
| 1104 |  | 
|---|
| 1105 | void recFilterException(struct _EXCEPTION_POINTERS* pExceptionPointers, int result); | 
|---|
| 1106 | void dmpFilterException(DWORD key, DWORD value); | 
|---|
| 1107 | int repFilterException(struct _EXCEPTION_POINTERS* pExceptionPointers); | 
|---|
| 1108 |  | 
|---|
| 1109 | void recHandleException(struct _EXCEPTION_POINTERS* pExceptionPointers); | 
|---|
| 1110 | void dmpHandleException(DWORD key, DWORD value); | 
|---|
| 1111 |  | 
|---|
| 1112 | void recGetAddressOfPInvokeFixup(CORINFO_METHOD_HANDLE method, void** ppIndirection, void* result); | 
|---|
| 1113 | void dmpGetAddressOfPInvokeFixup(DWORDLONG key, DLDL value); | 
|---|
| 1114 | void* repGetAddressOfPInvokeFixup(CORINFO_METHOD_HANDLE method, void** ppIndirection); | 
|---|
| 1115 |  | 
|---|
| 1116 | void recGetAddressOfPInvokeTarget(CORINFO_METHOD_HANDLE method, CORINFO_CONST_LOOKUP* pLookup); | 
|---|
| 1117 | void dmpGetAddressOfPInvokeTarget(DWORDLONG key, DLD value); | 
|---|
| 1118 | void repGetAddressOfPInvokeTarget(CORINFO_METHOD_HANDLE method, CORINFO_CONST_LOOKUP* pLookup); | 
|---|
| 1119 |  | 
|---|
| 1120 | void recSatisfiesClassConstraints(CORINFO_CLASS_HANDLE cls, BOOL result); | 
|---|
| 1121 | void dmpSatisfiesClassConstraints(DWORDLONG key, DWORD value); | 
|---|
| 1122 | BOOL repSatisfiesClassConstraints(CORINFO_CLASS_HANDLE cls); | 
|---|
| 1123 |  | 
|---|
| 1124 | void recGetMethodHash(CORINFO_METHOD_HANDLE ftn, unsigned result); | 
|---|
| 1125 | void dmpGetMethodHash(DWORDLONG key, DWORD value); | 
|---|
| 1126 | unsigned repGetMethodHash(CORINFO_METHOD_HANDLE ftn); | 
|---|
| 1127 |  | 
|---|
| 1128 | void recCanTailCall(CORINFO_METHOD_HANDLE callerHnd, | 
|---|
| 1129 | CORINFO_METHOD_HANDLE declaredCalleeHnd, | 
|---|
| 1130 | CORINFO_METHOD_HANDLE exactCalleeHnd, | 
|---|
| 1131 | bool                  fIsTailPrefix, | 
|---|
| 1132 | bool                  result); | 
|---|
| 1133 | void dmpCanTailCall(const Agnostic_CanTailCall& key, DWORD value); | 
|---|
| 1134 | bool repCanTailCall(CORINFO_METHOD_HANDLE callerHnd, | 
|---|
| 1135 | CORINFO_METHOD_HANDLE declaredCalleeHnd, | 
|---|
| 1136 | CORINFO_METHOD_HANDLE exactCalleeHnd, | 
|---|
| 1137 | bool                  fIsTailPrefix); | 
|---|
| 1138 |  | 
|---|
| 1139 | void recIsCompatibleDelegate(CORINFO_CLASS_HANDLE  objCls, | 
|---|
| 1140 | CORINFO_CLASS_HANDLE  methodParentCls, | 
|---|
| 1141 | CORINFO_METHOD_HANDLE method, | 
|---|
| 1142 | CORINFO_CLASS_HANDLE  delegateCls, | 
|---|
| 1143 | BOOL*                 pfIsOpenDelegate, | 
|---|
| 1144 | BOOL                  result); | 
|---|
| 1145 | void dmpIsCompatibleDelegate(const Agnostic_IsCompatibleDelegate& key, DD value); | 
|---|
| 1146 | BOOL repIsCompatibleDelegate(CORINFO_CLASS_HANDLE  objCls, | 
|---|
| 1147 | CORINFO_CLASS_HANDLE  methodParentCls, | 
|---|
| 1148 | CORINFO_METHOD_HANDLE method, | 
|---|
| 1149 | CORINFO_CLASS_HANDLE  delegateCls, | 
|---|
| 1150 | BOOL*                 pfIsOpenDelegate); | 
|---|
| 1151 |  | 
|---|
| 1152 | void recIsDelegateCreationAllowed(CORINFO_CLASS_HANDLE delegateHnd, CORINFO_METHOD_HANDLE calleeHnd, BOOL result); | 
|---|
| 1153 | void dmpIsDelegateCreationAllowed(DLDL key, DWORD value); | 
|---|
| 1154 | BOOL repIsDelegateCreationAllowed(CORINFO_CLASS_HANDLE delegateHnd, CORINFO_METHOD_HANDLE calleeHnd); | 
|---|
| 1155 |  | 
|---|
| 1156 | void recCanSkipMethodVerification(CORINFO_METHOD_HANDLE            ftnHandle, | 
|---|
| 1157 | BOOL                             skip, | 
|---|
| 1158 | CorInfoCanSkipVerificationResult result); | 
|---|
| 1159 | void dmpCanSkipMethodVerification(DLD key, DWORD value); | 
|---|
| 1160 | CorInfoCanSkipVerificationResult repCanSkipMethodVerification(CORINFO_METHOD_HANDLE ftnHandle, BOOL skip); | 
|---|
| 1161 |  | 
|---|
| 1162 | void recFindCallSiteSig(CORINFO_MODULE_HANDLE  module, | 
|---|
| 1163 | unsigned               methTOK, | 
|---|
| 1164 | CORINFO_CONTEXT_HANDLE context, | 
|---|
| 1165 | CORINFO_SIG_INFO*      sig); | 
|---|
| 1166 | void dmpFindCallSiteSig(const Agnostic_FindCallSiteSig& key, const Agnostic_CORINFO_SIG_INFO& value); | 
|---|
| 1167 | void repFindCallSiteSig(CORINFO_MODULE_HANDLE  module, | 
|---|
| 1168 | unsigned               methTOK, | 
|---|
| 1169 | CORINFO_CONTEXT_HANDLE context, | 
|---|
| 1170 | CORINFO_SIG_INFO*      sig); | 
|---|
| 1171 |  | 
|---|
| 1172 | void recShouldEnforceCallvirtRestriction(CORINFO_MODULE_HANDLE scope, BOOL result); | 
|---|
| 1173 | void dmpShouldEnforceCallvirtRestriction(DWORDLONG key, DWORD value); | 
|---|
| 1174 | BOOL repShouldEnforceCallvirtRestriction(CORINFO_MODULE_HANDLE scope); | 
|---|
| 1175 |  | 
|---|
| 1176 | void recGetMethodSync(CORINFO_METHOD_HANDLE ftn, void** ppIndirection, void* result); | 
|---|
| 1177 | void dmpGetMethodSync(DWORDLONG key, DLDL value); | 
|---|
| 1178 | void* repGetMethodSync(CORINFO_METHOD_HANDLE ftn, void** ppIndirection); | 
|---|
| 1179 |  | 
|---|
| 1180 | void recGetVarArgsHandle(CORINFO_SIG_INFO* pSig, void** ppIndirection, CORINFO_VARARGS_HANDLE result); | 
|---|
| 1181 | void dmpGetVarArgsHandle(const GetVarArgsHandleValue& key, DLDL value); | 
|---|
| 1182 | CORINFO_VARARGS_HANDLE repGetVarArgsHandle(CORINFO_SIG_INFO* pSig, void** ppIndirection); | 
|---|
| 1183 |  | 
|---|
| 1184 | void recCanGetVarArgsHandle(CORINFO_SIG_INFO* pSig, bool result); | 
|---|
| 1185 | void dmpCanGetVarArgsHandle(const CanGetVarArgsHandleValue& key, DWORD value); | 
|---|
| 1186 | bool repCanGetVarArgsHandle(CORINFO_SIG_INFO* pSig); | 
|---|
| 1187 |  | 
|---|
| 1188 | void recGetFieldThreadLocalStoreID(CORINFO_FIELD_HANDLE field, void** ppIndirection, DWORD result); | 
|---|
| 1189 | void dmpGetFieldThreadLocalStoreID(DWORDLONG key, DLD value); | 
|---|
| 1190 | DWORD repGetFieldThreadLocalStoreID(CORINFO_FIELD_HANDLE field, void** ppIndirection); | 
|---|
| 1191 |  | 
|---|
| 1192 | void recGetBBProfileData(CORINFO_METHOD_HANDLE        ftnHnd, | 
|---|
| 1193 | ULONG*                       count, | 
|---|
| 1194 | ICorJitInfo::ProfileBuffer** profileBuffer, | 
|---|
| 1195 | ULONG*                       numRuns, | 
|---|
| 1196 | HRESULT                      result); | 
|---|
| 1197 | void dmpGetBBProfileData(DWORDLONG key, const Agnostic_GetBBProfileData& value); | 
|---|
| 1198 | HRESULT repGetBBProfileData(CORINFO_METHOD_HANDLE        ftnHnd, | 
|---|
| 1199 | ULONG*                       count, | 
|---|
| 1200 | ICorJitInfo::ProfileBuffer** profileBuffer, | 
|---|
| 1201 | ULONG*                       numRuns); | 
|---|
| 1202 |  | 
|---|
| 1203 | void recMergeClasses(CORINFO_CLASS_HANDLE cls1, CORINFO_CLASS_HANDLE cls2, CORINFO_CLASS_HANDLE result); | 
|---|
| 1204 | void dmpMergeClasses(DLDL key, DWORDLONG value); | 
|---|
| 1205 | CORINFO_CLASS_HANDLE repMergeClasses(CORINFO_CLASS_HANDLE cls1, CORINFO_CLASS_HANDLE cls2); | 
|---|
| 1206 |  | 
|---|
| 1207 | void recGetCookieForPInvokeCalliSig(CORINFO_SIG_INFO* szMetaSig, void** ppIndirection, LPVOID result); | 
|---|
| 1208 | void dmpGetCookieForPInvokeCalliSig(const GetCookieForPInvokeCalliSigValue& key, DLDL value); | 
|---|
| 1209 | LPVOID repGetCookieForPInvokeCalliSig(CORINFO_SIG_INFO* szMetaSig, void** ppIndirection); | 
|---|
| 1210 |  | 
|---|
| 1211 | void recCanGetCookieForPInvokeCalliSig(CORINFO_SIG_INFO* szMetaSig, bool result); | 
|---|
| 1212 | void dmpCanGetCookieForPInvokeCalliSig(const CanGetCookieForPInvokeCalliSigValue& key, DWORD value); | 
|---|
| 1213 | bool repCanGetCookieForPInvokeCalliSig(CORINFO_SIG_INFO* szMetaSig); | 
|---|
| 1214 |  | 
|---|
| 1215 | void recCanAccessFamily(CORINFO_METHOD_HANDLE hCaller, CORINFO_CLASS_HANDLE hInstanceType, BOOL result); | 
|---|
| 1216 | void dmpCanAccessFamily(DLDL key, DWORD value); | 
|---|
| 1217 | BOOL repCanAccessFamily(CORINFO_METHOD_HANDLE hCaller, CORINFO_CLASS_HANDLE hInstanceType); | 
|---|
| 1218 |  | 
|---|
| 1219 | void recErrorList(const char* error); | 
|---|
| 1220 | void dmpErrorList(DWORD key, DWORD value); | 
|---|
| 1221 |  | 
|---|
| 1222 | void recGetProfilingHandle(BOOL* pbHookFunction, void** pProfilerHandle, BOOL* pbIndirectedHandles); | 
|---|
| 1223 | void dmpGetProfilingHandle(DWORD key, const Agnostic_GetProfilingHandle& value); | 
|---|
| 1224 | void repGetProfilingHandle(BOOL* pbHookFunction, void** pProfilerHandle, BOOL* pbIndirectedHandles); | 
|---|
| 1225 |  | 
|---|
| 1226 | void recEmbedFieldHandle(CORINFO_FIELD_HANDLE handle, void** ppIndirection, CORINFO_FIELD_HANDLE result); | 
|---|
| 1227 | void dmpEmbedFieldHandle(DWORDLONG key, DLDL value); | 
|---|
| 1228 | CORINFO_FIELD_HANDLE repEmbedFieldHandle(CORINFO_FIELD_HANDLE handle, void** ppIndirection); | 
|---|
| 1229 |  | 
|---|
| 1230 | void recAreTypesEquivalent(CORINFO_CLASS_HANDLE cls1, CORINFO_CLASS_HANDLE cls2, BOOL result); | 
|---|
| 1231 | void dmpAreTypesEquivalent(DLDL key, DWORD value); | 
|---|
| 1232 | BOOL repAreTypesEquivalent(CORINFO_CLASS_HANDLE cls1, CORINFO_CLASS_HANDLE cls2); | 
|---|
| 1233 |  | 
|---|
| 1234 | void recCompareTypesForCast(CORINFO_CLASS_HANDLE fromClass, CORINFO_CLASS_HANDLE toClass, TypeCompareState result); | 
|---|
| 1235 | void dmpCompareTypesForCast(DLDL key, DWORD value); | 
|---|
| 1236 | TypeCompareState repCompareTypesForCast(CORINFO_CLASS_HANDLE fromClass, CORINFO_CLASS_HANDLE toClass); | 
|---|
| 1237 |  | 
|---|
| 1238 | void recCompareTypesForEquality(CORINFO_CLASS_HANDLE cls1, CORINFO_CLASS_HANDLE cls2, TypeCompareState result); | 
|---|
| 1239 | void dmpCompareTypesForEquality(DLDL key, DWORD value); | 
|---|
| 1240 | TypeCompareState repCompareTypesForEquality(CORINFO_CLASS_HANDLE cls1, CORINFO_CLASS_HANDLE cls2); | 
|---|
| 1241 |  | 
|---|
| 1242 | void recFindNameOfToken( | 
|---|
| 1243 | CORINFO_MODULE_HANDLE module, mdToken metaTOK, char* szFQName, size_t FQNameCapacity, size_t result); | 
|---|
| 1244 | void dmpFindNameOfToken(DLD key, DLD value); | 
|---|
| 1245 | size_t repFindNameOfToken(CORINFO_MODULE_HANDLE module, mdToken metaTOK, char* szFQName, size_t FQNameCapacity); | 
|---|
| 1246 |  | 
|---|
| 1247 | void recGetSystemVAmd64PassStructInRegisterDescriptor( | 
|---|
| 1248 | CORINFO_CLASS_HANDLE                                 structHnd, | 
|---|
| 1249 | SYSTEMV_AMD64_CORINFO_STRUCT_REG_PASSING_DESCRIPTOR* structPassInRegDescPtr, | 
|---|
| 1250 | bool                                                 result); | 
|---|
| 1251 | void dmpGetSystemVAmd64PassStructInRegisterDescriptor( | 
|---|
| 1252 | DWORDLONG key, const Agnostic_GetSystemVAmd64PassStructInRegisterDescriptor& value); | 
|---|
| 1253 | bool repGetSystemVAmd64PassStructInRegisterDescriptor( | 
|---|
| 1254 | CORINFO_CLASS_HANDLE structHnd, SYSTEMV_AMD64_CORINFO_STRUCT_REG_PASSING_DESCRIPTOR* structPassInRegDescPtr); | 
|---|
| 1255 |  | 
|---|
| 1256 | void recGetRelocTypeHint(void* target, WORD result); | 
|---|
| 1257 | void dmpGetRelocTypeHint(DWORDLONG key, DWORD value); | 
|---|
| 1258 | WORD repGetRelocTypeHint(void* target); | 
|---|
| 1259 |  | 
|---|
| 1260 | void recIsWriteBarrierHelperRequired(CORINFO_FIELD_HANDLE field, bool result); | 
|---|
| 1261 | void dmpIsWriteBarrierHelperRequired(DWORDLONG key, DWORD value); | 
|---|
| 1262 | bool repIsWriteBarrierHelperRequired(CORINFO_FIELD_HANDLE field); | 
|---|
| 1263 |  | 
|---|
| 1264 | void recIsValidToken(CORINFO_MODULE_HANDLE module, unsigned metaTOK, BOOL result); | 
|---|
| 1265 | void dmpIsValidToken(DLD key, DWORD value); | 
|---|
| 1266 | BOOL repIsValidToken(CORINFO_MODULE_HANDLE module, unsigned metaTOK); | 
|---|
| 1267 |  | 
|---|
| 1268 | void recGetClassName(CORINFO_CLASS_HANDLE cls, const char* result); | 
|---|
| 1269 | void dmpGetClassName(DWORDLONG key, DWORD value); | 
|---|
| 1270 | const char* repGetClassName(CORINFO_CLASS_HANDLE cls); | 
|---|
| 1271 |  | 
|---|
| 1272 | void recGetClassNameFromMetadata(CORINFO_CLASS_HANDLE cls, char* className, const char** namespaceName); | 
|---|
| 1273 | void dmpGetClassNameFromMetadata(DLD key, DD value); | 
|---|
| 1274 | const char* repGetClassNameFromMetadata(CORINFO_CLASS_HANDLE cls, const char** namespaceName); | 
|---|
| 1275 |  | 
|---|
| 1276 | void recGetTypeInstantiationArgument(CORINFO_CLASS_HANDLE cls, CORINFO_CLASS_HANDLE result, unsigned index); | 
|---|
| 1277 | void dmpGetTypeInstantiationArgument(DWORDLONG key, DWORDLONG value); | 
|---|
| 1278 | CORINFO_CLASS_HANDLE repGetTypeInstantiationArgument(CORINFO_CLASS_HANDLE cls, unsigned index); | 
|---|
| 1279 |  | 
|---|
| 1280 | void recAppendClassName( | 
|---|
| 1281 | CORINFO_CLASS_HANDLE cls, BOOL fNamespace, BOOL fFullInst, BOOL fAssembly, const WCHAR* result); | 
|---|
| 1282 | void dmpAppendClassName(const Agnostic_AppendClassName& key, DWORD value); | 
|---|
| 1283 | const WCHAR* repAppendClassName(CORINFO_CLASS_HANDLE cls, BOOL fNamespace, BOOL fFullInst, BOOL fAssembly); | 
|---|
| 1284 |  | 
|---|
| 1285 | void recGetTailCallCopyArgsThunk(CORINFO_SIG_INFO* pSig, CorInfoHelperTailCallSpecialHandling flags, void* result); | 
|---|
| 1286 | void dmpGetTailCallCopyArgsThunk(const Agnostic_GetTailCallCopyArgsThunk& key, DWORDLONG value); | 
|---|
| 1287 | void* repGetTailCallCopyArgsThunk(CORINFO_SIG_INFO* pSig, CorInfoHelperTailCallSpecialHandling flags); | 
|---|
| 1288 |  | 
|---|
| 1289 | void recGetMethodDefFromMethod(CORINFO_METHOD_HANDLE hMethod, mdMethodDef result); | 
|---|
| 1290 | void dmpGetMethodDefFromMethod(DWORDLONG key, DWORD value); | 
|---|
| 1291 | mdMethodDef repGetMethodDefFromMethod(CORINFO_METHOD_HANDLE hMethod); | 
|---|
| 1292 |  | 
|---|
| 1293 | void recCheckMethodModifier(CORINFO_METHOD_HANDLE hMethod, LPCSTR modifier, BOOL fOptional, BOOL result); | 
|---|
| 1294 | void dmpCheckMethodModifier(const Agnostic_CheckMethodModifier& key, DWORD value); | 
|---|
| 1295 | BOOL repCheckMethodModifier(CORINFO_METHOD_HANDLE hMethod, LPCSTR modifier, BOOL fOptional); | 
|---|
| 1296 |  | 
|---|
| 1297 | void recGetPInvokeUnmanagedTarget(CORINFO_METHOD_HANDLE method, void** ppIndirection, void* result); | 
|---|
| 1298 | void dmpGetPInvokeUnmanagedTarget(DWORDLONG key, DLDL value); | 
|---|
| 1299 | void* repGetPInvokeUnmanagedTarget(CORINFO_METHOD_HANDLE method, void** ppIndirection); | 
|---|
| 1300 |  | 
|---|
| 1301 | void recGetArrayRank(CORINFO_CLASS_HANDLE cls, unsigned result); | 
|---|
| 1302 | void dmpGetArrayRank(DWORDLONG key, DWORD value); | 
|---|
| 1303 | unsigned repGetArrayRank(CORINFO_CLASS_HANDLE cls); | 
|---|
| 1304 |  | 
|---|
| 1305 | void recIsFieldStatic(CORINFO_FIELD_HANDLE fhld, bool result); | 
|---|
| 1306 | void dmpIsFieldStatic(DWORDLONG key, DWORD value); | 
|---|
| 1307 | bool repIsFieldStatic(CORINFO_FIELD_HANDLE fhld); | 
|---|
| 1308 |  | 
|---|
| 1309 | void recGetIntConfigValue(const wchar_t* name, int defaultValue, int result); | 
|---|
| 1310 | void dmpGetIntConfigValue(const Agnostic_ConfigIntInfo& key, int value); | 
|---|
| 1311 | int repGetIntConfigValue(const wchar_t* name, int defaultValue); | 
|---|
| 1312 |  | 
|---|
| 1313 | void recGetStringConfigValue(const wchar_t* name, const wchar_t* result); | 
|---|
| 1314 | void dmpGetStringConfigValue(DWORD nameIndex, DWORD result); | 
|---|
| 1315 | const wchar_t* repGetStringConfigValue(const wchar_t* name); | 
|---|
| 1316 |  | 
|---|
| 1317 | struct Environment | 
|---|
| 1318 | { | 
|---|
| 1319 | Environment() : getIntConfigValue(nullptr), getStingConfigValue(nullptr) | 
|---|
| 1320 | { | 
|---|
| 1321 | } | 
|---|
| 1322 |  | 
|---|
| 1323 | LightWeightMap<MethodContext::Agnostic_ConfigIntInfo, DWORD>* getIntConfigValue; | 
|---|
| 1324 | LightWeightMap<DWORD, DWORD>*                                 getStingConfigValue; | 
|---|
| 1325 | }; | 
|---|
| 1326 |  | 
|---|
| 1327 | Environment cloneEnvironment(); | 
|---|
| 1328 |  | 
|---|
| 1329 | bool WasEnvironmentChanged(const Environment& prevEnv); | 
|---|
| 1330 |  | 
|---|
| 1331 | CompileResult* cr; | 
|---|
| 1332 | CompileResult* originalCR; | 
|---|
| 1333 | int            index; | 
|---|
| 1334 |  | 
|---|
| 1335 | private: | 
|---|
| 1336 | bool (const Environment& prevEnv); | 
|---|
| 1337 | bool IsEnvironmentContentEqual(const Environment& prevEnv); | 
|---|
| 1338 |  | 
|---|
| 1339 | template <typename key, typename value> | 
|---|
| 1340 | static bool (LightWeightMap<key, value>* prev, LightWeightMap<key, value>* curr); | 
|---|
| 1341 | static bool IsIntConfigContentEqual(LightWeightMap<Agnostic_ConfigIntInfo, DWORD>* prev, | 
|---|
| 1342 | LightWeightMap<Agnostic_ConfigIntInfo, DWORD>* curr); | 
|---|
| 1343 | static bool IsStringContentEqual(LightWeightMap<DWORD, DWORD>* prev, LightWeightMap<DWORD, DWORD>* curr); | 
|---|
| 1344 |  | 
|---|
| 1345 | #define LWM(map, key, value) LightWeightMap<key, value>* map; | 
|---|
| 1346 | #define DENSELWM(map, value) DenseLightWeightMap<value>* map; | 
|---|
| 1347 | #include "lwmlist.h" | 
|---|
| 1348 | }; | 
|---|
| 1349 |  | 
|---|
| 1350 | // ********************* Please keep this up-to-date to ease adding more *************** | 
|---|
| 1351 | // Highest packet number: 173 | 
|---|
| 1352 | // ************************************************************************************* | 
|---|
| 1353 | enum mcPackets | 
|---|
| 1354 | { | 
|---|
| 1355 | Packet_AppendClassName            = 149, // Added 8/6/2014 - needed for SIMD | 
|---|
| 1356 | Packet_AreTypesEquivalent         = 1, | 
|---|
| 1357 | Packet_AsCorInfoType              = 2, | 
|---|
| 1358 | Packet_CanAccessClass             = 3, | 
|---|
| 1359 | Packet_CanAccessFamily            = 4, | 
|---|
| 1360 | Packet_CanCast                    = 5, | 
|---|
| 1361 | Retired8                          = 6, | 
|---|
| 1362 | Packet_GetLazyStringLiteralHelper = 147, // Added 12/20/2013 - as a replacement for CanEmbedModuleHandleForHelper | 
|---|
| 1363 | Packet_CanGetCookieForPInvokeCalliSig = 7, | 
|---|
| 1364 | Packet_CanGetVarArgsHandle            = 8, | 
|---|
| 1365 | Packet_CanInline                      = 9, | 
|---|
| 1366 | Packet_CanInlineTypeCheck = 173, // Added 11/15/2018 as a replacement for CanInlineTypeCheckWithObjectVTable | 
|---|
| 1367 | Packet_CanInlineTypeCheckWithObjectVTable            = 10, | 
|---|
| 1368 | Packet_CanSkipMethodVerification                     = 11, | 
|---|
| 1369 | Packet_CanTailCall                                   = 12, | 
|---|
| 1370 | Retired4                                             = 13, | 
|---|
| 1371 | Packet_CheckMethodModifier                           = 142, // retired as 13 on 2013/07/04 | 
|---|
| 1372 | Retired3                                             = 14, | 
|---|
| 1373 | Retired5                                             = 141, // retired as 14 on 2013/07/03 | 
|---|
| 1374 | Packet_CompareTypesForCast                           = 163, // Added 10/4/17 | 
|---|
| 1375 | Packet_CompareTypesForEquality                       = 164, // Added 10/4/17 | 
|---|
| 1376 | Packet_CompileMethod                                 = 143, // retired as 141 on 2013/07/09 | 
|---|
| 1377 | Packet_ConstructStringLiteral                        = 15, | 
|---|
| 1378 | Packet_ConvertPInvokeCalliToCall                     = 169, // Added 4/29/18 | 
|---|
| 1379 | Packet_EmbedClassHandle                              = 16, | 
|---|
| 1380 | Packet_EmbedFieldHandle                              = 17, | 
|---|
| 1381 | Packet_EmbedGenericHandle                            = 18, | 
|---|
| 1382 | Packet_EmbedMethodHandle                             = 19, | 
|---|
| 1383 | Packet_EmbedModuleHandle                             = 20, | 
|---|
| 1384 | Packet_EmptyStringLiteral                            = 21, | 
|---|
| 1385 | Retired9                                             = 136, | 
|---|
| 1386 | Packet_ErrorList                                     = 22, | 
|---|
| 1387 | Packet_FilterException                               = 134, | 
|---|
| 1388 | Packet_FindCallSiteSig                               = 23, | 
|---|
| 1389 | Retired7                                             = 24, | 
|---|
| 1390 | Packet_FindNameOfToken                               = 145, // Added 7/19/2013 - adjusted members to proper types | 
|---|
| 1391 | Packet_GetSystemVAmd64PassStructInRegisterDescriptor = 156, // Added 2/17/2016 | 
|---|
| 1392 | Packet_FindSig                                       = 25, | 
|---|
| 1393 | Packet_GetAddressOfPInvokeFixup                      = 26, | 
|---|
| 1394 | Packet_GetAddressOfPInvokeTarget                     = 153, // Added 2/3/2016 | 
|---|
| 1395 | Packet_GetAddrOfCaptureThreadGlobal                  = 27, | 
|---|
| 1396 | Retired1                                             = 28, | 
|---|
| 1397 | Packet_GetArgClass                                   = 139, // retired as 28 on 2013/07/03 | 
|---|
| 1398 | Packet_GetHFAType                                    = 159, | 
|---|
| 1399 | Packet_GetArgNext                                    = 29, | 
|---|
| 1400 | Retired2                                             = 30, | 
|---|
| 1401 | Packet_GetArgType                                    = 140, // retired as 30 on 2013/07/03 | 
|---|
| 1402 | Packet_GetArrayInitializationData                    = 31, | 
|---|
| 1403 | Packet_GetArrayRank                                  = 32, | 
|---|
| 1404 | Packet_GetBBProfileData                              = 33, | 
|---|
| 1405 | Packet_GetBoundaries                                 = 34, | 
|---|
| 1406 | Packet_GetBoxHelper                                  = 35, | 
|---|
| 1407 | Packet_GetBuiltinClass                               = 36, | 
|---|
| 1408 | Packet_GetCallInfo                                   = 37, | 
|---|
| 1409 | Packet_GetCastingHelper                              = 38, | 
|---|
| 1410 | Packet_GetChildType                                  = 39, | 
|---|
| 1411 | Packet_GetClassAlignmentRequirement                  = 40, | 
|---|
| 1412 | Packet_GetClassAttribs                               = 41, | 
|---|
| 1413 | Packet_GetClassDomainID                              = 42, | 
|---|
| 1414 | Packet_GetClassGClayout                              = 43, | 
|---|
| 1415 | Packet_GetClassModuleIdForStatics                    = 44, | 
|---|
| 1416 | Packet_GetClassName                                  = 45, | 
|---|
| 1417 | Packet_GetClassNameFromMetadata                      = 166, // Added 12/4/17 | 
|---|
| 1418 | Packet_GetTypeInstantiationArgument                  = 167, // Added 12/4/17 | 
|---|
| 1419 | Packet_GetClassNumInstanceFields                     = 46, | 
|---|
| 1420 | Packet_GetClassSize                                  = 47, | 
|---|
| 1421 | Packet_GetHeapClassSize                              = 170, // Added 10/5/2018 | 
|---|
| 1422 | Packet_CanAllocateOnStack                            = 171, // Added 10/5/2018 | 
|---|
| 1423 | Packet_GetIntConfigValue                             = 151, // Added 2/12/2015 | 
|---|
| 1424 | Packet_GetStringConfigValue                          = 152, // Added 2/12/2015 | 
|---|
| 1425 | Packet_GetCookieForPInvokeCalliSig                   = 48, | 
|---|
| 1426 | Packet_GetDefaultEqualityComparerClass               = 162, // Added 9/24/2017 | 
|---|
| 1427 | Packet_GetDelegateCtor                               = 49, | 
|---|
| 1428 | Packet_GetEEInfo                                     = 50, | 
|---|
| 1429 | Packet_GetEHinfo                                     = 51, | 
|---|
| 1430 | Packet_GetFieldAddress                               = 52, | 
|---|
| 1431 | Packet_GetStaticFieldCurrentClass                    = 172, // Added 11/7/2018 | 
|---|
| 1432 | Packet_GetFieldClass                                 = 53, | 
|---|
| 1433 | Packet_GetFieldInClass                               = 54, | 
|---|
| 1434 | Packet_GetFieldInfo                                  = 55, | 
|---|
| 1435 | Packet_GetFieldName                                  = 56, | 
|---|
| 1436 | Packet_GetFieldOffset                                = 57, | 
|---|
| 1437 | Packet_GetFieldThreadLocalStoreID                    = 58, | 
|---|
| 1438 | Packet_GetFieldType                                  = 59, | 
|---|
| 1439 | Packet_GetFunctionEntryPoint                         = 60, | 
|---|
| 1440 | Packet_GetFunctionFixedEntryPoint                    = 61, | 
|---|
| 1441 | Packet_GetGSCookie                                   = 62, | 
|---|
| 1442 | Packet_GetHelperFtn                                  = 63, | 
|---|
| 1443 | Packet_GetHelperName                                 = 64, | 
|---|
| 1444 | Packet_GetInlinedCallFrameVptr                       = 65, | 
|---|
| 1445 | Packet_GetIntrinsicID                                = 66, | 
|---|
| 1446 | Packet_GetJitFlags                                   = 154, // Added 2/3/2016 | 
|---|
| 1447 | Packet_GetJitTimeLogFilename                         = 67, | 
|---|
| 1448 | Packet_GetJustMyCodeHandle                           = 68, | 
|---|
| 1449 | Packet_GetLocationOfThisType                         = 69, | 
|---|
| 1450 | Packet_GetMethodAttribs                              = 70, | 
|---|
| 1451 | Packet_GetMethodClass                                = 71, | 
|---|
| 1452 | Packet_GetMethodDefFromMethod                        = 72, | 
|---|
| 1453 | Packet_GetMethodHash                                 = 73, | 
|---|
| 1454 | Packet_GetMethodInfo                                 = 74, | 
|---|
| 1455 | Packet_GetMethodName                                 = 75, | 
|---|
| 1456 | Packet_GetMethodNameFromMetadata                     = 161, // Added 9/6/17 | 
|---|
| 1457 | Packet_GetMethodSig                                  = 76, | 
|---|
| 1458 | Packet_GetMethodSync                                 = 77, | 
|---|
| 1459 | Packet_GetMethodVTableOffset                         = 78, | 
|---|
| 1460 | Packet_GetNewArrHelper                               = 79, | 
|---|
| 1461 | Packet_GetNewHelper                                  = 80, | 
|---|
| 1462 | Packet_GetParentType                                 = 81, | 
|---|
| 1463 | Packet_GetPInvokeUnmanagedTarget                     = 82, | 
|---|
| 1464 | Packet_GetProfilingHandle                            = 83, | 
|---|
| 1465 | Packet_GetRelocTypeHint                              = 84, | 
|---|
| 1466 | Packet_GetSecurityPrologHelper                       = 85, | 
|---|
| 1467 | Packet_GetSharedCCtorHelper                          = 86, | 
|---|
| 1468 | Packet_GetTailCallCopyArgsThunk                      = 87, | 
|---|
| 1469 | Packet_GetThreadTLSIndex                             = 88, | 
|---|
| 1470 | Packet_GetTokenTypeAsHandle                          = 89, | 
|---|
| 1471 | Packet_GetTypeForBox                                 = 90, | 
|---|
| 1472 | Packet_GetTypeForPrimitiveValueClass                 = 91, | 
|---|
| 1473 | Packet_GetTypeForPrimitiveNumericClass               = 168, // Added 12/7/2017 | 
|---|
| 1474 | Packet_GetUnboxedEntry                               = 165, // Added 10/26/17 | 
|---|
| 1475 | Packet_GetUnBoxHelper                                = 92, | 
|---|
| 1476 | Packet_GetReadyToRunHelper                           = 150, // Added 10/10/2014 | 
|---|
| 1477 | Packet_GetReadyToRunDelegateCtorHelper               = 157, // Added 3/30/2016 | 
|---|
| 1478 | Packet_GetUnmanagedCallConv                          = 94, | 
|---|
| 1479 | Packet_GetVarArgsHandle                              = 95, | 
|---|
| 1480 | Packet_GetVars                                       = 96, | 
|---|
| 1481 | Packet_HandleException                               = 135, | 
|---|
| 1482 | Packet_InitClass                                     = 97, | 
|---|
| 1483 | Packet_InitConstraintsForVerification                = 98, | 
|---|
| 1484 | Packet_IsCompatibleDelegate                          = 99, | 
|---|
| 1485 | Packet_IsDelegateCreationAllowed                     = 155, | 
|---|
| 1486 | Packet_IsFieldStatic                                 = 137, // Added 4/9/2013 - needed for 4.5.1 | 
|---|
| 1487 | Packet_IsInSIMDModule                                = 148, // Added 6/18/2014 - SIMD support | 
|---|
| 1488 | Packet_IsInstantiationOfVerifiedGeneric              = 100, | 
|---|
| 1489 | Packet_IsSDArray                                     = 101, | 
|---|
| 1490 | Packet_IsStructRequiringStackAllocRetBuf             = 102, | 
|---|
| 1491 | Packet_IsValidStringRef                              = 103, | 
|---|
| 1492 | Retired6                                             = 104, | 
|---|
| 1493 | Packet_IsValidToken                                  = 144, // Added 7/19/2013 - adjusted members to proper types | 
|---|
| 1494 | Packet_IsValueClass                                  = 105, | 
|---|
| 1495 | Packet_IsWriteBarrierHelperRequired                  = 106, | 
|---|
| 1496 | Packet_MergeClasses                                  = 107, | 
|---|
| 1497 | Packet_PInvokeMarshalingRequired                     = 108, | 
|---|
| 1498 | Packet_ResolveToken                                  = 109, | 
|---|
| 1499 | Packet_ResolveVirtualMethod                          = 160, // Added 2/13/17 | 
|---|
| 1500 | Packet_TryResolveToken                               = 158, // Added 4/26/2016 | 
|---|
| 1501 | Packet_SatisfiesClassConstraints                     = 110, | 
|---|
| 1502 | Packet_SatisfiesMethodConstraints                    = 111, | 
|---|
| 1503 | Packet_ShouldEnforceCallvirtRestriction              = 112, | 
|---|
| 1504 |  | 
|---|
| 1505 | PacketCR_AddressMap                        = 113, | 
|---|
| 1506 | PacketCR_AllocBBProfileBuffer              = 131, | 
|---|
| 1507 | PacketCR_AllocGCInfo                       = 114, | 
|---|
| 1508 | PacketCR_AllocMem                          = 115, | 
|---|
| 1509 | PacketCR_AllocUnwindInfo                   = 132, | 
|---|
| 1510 | PacketCR_AssertLog                         = 138, // Added 6/10/2013 - added to nicely support ilgen | 
|---|
| 1511 | PacketCR_CallLog                           = 116, | 
|---|
| 1512 | PacketCR_ClassMustBeLoadedBeforeCodeIsRun  = 117, | 
|---|
| 1513 | PacketCR_CompileMethod                     = 118, | 
|---|
| 1514 | PacketCR_MessageLog                        = 119, | 
|---|
| 1515 | PacketCR_MethodMustBeLoadedBeforeCodeIsRun = 120, | 
|---|
| 1516 | PacketCR_ProcessName                       = 121, | 
|---|
| 1517 | PacketCR_RecordRelocation                  = 122, | 
|---|
| 1518 | PacketCR_ReportFatalError                  = 123, | 
|---|
| 1519 | PacketCR_ReportInliningDecision            = 124, | 
|---|
| 1520 | PacketCR_ReportTailCallDecision            = 125, | 
|---|
| 1521 | PacketCR_ReserveUnwindInfo                 = 133, | 
|---|
| 1522 | PacketCR_SetBoundaries                     = 126, | 
|---|
| 1523 | PacketCR_SetEHcount                        = 127, | 
|---|
| 1524 | PacketCR_SetEHinfo                         = 128, | 
|---|
| 1525 | PacketCR_SetMethodAttribs                  = 129, | 
|---|
| 1526 | PacketCR_SetVars                           = 130, | 
|---|
| 1527 | PacketCR_RecordCallSite                    = 146, // Added 10/28/2013 - to support indirect calls | 
|---|
| 1528 | }; | 
|---|
| 1529 |  | 
|---|
| 1530 | #endif | 
|---|
| 1531 |  | 
|---|