Skip to content

Commit 33533ce

Browse files
Add a globOpt pointer to GlobOptBlockData
This is somewhat necessary for some of the upcoming changes, since the code will need to access some GlobOpt globals from outside of the actual GlobOpt class (since a few things are information about the pass, or information about the optimizations enabled).
1 parent 298a2a6 commit 33533ce

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

lib/Backend/GlobOpt.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ class AutoRestoreVal
178178

179179
PREVENT_COPY(AutoRestoreVal);
180180
};
181+
181182
GlobOpt::GlobOpt(Func * func)
182183
: func(func),
183184
intConstantToStackSymMap(nullptr),
@@ -539,8 +540,6 @@ GlobOpt::ForwardPass()
539540
END_CODEGEN_PHASE(this->func, Js::ForwardPhase);
540541
}
541542

542-
543-
544543
void
545544
GlobOpt::OptBlock(BasicBlock *block)
546545
{
@@ -1491,6 +1490,8 @@ GlobOpt::MergePredBlocksValueMaps(BasicBlock *block)
14911490
void
14921491
GlobOpt::NulloutBlockData(GlobOptBlockData *data)
14931492
{
1493+
data->globOpt = this;
1494+
14941495
data->symToValueMap = nullptr;
14951496
data->exprToValueMap = nullptr;
14961497
data->liveFields = nullptr;
@@ -1530,6 +1531,8 @@ GlobOpt::NulloutBlockData(GlobOptBlockData *data)
15301531
void
15311532
GlobOpt::InitBlockData(GlobOptBlockData* data)
15321533
{
1534+
data->globOpt = this;
1535+
15331536
JitArenaAllocator *const alloc = this->alloc;
15341537

15351538
data->symToValueMap = GlobHashTable::New(alloc, 64);
@@ -1577,6 +1580,8 @@ GlobOpt::InitBlockData(GlobOptBlockData* data)
15771580
void
15781581
GlobOpt::ReuseBlockData(GlobOptBlockData *toData, GlobOptBlockData *fromData)
15791582
{
1583+
toData->globOpt = fromData->globOpt;
1584+
15801585
// Reuse dead map
15811586
toData->symToValueMap = fromData->symToValueMap;
15821587
toData->exprToValueMap = fromData->exprToValueMap;
@@ -1628,6 +1633,8 @@ GlobOpt::ReuseBlockData(GlobOptBlockData *toData, GlobOptBlockData *fromData)
16281633
void
16291634
GlobOpt::CopyBlockData(GlobOptBlockData *toData, GlobOptBlockData *fromData)
16301635
{
1636+
toData->globOpt = fromData->globOpt;
1637+
16311638
toData->symToValueMap = fromData->symToValueMap;
16321639
toData->exprToValueMap = fromData->exprToValueMap;
16331640
toData->liveFields = fromData->liveFields;
@@ -1674,6 +1681,8 @@ void GlobOpt::CloneBlockData(BasicBlock *const toBlock, GlobOptBlockData *const
16741681
GlobOptBlockData *const fromData = &fromBlock->globOptData;
16751682
JitArenaAllocator *const alloc = this->alloc;
16761683

1684+
toData->globOpt = fromData->globOpt;
1685+
16771686
toData->symToValueMap = fromData->symToValueMap->Copy();
16781687
toData->exprToValueMap = fromData->exprToValueMap->Copy();
16791688

lib/Backend/GlobOptBlockData.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ typedef JsUtil::BaseDictionary<StackSym *, StackLiteralInitFldData, JitArenaAllo
100100

101101
class GlobOptBlockData
102102
{
103+
friend class GlobOpt; // REMOVE IN FUTURE COMMIT IN CHANGESET - USED FOR INITIALIZERS
103104
public:
104105
GlobOptBlockData(Func *func) :
105106
symToValueMap(nullptr),
@@ -130,7 +131,8 @@ class GlobOptBlockData
130131
hasCSECandidates(false),
131132
curFunc(func),
132133
hasDataRef(nullptr),
133-
stackLiteralInitFldDataMap(nullptr)
134+
stackLiteralInitFldDataMap(nullptr),
135+
globOpt(nullptr)
134136
{
135137
}
136138

@@ -161,6 +163,8 @@ class GlobOptBlockData
161163
BVSparse<JitArenaAllocator> * argObjSyms;
162164
BVSparse<JitArenaAllocator> * maybeTempObjectSyms;
163165
BVSparse<JitArenaAllocator> * canStoreTempObjectSyms;
166+
167+
// This is the func that this block comes from, so the inlinee if from an inlined function
164168
Func * curFunc;
165169

166170
// 'valuesToKillOnCalls' includes values whose value types need to be killed upon a call. Upon a call, the value types of
@@ -188,6 +192,8 @@ class GlobOptBlockData
188192
private:
189193
bool * hasDataRef;
190194

195+
GlobOpt * globOpt;
196+
191197
public:
192198
void OnDataInitialized(JitArenaAllocator *const allocator)
193199
{

0 commit comments

Comments
 (0)