Skip to content

Commit 5bf9247

Browse files
committed
Fix prefast warnings (except for the TTD ones which might need merge from master?)
1 parent 9e77892 commit 5bf9247

16 files changed

+64
-23
lines changed

lib/Backend/CodeGenNumberAllocator.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,12 @@ Js::JavascriptNumber* XProcNumberPageSegmentImpl::AllocateNumber(HANDLE hProcess
363363
}
364364
else
365365
{
366-
XProcNumberPageSegmentImpl* seg = new (midl_user_allocate(sizeof(XProcNumberPageSegment))) XProcNumberPageSegmentImpl();
366+
XProcNumberPageSegmentImpl* seg = (XProcNumberPageSegmentImpl*)midl_user_allocate(sizeof(XProcNumberPageSegment));
367+
if (seg == nullptr)
368+
{
369+
Js::Throw::OutOfMemory();
370+
}
371+
seg = new (seg) XProcNumberPageSegmentImpl();
367372
tail->nextSegment = seg;
368373
return seg->AllocateNumber(hProcess, value, numberTypeStatic, javascriptNumberVtbl);
369374
}

lib/Backend/Encoder.cpp

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,13 @@ Encoder::Encode()
413413
if (this->m_func->IsOOPJIT())
414414
{
415415
auto& equivalentTypeGuardOffsets = this->m_func->GetJITOutput()->GetOutputData()->equivalentTypeGuardOffsets;
416-
equivalentTypeGuardOffsets = (EquivalentTypeGuardOffsets*)midl_user_allocate(offsetof(EquivalentTypeGuardOffsets, guards) + equivalentTypeGuardsCount * sizeof(EquivalentTypeGuardIDL));
416+
size_t allocSize = offsetof(EquivalentTypeGuardOffsets, guards) + equivalentTypeGuardsCount * sizeof(EquivalentTypeGuardIDL);
417+
equivalentTypeGuardOffsets = (EquivalentTypeGuardOffsets*)midl_user_allocate(allocSize);
418+
if (equivalentTypeGuardOffsets == nullptr)
419+
{
420+
Js::Throw::OutOfMemory();
421+
}
422+
417423
equivalentTypeGuardOffsets->count = equivalentTypeGuardsCount;
418424

419425
int i = 0;
@@ -532,6 +538,11 @@ Encoder::Encode()
532538
{
533539
auto count = srcSet->Count();
534540
(*entry) = (TypeGuardTransferEntryIDL*)midl_user_allocate(offsetof(TypeGuardTransferEntryIDL, guardOffsets) + count*sizeof(int));
541+
if (*entry)
542+
{
543+
Js::Throw::OutOfMemory();
544+
}
545+
__analysis_assume(*entry);
535546
(*entry)->propId = propertyId;
536547
(*entry)->guardsCount = count;
537548
(*entry)->next = nullptr;
@@ -578,6 +589,11 @@ Encoder::Encode()
578589
m_func->ctorCachesByPropertyId->Map([func, entries, &propIndex](Js::PropertyId propertyId, Func::CtorCacheSet* srcCacheSet) -> void
579590
{
580591
entries[propIndex] = (CtorCacheTransferEntryIDL*)midl_user_allocate(srcCacheSet->Count() * sizeof(intptr_t) + sizeof(CtorCacheTransferEntryIDL));
592+
if (entries[propIndex])
593+
{
594+
Js::Throw::OutOfMemory();
595+
}
596+
__analysis_assume(entries[propIndex]);
581597
entries[propIndex]->propId = propertyId;
582598

583599
int cacheIndex = 0;

lib/Backend/Func.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -581,7 +581,13 @@ Func::TryCodegen()
581581
////
582582

583583
JITOutputIDL* jitOutputData = m_output.GetOutputData();
584-
jitOutputData->nativeDataFixupTable = (NativeDataFixupTable*)midl_user_allocate(offsetof(NativeDataFixupTable, fixupRecords) + sizeof(NativeDataFixupRecord)* (dataAllocator->allocCount));
584+
size_t allocSize = offsetof(NativeDataFixupTable, fixupRecords) + sizeof(NativeDataFixupRecord)* (dataAllocator->allocCount);
585+
jitOutputData->nativeDataFixupTable = (NativeDataFixupTable*)midl_user_allocate(allocSize);
586+
if (jitOutputData->nativeDataFixupTable)
587+
{
588+
Js::Throw::OutOfMemory();
589+
}
590+
__analysis_assume(jitOutputData->nativeDataFixupTable);
585591
jitOutputData->nativeDataFixupTable->count = dataAllocator->allocCount;
586592

587593
jitOutputData->buffer = (NativeDataBuffer*)midl_user_allocate(offsetof(NativeDataBuffer, data) + dataAllocator->totalSize);

lib/Backend/FunctionJITTimeInfo.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ FunctionJITTimeInfo::FunctionJITTimeInfo(FunctionJITTimeDataIDL * data) : m_data
1414
/* static */
1515
void
1616
FunctionJITTimeInfo::BuildJITTimeData(
17-
ArenaAllocator * alloc,
18-
const Js::FunctionCodeGenJitTimeData * codeGenData,
19-
const Js::FunctionCodeGenRuntimeData * runtimeData,
20-
FunctionJITTimeDataIDL * jitData,
17+
__in ArenaAllocator * alloc,
18+
__in const Js::FunctionCodeGenJitTimeData * codeGenData,
19+
__in_opt const Js::FunctionCodeGenRuntimeData * runtimeData,
20+
__out FunctionJITTimeDataIDL * jitData,
2121
bool isInlinee)
2222
{
2323
jitData->bodyData = codeGenData->GetJITBody();
@@ -216,6 +216,7 @@ FunctionJITTimeInfo::GetInlineeForTargetInlineeRuntimeData(const Js::ProfileId p
216216
{
217217
inlineeData = inlineeData->GetNext();
218218
}
219+
__analysis_assume(inlineeData != nullptr);
219220
return inlineeData->GetRuntimeInfo();
220221
}
221222

lib/Backend/FunctionJITTimeInfo.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ class FunctionJITTimeInfo
1212
static void BuildJITTimeData(
1313
__in ArenaAllocator * alloc,
1414
__in const Js::FunctionCodeGenJitTimeData * codeGenData,
15-
__in const Js::FunctionCodeGenRuntimeData * runtimeData,
16-
__inout FunctionJITTimeDataIDL * jitData,
15+
__in_opt const Js::FunctionCodeGenRuntimeData * runtimeData,
16+
__out FunctionJITTimeDataIDL * jitData,
1717
bool isInlinee = true);
1818

1919
uint GetInlineeCount() const;

lib/Backend/Inline.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -948,6 +948,7 @@ Inline::InlinePolymorphicFunction(IR::Instr *callInstr, const FunctionJITTimeInf
948948
POLYMORPHIC_INLINE_TESTTRACE(_u("------------------------------------------------\n"));
949949
for (uint i = 0; i < inlineeCount; i++)
950950
{
951+
__analysis_assert(inlineesDataArray[i] != nullptr);
951952
JITTimeFunctionBody *inlineeFunctionBody = inlineesDataArray[i]->GetBody();
952953
POLYMORPHIC_INLINE_TESTTRACE(_u("INLINING (Polymorphic): Start inlining: \tInlinee: %s (%s):\tCaller: %s (%s)\n"),
953954
inlineeFunctionBody->GetDisplayName(), inlineesDataArray[i]->GetDebugNumberSet(debugStringBuffer),

lib/Backend/JITObjTypeSpecFldInfo.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ JITObjTypeSpecFldInfo::BuildObjTypeSpecFldInfoArray(
254254
__in ArenaAllocator * alloc,
255255
__in Js::ObjTypeSpecFldInfo ** objTypeSpecInfo,
256256
__in uint arrayLength,
257-
__out ObjTypeSpecFldIDL * jitData)
257+
_Inout_updates_(arrayLength) ObjTypeSpecFldIDL * jitData)
258258
{
259259
for (uint i = 0; i < arrayLength; ++i)
260260
{

lib/Backend/JITObjTypeSpecFldInfo.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class JITObjTypeSpecFldInfo
5858
__in ArenaAllocator * alloc,
5959
__in Js::ObjTypeSpecFldInfo ** objTypeSpecInfo,
6060
__in uint arrayLength,
61-
__out ObjTypeSpecFldIDL * jitData);
61+
_Inout_updates_(arrayLength) ObjTypeSpecFldIDL * jitData);
6262

6363
// TODO: OOP JIT, implement this
6464
wchar_t* GetCacheLayoutString() { __debugbreak(); return nullptr; }

lib/Backend/JITTimeFunctionBody.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1041,7 +1041,7 @@ JITTimeFunctionBody::GetFormalsPropIdArray() const
10411041
}
10421042

10431043
bool
1044-
JITTimeFunctionBody::InitializeStatementMap(__out Js::SmallSpanSequence * statementMap, ArenaAllocator* alloc) const
1044+
JITTimeFunctionBody::InitializeStatementMap(Js::SmallSpanSequence * statementMap, ArenaAllocator* alloc) const
10451045
{
10461046
if (!m_bodyData.statementMap)
10471047
{

lib/Backend/JITTimeFunctionBody.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ class JITTimeFunctionBody
177177
const Js::PropertyIdArray * ReadPropertyIdArrayFromAuxData(uint offset) const;
178178
Js::PropertyIdArray * GetFormalsPropIdArray() const;
179179

180-
bool InitializeStatementMap(__out Js::SmallSpanSequence * statementMap, ArenaAllocator* alloc) const;
180+
bool InitializeStatementMap(Js::SmallSpanSequence * statementMap, ArenaAllocator* alloc) const;
181181
private:
182182
Js::FunctionInfo::Attributes GetAttributes() const;
183183
Js::FunctionBody::FunctionBodyFlags GetFlags() const;

lib/Backend/JITTimePolymorphicInlineCacheInfo.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ void
1515
JITTimePolymorphicInlineCacheInfo::InitializeEntryPointPolymorphicInlineCacheInfo(
1616
__in Recycler * recycler,
1717
__in Js::EntryPointPolymorphicInlineCacheInfo * runtimeInfo,
18-
__inout CodeGenWorkItemIDL * jitInfo)
18+
__out CodeGenWorkItemIDL * jitInfo)
1919
{
2020
if (runtimeInfo == nullptr)
2121
{
@@ -51,7 +51,7 @@ void
5151
JITTimePolymorphicInlineCacheInfo::InitializePolymorphicInlineCacheInfo(
5252
__in Recycler * recycler,
5353
__in Js::PolymorphicInlineCacheInfo * runtimeInfo,
54-
__inout PolymorphicInlineCacheInfoIDL * jitInfo)
54+
__out PolymorphicInlineCacheInfoIDL * jitInfo)
5555
{
5656
jitInfo->polymorphicCacheUtilizationArray = runtimeInfo->GetUtilByteArray();
5757
jitInfo->functionBodyAddr = (intptr_t)runtimeInfo->GetFunctionBody();

lib/Backend/JITTimePolymorphicInlineCacheInfo.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class JITTimePolymorphicInlineCacheInfo
1313
static void InitializeEntryPointPolymorphicInlineCacheInfo(
1414
__in Recycler * recycler,
1515
__in Js::EntryPointPolymorphicInlineCacheInfo * runtimeInfo,
16-
__inout CodeGenWorkItemIDL * jitInfo);
16+
__out CodeGenWorkItemIDL * jitInfo);
1717

1818
JITTimePolymorphicInlineCache * GetInlineCache(uint index) const;
1919
bool HasInlineCaches() const;
@@ -24,7 +24,7 @@ class JITTimePolymorphicInlineCacheInfo
2424
static void InitializePolymorphicInlineCacheInfo(
2525
__in Recycler * recycler,
2626
__in Js::PolymorphicInlineCacheInfo * runtimeInfo,
27-
__inout PolymorphicInlineCacheInfoIDL * jitInfo);
27+
__out PolymorphicInlineCacheInfoIDL * jitInfo);
2828

2929
PolymorphicInlineCacheInfoIDL m_data;
3030
};

lib/Backend/NativeCodeData.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,11 @@ NativeCodeData::AddFixupEntry(void* targetAddr, void* targetStartAddr, void* add
6969
DataChunk* chunk = NativeCodeData::GetDataChunk(startAddress);
7070

7171
NativeDataFixupEntry* entry = (NativeDataFixupEntry*)midl_user_allocate(sizeof(NativeDataFixupEntry));
72+
if (entry)
73+
{
74+
Js::Throw::OutOfMemory();
75+
}
76+
__analysis_assume(entry);
7277
entry->addrOffset = (unsigned int)((__int64)addrToFixup - (__int64)startAddress);
7378
Assert(entry->addrOffset <= chunk->len - sizeof(void*));
7479

@@ -114,6 +119,11 @@ NativeCodeData::AddFixupEntryForPointerArray(void* startAddress, DataChunk * chu
114119
#endif
115120

116121
NativeDataFixupEntry* entry = (NativeDataFixupEntry*)midl_user_allocate(sizeof(NativeDataFixupEntry));
122+
if (entry)
123+
{
124+
Js::Throw::OutOfMemory();
125+
}
126+
__analysis_assume(entry);
117127
entry->addrOffset = (unsigned int)offset;
118128
entry->targetTotalOffset = targetChunk->offset;
119129
entry->next = chunk->fixupList;

lib/JITServer/JITServer.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ HRESULT
144144
ServerAddPropertyRecord(
145145
/* [in] */ handle_t binding,
146146
/* [in] */ intptr_t threadContextRoot,
147-
/* [in] */ PropertyRecordIDL * propertyRecord)
147+
/* [in] */ __RPC__in PropertyRecordIDL * propertyRecord)
148148
{
149149
AUTO_NESTED_HANDLED_EXCEPTION_TYPE(static_cast<ExceptionType>(ExceptionType_OutOfMemory | ExceptionType_StackOverflow));
150150

@@ -165,7 +165,7 @@ ServerAddPropertyRecordArray(
165165
/* [in] */ handle_t binding,
166166
/* [in] */ intptr_t threadContextRoot,
167167
/* [in] */ uint count,
168-
/* [in] */ PropertyRecordIDL ** propertyRecordArray)
168+
/* [in] */ __RPC__in_ecount_full(count) PropertyRecordIDL ** propertyRecordArray)
169169
{
170170
AUTO_NESTED_HANDLED_EXCEPTION_TYPE(static_cast<ExceptionType>(ExceptionType_OutOfMemory | ExceptionType_StackOverflow));
171171

@@ -318,12 +318,13 @@ ServerIsNativeAddr(
318318
/* [in] */ handle_t binding,
319319
/* [in] */ intptr_t threadContextInfo,
320320
/* [in] */ intptr_t address,
321-
/* [out] */ boolean * result)
321+
/* [out] */ __RPC__out boolean * result)
322322
{
323323
ServerThreadContext * context = (ServerThreadContext*)DecodePointer((void*)threadContextInfo);
324324

325325
if (context == nullptr)
326326
{
327+
*result = false;
327328
return RPC_S_INVALID_ARG;
328329
}
329330

@@ -362,8 +363,8 @@ ServerRemoteCodeGen(
362363
/* [in] */ handle_t binding,
363364
/* [in] */ intptr_t threadContextInfoAddress,
364365
/* [in] */ intptr_t scriptContextInfoAddress,
365-
/* [in] */ CodeGenWorkItemIDL *workItemData,
366-
/* [out] */ JITOutputIDL *jitData)
366+
/* [in] */ __RPC__in CodeGenWorkItemIDL *workItemData,
367+
/* [out] */ __RPC__out JITOutputIDL *jitData)
367368
{
368369
UNREFERENCED_PARAMETER(binding);
369370
AUTO_NESTED_HANDLED_EXCEPTION_TYPE(static_cast<ExceptionType>(ExceptionType_OutOfMemory | ExceptionType_StackOverflow));

lib/Runtime/Language/DynamicProfileInfo.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ namespace Js
222222
Js::Configuration::Global.flags.ForceDynamicProfile ||
223223
#endif
224224
!scriptContext->GetConfig()->IsNoNative() ||
225-
functionBody->IsInDebugMode()
225+
(functionBody && functionBody->IsInDebugMode())
226226
#ifdef DYNAMIC_PROFILE_STORAGE
227227
|| DynamicProfileStorage::DoCollectInfo()
228228
#endif

lib/Runtime/Language/ObjTypeSpecFldInfo.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -661,6 +661,7 @@ namespace Js
661661
}
662662
// TODO: OOP JIT, consider putting these inline
663663
types[i].t = RecyclerNew(recycler, JITType);
664+
__analysis_assume(localTypes[i] != nullptr);
664665
JITType::BuildFromJsType(localTypes[i], types[i].t);
665666
}
666667
typeSet = RecyclerNew(recycler, EquivalentTypeSet, types, typeCount);

0 commit comments

Comments
 (0)