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

Side by Side Diff: src/ast/ast.cc

Issue 1814823005: Remove obsolete isolate from CompareOperation predicate. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 9 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
« no previous file with comments | « src/ast/ast.h ('k') | src/compiler/ast-graph-builder.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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/ast/ast.h" 5 #include "src/ast/ast.h"
6 6
7 #include <cmath> // For isfinite. 7 #include <cmath> // For isfinite.
8 8
9 #include "src/ast/prettyprinter.h" 9 #include "src/ast/prettyprinter.h"
10 #include "src/ast/scopes.h" 10 #include "src/ast/scopes.h"
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 55
56 bool Expression::IsStringLiteral() const { 56 bool Expression::IsStringLiteral() const {
57 return IsLiteral() && AsLiteral()->value()->IsString(); 57 return IsLiteral() && AsLiteral()->value()->IsString();
58 } 58 }
59 59
60 60
61 bool Expression::IsNullLiteral() const { 61 bool Expression::IsNullLiteral() const {
62 return IsLiteral() && AsLiteral()->value()->IsNull(); 62 return IsLiteral() && AsLiteral()->value()->IsNull();
63 } 63 }
64 64
65 65 bool Expression::IsUndefinedLiteral() const {
66 bool Expression::IsUndefinedLiteral(Isolate* isolate) const {
67 if (IsLiteral() && AsLiteral()->value()->IsUndefined()) { 66 if (IsLiteral() && AsLiteral()->value()->IsUndefined()) {
68 return true; 67 return true;
69 } 68 }
70 69
71 const VariableProxy* var_proxy = AsVariableProxy(); 70 const VariableProxy* var_proxy = AsVariableProxy();
72 if (var_proxy == NULL) return false; 71 if (var_proxy == NULL) return false;
73 Variable* var = var_proxy->var(); 72 Variable* var = var_proxy->var();
74 // The global identifier "undefined" is immutable. Everything 73 // The global identifier "undefined" is immutable. Everything
75 // else could be reassigned. 74 // else could be reassigned.
76 return var != NULL && var->IsUnallocatedOrGlobalSlot() && 75 return var != NULL && var->IsUnallocatedOrGlobalSlot() &&
(...skipping 585 matching lines...) Expand 10 before | Expand all | Expand 10 after
662 maybe_unary->op() == Token::VOID && 661 maybe_unary->op() == Token::VOID &&
663 maybe_unary->expression()->IsLiteral(); 662 maybe_unary->expression()->IsLiteral();
664 } 663 }
665 664
666 665
667 // Check for the pattern: void <literal> equals <expression> or 666 // Check for the pattern: void <literal> equals <expression> or
668 // undefined equals <expression> 667 // undefined equals <expression>
669 static bool MatchLiteralCompareUndefined(Expression* left, 668 static bool MatchLiteralCompareUndefined(Expression* left,
670 Token::Value op, 669 Token::Value op,
671 Expression* right, 670 Expression* right,
672 Expression** expr, 671 Expression** expr) {
673 Isolate* isolate) {
674 if (IsVoidOfLiteral(left) && Token::IsEqualityOp(op)) { 672 if (IsVoidOfLiteral(left) && Token::IsEqualityOp(op)) {
675 *expr = right; 673 *expr = right;
676 return true; 674 return true;
677 } 675 }
678 if (left->IsUndefinedLiteral(isolate) && Token::IsEqualityOp(op)) { 676 if (left->IsUndefinedLiteral() && Token::IsEqualityOp(op)) {
679 *expr = right; 677 *expr = right;
680 return true; 678 return true;
681 } 679 }
682 return false; 680 return false;
683 } 681 }
684 682
685 683 bool CompareOperation::IsLiteralCompareUndefined(Expression** expr) {
686 bool CompareOperation::IsLiteralCompareUndefined( 684 return MatchLiteralCompareUndefined(left_, op_, right_, expr) ||
687 Expression** expr, Isolate* isolate) { 685 MatchLiteralCompareUndefined(right_, op_, left_, expr);
688 return MatchLiteralCompareUndefined(left_, op_, right_, expr, isolate) ||
689 MatchLiteralCompareUndefined(right_, op_, left_, expr, isolate);
690 } 686 }
691 687
692 688
693 // Check for the pattern: null equals <expression> 689 // Check for the pattern: null equals <expression>
694 static bool MatchLiteralCompareNull(Expression* left, 690 static bool MatchLiteralCompareNull(Expression* left,
695 Token::Value op, 691 Token::Value op,
696 Expression* right, 692 Expression* right,
697 Expression** expr) { 693 Expression** expr) {
698 if (left->IsNullLiteral() && Token::IsEqualityOp(op)) { 694 if (left->IsNullLiteral() && Token::IsEqualityOp(op)) {
699 *expr = right; 695 *expr = right;
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
835 bool Literal::Match(void* literal1, void* literal2) { 831 bool Literal::Match(void* literal1, void* literal2) {
836 const AstValue* x = static_cast<Literal*>(literal1)->raw_value(); 832 const AstValue* x = static_cast<Literal*>(literal1)->raw_value();
837 const AstValue* y = static_cast<Literal*>(literal2)->raw_value(); 833 const AstValue* y = static_cast<Literal*>(literal2)->raw_value();
838 return (x->IsString() && y->IsString() && x->AsString() == y->AsString()) || 834 return (x->IsString() && y->IsString() && x->AsString() == y->AsString()) ||
839 (x->IsNumber() && y->IsNumber() && x->AsNumber() == y->AsNumber()); 835 (x->IsNumber() && y->IsNumber() && x->AsNumber() == y->AsNumber());
840 } 836 }
841 837
842 838
843 } // namespace internal 839 } // namespace internal
844 } // namespace v8 840 } // namespace v8
OLDNEW
« no previous file with comments | « src/ast/ast.h ('k') | src/compiler/ast-graph-builder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698