mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 04:22:20 +02:00
Added some StackHelper points
This commit is contained in:
parent
06ceaf617b
commit
27f382a567
1 changed files with 35 additions and 0 deletions
|
@ -11,6 +11,7 @@
|
||||||
#include "BfMangler.h"
|
#include "BfMangler.h"
|
||||||
#include "BeefySysLib/util/PerfTimer.h"
|
#include "BeefySysLib/util/PerfTimer.h"
|
||||||
#include "BeefySysLib/util/BeefPerf.h"
|
#include "BeefySysLib/util/BeefPerf.h"
|
||||||
|
#include "BeefySysLib/util/StackHelper.h"
|
||||||
#include "BfSourceClassifier.h"
|
#include "BfSourceClassifier.h"
|
||||||
#include "BfAutoComplete.h"
|
#include "BfAutoComplete.h"
|
||||||
#include "BfDemangler.h"
|
#include "BfDemangler.h"
|
||||||
|
@ -3575,6 +3576,23 @@ void BfModule::DoPopulateType(BfType* resolvedTypeRef, BfPopulateType populateTy
|
||||||
DoPopulateType_InitSearches(typeInstance);
|
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;
|
bool underlyingTypeDeferred = false;
|
||||||
BfType* underlyingType = NULL;
|
BfType* underlyingType = NULL;
|
||||||
if (typeInstance->mBaseType != NULL)
|
if (typeInstance->mBaseType != NULL)
|
||||||
|
@ -5665,6 +5683,23 @@ void BfModule::DoTypeInstanceMethodProcessing(BfTypeInstance* typeInstance)
|
||||||
return;
|
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->mNeedsMethodProcessing);
|
||||||
BF_ASSERT_REL(typeInstance->mDefineState == BfTypeDefineState_Defined);
|
BF_ASSERT_REL(typeInstance->mDefineState == BfTypeDefineState_Defined);
|
||||||
typeInstance->mDefineState = BfTypeDefineState_DefinedAndMethodsSlotting;
|
typeInstance->mDefineState = BfTypeDefineState_DefinedAndMethodsSlotting;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue