#if defined(LATE_DISASM)
node = new (this, LargeOpOpcode()) GenTreeIntCon(TYP_I_IMPL, value, fields DEBUGARG(/*largeNode*/ true));
-
- node->gtIntCon.gtIconHdl.gtIconHdl1 = handle1;
- node->gtIntCon.gtIconHdl.gtIconHdl2 = handle2;
#else
- node = new (this, GT_CNS_INT) GenTreeIntCon(TYP_I_IMPL, value, fields);
+ node = new (this, GT_CNS_INT) GenTreeIntCon(TYP_I_IMPL, value, fields);
#endif
node->gtFlags |= flags;
return node;
#if defined(LATE_DISASM)
if (tree->IsIconHandle())
{
- copy = gtNewIconHandleNode(tree->gtIntCon.gtIconVal, tree->gtFlags, tree->gtIntCon.gtFieldSeq,
- tree->gtIntCon.gtIconHdl.gtIconHdl1, tree->gtIntCon.gtIconHdl.gtIconHdl2);
+ copy = gtNewIconHandleNode(tree->gtIntCon.gtIconVal, tree->gtFlags, tree->gtIntCon.gtFieldSeq);
copy->gtIntCon.gtCompileTimeHandle = tree->gtIntCon.gtCompileTimeHandle;
copy->gtType = tree->gtType;
}
#if defined(LATE_DISASM)
if (tree->IsIconHandle())
{
- copy = gtNewIconHandleNode(tree->gtIntCon.gtIconVal, tree->gtFlags, tree->gtIntCon.gtFieldSeq,
- tree->gtIntCon.gtIconFld.gtIconCPX, tree->gtIntCon.gtIconFld.gtIconCls);
+ copy = gtNewIconHandleNode(tree->gtIntCon.gtIconVal, tree->gtFlags, tree->gtIntCon.gtFieldSeq);
copy->gtIntCon.gtCompileTimeHandle = tree->gtIntCon.gtCompileTimeHandle;
copy->gtType = tree->gtType;
}
// sequence of fields.
FieldSeqNode* gtFieldSeq;
-#if defined(LATE_DISASM)
-
- /* If the constant was morphed from some other node,
- these fields enable us to get back to what the node
- originally represented. See use of gtNewIconHandleNode()
- */
-
- union {
- /* Template struct - The significant field of the other
- * structs should overlap exactly with this struct
- */
-
- struct
- {
- unsigned gtIconHdl1;
- void* gtIconHdl2;
- } gtIconHdl;
-
- /* GT_FIELD, etc */
-
- struct
- {
- unsigned gtIconCPX;
- CORINFO_CLASS_HANDLE gtIconCls;
- } gtIconFld;
- };
-#endif
-
GenTreeIntCon(var_types type, ssize_t value DEBUGARG(bool largeNode = false))
: GenTreeIntConCommon(GT_CNS_INT, type DEBUGARG(largeNode))
, gtIconVal(value)
assert(baseReg != REG_NA);
reg = baseReg;
-#ifdef LATE_DISASM
- /*
- Keep in mind that non-static data members (GT_FIELD nodes) were
- transformed into GT_IND nodes - we keep the CLS/CPX information
- in the GT_CNS_INT node representing the field offset of the
- class member
- */
-
- if (addr->gtOper != GT_LEA && (addr->gtOp.gtOp2->gtOper == GT_CNS_INT) &&
- addr->gtOp.gtOp2->IsIconHandle(GTF_ICON_FIELD_HDL))
- {
- /* This is a field offset - set the CPX/CLS values to emit a fixup */
-
- cpx = addr->gtOp.gtOp2->gtIntCon.gtIconFld.gtIconCPX;
- cls = addr->gtOp.gtOp2->gtIntCon.gtIconFld.gtIconCls;
- }
-#endif
-
if (cons)
{
- getEmitter()->emitIns_I_AR(ins, size, imm, reg, offs, cpx, cls);
+ getEmitter()->emitIns_I_AR(ins, size, imm, reg, offs);
}
else if (rdst)
{
- getEmitter()->emitIns_R_AR(ins, size, ireg, reg, offs, cpx, cls);
+ getEmitter()->emitIns_R_AR(ins, size, ireg, reg, offs);
}
else
{
- getEmitter()->emitIns_AR_R(ins, size, ireg, reg, offs, cpx, cls);
+ getEmitter()->emitIns_AR_R(ins, size, ireg, reg, off);
}
}
}
// GT_CNS_INT is considered small, so ReplaceWith() won't copy all fields
if ((tree->gtOper == GT_CNS_INT) && tree->IsIconHandle())
{
- copy->gtIntCon.gtIconHdl.gtIconHdl1 = tree->gtIntCon.gtIconHdl.gtIconHdl1;
- copy->gtIntCon.gtIconHdl.gtIconHdl2 = tree->gtIntCon.gtIconHdl.gtIconHdl2;
+ copy->gtIntCon.gtCompileTimeHandle = tree->gtIntCon.gtCompileTimeHandle;
}
#endif