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

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

Issue 2242583003: [Parser] Remove Variable::is_possibly_eval. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@toon_cl
Patch Set: Address comment Created 4 years, 4 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/ast/variables.h » ('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 870 matching lines...) Expand 10 before | Expand all | Expand 10 after
881 return static_cast<const Node*>(this)->IsMonomorphic(); 881 return static_cast<const Node*>(this)->IsMonomorphic();
882 PROPERTY_NODE_LIST(GENERATE_CASE) 882 PROPERTY_NODE_LIST(GENERATE_CASE)
883 CALL_NODE_LIST(GENERATE_CASE) 883 CALL_NODE_LIST(GENERATE_CASE)
884 #undef GENERATE_CASE 884 #undef GENERATE_CASE
885 default: 885 default:
886 UNREACHABLE(); 886 UNREACHABLE();
887 return false; 887 return false;
888 } 888 }
889 } 889 }
890 890
891 bool Call::IsUsingCallFeedbackICSlot( 891 bool Call::IsUsingCallFeedbackICSlot() const {
892 Isolate* isolate, HandleDereferenceMode dereference_mode) const { 892 return GetCallType() != POSSIBLY_EVAL_CALL;
893 CallType call_type = GetCallType(isolate, dereference_mode);
894 if (call_type == POSSIBLY_EVAL_CALL) {
895 return false;
896 }
897 return true;
898 } 893 }
899 894
900 bool Call::IsUsingCallFeedbackSlot( 895 bool Call::IsUsingCallFeedbackSlot() const {
901 Isolate* isolate, HandleDereferenceMode dereference_mode) const {
902 // SuperConstructorCall uses a CallConstructStub, which wants 896 // SuperConstructorCall uses a CallConstructStub, which wants
903 // a Slot, in addition to any IC slots requested elsewhere. 897 // a Slot, in addition to any IC slots requested elsewhere.
904 return GetCallType(isolate, dereference_mode) == SUPER_CALL; 898 return GetCallType() == SUPER_CALL;
905 } 899 }
906 900
907 901
908 void Call::AssignFeedbackVectorSlots(Isolate* isolate, FeedbackVectorSpec* spec, 902 void Call::AssignFeedbackVectorSlots(Isolate* isolate, FeedbackVectorSpec* spec,
909 FeedbackVectorSlotCache* cache) { 903 FeedbackVectorSlotCache* cache) {
910 if (IsUsingCallFeedbackICSlot(isolate)) { 904 if (IsUsingCallFeedbackICSlot()) {
911 ic_slot_ = spec->AddCallICSlot(); 905 ic_slot_ = spec->AddCallICSlot();
912 } 906 }
913 if (IsUsingCallFeedbackSlot(isolate)) { 907 if (IsUsingCallFeedbackSlot()) {
914 stub_slot_ = spec->AddGeneralSlot(); 908 stub_slot_ = spec->AddGeneralSlot();
915 } 909 }
916 } 910 }
917 911
918 Call::CallType Call::GetCallType(Isolate* isolate, 912 Call::CallType Call::GetCallType() const {
919 HandleDereferenceMode deref_mode) const {
920 VariableProxy* proxy = expression()->AsVariableProxy(); 913 VariableProxy* proxy = expression()->AsVariableProxy();
921 if (proxy != NULL) { 914 if (proxy != NULL) {
922 if (proxy->var()->is_possibly_eval(isolate, deref_mode)) { 915 if (is_possibly_eval()) {
923 return POSSIBLY_EVAL_CALL; 916 return POSSIBLY_EVAL_CALL;
924 } else if (proxy->var()->IsUnallocatedOrGlobalSlot()) { 917 } else if (proxy->var()->IsUnallocatedOrGlobalSlot()) {
925 return GLOBAL_CALL; 918 return GLOBAL_CALL;
926 } else if (proxy->var()->IsLookupSlot()) { 919 } else if (proxy->var()->IsLookupSlot()) {
927 return LOOKUP_SLOT_CALL; 920 return LOOKUP_SLOT_CALL;
928 } 921 }
929 } 922 }
930 923
931 if (expression()->IsSuperCallReference()) return SUPER_CALL; 924 if (expression()->IsSuperCallReference()) return SUPER_CALL;
932 925
(...skipping 28 matching lines...) Expand all
961 // static 954 // static
962 bool Literal::Match(void* literal1, void* literal2) { 955 bool Literal::Match(void* literal1, void* literal2) {
963 const AstValue* x = static_cast<Literal*>(literal1)->raw_value(); 956 const AstValue* x = static_cast<Literal*>(literal1)->raw_value();
964 const AstValue* y = static_cast<Literal*>(literal2)->raw_value(); 957 const AstValue* y = static_cast<Literal*>(literal2)->raw_value();
965 return (x->IsString() && y->IsString() && x->AsString() == y->AsString()) || 958 return (x->IsString() && y->IsString() && x->AsString() == y->AsString()) ||
966 (x->IsNumber() && y->IsNumber() && x->AsNumber() == y->AsNumber()); 959 (x->IsNumber() && y->IsNumber() && x->AsNumber() == y->AsNumber());
967 } 960 }
968 961
969 } // namespace internal 962 } // namespace internal
970 } // namespace v8 963 } // namespace v8
OLDNEW
« no previous file with comments | « src/ast/ast.h ('k') | src/ast/variables.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698