| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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/crankshaft/hydrogen.h" | 5 #include "src/crankshaft/hydrogen.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <sstream> | 8 #include <sstream> |
| 9 | 9 |
| 10 #include "src/allocation-site-scopes.h" | 10 #include "src/allocation-site-scopes.h" |
| (...skipping 10906 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10917 | 10917 |
| 10918 | 10918 |
| 10919 // Check for the form (%_ClassOf(foo) === 'BarClass'). | 10919 // Check for the form (%_ClassOf(foo) === 'BarClass'). |
| 10920 static bool IsClassOfTest(CompareOperation* expr) { | 10920 static bool IsClassOfTest(CompareOperation* expr) { |
| 10921 if (expr->op() != Token::EQ_STRICT) return false; | 10921 if (expr->op() != Token::EQ_STRICT) return false; |
| 10922 CallRuntime* call = expr->left()->AsCallRuntime(); | 10922 CallRuntime* call = expr->left()->AsCallRuntime(); |
| 10923 if (call == NULL) return false; | 10923 if (call == NULL) return false; |
| 10924 Literal* literal = expr->right()->AsLiteral(); | 10924 Literal* literal = expr->right()->AsLiteral(); |
| 10925 if (literal == NULL) return false; | 10925 if (literal == NULL) return false; |
| 10926 if (!literal->value()->IsString()) return false; | 10926 if (!literal->value()->IsString()) return false; |
| 10927 if (call->is_jsruntime()) return false; | 10927 if (!call->is_jsruntime() && |
| 10928 if (call->function()->function_id != Runtime::kInlineClassOf) return false; | 10928 call->function()->function_id != Runtime::kInlineClassOf) { |
| 10929 DCHECK_EQ(call->arguments()->length(), 1); | 10929 return false; |
| 10930 } |
| 10931 DCHECK(call->arguments()->length() == 1); |
| 10930 return true; | 10932 return true; |
| 10931 } | 10933 } |
| 10932 | 10934 |
| 10935 |
| 10933 void HOptimizedGraphBuilder::VisitBinaryOperation(BinaryOperation* expr) { | 10936 void HOptimizedGraphBuilder::VisitBinaryOperation(BinaryOperation* expr) { |
| 10934 DCHECK(!HasStackOverflow()); | 10937 DCHECK(!HasStackOverflow()); |
| 10935 DCHECK(current_block() != NULL); | 10938 DCHECK(current_block() != NULL); |
| 10936 DCHECK(current_block()->HasPredecessor()); | 10939 DCHECK(current_block()->HasPredecessor()); |
| 10937 switch (expr->op()) { | 10940 switch (expr->op()) { |
| 10938 case Token::COMMA: | 10941 case Token::COMMA: |
| 10939 return VisitComma(expr); | 10942 return VisitComma(expr); |
| 10940 case Token::OR: | 10943 case Token::OR: |
| 10941 case Token::AND: | 10944 case Token::AND: |
| 10942 return VisitLogicalExpression(expr); | 10945 return VisitLogicalExpression(expr); |
| (...skipping 2033 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12976 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); | 12979 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); |
| 12977 } | 12980 } |
| 12978 | 12981 |
| 12979 #ifdef DEBUG | 12982 #ifdef DEBUG |
| 12980 graph_->Verify(false); // No full verify. | 12983 graph_->Verify(false); // No full verify. |
| 12981 #endif | 12984 #endif |
| 12982 } | 12985 } |
| 12983 | 12986 |
| 12984 } // namespace internal | 12987 } // namespace internal |
| 12985 } // namespace v8 | 12988 } // namespace v8 |
| OLD | NEW |