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

Side by Side Diff: src/ast.h

Issue 1024703004: Cleanups needed for this-scoping in arrow functions (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Removed codegen bits and Scope::has_this_declaration() Created 5 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 | « no previous file | src/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_H_ 5 #ifndef V8_AST_H_
6 #define V8_AST_H_ 6 #define V8_AST_H_
7 7
8 #include "src/v8.h" 8 #include "src/v8.h"
9 9
10 #include "src/assembler.h" 10 #include "src/assembler.h"
(...skipping 1605 matching lines...) Expand 10 before | Expand all | Expand 10 after
1616 1616
1617 Handle<FixedArray> constant_elements_; 1617 Handle<FixedArray> constant_elements_;
1618 ZoneList<Expression*>* values_; 1618 ZoneList<Expression*>* values_;
1619 }; 1619 };
1620 1620
1621 1621
1622 class VariableProxy FINAL : public Expression { 1622 class VariableProxy FINAL : public Expression {
1623 public: 1623 public:
1624 DECLARE_NODE_TYPE(VariableProxy) 1624 DECLARE_NODE_TYPE(VariableProxy)
1625 1625
1626 bool IsValidReferenceExpression() const OVERRIDE { 1626 bool IsValidReferenceExpression() const OVERRIDE { return !is_this(); }
1627 return !is_resolved() || var()->IsValidReference();
1628 }
1629 1627
1630 bool IsArguments() const { return is_resolved() && var()->is_arguments(); } 1628 bool IsArguments() const { return is_resolved() && var()->is_arguments(); }
1631 1629
1632 Handle<String> name() const { return raw_name()->string(); } 1630 Handle<String> name() const { return raw_name()->string(); }
1633 const AstRawString* raw_name() const { 1631 const AstRawString* raw_name() const {
1634 return is_resolved() ? var_->raw_name() : raw_name_; 1632 return is_resolved() ? var_->raw_name() : raw_name_;
1635 } 1633 }
1636 1634
1637 Variable* var() const { 1635 Variable* var() const {
1638 DCHECK(is_resolved()); 1636 DCHECK(is_resolved());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1673 Code::Kind FeedbackICSlotKind(int index) OVERRIDE { return Code::LOAD_IC; } 1671 Code::Kind FeedbackICSlotKind(int index) OVERRIDE { return Code::LOAD_IC; }
1674 FeedbackVectorICSlot VariableFeedbackSlot() { 1672 FeedbackVectorICSlot VariableFeedbackSlot() {
1675 DCHECK(!UsesVariableFeedbackSlot() || !variable_feedback_slot_.IsInvalid()); 1673 DCHECK(!UsesVariableFeedbackSlot() || !variable_feedback_slot_.IsInvalid());
1676 return variable_feedback_slot_; 1674 return variable_feedback_slot_;
1677 } 1675 }
1678 1676
1679 protected: 1677 protected:
1680 VariableProxy(Zone* zone, Variable* var, int start_position, 1678 VariableProxy(Zone* zone, Variable* var, int start_position,
1681 int end_position); 1679 int end_position);
1682 1680
1683 VariableProxy(Zone* zone, const AstRawString* name, bool is_this, 1681 VariableProxy(Zone* zone, const AstRawString* name,
1684 int start_position, int end_position); 1682 Variable::Kind variable_kind, int start_position,
1683 int end_position);
1685 1684
1686 class IsThisField : public BitField8<bool, 0, 1> {}; 1685 class IsThisField : public BitField8<bool, 0, 1> {};
1687 class IsAssignedField : public BitField8<bool, 1, 1> {}; 1686 class IsAssignedField : public BitField8<bool, 1, 1> {};
1688 class IsResolvedField : public BitField8<bool, 2, 1> {}; 1687 class IsResolvedField : public BitField8<bool, 2, 1> {};
1689 1688
1690 // Start with 16-bit (or smaller) field, which should get packed together 1689 // Start with 16-bit (or smaller) field, which should get packed together
1691 // with Expression's trailing 16-bit field. 1690 // with Expression's trailing 16-bit field.
1692 uint8_t bit_field_; 1691 uint8_t bit_field_;
1693 FeedbackVectorICSlot variable_feedback_slot_; 1692 FeedbackVectorICSlot variable_feedback_slot_;
1694 union { 1693 union {
(...skipping 1693 matching lines...) Expand 10 before | Expand all | Expand 10 after
3388 int pos) { 3387 int pos) {
3389 return new (zone_) ArrayLiteral(zone_, values, literal_index, pos); 3388 return new (zone_) ArrayLiteral(zone_, values, literal_index, pos);
3390 } 3389 }
3391 3390
3392 VariableProxy* NewVariableProxy(Variable* var, 3391 VariableProxy* NewVariableProxy(Variable* var,
3393 int start_position = RelocInfo::kNoPosition, 3392 int start_position = RelocInfo::kNoPosition,
3394 int end_position = RelocInfo::kNoPosition) { 3393 int end_position = RelocInfo::kNoPosition) {
3395 return new (zone_) VariableProxy(zone_, var, start_position, end_position); 3394 return new (zone_) VariableProxy(zone_, var, start_position, end_position);
3396 } 3395 }
3397 3396
3398 VariableProxy* NewVariableProxy(const AstRawString* name, bool is_this, 3397 VariableProxy* NewVariableProxy(const AstRawString* name,
3398 Variable::Kind variable_kind,
3399 int start_position = RelocInfo::kNoPosition, 3399 int start_position = RelocInfo::kNoPosition,
3400 int end_position = RelocInfo::kNoPosition) { 3400 int end_position = RelocInfo::kNoPosition) {
3401 return new (zone_) 3401 return new (zone_)
3402 VariableProxy(zone_, name, is_this, start_position, end_position); 3402 VariableProxy(zone_, name, variable_kind, start_position, end_position);
3403 } 3403 }
3404 3404
3405 Property* NewProperty(Expression* obj, Expression* key, int pos) { 3405 Property* NewProperty(Expression* obj, Expression* key, int pos) {
3406 return new (zone_) Property(zone_, obj, key, pos); 3406 return new (zone_) Property(zone_, obj, key, pos);
3407 } 3407 }
3408 3408
3409 Call* NewCall(Expression* expression, 3409 Call* NewCall(Expression* expression,
3410 ZoneList<Expression*>* arguments, 3410 ZoneList<Expression*>* arguments,
3411 int pos) { 3411 int pos) {
3412 return new (zone_) Call(zone_, expression, arguments, pos); 3412 return new (zone_) Call(zone_, expression, arguments, pos);
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
3529 3529
3530 private: 3530 private:
3531 Zone* zone_; 3531 Zone* zone_;
3532 AstValueFactory* ast_value_factory_; 3532 AstValueFactory* ast_value_factory_;
3533 }; 3533 };
3534 3534
3535 3535
3536 } } // namespace v8::internal 3536 } } // namespace v8::internal
3537 3537
3538 #endif // V8_AST_H_ 3538 #endif // V8_AST_H_
OLDNEW
« no previous file with comments | « no previous file | src/ast.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698