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/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 2824 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2835 | 2835 |
2836 void AstGraphBuilder::VisitCompareOperation(CompareOperation* expr) { | 2836 void AstGraphBuilder::VisitCompareOperation(CompareOperation* expr) { |
2837 // Check for a few fast cases. The AST visiting behavior must be in sync | 2837 // Check for a few fast cases. The AST visiting behavior must be in sync |
2838 // with the full codegen: We don't push both left and right values onto | 2838 // with the full codegen: We don't push both left and right values onto |
2839 // the expression stack when one side is a special-case literal. | 2839 // the expression stack when one side is a special-case literal. |
2840 Expression* sub_expr = nullptr; | 2840 Expression* sub_expr = nullptr; |
2841 Handle<String> check; | 2841 Handle<String> check; |
2842 if (expr->IsLiteralCompareTypeof(&sub_expr, &check)) { | 2842 if (expr->IsLiteralCompareTypeof(&sub_expr, &check)) { |
2843 return VisitLiteralCompareTypeof(expr, sub_expr, check); | 2843 return VisitLiteralCompareTypeof(expr, sub_expr, check); |
2844 } | 2844 } |
2845 if (expr->IsLiteralCompareUndefined(&sub_expr, isolate())) { | 2845 if (expr->IsLiteralCompareUndefined(&sub_expr)) { |
2846 return VisitLiteralCompareNil(expr, sub_expr, | 2846 return VisitLiteralCompareNil(expr, sub_expr, |
2847 jsgraph()->UndefinedConstant()); | 2847 jsgraph()->UndefinedConstant()); |
2848 } | 2848 } |
2849 if (expr->IsLiteralCompareNull(&sub_expr)) { | 2849 if (expr->IsLiteralCompareNull(&sub_expr)) { |
2850 return VisitLiteralCompareNil(expr, sub_expr, jsgraph()->NullConstant()); | 2850 return VisitLiteralCompareNil(expr, sub_expr, jsgraph()->NullConstant()); |
2851 } | 2851 } |
2852 | 2852 |
2853 const Operator* op; | 2853 const Operator* op; |
2854 switch (expr->op()) { | 2854 switch (expr->op()) { |
2855 case Token::EQ: | 2855 case Token::EQ: |
(...skipping 1516 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4372 // Phi does not exist yet, introduce one. | 4372 // Phi does not exist yet, introduce one. |
4373 value = NewPhi(inputs, value, control); | 4373 value = NewPhi(inputs, value, control); |
4374 value->ReplaceInput(inputs - 1, other); | 4374 value->ReplaceInput(inputs - 1, other); |
4375 } | 4375 } |
4376 return value; | 4376 return value; |
4377 } | 4377 } |
4378 | 4378 |
4379 } // namespace compiler | 4379 } // namespace compiler |
4380 } // namespace internal | 4380 } // namespace internal |
4381 } // namespace v8 | 4381 } // namespace v8 |
OLD | NEW |