}
}
-ValueNum ValueNumStore::VNForByrefCon(INT64 cnsVal)
+ValueNum ValueNumStore::VNForByrefCon(size_t cnsVal)
{
ValueNum res;
if (GetByrefCnsMap()->Lookup(cnsVal, &res))
}
else // both args are TYP_REF or both args are TYP_BYREF
{
- INT64 arg0Val = ConstantValue<size_t>(arg0VN); // We represent ref/byref constants as size_t's.
- INT64 arg1Val = ConstantValue<size_t>(arg1VN); // Also we consider null to be zero.
+ size_t arg0Val = ConstantValue<size_t>(arg0VN); // We represent ref/byref constants as size_t's.
+ size_t arg1Val = ConstantValue<size_t>(arg1VN); // Also we consider null to be zero.
if (VNFuncIsComparison(func))
{
}
else if (typ == TYP_INT) // We could see GT_OR of a constant ByRef and Null
{
- int resultVal = (int)EvalOp<INT64>(func, arg0Val, arg1Val);
+ int resultVal = (int)EvalOp<size_t>(func, arg0Val, arg1Val);
result = VNForIntCon(resultVal);
}
else // We could see GT_OR of a constant ByRef and Null
{
assert((typ == TYP_BYREF) || (typ == TYP_LONG));
- INT64 resultVal = EvalOp<INT64>(func, arg0Val, arg1Val);
- result = VNForByrefCon(resultVal);
+ size_t resultVal = EvalOp<size_t>(func, arg0Val, arg1Val);
+ result = VNForByrefCon(resultVal);
}
}
}
switch (typ)
{
case TYP_BYREF:
- result = VNForByrefCon(resultVal);
+ result = VNForByrefCon((size_t)resultVal);
break;
case TYP_LONG:
result = VNForLongCon(resultVal);
else
{
assert(typ == TYP_BYREF);
- if (srcIsUnsigned)
- {
- return VNForByrefCon(INT64(unsigned(arg0Val)));
- }
- else
- {
- return VNForByrefCon(INT64(arg0Val));
- }
+ return VNForByrefCon(size_t(arg0Val));
}
#else // TARGET_32BIT
if (srcIsUnsigned)
#endif
case TYP_BYREF:
assert(typ == TYP_BYREF);
- return VNForByrefCon((INT64)arg0Val);
+ return VNForByrefCon(size_t(arg0Val));
+
case TYP_FLOAT:
assert(typ == TYP_FLOAT);
if (srcIsUnsigned)
return arg0VN;
case TYP_BYREF:
assert(typ == TYP_BYREF);
- return VNForByrefCon((INT64)arg0Val);
+ return VNForByrefCon((size_t)arg0Val);
case TYP_FLOAT:
assert(typ == TYP_FLOAT);
if (srcIsUnsigned)
ValueNum VNForLongCon(INT64 cnsVal);
ValueNum VNForFloatCon(float cnsVal);
ValueNum VNForDoubleCon(double cnsVal);
- ValueNum VNForByrefCon(INT64 byrefVal);
+ ValueNum VNForByrefCon(size_t byrefVal);
#ifdef _TARGET_64BIT_
ValueNum VNForPtrSizeIntCon(INT64 cnsVal)
return m_doubleCnsMap;
}
- LongToValueNumMap* m_byrefCnsMap;
- LongToValueNumMap* GetByrefCnsMap()
+ typedef VNMap<size_t> ByrefToValueNumMap;
+ ByrefToValueNumMap* m_byrefCnsMap;
+ ByrefToValueNumMap* GetByrefCnsMap()
{
if (m_byrefCnsMap == nullptr)
{
- m_byrefCnsMap = new (m_alloc) LongToValueNumMap(m_alloc);
+ m_byrefCnsMap = new (m_alloc) ByrefToValueNumMap(m_alloc);
}
return m_byrefCnsMap;
}
template <>
struct ValueNumStore::VarTypConv<TYP_BYREF>
{
- typedef INT64 Type;
- typedef void* Lang;
+ typedef size_t Type;
+ typedef void* Lang;
};
template <>
struct ValueNumStore::VarTypConv<TYP_REF>