| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |