| OLD | NEW |
| 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 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 V(Throw) \ | 87 V(Throw) \ |
| 88 V(Property) \ | 88 V(Property) \ |
| 89 V(Call) \ | 89 V(Call) \ |
| 90 V(CallNew) \ | 90 V(CallNew) \ |
| 91 V(CallRuntime) \ | 91 V(CallRuntime) \ |
| 92 V(UnaryOperation) \ | 92 V(UnaryOperation) \ |
| 93 V(CountOperation) \ | 93 V(CountOperation) \ |
| 94 V(BinaryOperation) \ | 94 V(BinaryOperation) \ |
| 95 V(CompareOperation) \ | 95 V(CompareOperation) \ |
| 96 V(ThisFunction) \ | 96 V(ThisFunction) \ |
| 97 V(SuperReference) \ |
| 97 V(CaseClause) | 98 V(CaseClause) |
| 98 | 99 |
| 99 #define AST_NODE_LIST(V) \ | 100 #define AST_NODE_LIST(V) \ |
| 100 DECLARATION_NODE_LIST(V) \ | 101 DECLARATION_NODE_LIST(V) \ |
| 101 MODULE_NODE_LIST(V) \ | 102 MODULE_NODE_LIST(V) \ |
| 102 STATEMENT_NODE_LIST(V) \ | 103 STATEMENT_NODE_LIST(V) \ |
| 103 EXPRESSION_NODE_LIST(V) | 104 EXPRESSION_NODE_LIST(V) |
| 104 | 105 |
| 105 // Forward declarations | 106 // Forward declarations |
| 106 class AstConstructionVisitor; | 107 class AstConstructionVisitor; |
| (...skipping 1596 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1703 } | 1704 } |
| 1704 bool IsUninitialized() { return !is_for_call_ && is_uninitialized_; } | 1705 bool IsUninitialized() { return !is_for_call_ && is_uninitialized_; } |
| 1705 bool HasNoTypeInformation() { | 1706 bool HasNoTypeInformation() { |
| 1706 return is_uninitialized_; | 1707 return is_uninitialized_; |
| 1707 } | 1708 } |
| 1708 void set_is_uninitialized(bool b) { is_uninitialized_ = b; } | 1709 void set_is_uninitialized(bool b) { is_uninitialized_ = b; } |
| 1709 void set_is_string_access(bool b) { is_string_access_ = b; } | 1710 void set_is_string_access(bool b) { is_string_access_ = b; } |
| 1710 void mark_for_call() { is_for_call_ = true; } | 1711 void mark_for_call() { is_for_call_ = true; } |
| 1711 bool IsForCall() { return is_for_call_; } | 1712 bool IsForCall() { return is_for_call_; } |
| 1712 | 1713 |
| 1714 bool IsSuperAccess() { |
| 1715 return obj()->IsSuperReference(); |
| 1716 } |
| 1717 |
| 1713 TypeFeedbackId PropertyFeedbackId() { return reuse(id()); } | 1718 TypeFeedbackId PropertyFeedbackId() { return reuse(id()); } |
| 1714 | 1719 |
| 1715 virtual int ComputeFeedbackSlotCount() { return FLAG_vector_ics ? 1 : 0; } | 1720 virtual int ComputeFeedbackSlotCount() { return FLAG_vector_ics ? 1 : 0; } |
| 1716 virtual void SetFirstFeedbackSlot(int slot) { | 1721 virtual void SetFirstFeedbackSlot(int slot) { |
| 1717 property_feedback_slot_ = slot; | 1722 property_feedback_slot_ = slot; |
| 1718 } | 1723 } |
| 1719 | 1724 |
| 1720 int PropertyFeedbackSlot() const { return property_feedback_slot_; } | 1725 int PropertyFeedbackSlot() const { return property_feedback_slot_; } |
| 1721 | 1726 |
| 1722 protected: | 1727 protected: |
| (...skipping 824 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2547 | 2552 |
| 2548 | 2553 |
| 2549 class ThisFunction V8_FINAL : public Expression { | 2554 class ThisFunction V8_FINAL : public Expression { |
| 2550 public: | 2555 public: |
| 2551 DECLARE_NODE_TYPE(ThisFunction) | 2556 DECLARE_NODE_TYPE(ThisFunction) |
| 2552 | 2557 |
| 2553 protected: | 2558 protected: |
| 2554 explicit ThisFunction(Zone* zone, int pos): Expression(zone, pos) {} | 2559 explicit ThisFunction(Zone* zone, int pos): Expression(zone, pos) {} |
| 2555 }; | 2560 }; |
| 2556 | 2561 |
| 2562 |
| 2563 class SuperReference V8_FINAL : public Expression { |
| 2564 public: |
| 2565 DECLARE_NODE_TYPE(SuperReference) |
| 2566 |
| 2567 VariableProxy* this_var() const { return this_var_; } |
| 2568 |
| 2569 TypeFeedbackId HomeObjectFeedbackId() { return reuse(id()); } |
| 2570 |
| 2571 protected: |
| 2572 explicit SuperReference(Zone* zone, VariableProxy* this_var, int pos) |
| 2573 : Expression(zone, pos), this_var_(this_var) { |
| 2574 DCHECK(this_var->is_this()); |
| 2575 } |
| 2576 |
| 2577 VariableProxy* this_var_; |
| 2578 }; |
| 2579 |
| 2580 |
| 2557 #undef DECLARE_NODE_TYPE | 2581 #undef DECLARE_NODE_TYPE |
| 2558 | 2582 |
| 2559 | 2583 |
| 2560 // ---------------------------------------------------------------------------- | 2584 // ---------------------------------------------------------------------------- |
| 2561 // Regular expressions | 2585 // Regular expressions |
| 2562 | 2586 |
| 2563 | 2587 |
| 2564 class RegExpVisitor BASE_EMBEDDED { | 2588 class RegExpVisitor BASE_EMBEDDED { |
| 2565 public: | 2589 public: |
| 2566 virtual ~RegExpVisitor() { } | 2590 virtual ~RegExpVisitor() { } |
| (...skipping 898 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3465 NativeFunctionLiteral* lit = | 3489 NativeFunctionLiteral* lit = |
| 3466 new(zone_) NativeFunctionLiteral(zone_, name, extension, pos); | 3490 new(zone_) NativeFunctionLiteral(zone_, name, extension, pos); |
| 3467 VISIT_AND_RETURN(NativeFunctionLiteral, lit) | 3491 VISIT_AND_RETURN(NativeFunctionLiteral, lit) |
| 3468 } | 3492 } |
| 3469 | 3493 |
| 3470 ThisFunction* NewThisFunction(int pos) { | 3494 ThisFunction* NewThisFunction(int pos) { |
| 3471 ThisFunction* fun = new(zone_) ThisFunction(zone_, pos); | 3495 ThisFunction* fun = new(zone_) ThisFunction(zone_, pos); |
| 3472 VISIT_AND_RETURN(ThisFunction, fun) | 3496 VISIT_AND_RETURN(ThisFunction, fun) |
| 3473 } | 3497 } |
| 3474 | 3498 |
| 3499 SuperReference* NewSuperReference(VariableProxy* this_var, int pos) { |
| 3500 SuperReference* super = new (zone_) SuperReference(zone_, this_var, pos); |
| 3501 VISIT_AND_RETURN(SuperReference, super); |
| 3502 } |
| 3503 |
| 3475 #undef VISIT_AND_RETURN | 3504 #undef VISIT_AND_RETURN |
| 3476 | 3505 |
| 3477 private: | 3506 private: |
| 3478 Zone* zone_; | 3507 Zone* zone_; |
| 3479 Visitor visitor_; | 3508 Visitor visitor_; |
| 3480 AstValueFactory* ast_value_factory_; | 3509 AstValueFactory* ast_value_factory_; |
| 3481 }; | 3510 }; |
| 3482 | 3511 |
| 3483 | 3512 |
| 3484 } } // namespace v8::internal | 3513 } } // namespace v8::internal |
| 3485 | 3514 |
| 3486 #endif // V8_AST_H_ | 3515 #endif // V8_AST_H_ |
| OLD | NEW |