Diff
Modified: trunk/Source/_javascript_Core/CMakeLists.txt (187117 => 187118)
--- trunk/Source/_javascript_Core/CMakeLists.txt 2015-07-21 19:58:02 UTC (rev 187117)
+++ trunk/Source/_javascript_Core/CMakeLists.txt 2015-07-21 20:15:54 UTC (rev 187118)
@@ -178,7 +178,6 @@
dfg/DFGGraphSafepoint.cpp
dfg/DFGHeapLocation.cpp
dfg/DFGInPlaceAbstractState.cpp
- dfg/DFGInsertOSRHintsForUpdate.cpp
dfg/DFGIntegerCheckCombiningPhase.cpp
dfg/DFGIntegerRangeOptimizationPhase.cpp
dfg/DFGInvalidationPointInjectionPhase.cpp
Modified: trunk/Source/_javascript_Core/ChangeLog (187117 => 187118)
--- trunk/Source/_javascript_Core/ChangeLog 2015-07-21 19:58:02 UTC (rev 187117)
+++ trunk/Source/_javascript_Core/ChangeLog 2015-07-21 20:15:54 UTC (rev 187118)
@@ -1,3 +1,29 @@
+2015-07-21 Basile Clement <[email protected]>
+
+ Object allocation sinking phase is performing needless HashMap copies
+ https://bugs.webkit.org/show_bug.cgi?id=147159
+
+ Reviewed by Geoffrey Garen.
+
+ The points-to analyzer in the object allocation sinking phase is
+ currently performing copies of its allocation and pointers tables in
+ several places. While this is not a huge problem since those tables are
+ usually small and we are in the FTL path anyway, we still shouldn't be
+ doing such useless copying.
+
+ This patch also removes the DFGInsertOSRHintsForUpdate files that are
+ no longer needed with the new object sinking phase and should have been
+ removed in r186795.
+
+ * CMakeLists.txt:
+ * _javascript_Core.vcxproj/_javascript_Core.vcxproj:
+ * _javascript_Core.vcxproj/_javascript_Core.vcxproj.filters:
+ * _javascript_Core.xcodeproj/project.pbxproj:
+ * dfg/DFGInsertOSRHintsForUpdate.cpp: Removed.
+ (JSC::DFG::insertOSRHintsForUpdate): Deleted.
+ * dfg/DFGInsertOSRHintsForUpdate.h: Removed.
+ * dfg/DFGObjectAllocationSinkingPhase.cpp:
+
2015-07-21 Saam barati <[email protected]>
DestructuringPatternNode and DestructuringAssignmentNode should be ParserArenaFreeable
Modified: trunk/Source/_javascript_Core/_javascript_Core.vcxproj/_javascript_Core.vcxproj (187117 => 187118)
--- trunk/Source/_javascript_Core/_javascript_Core.vcxproj/_javascript_Core.vcxproj 2015-07-21 19:58:02 UTC (rev 187117)
+++ trunk/Source/_javascript_Core/_javascript_Core.vcxproj/_javascript_Core.vcxproj 2015-07-21 20:15:54 UTC (rev 187118)
@@ -416,7 +416,6 @@
<ClCompile Include="..\dfg\DFGGraphSafepoint.cpp" />
<ClCompile Include="..\dfg\DFGHeapLocation.cpp" />
<ClCompile Include="..\dfg\DFGInPlaceAbstractState.cpp" />
- <ClCompile Include="..\dfg\DFGInsertOSRHintsForUpdate.cpp" />
<ClCompile Include="..\dfg\DFGIntegerCheckCombiningPhase.cpp" />
<ClCompile Include="..\dfg\DFGIntegerRangeOptimizationPhase.cpp" />
<ClCompile Include="..\dfg\DFGInvalidationPointInjectionPhase.cpp" />
@@ -1110,7 +1109,6 @@
<ClInclude Include="..\dfg\DFGGraphSafepoint.h" />
<ClInclude Include="..\dfg\DFGHeapLocation.h" />
<ClInclude Include="..\dfg\DFGInPlaceAbstractState.h" />
- <ClInclude Include="..\dfg\DFGInsertOSRHintsForUpdate.h" />
<ClInclude Include="..\dfg\DFGInsertionSet.h" />
<ClInclude Include="..\dfg\DFGIntegerCheckCombiningPhase.h" />
<ClInclude Include="..\dfg\DFGIntegerRangeOptimizationPhase.h" />
Modified: trunk/Source/_javascript_Core/_javascript_Core.vcxproj/_javascript_Core.vcxproj.filters (187117 => 187118)
--- trunk/Source/_javascript_Core/_javascript_Core.vcxproj/_javascript_Core.vcxproj.filters 2015-07-21 19:58:02 UTC (rev 187117)
+++ trunk/Source/_javascript_Core/_javascript_Core.vcxproj/_javascript_Core.vcxproj.filters 2015-07-21 20:15:54 UTC (rev 187118)
@@ -1716,9 +1716,6 @@
<ClCompile Include="..\dfg\DFGBlockWorklist.cpp">
<Filter>dfg</Filter>
</ClCompile>
- <ClCompile Include="..\dfg\DFGInsertOSRHintsForUpdate.cpp">
- <Filter>dfg</Filter>
- </ClCompile>
<ClCompile Include="..\dfg\DFGNaiveDominators.cpp">
<Filter>dfg</Filter>
</ClCompile>
@@ -4208,9 +4205,6 @@
<ClInclude Include="..\dfg\DFGBlockWorklist.h">
<Filter>dfg</Filter>
</ClInclude>
- <ClInclude Include="..\dfg\DFGInsertOSRHintsForUpdate.h">
- <Filter>dfg</Filter>
- </ClInclude>
<ClInclude Include="..\dfg\DFGNaiveDominators.h">
<Filter>dfg</Filter>
</ClInclude>
Modified: trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj (187117 => 187118)
--- trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj 2015-07-21 19:58:02 UTC (rev 187117)
+++ trunk/Source/_javascript_Core/_javascript_Core.xcodeproj/project.pbxproj 2015-07-21 20:15:54 UTC (rev 187118)
@@ -214,8 +214,6 @@
0F2B670B17B6B5AB00A7AE3F /* TypedArrayType.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B66DD17B6B5AB00A7AE3F /* TypedArrayType.h */; settings = {ATTRIBUTES = (Private, ); }; };
0F2B9CE219D0BA7D00B1D1B5 /* DFGAvailabilityMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2B9CD619D0BA7D00B1D1B5 /* DFGAvailabilityMap.cpp */; };
0F2B9CE319D0BA7D00B1D1B5 /* DFGAvailabilityMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B9CD719D0BA7D00B1D1B5 /* DFGAvailabilityMap.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 0F2B9CE419D0BA7D00B1D1B5 /* DFGInsertOSRHintsForUpdate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2B9CD819D0BA7D00B1D1B5 /* DFGInsertOSRHintsForUpdate.cpp */; };
- 0F2B9CE519D0BA7D00B1D1B5 /* DFGInsertOSRHintsForUpdate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B9CD919D0BA7D00B1D1B5 /* DFGInsertOSRHintsForUpdate.h */; settings = {ATTRIBUTES = (Private, ); }; };
0F2B9CE619D0BA7D00B1D1B5 /* DFGObjectAllocationSinkingPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2B9CDA19D0BA7D00B1D1B5 /* DFGObjectAllocationSinkingPhase.cpp */; };
0F2B9CE719D0BA7D00B1D1B5 /* DFGObjectAllocationSinkingPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2B9CDB19D0BA7D00B1D1B5 /* DFGObjectAllocationSinkingPhase.h */; settings = {ATTRIBUTES = (Private, ); }; };
0F2B9CE819D0BA7D00B1D1B5 /* DFGObjectMaterializationData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F2B9CDC19D0BA7D00B1D1B5 /* DFGObjectMaterializationData.cpp */; };
@@ -1960,8 +1958,6 @@
0F2B66DD17B6B5AB00A7AE3F /* TypedArrayType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TypedArrayType.h; sourceTree = "<group>"; };
0F2B9CD619D0BA7D00B1D1B5 /* DFGAvailabilityMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGAvailabilityMap.cpp; path = dfg/DFGAvailabilityMap.cpp; sourceTree = "<group>"; };
0F2B9CD719D0BA7D00B1D1B5 /* DFGAvailabilityMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGAvailabilityMap.h; path = dfg/DFGAvailabilityMap.h; sourceTree = "<group>"; };
- 0F2B9CD819D0BA7D00B1D1B5 /* DFGInsertOSRHintsForUpdate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGInsertOSRHintsForUpdate.cpp; path = dfg/DFGInsertOSRHintsForUpdate.cpp; sourceTree = "<group>"; };
- 0F2B9CD919D0BA7D00B1D1B5 /* DFGInsertOSRHintsForUpdate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGInsertOSRHintsForUpdate.h; path = dfg/DFGInsertOSRHintsForUpdate.h; sourceTree = "<group>"; };
0F2B9CDA19D0BA7D00B1D1B5 /* DFGObjectAllocationSinkingPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGObjectAllocationSinkingPhase.cpp; path = dfg/DFGObjectAllocationSinkingPhase.cpp; sourceTree = "<group>"; };
0F2B9CDB19D0BA7D00B1D1B5 /* DFGObjectAllocationSinkingPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGObjectAllocationSinkingPhase.h; path = dfg/DFGObjectAllocationSinkingPhase.h; sourceTree = "<group>"; };
0F2B9CDC19D0BA7D00B1D1B5 /* DFGObjectMaterializationData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGObjectMaterializationData.cpp; path = dfg/DFGObjectMaterializationData.cpp; sourceTree = "<group>"; };
@@ -4977,8 +4973,6 @@
A704D90017A0BAA8006BA554 /* DFGInPlaceAbstractState.cpp */,
A704D90117A0BAA8006BA554 /* DFGInPlaceAbstractState.h */,
0F2BDC1F151E803800CD8910 /* DFGInsertionSet.h */,
- 0F2B9CD819D0BA7D00B1D1B5 /* DFGInsertOSRHintsForUpdate.cpp */,
- 0F2B9CD919D0BA7D00B1D1B5 /* DFGInsertOSRHintsForUpdate.h */,
0F300B7918AB1B1400A6D72E /* DFGIntegerCheckCombiningPhase.cpp */,
0F300B7A18AB1B1400A6D72E /* DFGIntegerCheckCombiningPhase.h */,
0F898F2F1B27689F0083A33C /* DFGIntegerRangeOptimizationPhase.cpp */,
@@ -5773,7 +5767,6 @@
2A68295B1875F80500B6C3E2 /* CopyWriteBarrier.h in Headers */,
5DE6E5B30E1728EC00180407 /* create_hash_table in Headers */,
0F426A4B1460CD6E00131F8F /* DataFormat.h in Headers */,
- 0F2B9CE519D0BA7D00B1D1B5 /* DFGInsertOSRHintsForUpdate.h in Headers */,
0F2B66DF17B6B5AB00A7AE3F /* DataView.h in Headers */,
BCD2034A0E17135E002C7E82 /* DateConstructor.h in Headers */,
41359CF30FDD89AD00206180 /* DateConversion.h in Headers */,
@@ -7065,7 +7058,6 @@
1429D8DD0ED2205B00B89619 /* CallFrame.cpp in Sources */,
0F0B83B014BCF71600885B4F /* CallLinkInfo.cpp in Sources */,
0F93329D14CA7DC30085F3C6 /* CallLinkStatus.cpp in Sources */,
- 0F2B9CE419D0BA7D00B1D1B5 /* DFGInsertOSRHintsForUpdate.cpp in Sources */,
969A07960ED1D3AE00F1F681 /* CodeBlock.cpp in Sources */,
0F8F94401667633000D61971 /* CodeBlockHash.cpp in Sources */,
0FC97F33182020D7002C9B26 /* CodeBlockJettisoningWatchpoint.cpp in Sources */,
Deleted: trunk/Source/_javascript_Core/dfg/DFGInsertOSRHintsForUpdate.cpp (187117 => 187118)
--- trunk/Source/_javascript_Core/dfg/DFGInsertOSRHintsForUpdate.cpp 2015-07-21 19:58:02 UTC (rev 187117)
+++ trunk/Source/_javascript_Core/dfg/DFGInsertOSRHintsForUpdate.cpp 2015-07-21 20:15:54 UTC (rev 187118)
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "DFGInsertOSRHintsForUpdate.h"
-
-#if ENABLE(DFG_JIT)
-
-#include "JSCInlines.h"
-
-namespace JSC { namespace DFG {
-
-void insertOSRHintsForUpdate(
- InsertionSet& insertionSet, unsigned nodeIndex, NodeOrigin origin,
- AvailabilityMap& availability, Node* originalNode, Node* newNode)
-{
- for (unsigned i = availability.m_locals.size(); i--;) {
- int operand = availability.m_locals.operandForIndex(i);
-
- if (availability.m_locals[i].hasNode() && availability.m_locals[i].node() == originalNode) {
- insertionSet.insertNode(
- nodeIndex, SpecNone, MovHint, origin, OpInfo(operand),
- newNode->defaultEdge());
- }
- }
-
- for (auto pair : availability.m_heap) {
- if (pair.value.hasNode() && pair.value.node() == originalNode) {
- insertionSet.insert(
- nodeIndex, pair.key.createHint(insertionSet.graph(), origin, newNode));
- }
- }
-}
-
-} } // namespace JSC::DFG
-
-#endif // ENABLE(DFG_JIT)
-
Deleted: trunk/Source/_javascript_Core/dfg/DFGInsertOSRHintsForUpdate.h (187117 => 187118)
--- trunk/Source/_javascript_Core/dfg/DFGInsertOSRHintsForUpdate.h 2015-07-21 19:58:02 UTC (rev 187117)
+++ trunk/Source/_javascript_Core/dfg/DFGInsertOSRHintsForUpdate.h 2015-07-21 20:15:54 UTC (rev 187118)
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef DFGInsertOSRHintsForUpdate_h
-#define DFGInsertOSRHintsForUpdate_h
-
-#if ENABLE(DFG_JIT)
-
-#include "DFGAvailabilityMap.h"
-#include "DFGInsertionSet.h"
-
-namespace JSC { namespace DFG {
-
-void insertOSRHintsForUpdate(
- InsertionSet&, unsigned nodeIndex, NodeOrigin, AvailabilityMap&,
- Node* originalNode, Node* newNode);
-
-} } // namespace JSC::DFG
-
-#endif // ENABLE(DFG_JIT)
-
-#endif // DFGInsertOSRHintsForUpdate_h
-
Modified: trunk/Source/_javascript_Core/dfg/DFGObjectAllocationSinkingPhase.cpp (187117 => 187118)
--- trunk/Source/_javascript_Core/dfg/DFGObjectAllocationSinkingPhase.cpp 2015-07-21 19:58:02 UTC (rev 187117)
+++ trunk/Source/_javascript_Core/dfg/DFGObjectAllocationSinkingPhase.cpp 2015-07-21 20:15:54 UTC (rev 187118)
@@ -536,12 +536,12 @@
return !(*this == other);
}
- const HashMap<Node*, Allocation> allocations() const
+ const HashMap<Node*, Allocation>& allocations() const
{
return m_allocations;
}
- const HashMap<Node*, Node*> pointers() const
+ const HashMap<Node*, Node*>& pointers() const
{
return m_pointers;
}