while(PC < PCEnd)
{
- ULONG_PTR prevPC = PC;
+ ULONG_PTR currentPC = PC;
DisasmAndClean (PC, line, _countof(line));
// This is the closing of the previous run.
}
ExtOut ("\n");
}
- else if (prevPC != PCBegin)
+ else if (currentPC != PCBegin)
{
ExtOut ("\n");
}
//
// Print out line numbers if needed
//
- if (!bSuppressLines && SUCCEEDED(GetLineByOffset(TO_CDADDR(PC), &lineNum, fileName, MAX_PATH_FNAME+1)))
+ if (!bSuppressLines && SUCCEEDED(GetLineByOffset(TO_CDADDR(currentPC), &lineNum, fileName, MAX_PATH_FNAME+1)))
{
if (lineNum != curLine)
{
//
if (pGCEncodingInfo)
{
- SIZE_T curOffset = (PC - PCBegin) + pGCEncodingInfo->hotSizeToAdd;
+ SIZE_T curOffset = (currentPC - PCBegin) + pGCEncodingInfo->hotSizeToAdd;
while ( !pGCEncodingInfo->fDoneDecoding
&& pGCEncodingInfo->ofs <= curOffset)
{
//
if (pEHInfo)
{
- pEHInfo->FormatForDisassembly(PC - PCBegin);
+ pEHInfo->FormatForDisassembly(currentPC - PCBegin);
}
- if (PC == PCAskedFor)
+ if (currentPC == PCAskedFor)
{
ExtOut (">>> ");
}
//
if (bDisplayOffsets)
{
- ExtOut("%04x ", PC - PCBegin);
+ ExtOut("%04x ", currentPC - PCBegin);
}
// look at the disassembled bytes
|| !strncmp (ptr, "badc0de2", 8)
))
{
- ULONG_PTR InstrAddr = prevPC;
+ ULONG_PTR InstrAddr = currentPC;
//
// Compute address into saved copy of the code, and
// Print out real code address in place of the copy address
//
- ExtOut("%08x ", (ULONG)InstrAddr);
+ ExtOut("%08x`%08x ", (ULONG)(InstrAddr >> 32), (ULONG)InstrAddr);
ptr = line;
NextTerm (ptr);
// The value of card_size is determined empirically according to the average size of an object
// In the code we also rely on the assumption that one card_table entry (DWORD) covers an entire os page
//
-#if defined (_TARGET_AMD64_)
+#if defined (_TARGET_WIN64_)
#define card_size ((size_t)(2*DT_OS_PAGE_SIZE/card_word_width))
#else
#define card_size ((size_t)(DT_OS_PAGE_SIZE/card_word_width))
-#endif //_TARGET_AMD64_
+#endif //_TARGET_WIN64_
// so card_size = 128 on x86, 256 on x64
VOID CALLBACK DumpGCTableFiberEntry (LPVOID pvGCEncodingInfo)
{
GCEncodingInfo *pInfo = (GCEncodingInfo*)pvGCEncodingInfo;
- GCInfoToken gcInfoToken = { pInfo, GCINFO_VERSION };
+ GCInfoToken gcInfoToken = { pInfo->table, GCINFO_VERSION };
g_targetMachine->DumpGCInfo(gcInfoToken, pInfo->methodSize, DecodeGCTableEntry, false /*encBytes*/, false /*bPrintHeader*/);
pInfo->fDoneDecoding = true;
break;
}
#elif defined (_TARGET_ARM64_)
-
+ iEncodedReg = iEncodedReg + ctx; //We have to compensate for not tracking x18
if (ctx == 1)
{
if (iReg < 18 ) // skip volatile registers for second context
if(safePointDecoder.IsSafePoint(safePointOffset))
{
_ASSERTE(!fNewInterruptible);
- if (pfnSafePointFunc(offset, pvData))
+ if (pfnSafePointFunc(safePointOffset, pvData))
break;
flags = 0;