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

Side by Side Diff: src/compiler/ast-graph-builder.cc

Issue 1693833002: Remove strong mode support from binary operations. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Addressed comments. Created 4 years, 10 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/compiler/ast-graph-builder.h" 5 #include "src/compiler/ast-graph-builder.h"
6 6
7 #include "src/ast/scopes.h" 7 #include "src/ast/scopes.h"
8 #include "src/compiler.h" 8 #include "src/compiler.h"
9 #include "src/compiler/ast-loop-assignment-analyzer.h" 9 #include "src/compiler/ast-loop-assignment-analyzer.h"
10 #include "src/compiler/control-builders.h" 10 #include "src/compiler/control-builders.h"
(...skipping 2823 matching lines...) Expand 10 before | Expand all | Expand 10 after
2834 case Token::NE: 2834 case Token::NE:
2835 op = javascript()->NotEqual(); 2835 op = javascript()->NotEqual();
2836 break; 2836 break;
2837 case Token::EQ_STRICT: 2837 case Token::EQ_STRICT:
2838 op = javascript()->StrictEqual(); 2838 op = javascript()->StrictEqual();
2839 break; 2839 break;
2840 case Token::NE_STRICT: 2840 case Token::NE_STRICT:
2841 op = javascript()->StrictNotEqual(); 2841 op = javascript()->StrictNotEqual();
2842 break; 2842 break;
2843 case Token::LT: 2843 case Token::LT:
2844 op = javascript()->LessThan(language_mode()); 2844 op = javascript()->LessThan();
2845 break; 2845 break;
2846 case Token::GT: 2846 case Token::GT:
2847 op = javascript()->GreaterThan(language_mode()); 2847 op = javascript()->GreaterThan();
2848 break; 2848 break;
2849 case Token::LTE: 2849 case Token::LTE:
2850 op = javascript()->LessThanOrEqual(language_mode()); 2850 op = javascript()->LessThanOrEqual();
2851 break; 2851 break;
2852 case Token::GTE: 2852 case Token::GTE:
2853 op = javascript()->GreaterThanOrEqual(language_mode()); 2853 op = javascript()->GreaterThanOrEqual();
2854 break; 2854 break;
2855 case Token::INSTANCEOF: 2855 case Token::INSTANCEOF:
2856 op = javascript()->InstanceOf(); 2856 op = javascript()->InstanceOf();
2857 break; 2857 break;
2858 case Token::IN: 2858 case Token::IN:
2859 op = javascript()->HasProperty(); 2859 op = javascript()->HasProperty();
2860 break; 2860 break;
2861 default: 2861 default:
2862 op = nullptr; 2862 op = nullptr;
2863 UNREACHABLE(); 2863 UNREACHABLE();
(...skipping 954 matching lines...) Expand 10 before | Expand all | Expand 10 after
3818 Node* AstGraphBuilder::BuildBinaryOp(Node* left, Node* right, Token::Value op, 3818 Node* AstGraphBuilder::BuildBinaryOp(Node* left, Node* right, Token::Value op,
3819 TypeFeedbackId feedback_id) { 3819 TypeFeedbackId feedback_id) {
3820 const Operator* js_op; 3820 const Operator* js_op;
3821 BinaryOperationHints hints; 3821 BinaryOperationHints hints;
3822 if (!type_hint_analysis_ || 3822 if (!type_hint_analysis_ ||
3823 !type_hint_analysis_->GetBinaryOperationHints(feedback_id, &hints)) { 3823 !type_hint_analysis_->GetBinaryOperationHints(feedback_id, &hints)) {
3824 hints = BinaryOperationHints::Any(); 3824 hints = BinaryOperationHints::Any();
3825 } 3825 }
3826 switch (op) { 3826 switch (op) {
3827 case Token::BIT_OR: 3827 case Token::BIT_OR:
3828 js_op = javascript()->BitwiseOr(language_mode(), hints); 3828 js_op = javascript()->BitwiseOr(hints);
3829 break; 3829 break;
3830 case Token::BIT_AND: 3830 case Token::BIT_AND:
3831 js_op = javascript()->BitwiseAnd(language_mode(), hints); 3831 js_op = javascript()->BitwiseAnd(hints);
3832 break; 3832 break;
3833 case Token::BIT_XOR: 3833 case Token::BIT_XOR:
3834 js_op = javascript()->BitwiseXor(language_mode(), hints); 3834 js_op = javascript()->BitwiseXor(hints);
3835 break; 3835 break;
3836 case Token::SHL: 3836 case Token::SHL:
3837 js_op = javascript()->ShiftLeft(language_mode(), hints); 3837 js_op = javascript()->ShiftLeft(hints);
3838 break; 3838 break;
3839 case Token::SAR: 3839 case Token::SAR:
3840 js_op = javascript()->ShiftRight(language_mode(), hints); 3840 js_op = javascript()->ShiftRight(hints);
3841 break; 3841 break;
3842 case Token::SHR: 3842 case Token::SHR:
3843 js_op = javascript()->ShiftRightLogical(language_mode(), hints); 3843 js_op = javascript()->ShiftRightLogical(hints);
3844 break; 3844 break;
3845 case Token::ADD: 3845 case Token::ADD:
3846 js_op = javascript()->Add(language_mode(), hints); 3846 js_op = javascript()->Add(hints);
3847 break; 3847 break;
3848 case Token::SUB: 3848 case Token::SUB:
3849 js_op = javascript()->Subtract(language_mode(), hints); 3849 js_op = javascript()->Subtract(hints);
3850 break; 3850 break;
3851 case Token::MUL: 3851 case Token::MUL:
3852 js_op = javascript()->Multiply(language_mode(), hints); 3852 js_op = javascript()->Multiply(hints);
3853 break; 3853 break;
3854 case Token::DIV: 3854 case Token::DIV:
3855 js_op = javascript()->Divide(language_mode(), hints); 3855 js_op = javascript()->Divide(hints);
3856 break; 3856 break;
3857 case Token::MOD: 3857 case Token::MOD:
3858 js_op = javascript()->Modulus(language_mode(), hints); 3858 js_op = javascript()->Modulus(hints);
3859 break; 3859 break;
3860 default: 3860 default:
3861 UNREACHABLE(); 3861 UNREACHABLE();
3862 js_op = nullptr; 3862 js_op = nullptr;
3863 } 3863 }
3864 return NewNode(js_op, left, right); 3864 return NewNode(js_op, left, right);
3865 } 3865 }
3866 3866
3867 3867
3868 Node* AstGraphBuilder::TryLoadGlobalConstant(Handle<Name> name) { 3868 Node* AstGraphBuilder::TryLoadGlobalConstant(Handle<Name> name) {
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after
4349 // Phi does not exist yet, introduce one. 4349 // Phi does not exist yet, introduce one.
4350 value = NewPhi(inputs, value, control); 4350 value = NewPhi(inputs, value, control);
4351 value->ReplaceInput(inputs - 1, other); 4351 value->ReplaceInput(inputs - 1, other);
4352 } 4352 }
4353 return value; 4353 return value;
4354 } 4354 }
4355 4355
4356 } // namespace compiler 4356 } // namespace compiler
4357 } // namespace internal 4357 } // namespace internal
4358 } // namespace v8 4358 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698