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

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

Issue 1144183004: [strong] Refactor ObjectStrength into a replacement for strong boolean args (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: everything should work now Created 5 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/compiler/ast-graph-builder.h" 5 #include "src/compiler/ast-graph-builder.h"
6 6
7 #include "src/compiler.h" 7 #include "src/compiler.h"
8 #include "src/compiler/ast-loop-assignment-analyzer.h" 8 #include "src/compiler/ast-loop-assignment-analyzer.h"
9 #include "src/compiler/control-builders.h" 9 #include "src/compiler/control-builders.h"
10 #include "src/compiler/js-type-feedback.h" 10 #include "src/compiler/js-type-feedback.h"
(...skipping 2529 matching lines...) Expand 10 before | Expand all | Expand 10 after
2540 case Token::NE: 2540 case Token::NE:
2541 op = javascript()->NotEqual(); 2541 op = javascript()->NotEqual();
2542 break; 2542 break;
2543 case Token::EQ_STRICT: 2543 case Token::EQ_STRICT:
2544 op = javascript()->StrictEqual(); 2544 op = javascript()->StrictEqual();
2545 break; 2545 break;
2546 case Token::NE_STRICT: 2546 case Token::NE_STRICT:
2547 op = javascript()->StrictNotEqual(); 2547 op = javascript()->StrictNotEqual();
2548 break; 2548 break;
2549 case Token::LT: 2549 case Token::LT:
2550 op = javascript()->LessThan(language_mode()); 2550 op = javascript()->LessThan(strength(language_mode()));
2551 break; 2551 break;
2552 case Token::GT: 2552 case Token::GT:
2553 op = javascript()->GreaterThan(language_mode()); 2553 op = javascript()->GreaterThan(strength(language_mode()));
2554 break; 2554 break;
2555 case Token::LTE: 2555 case Token::LTE:
2556 op = javascript()->LessThanOrEqual(language_mode()); 2556 op = javascript()->LessThanOrEqual(strength(language_mode()));
2557 break; 2557 break;
2558 case Token::GTE: 2558 case Token::GTE:
2559 op = javascript()->GreaterThanOrEqual(language_mode()); 2559 op = javascript()->GreaterThanOrEqual(strength(language_mode()));
2560 break; 2560 break;
2561 case Token::INSTANCEOF: 2561 case Token::INSTANCEOF:
2562 op = javascript()->InstanceOf(); 2562 op = javascript()->InstanceOf();
2563 break; 2563 break;
2564 case Token::IN: 2564 case Token::IN:
2565 op = javascript()->HasProperty(); 2565 op = javascript()->HasProperty();
2566 break; 2566 break;
2567 default: 2567 default:
2568 op = NULL; 2568 op = NULL;
2569 UNREACHABLE(); 2569 UNREACHABLE();
(...skipping 837 matching lines...) Expand 10 before | Expand all | Expand 10 after
3407 Node* AstGraphBuilder::BuildThrow(Node* exception_value) { 3407 Node* AstGraphBuilder::BuildThrow(Node* exception_value) {
3408 NewNode(javascript()->CallRuntime(Runtime::kReThrow, 1), exception_value); 3408 NewNode(javascript()->CallRuntime(Runtime::kReThrow, 1), exception_value);
3409 Node* control = NewNode(common()->Throw(), exception_value); 3409 Node* control = NewNode(common()->Throw(), exception_value);
3410 UpdateControlDependencyToLeaveFunction(control); 3410 UpdateControlDependencyToLeaveFunction(control);
3411 return control; 3411 return control;
3412 } 3412 }
3413 3413
3414 3414
3415 Node* AstGraphBuilder::BuildBinaryOp(Node* left, Node* right, Token::Value op) { 3415 Node* AstGraphBuilder::BuildBinaryOp(Node* left, Node* right, Token::Value op) {
3416 const Operator* js_op; 3416 const Operator* js_op;
3417 Strength op_strength = strength(language_mode());
3417 switch (op) { 3418 switch (op) {
3418 case Token::BIT_OR: 3419 case Token::BIT_OR:
3419 js_op = javascript()->BitwiseOr(language_mode()); 3420 js_op = javascript()->BitwiseOr(op_strength);
3420 break; 3421 break;
3421 case Token::BIT_AND: 3422 case Token::BIT_AND:
3422 js_op = javascript()->BitwiseAnd(language_mode()); 3423 js_op = javascript()->BitwiseAnd(op_strength);
3423 break; 3424 break;
3424 case Token::BIT_XOR: 3425 case Token::BIT_XOR:
3425 js_op = javascript()->BitwiseXor(language_mode()); 3426 js_op = javascript()->BitwiseXor(op_strength);
3426 break; 3427 break;
3427 case Token::SHL: 3428 case Token::SHL:
3428 js_op = javascript()->ShiftLeft(language_mode()); 3429 js_op = javascript()->ShiftLeft(op_strength);
3429 break; 3430 break;
3430 case Token::SAR: 3431 case Token::SAR:
3431 js_op = javascript()->ShiftRight(language_mode()); 3432 js_op = javascript()->ShiftRight(op_strength);
3432 break; 3433 break;
3433 case Token::SHR: 3434 case Token::SHR:
3434 js_op = javascript()->ShiftRightLogical(language_mode()); 3435 js_op = javascript()->ShiftRightLogical(op_strength);
3435 break; 3436 break;
3436 case Token::ADD: 3437 case Token::ADD:
3437 js_op = javascript()->Add(language_mode()); 3438 js_op = javascript()->Add(op_strength);
3438 break; 3439 break;
3439 case Token::SUB: 3440 case Token::SUB:
3440 js_op = javascript()->Subtract(language_mode()); 3441 js_op = javascript()->Subtract(op_strength);
3441 break; 3442 break;
3442 case Token::MUL: 3443 case Token::MUL:
3443 js_op = javascript()->Multiply(language_mode()); 3444 js_op = javascript()->Multiply(op_strength);
3444 break; 3445 break;
3445 case Token::DIV: 3446 case Token::DIV:
3446 js_op = javascript()->Divide(language_mode()); 3447 js_op = javascript()->Divide(op_strength);
3447 break; 3448 break;
3448 case Token::MOD: 3449 case Token::MOD:
3449 js_op = javascript()->Modulus(language_mode()); 3450 js_op = javascript()->Modulus(op_strength);
3450 break; 3451 break;
3451 default: 3452 default:
3452 UNREACHABLE(); 3453 UNREACHABLE();
3453 js_op = NULL; 3454 js_op = NULL;
3454 } 3455 }
3455 return NewNode(js_op, left, right); 3456 return NewNode(js_op, left, right);
3456 } 3457 }
3457 3458
3458 3459
3459 bool AstGraphBuilder::CheckOsrEntry(IterationStatement* stmt) { 3460 bool AstGraphBuilder::CheckOsrEntry(IterationStatement* stmt) {
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
3786 // Phi does not exist yet, introduce one. 3787 // Phi does not exist yet, introduce one.
3787 value = NewPhi(inputs, value, control); 3788 value = NewPhi(inputs, value, control);
3788 value->ReplaceInput(inputs - 1, other); 3789 value->ReplaceInput(inputs - 1, other);
3789 } 3790 }
3790 return value; 3791 return value;
3791 } 3792 }
3792 3793
3793 } // namespace compiler 3794 } // namespace compiler
3794 } // namespace internal 3795 } // namespace internal
3795 } // namespace v8 3796 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698