Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(112)

Side by Side Diff: src/compiler/js-typed-lowering.cc

Issue 2006423003: [turbofan] Remove the EmptyFrameState caching on JSGraph. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/code-factory.h" 5 #include "src/code-factory.h"
6 #include "src/compilation-dependencies.h" 6 #include "src/compilation-dependencies.h"
7 #include "src/compiler/access-builder.h" 7 #include "src/compiler/access-builder.h"
8 #include "src/compiler/js-graph.h" 8 #include "src/compiler/js-graph.h"
9 #include "src/compiler/js-typed-lowering.h" 9 #include "src/compiler/js-typed-lowering.h"
10 #include "src/compiler/linkage.h" 10 #include "src/compiler/linkage.h"
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 } 217 }
218 218
219 Node* ConvertPlainPrimitiveToNumberOrUndefined(Node* node) { 219 Node* ConvertPlainPrimitiveToNumberOrUndefined(Node* node) {
220 DCHECK(NodeProperties::GetType(node)->Is(Type::PlainPrimitive())); 220 DCHECK(NodeProperties::GetType(node)->Is(Type::PlainPrimitive()));
221 // Avoid inserting too many eager ToNumber() operations. 221 // Avoid inserting too many eager ToNumber() operations.
222 Reduction const reduction = lowering_->ReduceJSToNumberInput(node); 222 Reduction const reduction = lowering_->ReduceJSToNumberInput(node);
223 if (reduction.Changed()) return reduction.replacement(); 223 if (reduction.Changed()) return reduction.replacement();
224 if (NodeProperties::GetType(node)->Is(Type::NumberOrUndefined())) { 224 if (NodeProperties::GetType(node)->Is(Type::NumberOrUndefined())) {
225 return node; 225 return node;
226 } 226 }
227 // TODO(bmeurer): Introduce PlainPrimitiveToNumber here.
227 return graph()->NewNode( 228 return graph()->NewNode(
228 javascript()->ToNumber(), node, jsgraph()->NoContextConstant(), 229 javascript()->ToNumber(), node, jsgraph()->NoContextConstant(),
229 jsgraph()->EmptyFrameState(), graph()->start(), graph()->start()); 230 lowering_->EmptyFrameState(), graph()->start(), graph()->start());
230 } 231 }
231 232
232 Node* ConvertSingleInputToNumber(Node* node, Node* frame_state) { 233 Node* ConvertSingleInputToNumber(Node* node, Node* frame_state) {
233 DCHECK(!NodeProperties::GetType(node)->Is(Type::PlainPrimitive())); 234 DCHECK(!NodeProperties::GetType(node)->Is(Type::PlainPrimitive()));
234 Node* const n = graph()->NewNode(javascript()->ToNumber(), node, context(), 235 Node* const n = graph()->NewNode(javascript()->ToNumber(), node, context(),
235 frame_state, effect(), control()); 236 frame_state, effect(), control());
236 Node* const if_success = graph()->NewNode(common()->IfSuccess(), n); 237 Node* const if_success = graph()->NewNode(common()->IfSuccess(), n);
237 NodeProperties::ReplaceControlInput(node_, if_success); 238 NodeProperties::ReplaceControlInput(node_, if_success);
238 NodeProperties::ReplaceUses(node_, node_, node_, node_, n); 239 NodeProperties::ReplaceUses(node_, node_, node_, node_, n);
239 update_effect(n); 240 update_effect(n);
(...skipping 544 matching lines...) Expand 10 before | Expand all | Expand 10 after
784 jsgraph()->NoContextConstant() || 785 jsgraph()->NoContextConstant() ||
785 NodeProperties::GetEffectInput(node) != graph()->start() || 786 NodeProperties::GetEffectInput(node) != graph()->start() ||
786 NodeProperties::GetControlInput(node) != graph()->start()) { 787 NodeProperties::GetControlInput(node) != graph()->start()) {
787 // JSToNumber(x:plain-primitive,context,effect,control) 788 // JSToNumber(x:plain-primitive,context,effect,control)
788 // => JSToNumber(x,no-context,start,start) 789 // => JSToNumber(x,no-context,start,start)
789 RelaxEffectsAndControls(node); 790 RelaxEffectsAndControls(node);
790 NodeProperties::ReplaceContextInput(node, jsgraph()->NoContextConstant()); 791 NodeProperties::ReplaceContextInput(node, jsgraph()->NoContextConstant());
791 NodeProperties::ReplaceControlInput(node, graph()->start()); 792 NodeProperties::ReplaceControlInput(node, graph()->start());
792 NodeProperties::ReplaceEffectInput(node, graph()->start()); 793 NodeProperties::ReplaceEffectInput(node, graph()->start());
793 DCHECK_EQ(1, OperatorProperties::GetFrameStateInputCount(node->op())); 794 DCHECK_EQ(1, OperatorProperties::GetFrameStateInputCount(node->op()));
794 NodeProperties::ReplaceFrameStateInput(node, 0, 795 NodeProperties::ReplaceFrameStateInput(node, 0, EmptyFrameState());
795 jsgraph()->EmptyFrameState());
796 return Changed(node); 796 return Changed(node);
797 } 797 }
798 } 798 }
799 return NoChange(); 799 return NoChange();
800 } 800 }
801 801
802 802
803 Reduction JSTypedLowering::ReduceJSToStringInput(Node* input) { 803 Reduction JSTypedLowering::ReduceJSToStringInput(Node* input) {
804 if (input->opcode() == IrOpcode::kJSToString) { 804 if (input->opcode() == IrOpcode::kJSToString) {
805 // Recursively try to reduce the input first. 805 // Recursively try to reduce the input first.
(...skipping 1047 matching lines...) Expand 10 before | Expand all | Expand 10 after
1853 return NoChange(); 1853 return NoChange();
1854 } 1854 }
1855 1855
1856 1856
1857 Node* JSTypedLowering::Word32Shl(Node* const lhs, int32_t const rhs) { 1857 Node* JSTypedLowering::Word32Shl(Node* const lhs, int32_t const rhs) {
1858 if (rhs == 0) return lhs; 1858 if (rhs == 0) return lhs;
1859 return graph()->NewNode(machine()->Word32Shl(), lhs, 1859 return graph()->NewNode(machine()->Word32Shl(), lhs,
1860 jsgraph()->Int32Constant(rhs)); 1860 jsgraph()->Int32Constant(rhs));
1861 } 1861 }
1862 1862
1863 Node* JSTypedLowering::EmptyFrameState() {
1864 return graph()->NewNode(
1865 common()->FrameState(BailoutId::None(), OutputFrameStateCombine::Ignore(),
1866 nullptr),
1867 jsgraph()->EmptyStateValues(), jsgraph()->EmptyStateValues(),
1868 jsgraph()->EmptyStateValues(), jsgraph()->NoContextConstant(),
1869 jsgraph()->UndefinedConstant(), graph()->start());
1870 }
1863 1871
1864 Factory* JSTypedLowering::factory() const { return jsgraph()->factory(); } 1872 Factory* JSTypedLowering::factory() const { return jsgraph()->factory(); }
1865 1873
1866 1874
1867 Graph* JSTypedLowering::graph() const { return jsgraph()->graph(); } 1875 Graph* JSTypedLowering::graph() const { return jsgraph()->graph(); }
1868 1876
1869 1877
1870 Isolate* JSTypedLowering::isolate() const { return jsgraph()->isolate(); } 1878 Isolate* JSTypedLowering::isolate() const { return jsgraph()->isolate(); }
1871 1879
1872 1880
(...skipping 17 matching lines...) Expand all
1890 } 1898 }
1891 1899
1892 1900
1893 CompilationDependencies* JSTypedLowering::dependencies() const { 1901 CompilationDependencies* JSTypedLowering::dependencies() const {
1894 return dependencies_; 1902 return dependencies_;
1895 } 1903 }
1896 1904
1897 } // namespace compiler 1905 } // namespace compiler
1898 } // namespace internal 1906 } // namespace internal
1899 } // namespace v8 1907 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/js-typed-lowering.h ('k') | test/cctest/compiler/test-js-context-specialization.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698