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
4 changes: 4 additions & 0 deletions src/coreclr/clrdefinitions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ endif(CLR_CMAKE_TARGET_LINUX_MUSL)

add_definitions(-DDEBUGGING_SUPPORTED)

if (NOT CLR_CMAKE_TARGET_ARCH_WASM)
add_compile_definitions(FEATURE_METADATA_PERSISTENCE)
endif()

if (FEATURE_CORPROFILER)
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:DAC_COMPONENT>>>:PROFILING_SUPPORTED>)
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:DAC_COMPONENT>>>:FEATURE_PROFAPI_ATTACH_DETACH>)
Expand Down
34 changes: 2 additions & 32 deletions src/coreclr/debug/di/module.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@ void CordbModule::UpdateMetaDataCacheIfNeeded(mdToken token)
}

//
// 1) Check if in-range? Compare against tables, etc.
// 1) Check whether the token is in the cached metadata.
//
if(CheckIfTokenInMetaData(token))
{
Expand Down Expand Up @@ -365,37 +365,7 @@ BOOL CordbModule::CheckIfTokenInMetaData(mdToken token)
CONTRACTL_END;
LOG((LF_CORDB,LL_INFO10000, "CM::CITIM token=0x%x\n", token));
_ASSERTE(TypeFromToken(token) == mdtSignature);
RSExtSmartPtr<IMetaDataTables> pTable;

HRESULT hr = GetMetaDataImporter()->QueryInterface(IID_IMetaDataTables, (void**) &pTable);

_ASSERTE(SUCCEEDED(hr));
if (FAILED(hr))
{
ThrowHR(hr);
}

ULONG cbRowsAvailable; // number of rows in the table

hr = pTable->GetTableInfo(
mdtSignature >> 24, // [IN] Which table.
NULL, // [OUT] Size of a row, bytes.
&cbRowsAvailable, // [OUT] Number of rows.
NULL, // [OUT] Number of columns in each row.
NULL, // [OUT] Key column, or -1 if none.
NULL); // [OUT] Name of the table.

_ASSERTE(SUCCEEDED(hr));
if (FAILED(hr))
{
ThrowHR(hr);
}


// Rows start counting with number 1.
ULONG rowRequested = RidFromToken(token);
LOG((LF_CORDB,LL_INFO10000, "CM::UMCIN requested=0x%x available=0x%x\n", rowRequested, cbRowsAvailable));
return (rowRequested <= cbRowsAvailable);
return GetMetaDataImporter()->IsValidToken(token);
}

// This helper class ensures the remote serailzied buffer gets deleted in the RefreshMetaData
Expand Down
3 changes: 2 additions & 1 deletion src/coreclr/ildasm/dasm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -628,7 +628,8 @@ BOOL EnumClasses()
}
}
}
g_pImport->EnumMethodImplClose(&hBody,&hDecl);
g_pImport->EnumClose(&hBody);
g_pImport->EnumClose(&hDecl);
}
i++;
}
Expand Down
50 changes: 2 additions & 48 deletions src/coreclr/inc/corpriv.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,10 @@ STDAPI CreateMetaDataDispenser(
REFIID riid,
void ** pMetaDataDispenserOut);

#ifdef FEATURE_ISYM_READER
// Helper function to get a do-nothing IMetaDataImport2 instance for DIA.
IMetaDataImport2* GetNoopMetaDataImport2();
#endif // FEATURE_ISYM_READER

// Helper function to get an Internal interface with an in-memory metadata section
STDAPI GetMDInternalInterface(
Expand Down Expand Up @@ -114,54 +116,6 @@ DECLARE_INTERFACE_(IMetaDataHelper, IUnknown)
}; // IMetaDataHelper


EXTERN_GUID(IID_IMetaDataEmitHelper, 0x5c240ae4, 0x1e09, 0x11d3, 0x94, 0x24, 0x0, 0x0, 0xf8, 0x8, 0x34, 0x60);

#undef INTERFACE
#define INTERFACE IMetaDataEmitHelper
DECLARE_INTERFACE_(IMetaDataEmitHelper, IUnknown)
{
// emit helper functions
STDMETHOD(DefineMethodSemanticsHelper)(
mdToken tkAssociation, // [IN] property or event token
DWORD dwFlags, // [IN] semantics
mdMethodDef md) PURE; // [IN] method to associated with

STDMETHOD(SetFieldLayoutHelper)( // Return hresult.
mdFieldDef fd, // [IN] field to associate the layout info
ULONG ulOffset) PURE; // [IN] the offset for the field

STDMETHOD(DefineEventHelper) (
mdTypeDef td, // [IN] the class/interface on which the event is being defined
LPCWSTR szEvent, // [IN] Name of the event
DWORD dwEventFlags, // [IN] CorEventAttr
mdToken tkEventType, // [IN] a reference (mdTypeRef or mdTypeRef) to the Event class
mdEvent *pmdEvent) PURE; // [OUT] output event token

STDMETHOD(AddDeclarativeSecurityHelper) (
mdToken tk, // [IN] Parent token (typedef/methoddef)
DWORD dwAction, // [IN] Security action (CorDeclSecurity)
void const *pValue, // [IN] Permission set blob
DWORD cbValue, // [IN] Byte count of permission set blob
mdPermission*pmdPermission) PURE; // [OUT] Output permission token

STDMETHOD(SetResolutionScopeHelper)( // Return hresult.
mdTypeRef tr, // [IN] TypeRef record to update
mdToken rs) PURE; // [IN] new ResolutionScope

STDMETHOD(SetManifestResourceOffsetHelper)( // Return hresult.
mdManifestResource mr, // [IN] The manifest token
ULONG ulOffset) PURE; // [IN] new offset

STDMETHOD(SetTypeParent)( // Return hresult.
mdTypeDef td, // [IN] Type definition
mdToken tkExtends) PURE; // [IN] parent type

STDMETHOD(AddInterfaceImpl)( // Return hresult.
mdTypeDef td, // [IN] Type definition
mdToken tkInterface) PURE; // [IN] interface type

}; // IMetaDataEmitHelper

//////////////////////////////////////////////////////////////////////////////
// enum CorElementTypeZapSig defines some additional internal ELEMENT_TYPE's
// values that are only used by ZapSig signatures.
Expand Down
Loading
Loading