diff options
-rw-r--r-- | src/vm/frames.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/vm/frames.cpp b/src/vm/frames.cpp index 03570a2de8..222047bdbf 100644 --- a/src/vm/frames.cpp +++ b/src/vm/frames.cpp @@ -967,18 +967,21 @@ void GCFrame::GcScanRoots(promote_func *fn, ScanContext* sc) PTR_PTR_Object pRefs = dac_cast<PTR_PTR_Object>(m_pObjRefs); - for (UINT i = 0;i < m_numObjRefs; i++) + for (UINT i = 0; i < m_numObjRefs; i++) { - OBJECTREF fromAddress = m_pObjRefs[i]; + auto fromAddress = OBJECTREF_TO_UNCHECKED_OBJECTREF(m_pObjRefs[i]); if (m_MaybeInterior) - PromoteCarefully(fn, pRefs + i, sc, GC_CALL_INTERIOR|CHECK_APP_DOMAIN); + { + PromoteCarefully(fn, pRefs + i, sc, GC_CALL_INTERIOR | CHECK_APP_DOMAIN); + } else + { (*fn)(pRefs + i, sc, 0); + } - OBJECTREF toAddress = m_pObjRefs[i]; + auto toAddress = OBJECTREF_TO_UNCHECKED_OBJECTREF(m_pObjRefs[i]); LOG((LF_GC, INFO3, "GC Protection Frame promoted" FMT_ADDR "to" FMT_ADDR "\n", - DBG_ADDR(OBJECTREF_TO_UNCHECKED_OBJECTREF(fromAddress)), - DBG_ADDR(OBJECTREF_TO_UNCHECKED_OBJECTREF(toAddress)))); + DBG_ADDR(fromAddress), DBG_ADDR(toAddress))); } } |