From 432cf04e95b7af2f5f89ee749e999ea98cf0c9a0 Mon Sep 17 00:00:00 2001 From: EgorBo Date: Sun, 16 Oct 2022 21:32:47 +0200 Subject: [PATCH] Clean up --- src/coreclr/jit/compiler.h | 2 +- src/coreclr/jit/importer.cpp | 26 ++++++-------------------- 2 files changed, 7 insertions(+), 21 deletions(-) diff --git a/src/coreclr/jit/compiler.h b/src/coreclr/jit/compiler.h index dc3e3c4171e79..8922342212f24 100644 --- a/src/coreclr/jit/compiler.h +++ b/src/coreclr/jit/compiler.h @@ -3631,7 +3631,7 @@ class Compiler GenTree* impInitClass(CORINFO_RESOLVED_TOKEN* pResolvedToken); - GenTree* impImportStaticReadOnlyField(uint8_t* buffer, int bufferSize, var_types valueType); + GenTree* impImportStaticReadOnlyField(uint8_t* buffer, var_types valueType); GenTree* impImportStaticFieldAccess(CORINFO_RESOLVED_TOKEN* pResolvedToken, CORINFO_ACCESS_FLAGS access, diff --git a/src/coreclr/jit/importer.cpp b/src/coreclr/jit/importer.cpp index 31045fedfd8a5..a4927f95d7831 100644 --- a/src/coreclr/jit/importer.cpp +++ b/src/coreclr/jit/importer.cpp @@ -4135,11 +4135,8 @@ GenTree* Compiler::impInitClass(CORINFO_RESOLVED_TOKEN* pResolvedToken) return node; } -GenTree* Compiler::impImportStaticReadOnlyField(uint8_t* buffer, int bufferSize, var_types valueType) +GenTree* Compiler::impImportStaticReadOnlyField(uint8_t* buffer, var_types valueType) { - // We plan to support larger values (for structs), for now let's keep it 64 bit - assert(bufferSize == sizeof(INT64)); - GenTree* tree = nullptr; switch (valueType) { @@ -9497,7 +9494,7 @@ void Compiler::impImportBlockCode(BasicBlock* block) if (info.compCompHnd->getReadonlyStaticFieldValue(resolvedToken.hField, buffer, genTypeSize(lclTyp))) { - GenTree* cnsValue = impImportStaticReadOnlyField(buffer, bufferSize, lclTyp); + GenTree* cnsValue = impImportStaticReadOnlyField(buffer, lclTyp); if (cnsValue != nullptr) { op1 = cnsValue; @@ -9574,22 +9571,11 @@ void Compiler::impImportBlockCode(BasicBlock* block) var_types fldType = fields[fldIndex].type; GenTreeLclFld* fieldTree = gtNewLclFldNode(structTempNum, fldType, fields[fldIndex].offset); - GenTree* constValTree; - - if (varTypeIsLong(fldType)) - { - int64_t value; - memcpy(&value, buffer + fields[fldIndex].offset, genTypeSize(fldType)); - constValTree = gtNewLconNode(value); - } - else - { - assert(varTypeIsIntegral(fldType)); - ssize_t value; - memcpy(&value, buffer + fields[fldIndex].offset, genTypeSize(fldType)); - constValTree = gtNewIconNode(value, fldType); - } + // Read corresponding chunk from the buffer for the given sub-field + GenTree* constValTree = + impImportStaticReadOnlyField(buffer + fields[fldIndex].offset, fldType); + assert(constValTree != nullptr); GenTree* fieldAsgTree = gtNewAssignNode(fieldTree, constValTree); impAppendTree(fieldAsgTree, CHECK_SPILL_NONE, impCurStmtDI);