Skip to content

Commit 06f4e9e

Browse files
author
Filip Pizlo
committed
B3 should do LICM
https://bugs.webkit.org/show_bug.cgi?id=174750 Reviewed by Keith Miller and Saam Barati. Source/JavaScriptCore: Added a LICM phase to B3. This phase is called hoistLoopInvariantValues, to conform to the B3 naming convention for phases (it has to be an imperative). The phase uses NaturalLoops and BackwardsDominators, so this adds those analyses to B3. BackwardsDominators was already available in templatized form. This change templatizes DFG::NaturalLoops so that we can just use it. The LICM phase itself is really simple. We are decently precise with our handling of everything except the relationship between control dependence and side exits. Also added a bunch of tests. This isn't super important. It's perf-neutral on JS benchmarks. FTL already does LICM on DFG SSA IR, and probably all current WebAssembly content has had LICM done to it. That being said, this is a cheap phase so it doesn't hurt to have it. I wrote it because I thought I needed it for bug 174727. It turns out that there's a better way to handle the problem I had, so I ended up not needed it - but by then I had already written it. I think it's good to have it because LICM is one of those core compiler phases; every compiler has it eventually. * CMakeLists.txt: * JavaScriptCore.xcodeproj/project.pbxproj: * b3/B3BackwardsCFG.h: Added. (JSC::B3::BackwardsCFG::BackwardsCFG): * b3/B3BackwardsDominators.h: Added. (JSC::B3::BackwardsDominators::BackwardsDominators): * b3/B3BasicBlock.cpp: (JSC::B3::BasicBlock::appendNonTerminal): * b3/B3Effects.h: * b3/B3EnsureLoopPreHeaders.cpp: Added. (JSC::B3::ensureLoopPreHeaders): * b3/B3EnsureLoopPreHeaders.h: Added. * b3/B3Generate.cpp: (JSC::B3::generateToAir): * b3/B3HoistLoopInvariantValues.cpp: Added. (JSC::B3::hoistLoopInvariantValues): * b3/B3HoistLoopInvariantValues.h: Added. * b3/B3NaturalLoops.h: Added. (JSC::B3::NaturalLoops::NaturalLoops): * b3/B3Procedure.cpp: (JSC::B3::Procedure::invalidateCFG): (JSC::B3::Procedure::naturalLoops): (JSC::B3::Procedure::backwardsCFG): (JSC::B3::Procedure::backwardsDominators): * b3/B3Procedure.h: * b3/testb3.cpp: (JSC::B3::generateLoop): (JSC::B3::makeArrayForLoops): (JSC::B3::generateLoopNotBackwardsDominant): (JSC::B3::oneFunction): (JSC::B3::noOpFunction): (JSC::B3::testLICMPure): (JSC::B3::testLICMPureSideExits): (JSC::B3::testLICMPureWritesPinned): (JSC::B3::testLICMPureWrites): (JSC::B3::testLICMReadsLocalState): (JSC::B3::testLICMReadsPinned): (JSC::B3::testLICMReads): (JSC::B3::testLICMPureNotBackwardsDominant): (JSC::B3::testLICMPureFoiledByChild): (JSC::B3::testLICMPureNotBackwardsDominantFoiledByChild): (JSC::B3::testLICMExitsSideways): (JSC::B3::testLICMWritesLocalState): (JSC::B3::testLICMWrites): (JSC::B3::testLICMFence): (JSC::B3::testLICMWritesPinned): (JSC::B3::testLICMControlDependent): (JSC::B3::testLICMControlDependentNotBackwardsDominant): (JSC::B3::testLICMControlDependentSideExits): (JSC::B3::testLICMReadsPinnedWritesPinned): (JSC::B3::testLICMReadsWritesDifferentHeaps): (JSC::B3::testLICMReadsWritesOverlappingHeaps): (JSC::B3::testLICMDefaultCall): (JSC::B3::run): * dfg/DFGBasicBlock.h: * dfg/DFGCFG.h: * dfg/DFGNaturalLoops.cpp: Removed. * dfg/DFGNaturalLoops.h: (JSC::DFG::NaturalLoops::NaturalLoops): (JSC::DFG::NaturalLoop::NaturalLoop): Deleted. (JSC::DFG::NaturalLoop::header): Deleted. (JSC::DFG::NaturalLoop::size): Deleted. (JSC::DFG::NaturalLoop::at): Deleted. (JSC::DFG::NaturalLoop::operator[]): Deleted. (JSC::DFG::NaturalLoop::contains): Deleted. (JSC::DFG::NaturalLoop::index): Deleted. (JSC::DFG::NaturalLoop::isOuterMostLoop): Deleted. (JSC::DFG::NaturalLoop::addBlock): Deleted. (JSC::DFG::NaturalLoops::numLoops): Deleted. (JSC::DFG::NaturalLoops::loop): Deleted. (JSC::DFG::NaturalLoops::headerOf): Deleted. (JSC::DFG::NaturalLoops::innerMostLoopOf): Deleted. (JSC::DFG::NaturalLoops::innerMostOuterLoop): Deleted. (JSC::DFG::NaturalLoops::belongsTo): Deleted. (JSC::DFG::NaturalLoops::loopDepth): Deleted. Source/WTF: Moved DFG::NaturalLoops to WTF. The new templatized NaturalLoops<> uses the same Graph abstraction as Dominators<>. This allows us to add a B3::NaturalLoops for free. Also made small tweaks to RangeSet, which the LICM uses. * WTF.xcodeproj/project.pbxproj: * wtf/CMakeLists.txt: * wtf/Dominators.h: * wtf/NaturalLoops.h: Added. (WTF::NaturalLoop::NaturalLoop): (WTF::NaturalLoop::graph): (WTF::NaturalLoop::header): (WTF::NaturalLoop::size): (WTF::NaturalLoop::at): (WTF::NaturalLoop::operator[]): (WTF::NaturalLoop::contains): (WTF::NaturalLoop::index): (WTF::NaturalLoop::isOuterMostLoop): (WTF::NaturalLoop::dump): (WTF::NaturalLoop::addBlock): (WTF::NaturalLoops::NaturalLoops): (WTF::NaturalLoops::graph): (WTF::NaturalLoops::numLoops): (WTF::NaturalLoops::loop): (WTF::NaturalLoops::headerOf): (WTF::NaturalLoops::innerMostLoopOf): (WTF::NaturalLoops::innerMostOuterLoop): (WTF::NaturalLoops::belongsTo): (WTF::NaturalLoops::loopDepth): (WTF::NaturalLoops::loopsOf): (WTF::NaturalLoops::dump): * wtf/RangeSet.h: (WTF::RangeSet::begin): (WTF::RangeSet::end): (WTF::RangeSet::addAll): Canonical link: https://commits.webkit.org/191658@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@219898 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent d8fa43a commit 06f4e9e

26 files changed

Lines changed: 1663 additions & 359 deletions

‎Source/JavaScriptCore/CMakeLists.txt‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,11 +143,13 @@ set(JavaScriptCore_SOURCES
143143
b3/B3DuplicateTails.cpp
144144
b3/B3Effects.cpp
145145
b3/B3EliminateCommonSubexpressions.cpp
146+
b3/B3EnsureLoopPreHeaders.cpp
146147
b3/B3FenceValue.cpp
147148
b3/B3FixSSA.cpp
148149
b3/B3FoldPathConstants.cpp
149150
b3/B3FrequencyClass.cpp
150151
b3/B3Generate.cpp
152+
b3/B3HoistLoopInvariantValues.cpp
151153
b3/B3InferSwitches.cpp
152154
b3/B3InsertionSet.cpp
153155
b3/B3Kind.cpp
@@ -364,7 +366,6 @@ set(JavaScriptCore_SOURCES
364366
dfg/DFGMinifiedNode.cpp
365367
dfg/DFGMovHintRemovalPhase.cpp
366368
dfg/DFGMultiGetByOffsetData.cpp
367-
dfg/DFGNaturalLoops.cpp
368369
dfg/DFGNode.cpp
369370
dfg/DFGNodeAbstractValuePair.cpp
370371
dfg/DFGNodeFlags.cpp

‎Source/JavaScriptCore/ChangeLog‎

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,105 @@
1+
2017-07-23 Filip Pizlo <fpizlo@apple.com>
2+
3+
B3 should do LICM
4+
https://bugs.webkit.org/show_bug.cgi?id=174750
5+
6+
Reviewed by Keith Miller and Saam Barati.
7+
8+
Added a LICM phase to B3. This phase is called hoistLoopInvariantValues, to conform to the B3 naming
9+
convention for phases (it has to be an imperative). The phase uses NaturalLoops and BackwardsDominators,
10+
so this adds those analyses to B3. BackwardsDominators was already available in templatized form. This
11+
change templatizes DFG::NaturalLoops so that we can just use it.
12+
13+
The LICM phase itself is really simple. We are decently precise with our handling of everything except
14+
the relationship between control dependence and side exits.
15+
16+
Also added a bunch of tests.
17+
18+
This isn't super important. It's perf-neutral on JS benchmarks. FTL already does LICM on DFG SSA IR, and
19+
probably all current WebAssembly content has had LICM done to it. That being said, this is a cheap phase
20+
so it doesn't hurt to have it.
21+
22+
I wrote it because I thought I needed it for bug 174727. It turns out that there's a better way to
23+
handle the problem I had, so I ended up not needed it - but by then I had already written it. I think
24+
it's good to have it because LICM is one of those core compiler phases; every compiler has it
25+
eventually.
26+
27+
* CMakeLists.txt:
28+
* JavaScriptCore.xcodeproj/project.pbxproj:
29+
* b3/B3BackwardsCFG.h: Added.
30+
(JSC::B3::BackwardsCFG::BackwardsCFG):
31+
* b3/B3BackwardsDominators.h: Added.
32+
(JSC::B3::BackwardsDominators::BackwardsDominators):
33+
* b3/B3BasicBlock.cpp:
34+
(JSC::B3::BasicBlock::appendNonTerminal):
35+
* b3/B3Effects.h:
36+
* b3/B3EnsureLoopPreHeaders.cpp: Added.
37+
(JSC::B3::ensureLoopPreHeaders):
38+
* b3/B3EnsureLoopPreHeaders.h: Added.
39+
* b3/B3Generate.cpp:
40+
(JSC::B3::generateToAir):
41+
* b3/B3HoistLoopInvariantValues.cpp: Added.
42+
(JSC::B3::hoistLoopInvariantValues):
43+
* b3/B3HoistLoopInvariantValues.h: Added.
44+
* b3/B3NaturalLoops.h: Added.
45+
(JSC::B3::NaturalLoops::NaturalLoops):
46+
* b3/B3Procedure.cpp:
47+
(JSC::B3::Procedure::invalidateCFG):
48+
(JSC::B3::Procedure::naturalLoops):
49+
(JSC::B3::Procedure::backwardsCFG):
50+
(JSC::B3::Procedure::backwardsDominators):
51+
* b3/B3Procedure.h:
52+
* b3/testb3.cpp:
53+
(JSC::B3::generateLoop):
54+
(JSC::B3::makeArrayForLoops):
55+
(JSC::B3::generateLoopNotBackwardsDominant):
56+
(JSC::B3::oneFunction):
57+
(JSC::B3::noOpFunction):
58+
(JSC::B3::testLICMPure):
59+
(JSC::B3::testLICMPureSideExits):
60+
(JSC::B3::testLICMPureWritesPinned):
61+
(JSC::B3::testLICMPureWrites):
62+
(JSC::B3::testLICMReadsLocalState):
63+
(JSC::B3::testLICMReadsPinned):
64+
(JSC::B3::testLICMReads):
65+
(JSC::B3::testLICMPureNotBackwardsDominant):
66+
(JSC::B3::testLICMPureFoiledByChild):
67+
(JSC::B3::testLICMPureNotBackwardsDominantFoiledByChild):
68+
(JSC::B3::testLICMExitsSideways):
69+
(JSC::B3::testLICMWritesLocalState):
70+
(JSC::B3::testLICMWrites):
71+
(JSC::B3::testLICMFence):
72+
(JSC::B3::testLICMWritesPinned):
73+
(JSC::B3::testLICMControlDependent):
74+
(JSC::B3::testLICMControlDependentNotBackwardsDominant):
75+
(JSC::B3::testLICMControlDependentSideExits):
76+
(JSC::B3::testLICMReadsPinnedWritesPinned):
77+
(JSC::B3::testLICMReadsWritesDifferentHeaps):
78+
(JSC::B3::testLICMReadsWritesOverlappingHeaps):
79+
(JSC::B3::testLICMDefaultCall):
80+
(JSC::B3::run):
81+
* dfg/DFGBasicBlock.h:
82+
* dfg/DFGCFG.h:
83+
* dfg/DFGNaturalLoops.cpp: Removed.
84+
* dfg/DFGNaturalLoops.h:
85+
(JSC::DFG::NaturalLoops::NaturalLoops):
86+
(JSC::DFG::NaturalLoop::NaturalLoop): Deleted.
87+
(JSC::DFG::NaturalLoop::header): Deleted.
88+
(JSC::DFG::NaturalLoop::size): Deleted.
89+
(JSC::DFG::NaturalLoop::at): Deleted.
90+
(JSC::DFG::NaturalLoop::operator[]): Deleted.
91+
(JSC::DFG::NaturalLoop::contains): Deleted.
92+
(JSC::DFG::NaturalLoop::index): Deleted.
93+
(JSC::DFG::NaturalLoop::isOuterMostLoop): Deleted.
94+
(JSC::DFG::NaturalLoop::addBlock): Deleted.
95+
(JSC::DFG::NaturalLoops::numLoops): Deleted.
96+
(JSC::DFG::NaturalLoops::loop): Deleted.
97+
(JSC::DFG::NaturalLoops::headerOf): Deleted.
98+
(JSC::DFG::NaturalLoops::innerMostLoopOf): Deleted.
99+
(JSC::DFG::NaturalLoops::innerMostOuterLoop): Deleted.
100+
(JSC::DFG::NaturalLoops::belongsTo): Deleted.
101+
(JSC::DFG::NaturalLoops::loopDepth): Deleted.
102+
1103
2017-07-24 Filip Pizlo <fpizlo@apple.com>
2104

3105
GC should be fine with trading blocks between destructor and non-destructor blocks

‎Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj‎

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,13 @@
464464
0F5A6284188C98D40072C9DF /* FTLValueRange.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5A6282188C98D40072C9DF /* FTLValueRange.h */; settings = {ATTRIBUTES = (Private, ); }; };
465465
0F5AE2C41DF4F2800066EFE1 /* VMInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = FE90BB3A1B7CF64E006B3F03 /* VMInlines.h */; settings = {ATTRIBUTES = (Private, ); }; };
466466
0F5B4A331C84F0D600F1B17E /* SlowPathReturnType.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5B4A321C84F0D600F1B17E /* SlowPathReturnType.h */; settings = {ATTRIBUTES = (Private, ); }; };
467+
0F5BF1631F2317120029D91D /* B3HoistLoopInvariantValues.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F5BF1611F2317120029D91D /* B3HoistLoopInvariantValues.cpp */; };
468+
0F5BF1641F2317120029D91D /* B3HoistLoopInvariantValues.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5BF1621F2317120029D91D /* B3HoistLoopInvariantValues.h */; };
469+
0F5BF1671F23A0980029D91D /* B3BackwardsCFG.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5BF1661F23A0980029D91D /* B3BackwardsCFG.h */; };
470+
0F5BF1691F23A0AA0029D91D /* B3NaturalLoops.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5BF1681F23A0AA0029D91D /* B3NaturalLoops.h */; };
471+
0F5BF16B1F23A0C10029D91D /* B3BackwardsDominators.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5BF16A1F23A0C10029D91D /* B3BackwardsDominators.h */; };
472+
0F5BF1701F23A5A10029D91D /* B3EnsureLoopPreHeaders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F5BF16E1F23A5A10029D91D /* B3EnsureLoopPreHeaders.cpp */; };
473+
0F5BF1711F23A5A10029D91D /* B3EnsureLoopPreHeaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5BF16F1F23A5A10029D91D /* B3EnsureLoopPreHeaders.h */; };
467474
0F5CF9811E96F17F00C18692 /* AirTmpMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5CF9801E96F17D00C18692 /* AirTmpMap.h */; };
468475
0F5CF9841E9D537700C18692 /* AirLowerStackArgs.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F5CF9831E9D537500C18692 /* AirLowerStackArgs.h */; };
469476
0F5CF9851E9D537A00C18692 /* AirLowerStackArgs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F5CF9821E9D537500C18692 /* AirLowerStackArgs.cpp */; };
@@ -1950,7 +1957,6 @@
19501957
A730B6121250068F009D25B1 /* StrictEvalActivation.h in Headers */ = {isa = PBXBuildFile; fileRef = A730B6101250068F009D25B1 /* StrictEvalActivation.h */; };
19511958
A730B6131250068F009D25B1 /* StrictEvalActivation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A730B6111250068F009D25B1 /* StrictEvalActivation.cpp */; };
19521959
A731B25A130093880040A7FA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51F0EB6105C86C6B00E6DF1B /* Foundation.framework */; };
1953-
A737810D1799EA2E00817533 /* DFGNaturalLoops.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A737810A1799EA2E00817533 /* DFGNaturalLoops.cpp */; };
19541960
A737810E1799EA2E00817533 /* DFGNaturalLoops.h in Headers */ = {isa = PBXBuildFile; fileRef = A737810B1799EA2E00817533 /* DFGNaturalLoops.h */; };
19551961
A7386554118697B400540279 /* SpecializedThunkJIT.h in Headers */ = {isa = PBXBuildFile; fileRef = A7386551118697B400540279 /* SpecializedThunkJIT.h */; };
19561962
A7386555118697B400540279 /* ThunkGenerators.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7386552118697B400540279 /* ThunkGenerators.cpp */; };
@@ -3040,6 +3046,13 @@
30403046
0F5A6281188C98D40072C9DF /* FTLValueRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLValueRange.cpp; path = ftl/FTLValueRange.cpp; sourceTree = "<group>"; };
30413047
0F5A6282188C98D40072C9DF /* FTLValueRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLValueRange.h; path = ftl/FTLValueRange.h; sourceTree = "<group>"; };
30423048
0F5B4A321C84F0D600F1B17E /* SlowPathReturnType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SlowPathReturnType.h; sourceTree = "<group>"; };
3049+
0F5BF1611F2317120029D91D /* B3HoistLoopInvariantValues.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = B3HoistLoopInvariantValues.cpp; path = b3/B3HoistLoopInvariantValues.cpp; sourceTree = "<group>"; };
3050+
0F5BF1621F2317120029D91D /* B3HoistLoopInvariantValues.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = B3HoistLoopInvariantValues.h; path = b3/B3HoistLoopInvariantValues.h; sourceTree = "<group>"; };
3051+
0F5BF1661F23A0980029D91D /* B3BackwardsCFG.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = B3BackwardsCFG.h; path = b3/B3BackwardsCFG.h; sourceTree = "<group>"; };
3052+
0F5BF1681F23A0AA0029D91D /* B3NaturalLoops.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = B3NaturalLoops.h; path = b3/B3NaturalLoops.h; sourceTree = "<group>"; };
3053+
0F5BF16A1F23A0C10029D91D /* B3BackwardsDominators.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = B3BackwardsDominators.h; path = b3/B3BackwardsDominators.h; sourceTree = "<group>"; };
3054+
0F5BF16E1F23A5A10029D91D /* B3EnsureLoopPreHeaders.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = B3EnsureLoopPreHeaders.cpp; path = b3/B3EnsureLoopPreHeaders.cpp; sourceTree = "<group>"; };
3055+
0F5BF16F1F23A5A10029D91D /* B3EnsureLoopPreHeaders.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = B3EnsureLoopPreHeaders.h; path = b3/B3EnsureLoopPreHeaders.h; sourceTree = "<group>"; };
30433056
0F5CF9801E96F17D00C18692 /* AirTmpMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AirTmpMap.h; path = b3/air/AirTmpMap.h; sourceTree = "<group>"; };
30443057
0F5CF9821E9D537500C18692 /* AirLowerStackArgs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AirLowerStackArgs.cpp; path = b3/air/AirLowerStackArgs.cpp; sourceTree = "<group>"; };
30453058
0F5CF9831E9D537500C18692 /* AirLowerStackArgs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AirLowerStackArgs.h; path = b3/air/AirLowerStackArgs.h; sourceTree = "<group>"; };
@@ -4576,7 +4589,6 @@
45764589
A7299DA417D12858005F5FF9 /* SetConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SetConstructor.h; sourceTree = "<group>"; };
45774590
A730B6101250068F009D25B1 /* StrictEvalActivation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StrictEvalActivation.h; sourceTree = "<group>"; };
45784591
A730B6111250068F009D25B1 /* StrictEvalActivation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StrictEvalActivation.cpp; sourceTree = "<group>"; };
4579-
A737810A1799EA2E00817533 /* DFGNaturalLoops.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGNaturalLoops.cpp; path = dfg/DFGNaturalLoops.cpp; sourceTree = "<group>"; };
45804592
A737810B1799EA2E00817533 /* DFGNaturalLoops.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGNaturalLoops.h; path = dfg/DFGNaturalLoops.h; sourceTree = "<group>"; };
45814593
A7386551118697B400540279 /* SpecializedThunkJIT.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SpecializedThunkJIT.h; sourceTree = "<group>"; };
45824594
A7386552118697B400540279 /* ThunkGenerators.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ThunkGenerators.cpp; sourceTree = "<group>"; };
@@ -5481,6 +5493,8 @@
54815493
0FEC84B51BDACDAC0080FF74 /* B3ArgumentRegValue.h */,
54825494
0F2C63B31E6343E800C13839 /* B3AtomicValue.cpp */,
54835495
0F2C63B41E6343E800C13839 /* B3AtomicValue.h */,
5496+
0F5BF1661F23A0980029D91D /* B3BackwardsCFG.h */,
5497+
0F5BF16A1F23A0C10029D91D /* B3BackwardsDominators.h */,
54845498
0F2C63AB1E60AE3C00C13839 /* B3Bank.cpp */,
54855499
0F2C63AC1E60AE3C00C13839 /* B3Bank.h */,
54865500
0FEC84B61BDACDAC0080FF74 /* B3BasicBlock.cpp */,
@@ -5532,6 +5546,8 @@
55325546
0FEC85BE1BE167A00080FF74 /* B3Effects.h */,
55335547
0F725CA31C503DED00AD943A /* B3EliminateCommonSubexpressions.cpp */,
55345548
0F725CA41C503DED00AD943A /* B3EliminateCommonSubexpressions.h */,
5549+
0F5BF16E1F23A5A10029D91D /* B3EnsureLoopPreHeaders.cpp */,
5550+
0F5BF16F1F23A5A10029D91D /* B3EnsureLoopPreHeaders.h */,
55355551
0F6971E81D92F42100BA02A5 /* B3FenceValue.cpp */,
55365552
0F6971E91D92F42100BA02A5 /* B3FenceValue.h */,
55375553
0F6B8AE01C4EFE1700969052 /* B3FixSSA.cpp */,
@@ -5546,6 +5562,8 @@
55465562
0F2C63B51E6343E800C13839 /* B3GenericBlockInsertionSet.h */,
55475563
0FEC84D01BDACDAC0080FF74 /* B3GenericFrequentedBlock.h */,
55485564
0FEC85C01BE167A00080FF74 /* B3HeapRange.h */,
5565+
0F5BF1611F2317120029D91D /* B3HoistLoopInvariantValues.cpp */,
5566+
0F5BF1621F2317120029D91D /* B3HoistLoopInvariantValues.h */,
55495567
DC69B99A1D15F90F002E3C00 /* B3InferSwitches.cpp */,
55505568
DC69B99B1D15F90F002E3C00 /* B3InferSwitches.h */,
55515569
0FEC85B41BE1462F0080FF74 /* B3InsertionSet.cpp */,
@@ -5569,6 +5587,7 @@
55695587
0F338E031BF0276C0013C88F /* B3MoveConstants.cpp */,
55705588
0F338E041BF0276C0013C88F /* B3MoveConstants.h */,
55715589
0F2C63C11E664A5A00C13839 /* B3NativeTraits.h */,
5590+
0F5BF1681F23A0AA0029D91D /* B3NaturalLoops.h */,
55725591
0F338E051BF0276C0013C88F /* B3OpaqueByproduct.h */,
55735592
0F338E061BF0276C0013C88F /* B3OpaqueByproducts.cpp */,
55745593
0F338E071BF0276C0013C88F /* B3OpaqueByproducts.h */,
@@ -7393,7 +7412,6 @@
73937412
0F8F14321ADF090100ED792C /* DFGMovHintRemovalPhase.h */,
73947413
0FF2CD591B61A4F8004955A8 /* DFGMultiGetByOffsetData.cpp */,
73957414
0FF2CD5A1B61A4F8004955A8 /* DFGMultiGetByOffsetData.h */,
7396-
A737810A1799EA2E00817533 /* DFGNaturalLoops.cpp */,
73977415
A737810B1799EA2E00817533 /* DFGNaturalLoops.h */,
73987416
0FB4B51E16B62772003F696B /* DFGNode.cpp */,
73997417
86ECA3E9132DEF1C002B2AD7 /* DFGNode.h */,
@@ -8515,6 +8533,7 @@
85158533
0FBB73BB1DEF8645002C009E /* DeleteAllCodeEffort.h in Headers */,
85168534
0F96303C1D4192CD005609D9 /* DestructionMode.h in Headers */,
85178535
A77A423E17A0BBFD00A8DB81 /* DFGAbstractHeap.h in Headers */,
8536+
0F5BF1691F23A0AA0029D91D /* B3NaturalLoops.h in Headers */,
85188537
A704D90317A0BAA8006BA554 /* DFGAbstractInterpreter.h in Headers */,
85198538
A704D90417A0BAA8006BA554 /* DFGAbstractInterpreterInlines.h in Headers */,
85208539
0F620177143FCD3F0068B77C /* DFGAbstractValue.h in Headers */,
@@ -8699,6 +8718,7 @@
86998718
0F1FB3971E1AF7E300A9BE50 /* DFGWorklistInlines.h in Headers */,
87008719
0FE050181AA9091100D33B33 /* DirectArguments.h in Headers */,
87018720
0FE050161AA9091100D33B33 /* DirectArgumentsOffset.h in Headers */,
8721+
0F5BF1711F23A5A10029D91D /* B3EnsureLoopPreHeaders.h in Headers */,
87028722
969A07980ED1D3AE00F1F681 /* DirectEvalCodeCache.h in Headers */,
87038723
14386A751DD69895008652C4 /* DirectEvalExecutable.h in Headers */,
87048724
0F37308F1C0CD68500052BFA /* DisallowMacroScratchRegisterUsage.h in Headers */,
@@ -8883,10 +8903,12 @@
88838903
A5FD0076189B038C00633231 /* IdentifiersFactory.h in Headers */,
88848904
C25F8BCE157544A900245B71 /* IncrementalSweeper.h in Headers */,
88858905
0FB7F39915ED8E4600F167B2 /* IndexingHeader.h in Headers */,
8906+
0F5BF16B1F23A0C10029D91D /* B3BackwardsDominators.h in Headers */,
88868907
0FB7F39A15ED8E4600F167B2 /* IndexingHeaderInlines.h in Headers */,
88878908
0FB7F39B15ED8E4600F167B2 /* IndexingType.h in Headers */,
88888909
14386A791DD6989C008652C4 /* IndirectEvalExecutable.h in Headers */,
88898910
0F0A75231B94BFA900110660 /* InferredType.h in Headers */,
8911+
0F5BF1671F23A0980029D91D /* B3BackwardsCFG.h in Headers */,
88908912
0FFC92121B94D4DF0071DD66 /* InferredTypeTable.h in Headers */,
88918913
0FF8BDEB1AD4CF7100DFE884 /* InferredValue.h in Headers */,
88928914
BC18C4100E16F5CD00B34460 /* InitializeThreading.h in Headers */,
@@ -9190,6 +9212,7 @@
91909212
86C36EEA0EE1289D00B3DF59 /* MacroAssembler.h in Headers */,
91919213
86D3B2C610156BDE002865E7 /* MacroAssemblerARM.h in Headers */,
91929214
A1A009C01831A22D00CF8711 /* MacroAssemblerARM64.h in Headers */,
9215+
0F5BF1641F2317120029D91D /* B3HoistLoopInvariantValues.h in Headers */,
91939216
86ADD1460FDDEA980006EEC2 /* MacroAssemblerARMv7.h in Headers */,
91949217
863B23E00FC6118900703AA4 /* MacroAssemblerCodeRef.h in Headers */,
91959218
E32AB2441DCD75F400D7533A /* MacroAssemblerHelpers.h in Headers */,
@@ -10406,7 +10429,6 @@
1040610429
0F2BDC4D1522818600CD8910 /* DFGMinifiedNode.cpp in Sources */,
1040710430
0F8F14351ADF090100ED792C /* DFGMovHintRemovalPhase.cpp in Sources */,
1040810431
0FF2CD5B1B61A4F8004955A8 /* DFGMultiGetByOffsetData.cpp in Sources */,
10409-
A737810D1799EA2E00817533 /* DFGNaturalLoops.cpp in Sources */,
1041010432
0FF0F19C16B72A03005DF95B /* DFGNode.cpp in Sources */,
1041110433
0F20178A1DCB942600EA5950 /* DFGNodeAbstractValuePair.cpp in Sources */,
1041210434
0FA581BA150E952C00B9A2D9 /* DFGNodeFlags.cpp in Sources */,
@@ -10768,6 +10790,7 @@
1076810790
AD2FCBE81DB58DAD00B3E736 /* JSWebAssemblyRuntimeError.cpp in Sources */,
1076910791
AD2FCBEA1DB58DAD00B3E736 /* JSWebAssemblyTable.cpp in Sources */,
1077010792
1442566115EDE98D0066A49B /* JSWithScope.cpp in Sources */,
10793+
0F5BF1631F2317120029D91D /* B3HoistLoopInvariantValues.cpp in Sources */,
1077110794
86E3C618167BABEE006D760A /* JSWrapperMap.mm in Sources */,
1077210795
14280870107EC1340013E7B2 /* JSWrapperObject.cpp in Sources */,
1077310796
BCFD8C920EEB2EE700283848 /* JumpTable.cpp in Sources */,
@@ -10834,6 +10857,7 @@
1083410857
0FD3E40B1B618B6600C80E1E /* ObjectPropertyConditionSet.cpp in Sources */,
1083510858
14469DE6107EC7E700650446 /* ObjectPrototype.cpp in Sources */,
1083610859
E124A8F80E555775003091F1 /* OpaqueJSString.cpp in Sources */,
10860+
0F5BF1701F23A5A10029D91D /* B3EnsureLoopPreHeaders.cpp in Sources */,
1083710861
969A079A0ED1D3AE00F1F681 /* Opcode.cpp in Sources */,
1083810862
14280850107EC0D70013E7B2 /* Operations.cpp in Sources */,
1083910863
0FE228EE1436AB2C00196C48 /* Options.cpp in Sources */,

0 commit comments

Comments
 (0)