| 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_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-types.h" | 8 #include "src/ast/ast-types.h" |
| 9 #include "src/ast/ast-value-factory.h" | 9 #include "src/ast/ast-value-factory.h" |
| 10 #include "src/ast/modules.h" | 10 #include "src/ast/modules.h" |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 class TypeFeedbackOracle; | 122 class TypeFeedbackOracle; |
| 123 | 123 |
| 124 #define DEF_FORWARD_DECLARATION(type) class type; | 124 #define DEF_FORWARD_DECLARATION(type) class type; |
| 125 AST_NODE_LIST(DEF_FORWARD_DECLARATION) | 125 AST_NODE_LIST(DEF_FORWARD_DECLARATION) |
| 126 #undef DEF_FORWARD_DECLARATION | 126 #undef DEF_FORWARD_DECLARATION |
| 127 | 127 |
| 128 | 128 |
| 129 class FeedbackVectorSlotCache { | 129 class FeedbackVectorSlotCache { |
| 130 public: | 130 public: |
| 131 explicit FeedbackVectorSlotCache(Zone* zone) | 131 explicit FeedbackVectorSlotCache(Zone* zone) |
| 132 : hash_map_(base::HashMap::PointersMatch, | 132 : zone_(zone), |
| 133 hash_map_(base::HashMap::PointersMatch, |
| 133 ZoneHashMap::kDefaultHashMapCapacity, | 134 ZoneHashMap::kDefaultHashMapCapacity, |
| 134 ZoneAllocationPolicy(zone)) {} | 135 ZoneAllocationPolicy(zone)) {} |
| 135 | 136 |
| 136 void Put(Variable* variable, FeedbackVectorSlot slot) { | 137 void Put(Variable* variable, FeedbackVectorSlot slot) { |
| 137 ZoneHashMap::Entry* entry = | 138 ZoneHashMap::Entry* entry = hash_map_.LookupOrInsert( |
| 138 hash_map_.LookupOrInsert(variable, ComputePointerHash(variable)); | 139 variable, ComputePointerHash(variable), ZoneAllocationPolicy(zone_)); |
| 139 entry->value = reinterpret_cast<void*>(slot.ToInt()); | 140 entry->value = reinterpret_cast<void*>(slot.ToInt()); |
| 140 } | 141 } |
| 141 | 142 |
| 142 ZoneHashMap::Entry* Get(Variable* variable) const { | 143 ZoneHashMap::Entry* Get(Variable* variable) const { |
| 143 return hash_map_.Lookup(variable, ComputePointerHash(variable)); | 144 return hash_map_.Lookup(variable, ComputePointerHash(variable)); |
| 144 } | 145 } |
| 145 | 146 |
| 146 private: | 147 private: |
| 148 Zone* zone_; |
| 147 ZoneHashMap hash_map_; | 149 ZoneHashMap hash_map_; |
| 148 }; | 150 }; |
| 149 | 151 |
| 150 | 152 |
| 151 class AstProperties final BASE_EMBEDDED { | 153 class AstProperties final BASE_EMBEDDED { |
| 152 public: | 154 public: |
| 153 enum Flag { | 155 enum Flag { |
| 154 kNoFlags = 0, | 156 kNoFlags = 0, |
| 155 kDontSelfOptimize = 1 << 0, | 157 kDontSelfOptimize = 1 << 0, |
| 156 kDontCrankshaft = 1 << 1 | 158 kDontCrankshaft = 1 << 1 |
| (...skipping 1359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1516 : public base::TemplateHashMap<Literal, ObjectLiteral::Accessors, | 1518 : public base::TemplateHashMap<Literal, ObjectLiteral::Accessors, |
| 1517 ZoneAllocationPolicy> { | 1519 ZoneAllocationPolicy> { |
| 1518 public: | 1520 public: |
| 1519 explicit AccessorTable(Zone* zone) | 1521 explicit AccessorTable(Zone* zone) |
| 1520 : base::TemplateHashMap<Literal, ObjectLiteral::Accessors, | 1522 : base::TemplateHashMap<Literal, ObjectLiteral::Accessors, |
| 1521 ZoneAllocationPolicy>(Literal::Match, | 1523 ZoneAllocationPolicy>(Literal::Match, |
| 1522 ZoneAllocationPolicy(zone)), | 1524 ZoneAllocationPolicy(zone)), |
| 1523 zone_(zone) {} | 1525 zone_(zone) {} |
| 1524 | 1526 |
| 1525 Iterator lookup(Literal* literal) { | 1527 Iterator lookup(Literal* literal) { |
| 1526 Iterator it = find(literal, true); | 1528 Iterator it = find(literal, true, ZoneAllocationPolicy(zone_)); |
| 1527 if (it->second == NULL) it->second = new (zone_) ObjectLiteral::Accessors(); | 1529 if (it->second == NULL) it->second = new (zone_) ObjectLiteral::Accessors(); |
| 1528 return it; | 1530 return it; |
| 1529 } | 1531 } |
| 1530 | 1532 |
| 1531 private: | 1533 private: |
| 1532 Zone* zone_; | 1534 Zone* zone_; |
| 1533 }; | 1535 }; |
| 1534 | 1536 |
| 1535 | 1537 |
| 1536 // Node for capturing a regexp literal. | 1538 // Node for capturing a regexp literal. |
| (...skipping 2070 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3607 : NULL; \ | 3609 : NULL; \ |
| 3608 } | 3610 } |
| 3609 AST_NODE_LIST(DECLARE_NODE_FUNCTIONS) | 3611 AST_NODE_LIST(DECLARE_NODE_FUNCTIONS) |
| 3610 #undef DECLARE_NODE_FUNCTIONS | 3612 #undef DECLARE_NODE_FUNCTIONS |
| 3611 | 3613 |
| 3612 | 3614 |
| 3613 } // namespace internal | 3615 } // namespace internal |
| 3614 } // namespace v8 | 3616 } // namespace v8 |
| 3615 | 3617 |
| 3616 #endif // V8_AST_AST_H_ | 3618 #endif // V8_AST_AST_H_ |
| OLD | NEW |