#endif // SOS_TARGET_X86
#ifdef SOS_TARGET_AMD64
-#ifndef FEATURE_PAL
#include "gcdump.h"
#define DAC_ARG(x)
#define SUPPORTS_DAC
#endif
#define LOG_PIPTR(pObjRef, gcFlags, hCallBack) ((void)0)
#include "gcdumpnonx86.cpp"
-#endif // FEATURE_PAL
#endif // SOS_TARGET_AMD64
#include "disasm.h"
///
void AMD64Machine::DumpGCInfo(BYTE* pTable, unsigned methodSize, printfFtn gcPrintf, bool encBytes, bool bPrintHeader) const
{
-#ifdef FEATURE_PAL
- ExtErr("AMD64Machine::DumpGCInfo not implemented\n");
-#else
if (bPrintHeader)
{
ExtOut("Pointer table:\n");
gcDump.gcPrintf = gcPrintf;
gcDump.DumpGCTable(pTable, methodSize, 0);
-#endif // FEATURE_PAL
}
#endif // SOS_TARGET_AMD64
#include "daccess.h"
+#define _max(a, b) (((a) > (b)) ? (a) : (b))
+#define _min(a, b) (((a) < (b)) ? (a) : (b))
+
#ifndef GCINFODECODER_NO_EE
#include "eetwain.h"
#define MAX_PREDECODED_SLOTS 64
#endif
+#if defined(FEATURE_PAL) && !defined(STATIC_CONTRACT_SUPPORTS_DAC_HOST_ONLY)
+#define STATIC_CONTRACT_SUPPORTS_DAC_HOST_ONLY
+#endif
+
enum GcInfoDecoderFlags
m_SlotArray[0].Slot.RegisterNumber = regNum;
m_SlotArray[0].Flags = flags;
- UINT32 loopEnd = min(m_NumRegisters, MAX_PREDECODED_SLOTS);
+ UINT32 loopEnd = _min(m_NumRegisters, MAX_PREDECODED_SLOTS);
for(i++; i < loopEnd; i++)
{
if(flags)
m_SlotArray[i].Slot.Stack.Base = spBase;
m_SlotArray[i].Flags = flags;
- UINT32 loopEnd = min(m_NumRegisters + numStackSlots, MAX_PREDECODED_SLOTS);
+ UINT32 loopEnd = _min(m_NumRegisters + numStackSlots, MAX_PREDECODED_SLOTS);
for(i++; i < loopEnd; i++)
{
spBase = (GcStackSlotBase) reader.Read(2);
m_SlotArray[i].Slot.Stack.Base = spBase;
m_SlotArray[i].Flags = flags;
- UINT32 loopEnd = min(m_NumSlots, MAX_PREDECODED_SLOTS);
+ UINT32 loopEnd = _min(m_NumSlots, MAX_PREDECODED_SLOTS);
for(i++; i < loopEnd; i++)
{
spBase = (GcStackSlotBase) reader.Read(2);
LOG((LF_GCROOTS, LL_INFO1000, "Reporting " FMT_REG, regNum ));
OBJECTREF* pObjRef = GetRegisterSlot( regNum, pRD );
-
-#ifdef FEATURE_PAL
+#if defined(FEATURE_PAL) && !defined(SOS_TARGET_AMD64)
// On PAL, we don't always have the context pointers available due to
// a limitation of an unwinding library. In such case, the context
// pointers for some nonvolatile registers are NULL.
gcFlags |= GC_CALL_PINNED;
}
-#endif // FEATURE_PAL
+#endif // FEATURE_PAL && !SOS_TARGET_AMD64
#ifdef _DEBUG
if(IsScratchRegister(regNum, pRD))