summaryrefslogtreecommitdiff
path: root/src/vm/frames.cpp
diff options
context:
space:
mode:
authorSergey Andreenko <seandree@microsoft.com>2019-05-07 14:55:22 -0700
committerSergey Andreenko <seandree@microsoft.com>2019-05-07 14:56:11 -0700
commit1dc55132deac51eeb265b086a96ee5b96d68254a (patch)
tree21205f3c5d0633189887016973cbbef6e5ae81af /src/vm/frames.cpp
parent4e8ee8653b40062fd220a3a6f492356dd20df198 (diff)
downloadcoreclr-1dc55132deac51eeb265b086a96ee5b96d68254a.tar.gz
coreclr-1dc55132deac51eeb265b086a96ee5b96d68254a.tar.bz2
coreclr-1dc55132deac51eeb265b086a96ee5b96d68254a.zip
Save OBJECTREF_TO_UNCHECKED_OBJECTREF and use auto.
On x86 OBJECTREF_TO_UNCHECKED_OBJECTREF expands to `((UINT_PTR)((*((_UNCHECKED_OBJECTREF*)&(fromAddress)))))` where `*((_UNCHECKED_OBJECTREF*)` call contructor of `OBJECTREF` that call `Object->Validate` that fails for `fromAddress` because it is not longer a valid address.
Diffstat (limited to 'src/vm/frames.cpp')
-rw-r--r--src/vm/frames.cpp15
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)));
}
}