Skip to content

Commit 39ad112

Browse files
authored
Fix access flags passed to getFieldInfo in interpreter (#122009)
The interpreter compiler incorrectly passes CORINFO_ACCESS_GET to the getFieldInfo for CEE_STSFLD and CEE_STFLD opcodes. That causes failure in one of the libraries tests that initializes BitConverter.IsLittleEndian field. This change puts in the correct CORINFO_ACCESS_SET flag.
1 parent 7da7284 commit 39ad112

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/coreclr/interpreter/compiler.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7803,7 +7803,7 @@ void InterpCompiler::GenerateCode(CORINFO_METHOD_INFO* methodInfo)
78037803
CORINFO_FIELD_INFO fieldInfo;
78047804
uint32_t token = getU4LittleEndian(m_ip + 1);
78057805
ResolveToken(token, CORINFO_TOKENKIND_Field, &resolvedToken);
7806-
m_compHnd->getFieldInfo(&resolvedToken, m_methodHnd, CORINFO_ACCESS_GET, &fieldInfo);
7806+
m_compHnd->getFieldInfo(&resolvedToken, m_methodHnd, CORINFO_ACCESS_SET, &fieldInfo);
78077807

78087808
// Inject call to callsite callout helper
78097809
EmitCallsiteCallout(fieldInfo.accessAllowed, &fieldInfo.accessCalloutHelper);
@@ -7882,7 +7882,7 @@ void InterpCompiler::GenerateCode(CORINFO_METHOD_INFO* methodInfo)
78827882
CORINFO_FIELD_INFO fieldInfo;
78837883
uint32_t token = getU4LittleEndian(m_ip + 1);
78847884
ResolveToken(token, CORINFO_TOKENKIND_Field, &resolvedToken);
7885-
m_compHnd->getFieldInfo(&resolvedToken, m_methodHnd, CORINFO_ACCESS_GET, &fieldInfo);
7885+
m_compHnd->getFieldInfo(&resolvedToken, m_methodHnd, CORINFO_ACCESS_SET, &fieldInfo);
78867886

78877887
// Inject call to callsite callout helper
78887888
EmitCallsiteCallout(fieldInfo.accessAllowed, &fieldInfo.accessCalloutHelper);

0 commit comments

Comments
 (0)