Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion src/coreclr/inc/corinfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -1206,7 +1206,8 @@ enum CorInfoAccessAllowedHelperArgType
CORINFO_HELPER_ARG_TYPE_Field = 1,
CORINFO_HELPER_ARG_TYPE_Method = 2,
CORINFO_HELPER_ARG_TYPE_Class = 3,
CORINFO_HELPER_ARG_TYPE_Const = 4,
CORINFO_HELPER_ARG_TYPE_Module = 4,
CORINFO_HELPER_ARG_TYPE_Const = 5,
};
struct CORINFO_HELPER_ARG
{
Expand Down Expand Up @@ -3137,6 +3138,11 @@ class ICorDynamicInfo : public ICorStaticInfo
CORINFO_MODULE_HANDLE handle
) = 0;

virtual CORINFO_MODULE_HANDLE embedModuleHandle(
CORINFO_MODULE_HANDLE handle,
void **ppIndirection = NULL
) = 0;

virtual CORINFO_CLASS_HANDLE embedClassHandle(
CORINFO_CLASS_HANDLE handle,
void **ppIndirection = NULL
Expand All @@ -3147,6 +3153,11 @@ class ICorDynamicInfo : public ICorStaticInfo
void **ppIndirection = NULL
) = 0;

virtual CORINFO_FIELD_HANDLE embedFieldHandle(
CORINFO_FIELD_HANDLE handle,
void **ppIndirection = NULL
) = 0;

// Given a module scope (module), a method handle (context) and
// a metadata token (metaTOK), fetch the handle
// (type, field or method) associated with the token.
Expand Down
8 changes: 8 additions & 0 deletions src/coreclr/inc/icorjitinfoimpl_generated.h
Original file line number Diff line number Diff line change
Expand Up @@ -556,6 +556,10 @@ void* getMethodSync(
CorInfoHelpFunc getLazyStringLiteralHelper(
CORINFO_MODULE_HANDLE handle) override;

CORINFO_MODULE_HANDLE embedModuleHandle(
CORINFO_MODULE_HANDLE handle,
void** ppIndirection) override;

CORINFO_CLASS_HANDLE embedClassHandle(
CORINFO_CLASS_HANDLE handle,
void** ppIndirection) override;
Expand All @@ -564,6 +568,10 @@ CORINFO_METHOD_HANDLE embedMethodHandle(
CORINFO_METHOD_HANDLE handle,
void** ppIndirection) override;

CORINFO_FIELD_HANDLE embedFieldHandle(
CORINFO_FIELD_HANDLE handle,
void** ppIndirection) override;

void embedGenericHandle(
CORINFO_RESOLVED_TOKEN* pResolvedToken,
bool fEmbedParent,
Expand Down
10 changes: 5 additions & 5 deletions src/coreclr/inc/jiteeversionguid.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@

#include <minipal/guid.h>

constexpr GUID JITEEVersionIdentifier = { /* 719e5cb9-d156-437d-9105-17fa5c316a39 */
0x719e5cb9,
0xd156,
0x437d,
{0x91, 0x05, 0x17, 0xfa, 0x5c, 0x31, 0x6a, 0x39}
constexpr GUID JITEEVersionIdentifier = { /* f22d9c39-8d24-4e4d-86aa-7b883aecf97f */
0xf22d9c39,
0x8d24,
0x4e4d,
{0x86, 0xaa, 0x7b, 0x88, 0x3a, 0xec, 0xf9, 0x7f}
};

#endif // JIT_EE_VERSIONING_GUID_H
2 changes: 2 additions & 0 deletions src/coreclr/jit/ICorJitInfo_names_generated.h
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,10 @@ DEF_CLR_API(getFunctionEntryPoint)
DEF_CLR_API(getFunctionFixedEntryPoint)
DEF_CLR_API(getMethodSync)
DEF_CLR_API(getLazyStringLiteralHelper)
DEF_CLR_API(embedModuleHandle)
DEF_CLR_API(embedClassHandle)
DEF_CLR_API(embedMethodHandle)
DEF_CLR_API(embedFieldHandle)
DEF_CLR_API(embedGenericHandle)
DEF_CLR_API(getLocationOfThisType)
DEF_CLR_API(getAddressOfPInvokeTarget)
Expand Down
20 changes: 20 additions & 0 deletions src/coreclr/jit/ICorJitInfo_wrapper_generated.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1318,6 +1318,16 @@ CorInfoHelpFunc WrapICorJitInfo::getLazyStringLiteralHelper(
return temp;
}

CORINFO_MODULE_HANDLE WrapICorJitInfo::embedModuleHandle(
CORINFO_MODULE_HANDLE handle,
void** ppIndirection)
{
API_ENTER(embedModuleHandle);
CORINFO_MODULE_HANDLE temp = wrapHnd->embedModuleHandle(handle, ppIndirection);
API_LEAVE(embedModuleHandle);
return temp;
}

CORINFO_CLASS_HANDLE WrapICorJitInfo::embedClassHandle(
CORINFO_CLASS_HANDLE handle,
void** ppIndirection)
Expand All @@ -1338,6 +1348,16 @@ CORINFO_METHOD_HANDLE WrapICorJitInfo::embedMethodHandle(
return temp;
}

CORINFO_FIELD_HANDLE WrapICorJitInfo::embedFieldHandle(
CORINFO_FIELD_HANDLE handle,
void** ppIndirection)
{
API_ENTER(embedFieldHandle);
CORINFO_FIELD_HANDLE temp = wrapHnd->embedFieldHandle(handle, ppIndirection);
API_LEAVE(embedFieldHandle);
return temp;
}

void WrapICorJitInfo::embedGenericHandle(
CORINFO_RESOLVED_TOKEN* pResolvedToken,
bool fEmbedParent,
Expand Down
16 changes: 14 additions & 2 deletions src/coreclr/jit/compiler.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1489,7 +1489,13 @@ inline GenTreeIntCon* Compiler::gtNewIconHandleNode(size_t value, GenTreeFlags f

inline GenTree* Compiler::gtNewIconEmbScpHndNode(CORINFO_MODULE_HANDLE scpHnd)
{
return gtNewIconEmbHndNode((void*)scpHnd, nullptr, GTF_ICON_SCOPE_HDL, scpHnd);
void *embedScpHnd, *pEmbedScpHnd;

embedScpHnd = (void*)info.compCompHnd->embedModuleHandle(scpHnd, &pEmbedScpHnd);

assert((!embedScpHnd) != (!pEmbedScpHnd));

return gtNewIconEmbHndNode(embedScpHnd, pEmbedScpHnd, GTF_ICON_SCOPE_HDL, scpHnd);
}

//-----------------------------------------------------------------------------
Expand Down Expand Up @@ -1529,7 +1535,13 @@ inline GenTree* Compiler::gtNewIconEmbMethHndNode(CORINFO_METHOD_HANDLE methHnd)

inline GenTree* Compiler::gtNewIconEmbFldHndNode(CORINFO_FIELD_HANDLE fldHnd)
{
return gtNewIconEmbHndNode((void*)fldHnd, nullptr, GTF_ICON_FIELD_HDL, fldHnd);
void *embedFldHnd, *pEmbedFldHnd;

embedFldHnd = (void*)info.compCompHnd->embedFieldHandle(fldHnd, &pEmbedFldHnd);

assert((!embedFldHnd) != (!pEmbedFldHnd));

return gtNewIconEmbHndNode(embedFldHnd, pEmbedFldHnd, GTF_ICON_FIELD_HDL, fldHnd);
}

/*****************************************************************************/
Expand Down
3 changes: 3 additions & 0 deletions src/coreclr/jit/importer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4389,6 +4389,9 @@ void Compiler::impInsertHelperCall(CORINFO_HELPER_DESC* helperInfo)
info.compCompHnd->classMustBeLoadedBeforeCodeIsRun(helperArg.classHandle);
currentArg = gtNewIconEmbClsHndNode(helperArg.classHandle);
break;
case CORINFO_HELPER_ARG_TYPE_Module:
currentArg = gtNewIconEmbScpHndNode(helperArg.moduleHandle);
break;
case CORINFO_HELPER_ARG_TYPE_Const:
currentArg = gtNewIconNode(helperArg.constant);
break;
Expand Down
6 changes: 6 additions & 0 deletions src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3592,6 +3592,12 @@ private CorInfoHelpFunc getLazyStringLiteralHelper(CORINFO_MODULE_STRUCT_* handl
return CorInfoHelpFunc.CORINFO_HELP_UNDEF;
}

private CORINFO_MODULE_STRUCT_* embedModuleHandle(CORINFO_MODULE_STRUCT_* handle, ref void* ppIndirection)
{ throw new NotImplementedException("embedModuleHandle"); }

private CORINFO_FIELD_STRUCT_* embedFieldHandle(CORINFO_FIELD_STRUCT_* handle, ref void* ppIndirection)
{ throw new NotImplementedException("embedFieldHandle"); }

private static CORINFO_RUNTIME_LOOKUP_KIND GetGenericRuntimeLookupKind(MethodDesc method)
{
if (method.RequiresInstMethodDescArg())
Expand Down
Loading
Loading