return OperIsAnyList(gtOper);
}
- inline GenTree* MoveNext();
-
- inline GenTree* Current();
-
- inline GenTree** pCurrent();
-
inline GenTree* gtGetOp1() const;
// Directly return op2. Asserts the node is binary. Might return nullptr if the binary node allows
return (gtOper == GT_BOX) && (gtFlags & GTF_BOX_VALUE);
}
-inline GenTree* GenTree::MoveNext()
-{
- assert(OperIsAnyList());
- return AsOp()->gtOp2;
-}
-
#ifdef DEBUG
//------------------------------------------------------------------------
// IsValidCallArgument: Given an GenTree node that represents an argument
}
#endif // DEBUG
-inline GenTree* GenTree::Current()
-{
- assert(OperIsAnyList());
- return AsOp()->gtOp1;
-}
-
-inline GenTree** GenTree::pCurrent()
-{
- assert(OperIsAnyList());
- return &(AsOp()->gtOp1);
-}
-
inline GenTree* GenTree::gtGetOp1() const
{
return AsOp()->gtOp1;
MakeSrcContained(node, op1);
// MultiplyNoFlags is a Commutative operation, so swap the first two operands here
// to make the containment checks in codegen significantly simpler
- *(originalArgList->pCurrent()) = op2;
- *(originalArgList->Rest()->pCurrent()) = op1;
+ originalArgList->Current() = op2;
+ originalArgList->Rest()->Current() = op1;
}
else if (supportsRegOptional)
{
#ifdef TARGET_64BIT
#define TYP_I_IMPL TYP_LONG
#define TYP_U_IMPL TYP_ULONG
-#define TYPE_REF_IIM TYPE_REF_LNG
#else
#define TYP_I_IMPL TYP_INT
#define TYP_U_IMPL TYP_UINT
-#define TYPE_REF_IIM TYPE_REF_INT
#ifdef _PREFAST_
// We silence this in the 32-bit build because for portability, we like to have asserts like this:
// assert(op2->gtType == TYP_INT || op2->gtType == TYP_I_IMPL);