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

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

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/asmjs/asm-wasm-builder.cc ('k') | src/ast/ast.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 #ifndef V8_AST_AST_H_ 5 #ifndef V8_AST_AST_H_
6 #define V8_AST_AST_H_ 6 #define V8_AST_AST_H_
7 7
8 #include "src/ast/ast-value-factory.h" 8 #include "src/ast/ast-value-factory.h"
9 #include "src/ast/modules.h" 9 #include "src/ast/modules.h"
10 #include "src/ast/variables.h" 10 #include "src/ast/variables.h"
(...skipping 1720 matching lines...) Expand 10 before | Expand all | Expand 10 after
1731 ? FeedbackVectorSlotKind::LOAD_IC 1731 ? FeedbackVectorSlotKind::LOAD_IC
1732 : FeedbackVectorSlotKind::KEYED_LOAD_IC; 1732 : FeedbackVectorSlotKind::KEYED_LOAD_IC;
1733 property_feedback_slot_ = spec->AddSlot(kind); 1733 property_feedback_slot_ = spec->AddSlot(kind);
1734 } 1734 }
1735 1735
1736 FeedbackVectorSlot PropertyFeedbackSlot() const { 1736 FeedbackVectorSlot PropertyFeedbackSlot() const {
1737 return property_feedback_slot_; 1737 return property_feedback_slot_;
1738 } 1738 }
1739 1739
1740 // Returns the properties assign type. 1740 // Returns the properties assign type.
1741 static LhsKind GetAssignType( 1741 static LhsKind GetAssignType(Property* property) {
1742 Property* property,
1743 HandleDereferenceMode deref_mode = HandleDereferenceMode::kAllowed) {
1744 if (property == NULL) return VARIABLE; 1742 if (property == NULL) return VARIABLE;
1745 bool super_access = property->IsSuperAccess(); 1743 bool super_access = property->IsSuperAccess();
1746 return (property->key()->IsPropertyName()) 1744 return (property->key()->IsPropertyName())
1747 ? (super_access ? NAMED_SUPER_PROPERTY : NAMED_PROPERTY) 1745 ? (super_access ? NAMED_SUPER_PROPERTY : NAMED_PROPERTY)
1748 : (super_access ? KEYED_SUPER_PROPERTY : KEYED_PROPERTY); 1746 : (super_access ? KEYED_SUPER_PROPERTY : KEYED_PROPERTY);
1749 } 1747 }
1750 1748
1751 private: 1749 private:
1752 friend class AstNodeFactory; 1750 friend class AstNodeFactory;
1753 1751
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
1832 BailoutId LookupId() const { return BailoutId(local_id(2)); } 1830 BailoutId LookupId() const { return BailoutId(local_id(2)); }
1833 BailoutId CallId() const { return BailoutId(local_id(3)); } 1831 BailoutId CallId() const { return BailoutId(local_id(3)); }
1834 1832
1835 bool is_uninitialized() const { 1833 bool is_uninitialized() const {
1836 return IsUninitializedField::decode(bit_field_); 1834 return IsUninitializedField::decode(bit_field_);
1837 } 1835 }
1838 void set_is_uninitialized(bool b) { 1836 void set_is_uninitialized(bool b) {
1839 bit_field_ = IsUninitializedField::update(bit_field_, b); 1837 bit_field_ = IsUninitializedField::update(bit_field_, b);
1840 } 1838 }
1841 1839
1840 bool is_possibly_eval() const {
1841 return IsPossiblyEvalField::decode(bit_field_);
1842 }
1843
1842 TailCallMode tail_call_mode() const { 1844 TailCallMode tail_call_mode() const {
1843 return IsTailField::decode(bit_field_) ? TailCallMode::kAllow 1845 return IsTailField::decode(bit_field_) ? TailCallMode::kAllow
1844 : TailCallMode::kDisallow; 1846 : TailCallMode::kDisallow;
1845 } 1847 }
1846 void MarkTail() { bit_field_ = IsTailField::update(bit_field_, true); } 1848 void MarkTail() { bit_field_ = IsTailField::update(bit_field_, true); }
1847 1849
1848 enum CallType { 1850 enum CallType {
1849 POSSIBLY_EVAL_CALL, 1851 POSSIBLY_EVAL_CALL,
1850 GLOBAL_CALL, 1852 GLOBAL_CALL,
1851 LOOKUP_SLOT_CALL, 1853 LOOKUP_SLOT_CALL,
1852 NAMED_PROPERTY_CALL, 1854 NAMED_PROPERTY_CALL,
1853 KEYED_PROPERTY_CALL, 1855 KEYED_PROPERTY_CALL,
1854 NAMED_SUPER_PROPERTY_CALL, 1856 NAMED_SUPER_PROPERTY_CALL,
1855 KEYED_SUPER_PROPERTY_CALL, 1857 KEYED_SUPER_PROPERTY_CALL,
1856 SUPER_CALL, 1858 SUPER_CALL,
1857 OTHER_CALL 1859 OTHER_CALL
1858 }; 1860 };
1859 1861
1862 enum PossiblyEval {
1863 IS_POSSIBLY_EVAL,
1864 NOT_EVAL,
1865 };
1866
1860 // Helpers to determine how to handle the call. 1867 // Helpers to determine how to handle the call.
1861 // If called with |deref_mode| of kDisallowed, then the AST nodes must have 1868 CallType GetCallType() const;
1862 // been internalized within a CanonicalHandleScope. 1869 bool IsUsingCallFeedbackSlot() const;
1863 CallType GetCallType( 1870 bool IsUsingCallFeedbackICSlot() const;
1864 Isolate* isolate,
1865 HandleDereferenceMode deref_mode = HandleDereferenceMode::kAllowed) const;
1866 bool IsUsingCallFeedbackSlot(
1867 Isolate* isolate,
1868 HandleDereferenceMode deref_mode = HandleDereferenceMode::kAllowed) const;
1869 bool IsUsingCallFeedbackICSlot(
1870 Isolate* isolate,
1871 HandleDereferenceMode deref_mode = HandleDereferenceMode::kAllowed) const;
1872 1871
1873 #ifdef DEBUG 1872 #ifdef DEBUG
1874 // Used to assert that the FullCodeGenerator records the return site. 1873 // Used to assert that the FullCodeGenerator records the return site.
1875 bool return_is_recorded_; 1874 bool return_is_recorded_;
1876 #endif 1875 #endif
1877 1876
1878 private: 1877 private:
1879 friend class AstNodeFactory; 1878 friend class AstNodeFactory;
1880 1879
1881 Call(Zone* zone, Expression* expression, ZoneList<Expression*>* arguments, 1880 Call(Zone* zone, Expression* expression, ZoneList<Expression*>* arguments,
1882 int pos) 1881 int pos, PossiblyEval possibly_eval)
1883 : Expression(zone, pos, kCall), 1882 : Expression(zone, pos, kCall),
1884 bit_field_(IsUninitializedField::encode(false)), 1883 bit_field_(
1884 IsUninitializedField::encode(false) |
1885 IsPossiblyEvalField::encode(possibly_eval == IS_POSSIBLY_EVAL)),
1885 expression_(expression), 1886 expression_(expression),
1886 arguments_(arguments) { 1887 arguments_(arguments) {
1887 if (expression->IsProperty()) { 1888 if (expression->IsProperty()) {
1888 expression->AsProperty()->mark_for_call(); 1889 expression->AsProperty()->mark_for_call();
1889 } 1890 }
1890 } 1891 }
1891 1892
1892 static int parent_num_ids() { return Expression::num_ids(); } 1893 static int parent_num_ids() { return Expression::num_ids(); }
1893 int local_id(int n) const { return base_id() + parent_num_ids() + n; } 1894 int local_id(int n) const { return base_id() + parent_num_ids() + n; }
1894 1895
1895 class IsUninitializedField : public BitField8<bool, 0, 1> {}; 1896 class IsUninitializedField : public BitField8<bool, 0, 1> {};
1896 class IsTailField : public BitField8<bool, 1, 1> {}; 1897 class IsTailField : public BitField8<bool, 1, 1> {};
1898 class IsPossiblyEvalField : public BitField8<bool, 2, 1> {};
1897 1899
1898 uint8_t bit_field_; 1900 uint8_t bit_field_;
1899 FeedbackVectorSlot ic_slot_; 1901 FeedbackVectorSlot ic_slot_;
1900 FeedbackVectorSlot stub_slot_; 1902 FeedbackVectorSlot stub_slot_;
1901 Expression* expression_; 1903 Expression* expression_;
1902 ZoneList<Expression*>* arguments_; 1904 ZoneList<Expression*>* arguments_;
1903 Handle<JSFunction> target_; 1905 Handle<JSFunction> target_;
1904 Handle<AllocationSite> allocation_site_; 1906 Handle<AllocationSite> allocation_site_;
1905 }; 1907 };
1906 1908
(...skipping 1327 matching lines...) Expand 10 before | Expand all | Expand 10 after
3234 3236
3235 // Recreates the VariableProxy in this Zone. 3237 // Recreates the VariableProxy in this Zone.
3236 VariableProxy* CopyVariableProxy(VariableProxy* proxy) { 3238 VariableProxy* CopyVariableProxy(VariableProxy* proxy) {
3237 return new (zone_) VariableProxy(zone_, proxy); 3239 return new (zone_) VariableProxy(zone_, proxy);
3238 } 3240 }
3239 3241
3240 Property* NewProperty(Expression* obj, Expression* key, int pos) { 3242 Property* NewProperty(Expression* obj, Expression* key, int pos) {
3241 return new (zone_) Property(zone_, obj, key, pos); 3243 return new (zone_) Property(zone_, obj, key, pos);
3242 } 3244 }
3243 3245
3244 Call* NewCall(Expression* expression, 3246 Call* NewCall(Expression* expression, ZoneList<Expression*>* arguments,
3245 ZoneList<Expression*>* arguments, 3247 int pos, Call::PossiblyEval possibly_eval = Call::NOT_EVAL) {
3246 int pos) { 3248 return new (zone_) Call(zone_, expression, arguments, pos, possibly_eval);
3247 return new (zone_) Call(zone_, expression, arguments, pos);
3248 } 3249 }
3249 3250
3250 CallNew* NewCallNew(Expression* expression, 3251 CallNew* NewCallNew(Expression* expression,
3251 ZoneList<Expression*>* arguments, 3252 ZoneList<Expression*>* arguments,
3252 int pos) { 3253 int pos) {
3253 return new (zone_) CallNew(zone_, expression, arguments, pos); 3254 return new (zone_) CallNew(zone_, expression, arguments, pos);
3254 } 3255 }
3255 3256
3256 CallRuntime* NewCallRuntime(Runtime::FunctionId id, 3257 CallRuntime* NewCallRuntime(Runtime::FunctionId id,
3257 ZoneList<Expression*>* arguments, int pos) { 3258 ZoneList<Expression*>* arguments, int pos) {
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
3477 : NULL; \ 3478 : NULL; \
3478 } 3479 }
3479 AST_NODE_LIST(DECLARE_NODE_FUNCTIONS) 3480 AST_NODE_LIST(DECLARE_NODE_FUNCTIONS)
3480 #undef DECLARE_NODE_FUNCTIONS 3481 #undef DECLARE_NODE_FUNCTIONS
3481 3482
3482 3483
3483 } // namespace internal 3484 } // namespace internal
3484 } // namespace v8 3485 } // namespace v8
3485 3486
3486 #endif // V8_AST_AST_H_ 3487 #endif // V8_AST_AST_H_
OLDNEW
« no previous file with comments | « src/asmjs/asm-wasm-builder.cc ('k') | src/ast/ast.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698