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

Side by Side Diff: src/compiler/simplified-lowering.cc

Issue 872363002: [turbofan] Add new JSIntrinsicsLowering reducer. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 11 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
« no previous file with comments | « src/compiler/pipeline.cc ('k') | src/compiler/typer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/compiler/simplified-lowering.h" 5 #include "src/compiler/simplified-lowering.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "src/base/bits.h" 9 #include "src/base/bits.h"
10 #include "src/code-factory.h" 10 #include "src/code-factory.h"
(...skipping 836 matching lines...) Expand 10 before | Expand all | Expand 10 after
847 SetOutput(node, 0); 847 SetOutput(node, 0);
848 if (lower()) lowering->DoStoreElement(node); 848 if (lower()) lowering->DoStoreElement(node);
849 break; 849 break;
850 } 850 }
851 case IrOpcode::kObjectIsSmi: { 851 case IrOpcode::kObjectIsSmi: {
852 ProcessInput(node, 0, kMachAnyTagged); 852 ProcessInput(node, 0, kMachAnyTagged);
853 SetOutput(node, kRepBit | kTypeBool); 853 SetOutput(node, kRepBit | kTypeBool);
854 if (lower()) { 854 if (lower()) {
855 Node* is_tagged = jsgraph_->graph()->NewNode( 855 Node* is_tagged = jsgraph_->graph()->NewNode(
856 jsgraph_->machine()->WordAnd(), node->InputAt(0), 856 jsgraph_->machine()->WordAnd(), node->InputAt(0),
857 jsgraph_->Int32Constant(static_cast<int>(kSmiTagMask))); 857 jsgraph_->IntPtrConstant(kSmiTagMask));
858 Node* is_smi = jsgraph_->graph()->NewNode( 858 Node* is_smi = jsgraph_->graph()->NewNode(
859 jsgraph_->machine()->WordEqual(), is_tagged, 859 jsgraph_->machine()->WordEqual(), is_tagged,
860 jsgraph_->Int32Constant(kSmiTag)); 860 jsgraph_->IntPtrConstant(kSmiTag));
861 DeferReplacement(node, is_smi); 861 DeferReplacement(node, is_smi);
862 } 862 }
863 break; 863 break;
864 } 864 }
865 case IrOpcode::kObjectIsNonNegativeSmi: { 865 case IrOpcode::kObjectIsNonNegativeSmi: {
866 ProcessInput(node, 0, kMachAnyTagged); 866 ProcessInput(node, 0, kMachAnyTagged);
867 SetOutput(node, kRepBit | kTypeBool); 867 SetOutput(node, kRepBit | kTypeBool);
868 if (lower()) { 868 if (lower()) {
869 Node* is_tagged = jsgraph_->graph()->NewNode( 869 Node* is_tagged = jsgraph_->graph()->NewNode(
870 jsgraph_->machine()->WordAnd(), node->InputAt(0), 870 jsgraph_->machine()->WordAnd(), node->InputAt(0),
871 jsgraph_->Int32Constant(static_cast<int>(kSmiTagMask))); 871 jsgraph_->IntPtrConstant(kSmiTagMask));
872 Node* is_smi = jsgraph_->graph()->NewNode( 872 Node* is_smi = jsgraph_->graph()->NewNode(
873 jsgraph_->machine()->WordEqual(), is_tagged, 873 jsgraph_->machine()->WordEqual(), is_tagged,
874 jsgraph_->Int32Constant(kSmiTag)); 874 jsgraph_->IntPtrConstant(kSmiTag));
875 Node* is_non_neg = jsgraph_->graph()->NewNode( 875 Node* is_non_neg = jsgraph_->graph()->NewNode(
876 jsgraph_->machine()->IntLessThanOrEqual(), 876 jsgraph_->machine()->IntLessThanOrEqual(),
877 jsgraph_->Int32Constant(0), node->InputAt(0)); 877 jsgraph_->IntPtrConstant(0), node->InputAt(0));
878 Node* is_non_neg_smi = jsgraph_->graph()->NewNode( 878 Node* is_non_neg_smi = jsgraph_->graph()->NewNode(
879 jsgraph_->machine()->Word32And(), is_smi, is_non_neg); 879 jsgraph_->machine()->Word32And(), is_smi, is_non_neg);
880 DeferReplacement(node, is_non_neg_smi); 880 DeferReplacement(node, is_non_neg_smi);
881 } 881 }
882 break; 882 break;
883 } 883 }
884 884
885 //------------------------------------------------------------------ 885 //------------------------------------------------------------------
886 // Machine-level operators. 886 // Machine-level operators.
887 //------------------------------------------------------------------ 887 //------------------------------------------------------------------
(...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after
1512 1512
1513 void SimplifiedLowering::DoStringLessThanOrEqual(Node* node) { 1513 void SimplifiedLowering::DoStringLessThanOrEqual(Node* node) {
1514 node->set_op(machine()->IntLessThanOrEqual()); 1514 node->set_op(machine()->IntLessThanOrEqual());
1515 node->ReplaceInput(0, StringComparison(node, true)); 1515 node->ReplaceInput(0, StringComparison(node, true));
1516 node->ReplaceInput(1, jsgraph()->SmiConstant(EQUAL)); 1516 node->ReplaceInput(1, jsgraph()->SmiConstant(EQUAL));
1517 } 1517 }
1518 1518
1519 } // namespace compiler 1519 } // namespace compiler
1520 } // namespace internal 1520 } // namespace internal
1521 } // namespace v8 1521 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/pipeline.cc ('k') | src/compiler/typer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698