1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 19:48:20 +02:00

Added some StackHelper points

This commit is contained in:
Brian Fiete 2022-06-12 10:56:43 -07:00
parent 06ceaf617b
commit 27f382a567

View file

@ -11,6 +11,7 @@
#include "BfMangler.h"
#include "BeefySysLib/util/PerfTimer.h"
#include "BeefySysLib/util/BeefPerf.h"
#include "BeefySysLib/util/StackHelper.h"
#include "BfSourceClassifier.h"
#include "BfAutoComplete.h"
#include "BfDemangler.h"
@ -3575,6 +3576,23 @@ void BfModule::DoPopulateType(BfType* resolvedTypeRef, BfPopulateType populateTy
DoPopulateType_InitSearches(typeInstance);
}
//
{
BP_ZONE("DoPopulateType:CheckStack");
StackHelper stackHelper;
if (!stackHelper.CanStackExpand(128 * 1024))
{
if (!stackHelper.Execute([&]()
{
DoPopulateType(resolvedTypeRef, populateType);
}))
{
Fail("Stack exhausted in DoPopulateType", typeDef->GetRefNode());
}
return;
}
}
bool underlyingTypeDeferred = false;
BfType* underlyingType = NULL;
if (typeInstance->mBaseType != NULL)
@ -5665,6 +5683,23 @@ void BfModule::DoTypeInstanceMethodProcessing(BfTypeInstance* typeInstance)
return;
}
//
{
BP_ZONE("DoTypeInstanceMethodProcessing:CheckStack");
StackHelper stackHelper;
if (!stackHelper.CanStackExpand(128 * 1024))
{
if (!stackHelper.Execute([&]()
{
DoTypeInstanceMethodProcessing(typeInstance);
}))
{
Fail("Stack exhausted in DoPopulateType", typeInstance->mTypeDef->GetRefNode());
}
return;
}
}
BF_ASSERT_REL(typeInstance->mNeedsMethodProcessing);
BF_ASSERT_REL(typeInstance->mDefineState == BfTypeDefineState_Defined);
typeInstance->mDefineState = BfTypeDefineState_DefinedAndMethodsSlotting;