#include "jitpch.h"
#ifdef _MSC_VER
#pragma hdrstop
-
-#pragma warning(disable : 4244) // loss of data int -> char ..
-
#endif
#include "gcinfotypes.h"
{
CallPattern pat;
- pat.fld.argCnt = argCnt;
- pat.fld.regMask = regMask; // EBP,EBX,ESI,EDI
- pat.fld.argMask = argMask;
- pat.fld.codeDelta = codeDelta;
+ pat.fld.argCnt = (BYTE)argCnt;
+ pat.fld.regMask = (BYTE)regMask; // EBP,EBX,ESI,EDI
+ pat.fld.argMask = (BYTE)argMask;
+ pat.fld.codeDelta = (BYTE)codeDelta;
bool codeDeltaOK = (pat.fld.codeDelta == codeDelta);
unsigned bestDelta2 = 0xff;
if (header.argCount <= SET_ARGCOUNT_MAX)
{
state->argCount = header.argCount;
- encoding = SET_ARGCOUNT + header.argCount;
+ encoding = (BYTE)(SET_ARGCOUNT + header.argCount);
goto DO_RETURN;
}
else
if (initNeeded4(state->argCount, header.argCount, SET_ARGCOUNT_MAX, &hint))
{
assert(hint <= SET_ARGCOUNT_MAX);
- state->argCount = hint;
- encoding = SET_ARGCOUNT + hint;
+ state->argCount = (unsigned short)hint;
+ encoding = (BYTE)(SET_ARGCOUNT + hint);
goto DO_RETURN;
}
else
{
assert(hint <= 0xf);
state->argCount <<= 4;
- state->argCount += hint;
- encoding = NEXT_FOUR_ARGCOUNT + hint;
+ state->argCount += ((unsigned short)hint);
+ encoding = (BYTE)(NEXT_FOUR_ARGCOUNT + hint);
goto DO_RETURN;
}
}
if (header.frameSize <= SET_FRAMESIZE_MAX)
{
state->frameSize = header.frameSize;
- encoding = SET_FRAMESIZE + header.frameSize;
+ encoding = (BYTE)(SET_FRAMESIZE + header.frameSize);
goto DO_RETURN;
}
else
{
assert(hint <= SET_FRAMESIZE_MAX);
state->frameSize = hint;
- encoding = SET_FRAMESIZE + hint;
+ encoding = (BYTE)(SET_FRAMESIZE + hint);
goto DO_RETURN;
}
else
assert(hint <= 0xf);
state->frameSize <<= 4;
state->frameSize += hint;
- encoding = NEXT_FOUR_FRAMESIZE + hint;
+ encoding = (BYTE)(NEXT_FOUR_FRAMESIZE + hint);
goto DO_RETURN;
}
}
if (header.untrackedCnt <= SET_UNTRACKED_MAX)
{
state->untrackedCnt = header.untrackedCnt;
- encoding = SET_UNTRACKED + header.untrackedCnt;
+ encoding = (BYTE)(SET_UNTRACKED + header.untrackedCnt);
goto DO_RETURN;
}
else if (state->untrackedCnt != HAS_UNTRACKED)
if (initNeeded3(state->epilogSize, header.epilogSize, SET_EPILOGSIZE_MAX, &hint))
{
assert(hint <= SET_EPILOGSIZE_MAX);
- state->epilogSize = hint;
- encoding = SET_EPILOGSIZE + hint;
+ state->epilogSize = (BYTE)hint;
+ encoding = (BYTE)(SET_EPILOGSIZE + hint);
goto DO_RETURN;
}
else
{
assert(hint <= 0x7);
state->epilogSize <<= 3;
- state->epilogSize += hint;
- encoding = NEXT_THREE_EPILOGSIZE + hint;
+ state->epilogSize += (BYTE)hint;
+ encoding = (BYTE)(NEXT_THREE_EPILOGSIZE + hint);
goto DO_RETURN;
}
}
if (initNeeded3(state->prologSize, header.prologSize, 15, &hint))
{
assert(hint <= 15);
- state->prologSize = hint;
- encoding = SET_PROLOGSIZE + hint;
+ state->prologSize = (BYTE)hint;
+ encoding = (BYTE)(SET_PROLOGSIZE + hint);
goto DO_RETURN;
}
else
{
assert(hint <= 0x7);
state->prologSize <<= 3;
- state->prologSize += hint;
- encoding = NEXT_THREE_PROLOGSIZE + hint;
+ state->prologSize += ((BYTE)hint);
+ encoding = (BYTE)(NEXT_THREE_PROLOGSIZE + hint);
goto DO_RETURN;
}
}
// exact match found
GetInfoHdr(n, state);
*more = 0;
- return n;
+ return (BYTE)n;
}
}
GetInfoHdr(n, state);
*pCached = n; // cache the value
*more = 0;
- return n;
+ return (BYTE)n;
}
}
}
{
GetInfoHdr(*pCached, state);
*more = distance;
- return 0x80 | *pCached;
+ return (BYTE)(0x80 | *pCached);
}
else
{
GetInfoHdr(n, state);
*pCached = n; // Cache this value
*more = distance;
- return 0x80 | n;
+ return (BYTE)(0x80 | n);
}
else if (distance < closeness)
{
GetInfoHdr(n, state);
*pCached = n; // Cache this value
*more = distance;
- return 0x80 | n;
+ return (BYTE)(0x80 | n);
}
else if (distance < closeness)
{
GetInfoHdr(nearest, state);
*pCached = nearest; // Cache this value
*more = closeness;
- return 0x80 | nearest;
+ return (BYTE)(0x80 | nearest);
}
/*****************************************************************************
if ((codeDelta >= 8) && (codeDelta <= (64 + 7)))
{
unsigned biggerDelta = ((codeDelta - 8) & 0x38) + 8;
- *dest++ = 0xF0 | ((biggerDelta - 8) >> 3);
+ *dest++ = (BYTE)(0xF0 | ((biggerDelta - 8) >> 3));
lastOffset += biggerDelta;
codeDelta &= 0x07;
}
bool isPop = genRegPtrTemp->rpdArgTypeGet() == rpdARG_POP;
- *dest++ = 0x80 | (BYTE)codeDelta | genRegPtrTemp->rpdPtrArg << 3 | isPop << 6;
+ *dest++ = (BYTE)(0x80 | (BYTE)codeDelta | genRegPtrTemp->rpdPtrArg << 3 | isPop << 6);
/* Remember the new 'last' offset */
*/
assert((codeDelta & 0x7) == codeDelta);
- *dest++ = 0x00 | regNum << 3 | (BYTE)codeDelta;
+ *dest++ = (BYTE)(0x00 | regNum << 3 | (BYTE)codeDelta);
/* Turn the bit we've just generated off and continue */
}
assert((codeDelta & 0x7) == codeDelta);
- *dest++ = 0x40 | (regNum << 3) | (BYTE)codeDelta;
+ *dest++ = (BYTE)(0x40 | (regNum << 3) | (BYTE)codeDelta);
/* Turn the bit we've just generated off and continue */
{
totalSize += 1;
if (mask)
- *dest++ = thisPtrRegEnc;
+ *dest++ = (BYTE)thisPtrRegEnc;
}
}
if (mask != 0)
{
*dest++ = 0xFB;
- *dest++ = (byrefRegMask << 4) | regMask;
+ *dest++ = (BYTE)((byrefRegMask << 4) | regMask);
*(DWORD*)dest = codeDelta;
dest += sizeof(DWORD);
*(DWORD*)dest = argCnt;
/* Check if we can use a tiny encoding */
else if ((codeDelta < 16) && (codeDelta != 0) && (call->u1.cdArgMask == 0) && !byref)
{
- *dest++ = (regMask << 4) | (BYTE)codeDelta;
+ *dest++ = (BYTE)((regMask << 4) | (BYTE)codeDelta);
}
/* Check if we can use the small encoding */
else if ((codeDelta < 0x79) && (call->u1.cdArgMask <= 0x1F) && !byref)
{
*dest++ = 0x80 | (BYTE)codeDelta;
- *dest++ = call->u1.cdArgMask | (regMask << 5);
+ *dest++ = (BYTE)(call->u1.cdArgMask | (regMask << 5));
}
/* Check if we can use the medium encoding */
else if (codeDelta <= 0x01FF && call->u1.cdArgMask <= 0x0FFF && !byref)
{
*dest++ = 0xFD;
- *dest++ = call->u1.cdArgMask;
+ *dest++ = (BYTE)call->u1.cdArgMask;
*dest++ = ((call->u1.cdArgMask >> 4) & 0xF0) | ((BYTE)codeDelta & 0x0F);
- *dest++ = (regMask << 5) | (BYTE)((codeDelta >> 4) & 0x1F);
+ *dest++ = (BYTE)(regMask << 5) | (BYTE)((codeDelta >> 4) & 0x1F);
}
/* Check if we can use the medium encoding with byrefs */
{
*dest++ = 0xF9;
*dest++ = (BYTE)codeDelta;
- *dest++ = (regMask << 5) | call->u1.cdArgMask;
- *dest++ = (byrefRegMask << 5) | call->u1.cdByrefArgMask;
+ *dest++ = (BYTE)((regMask << 5) | call->u1.cdArgMask);
+ *dest++ = (BYTE)((byrefRegMask << 5) | call->u1.cdByrefArgMask);
}
/* We'll use the large encoding */
else if (!byref)
{
*dest++ = 0xFE;
- *dest++ = (byrefRegMask << 4) | regMask;
+ *dest++ = (BYTE)((byrefRegMask << 4) | regMask);
*(DWORD*)dest = codeDelta;
dest += sizeof(DWORD);
*(DWORD*)dest = call->u1.cdArgMask;
else
{
*dest++ = 0xFA;
- *dest++ = (byrefRegMask << 4) | regMask;
+ *dest++ = (BYTE)((byrefRegMask << 4) | regMask);
*(DWORD*)dest = codeDelta;
dest += sizeof(DWORD);
*(DWORD*)dest = call->u1.cdArgMask;
if (mask)
{
*dest++ = 0xF8;
- *dest++ = (byrefRegMask << 4) | regMask;
+ *dest++ = (BYTE)((byrefRegMask << 4) | regMask);
*(DWORD*)dest = codeDelta;
dest += sizeof(DWORD);
*(DWORD*)dest = callArgCnt;
CHK_NON_INTRPT_ESP_IPtrMask;
assert((pattern >= 0) && (pattern < 80));
- *dest++ = 0x80 | pattern;
+ *dest++ = (BYTE)(0x80 | pattern);
goto NEXT_RPD;
}
// Emit IPtrMask if needed
CHK_NON_INTRPT_ESP_IPtrMask;
- *dest++ = 0xD0 | regMask;
- *dest++ = (inx << 6) | (callArgCnt << 3) | argMask;
+ *dest++ = (BYTE)(0xD0 | regMask);
+ *dest++ = (BYTE)((inx << 6) | (callArgCnt << 3) | argMask);
goto NEXT_RPD;
}
}
/* use encoding: */
/* call 1110RRRR [ArgCnt] [ArgMask] */
- *dest++ = 0xE0 | regMask;
+ *dest++ = (BYTE)(0xE0 | regMask);
dest += encodeUnsigned(dest, callArgCnt);
dest += encodeUnsigned(dest, argMask);
// Append an entry for the call if doing the real thing.
if (mode == MAKE_REG_PTR_MODE_DO_WORK)
{
- pCallSites[callSiteNum] = callOffset;
- pCallSiteSizes[callSiteNum] = call->cdCallInstrSize;
+ pCallSites[callSiteNum] = callOffset;
+
+ assert(call->cdCallInstrSize <= BYTE_MAX);
+ pCallSiteSizes[callSiteNum] = (BYTE)call->cdCallInstrSize;
}
callSiteNum++;
regFlags = (GcSlotFlags)(regFlags | GC_SLOT_INTERIOR);
}
- RegSlotIdKey rskey(regNum, regFlags);
+ assert(regNum == (regNumberSmall)regNum);
+ RegSlotIdKey rskey((unsigned short)regNum, regFlags);
GcSlotId regSlotId;
if (mode == MAKE_REG_PTR_MODE_ASSIGN_SLOTS)
{
#include "typekey.h"
#include "peimagelayout.inl"
-#ifdef _MSC_VER
-#pragma warning(push)
-#pragma warning(disable:4244)
-#endif // _MSC_VER
-
#ifdef TARGET_64BIT
#define COR_VTABLE_PTRSIZED COR_VTABLE_64BIT
#define COR_VTABLE_NOT_PTRSIZED COR_VTABLE_32BIT
WRAPPER_NO_CONTRACT;
// We subtracted 1 after we allocated this ID, so we need to
// add 1 before we free it.
- DWORD val = index.m_dwIndex + 1;
+ SIZE_T val = index.m_dwIndex + 1;
- g_pModuleIndexDispenser->DisposeId(val);
+ _ASSERTE(val <= MAXDWORD);
+ g_pModuleIndexDispenser->DisposeId((DWORD)val);
}
}
CONTRACT_END;
- assert(_ILSize != 0);
+ _ASSERTE(_ILSize != 0);
DWORD listSize = sizeof(CORCOMPILE_METHOD_PROFILE_LIST);
DWORD headerSize = sizeof(CORBBTPROF_METHOD_HEADER);
methodProfileData->method.ILSize = _ILSize;
methodProfileData->method.cBlock = _count;
- assert(methodProfileData->size == methodProfileData->Size());
+ _ASSERTE(methodProfileData->size == methodProfileData->Size());
// Link it to the per module list of profile data buffers
for (SectionList *pSec = pSectionList; pSec; pSec = pSec->next, secCount++)
{
SIZE_T offset = profileMap->getCurrentOffset();
- assert((offset & 0x3) == 0);
+ _ASSERTE((offset & 0x3) == 0);
+ _ASSERTE(offset <= MAXDWORD);
SIZE_T actualSize = pSec->profileMap.getCurrentOffset();
SIZE_T alignUpSize = AlignUp(actualSize, sizeof(DWORD));
+ _ASSERTE(alignUpSize <= MAXDWORD);
profileMap->Allocate(alignUpSize);
tableEntry = (CORBBTPROF_SECTION_TABLE_ENTRY *) profileMap->getOffsetPtr(tableEntryOffset);
tableEntry += secCount;
tableEntry->FormatID = pSec->format;
- tableEntry->Data.Offset = offset;
- tableEntry->Data.Size = alignUpSize;
+ tableEntry->Data.Offset = (DWORD)offset;
+ tableEntry->Data.Size = (DWORD)alignUpSize;
}
}
sHeaderOffset = profileMap->getCurrentOffset();
sHeader = (CORBBTPROF_SCENARIO_HEADER *) profileMap->Allocate(sizeHeader.Value());
- sHeader->size = sHeaderSize.Value();
+ _ASSERTE(sHeaderSize.Value() <= MAXDWORD);
+ _ASSERTE(cName.Value() <= MAXDWORD);
+ sHeader->size = (DWORD)sHeaderSize.Value();
sHeader->scenario.ordinal = 1;
sHeader->scenario.mask = 1;
sHeader->scenario.priority = 0;
sHeader->scenario.numRuns = 1;
- sHeader->scenario.cName = cName.Value();
+ sHeader->scenario.cName = (DWORD)cName.Value();
wcscpy_s(sHeader->scenario.name, cName.Value(), pName);
}
CORBBTPROF_SCENARIO_RUN *sRun;
sRun = (CORBBTPROF_SCENARIO_RUN *) profileMap->Allocate(sizeRun.Value());
+ _ASSERTE(cCmdLine.Value() <= MAXDWORD);
+ _ASSERTE(cSystemInfo.Value() <= MAXDWORD);
sRun->runTime = runTime;
sRun->mvid = *pMvid;
- sRun->cCmdLine = cCmdLine.Value();
- sRun->cSystemInfo = cSystemInfo.Value();
+ sRun->cCmdLine = (DWORD)cCmdLine.Value();
+ sRun->cSystemInfo = (DWORD)cSystemInfo.Value();
wcscpy_s(sRun->cmdLine, cCmdLine.Value(), pCmdLine);
wcscpy_s(sRun->cmdLine+cCmdLine.Value(), cSystemInfo.Value(), pSystemInfo);
}
{
CORBBTPROF_SCENARIO_HEADER * sHeader;
sHeader = (CORBBTPROF_SCENARIO_HEADER *) profileMap->getOffsetPtr(sHeaderOffset);
- assert(sHeader->size == sHeader->Size());
+ _ASSERTE(sHeader->size == sHeader->Size());
}
#endif
}
{
CORBBTPROF_METHOD_HEADER * pInfo = methodProfileList->GetInfo();
- assert(pInfo->size == pInfo->Size());
+ _ASSERTE(pInfo->size == pInfo->Size());
//
// We set methodWasExecuted based upon the ExecutionCount of the very first block
profileMap->Allocate(sizeof(CORBBTPROF_TOKEN_LIST_SECTION_HEADER) +
pTokenArray->Size() * sizeof(CORBBTPROF_TOKEN_INFO));
- header->NumTokens = pTokenArray->Size();
+ _ASSERTE(pTokenArray->Size() <= MAXDWORD);
+ header->NumTokens = (DWORD)pTokenArray->Size();
memcpy( (header + 1), &((*pTokenArray)[0]), pTokenArray->Size() * sizeof(CORBBTPROF_TOKEN_INFO));
// Reset the collected tokens
HandleHolder profileDataFile(OpenMethodProfileDataLogFile(mvid));
ULONG count;
- BOOL result = WriteFile(profileDataFile, profileImage.getOffsetPtr(0), profileImage.getCurrentOffset(), &count, NULL);
+ _ASSERTE(profileImage.getCurrentOffset() <= MAXDWORD);
+ BOOL result = WriteFile(profileDataFile, profileImage.getOffsetPtr(0), (DWORD)profileImage.getCurrentOffset(), &count, NULL);
if (!result || (count != profileImage.getCurrentOffset()))
{
DWORD lasterror = GetLastError();
}
#endif
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif // _MSC_VER: warning C4244
-
#if defined(_DEBUG) && !defined(DACCESS_COMPILE)
NOINLINE void NgenForceFailure_AV()
{