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

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: rebase 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 2534 matching lines...) Expand 10 before | Expand all | Expand 10 after
2545 case Token::NE: 2545 case Token::NE:
2546 op = javascript()->NotEqual(); 2546 op = javascript()->NotEqual();
2547 break; 2547 break;
2548 case Token::EQ_STRICT: 2548 case Token::EQ_STRICT:
2549 op = javascript()->StrictEqual(); 2549 op = javascript()->StrictEqual();
2550 break; 2550 break;
2551 case Token::NE_STRICT: 2551 case Token::NE_STRICT:
2552 op = javascript()->StrictNotEqual(); 2552 op = javascript()->StrictNotEqual();
2553 break; 2553 break;
2554 case Token::LT: 2554 case Token::LT:
2555 op = javascript()->LessThan(language_mode()); 2555 op = javascript()->LessThan(strength(language_mode()));
2556 break; 2556 break;
2557 case Token::GT: 2557 case Token::GT:
2558 op = javascript()->GreaterThan(language_mode()); 2558 op = javascript()->GreaterThan(strength(language_mode()));
2559 break; 2559 break;
2560 case Token::LTE: 2560 case Token::LTE:
2561 op = javascript()->LessThanOrEqual(language_mode()); 2561 op = javascript()->LessThanOrEqual(strength(language_mode()));
2562 break; 2562 break;
2563 case Token::GTE: 2563 case Token::GTE:
2564 op = javascript()->GreaterThanOrEqual(language_mode()); 2564 op = javascript()->GreaterThanOrEqual(strength(language_mode()));
2565 break; 2565 break;
2566 case Token::INSTANCEOF: 2566 case Token::INSTANCEOF:
2567 op = javascript()->InstanceOf(); 2567 op = javascript()->InstanceOf();
2568 break; 2568 break;
2569 case Token::IN: 2569 case Token::IN:
2570 op = javascript()->HasProperty(); 2570 op = javascript()->HasProperty();
2571 break; 2571 break;
2572 default: 2572 default:
2573 op = NULL; 2573 op = NULL;
2574 UNREACHABLE(); 2574 UNREACHABLE();
(...skipping 837 matching lines...) Expand 10 before | Expand all | Expand 10 after
3412 Node* AstGraphBuilder::BuildThrow(Node* exception_value) { 3412 Node* AstGraphBuilder::BuildThrow(Node* exception_value) {
3413 NewNode(javascript()->CallRuntime(Runtime::kReThrow, 1), exception_value); 3413 NewNode(javascript()->CallRuntime(Runtime::kReThrow, 1), exception_value);
3414 Node* control = NewNode(common()->Throw(), exception_value); 3414 Node* control = NewNode(common()->Throw(), exception_value);
3415 UpdateControlDependencyToLeaveFunction(control); 3415 UpdateControlDependencyToLeaveFunction(control);
3416 return control; 3416 return control;
3417 } 3417 }
3418 3418
3419 3419
3420 Node* AstGraphBuilder::BuildBinaryOp(Node* left, Node* right, Token::Value op) { 3420 Node* AstGraphBuilder::BuildBinaryOp(Node* left, Node* right, Token::Value op) {
3421 const Operator* js_op; 3421 const Operator* js_op;
3422 Strength op_strength = strength(language_mode());
3422 switch (op) { 3423 switch (op) {
3423 case Token::BIT_OR: 3424 case Token::BIT_OR:
3424 js_op = javascript()->BitwiseOr(language_mode()); 3425 js_op = javascript()->BitwiseOr(op_strength);
3425 break; 3426 break;
3426 case Token::BIT_AND: 3427 case Token::BIT_AND:
3427 js_op = javascript()->BitwiseAnd(language_mode()); 3428 js_op = javascript()->BitwiseAnd(op_strength);
3428 break; 3429 break;
3429 case Token::BIT_XOR: 3430 case Token::BIT_XOR:
3430 js_op = javascript()->BitwiseXor(language_mode()); 3431 js_op = javascript()->BitwiseXor(op_strength);
3431 break; 3432 break;
3432 case Token::SHL: 3433 case Token::SHL:
3433 js_op = javascript()->ShiftLeft(language_mode()); 3434 js_op = javascript()->ShiftLeft(op_strength);
3434 break; 3435 break;
3435 case Token::SAR: 3436 case Token::SAR:
3436 js_op = javascript()->ShiftRight(language_mode()); 3437 js_op = javascript()->ShiftRight(op_strength);
3437 break; 3438 break;
3438 case Token::SHR: 3439 case Token::SHR:
3439 js_op = javascript()->ShiftRightLogical(language_mode()); 3440 js_op = javascript()->ShiftRightLogical(op_strength);
3440 break; 3441 break;
3441 case Token::ADD: 3442 case Token::ADD:
3442 js_op = javascript()->Add(language_mode()); 3443 js_op = javascript()->Add(op_strength);
3443 break; 3444 break;
3444 case Token::SUB: 3445 case Token::SUB:
3445 js_op = javascript()->Subtract(language_mode()); 3446 js_op = javascript()->Subtract(op_strength);
3446 break; 3447 break;
3447 case Token::MUL: 3448 case Token::MUL:
3448 js_op = javascript()->Multiply(language_mode()); 3449 js_op = javascript()->Multiply(op_strength);
3449 break; 3450 break;
3450 case Token::DIV: 3451 case Token::DIV:
3451 js_op = javascript()->Divide(language_mode()); 3452 js_op = javascript()->Divide(op_strength);
3452 break; 3453 break;
3453 case Token::MOD: 3454 case Token::MOD:
3454 js_op = javascript()->Modulus(language_mode()); 3455 js_op = javascript()->Modulus(op_strength);
3455 break; 3456 break;
3456 default: 3457 default:
3457 UNREACHABLE(); 3458 UNREACHABLE();
3458 js_op = NULL; 3459 js_op = NULL;
3459 } 3460 }
3460 return NewNode(js_op, left, right); 3461 return NewNode(js_op, left, right);
3461 } 3462 }
3462 3463
3463 3464
3464 bool AstGraphBuilder::CheckOsrEntry(IterationStatement* stmt) { 3465 bool AstGraphBuilder::CheckOsrEntry(IterationStatement* stmt) {
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
3791 // Phi does not exist yet, introduce one. 3792 // Phi does not exist yet, introduce one.
3792 value = NewPhi(inputs, value, control); 3793 value = NewPhi(inputs, value, control);
3793 value->ReplaceInput(inputs - 1, other); 3794 value->ReplaceInput(inputs - 1, other);
3794 } 3795 }
3795 return value; 3796 return value;
3796 } 3797 }
3797 3798
3798 } // namespace compiler 3799 } // namespace compiler
3799 } // namespace internal 3800 } // namespace internal
3800 } // namespace v8 3801 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698