| 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 #include "src/ast/scopes.h" | 5 #include "src/ast/scopes.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "src/accessors.h" | 9 #include "src/accessors.h" |
| 10 #include "src/bootstrapper.h" | 10 #include "src/bootstrapper.h" |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 SloppyBlockFunctionMap::SloppyBlockFunctionMap(Zone* zone) | 60 SloppyBlockFunctionMap::SloppyBlockFunctionMap(Zone* zone) |
| 61 : ZoneHashMap(ZoneHashMap::PointersMatch, 8, ZoneAllocationPolicy(zone)) {} | 61 : ZoneHashMap(ZoneHashMap::PointersMatch, 8, ZoneAllocationPolicy(zone)) {} |
| 62 | 62 |
| 63 void SloppyBlockFunctionMap::Declare(Zone* zone, const AstRawString* name, | 63 void SloppyBlockFunctionMap::Declare(Zone* zone, const AstRawString* name, |
| 64 SloppyBlockFunctionStatement* stmt) { | 64 SloppyBlockFunctionStatement* stmt) { |
| 65 // AstRawStrings are unambiguous, i.e., the same string is always represented | 65 // AstRawStrings are unambiguous, i.e., the same string is always represented |
| 66 // by the same AstRawString*. | 66 // by the same AstRawString*. |
| 67 Entry* p = | 67 Entry* p = |
| 68 ZoneHashMap::LookupOrInsert(const_cast<AstRawString*>(name), name->hash(), | 68 ZoneHashMap::LookupOrInsert(const_cast<AstRawString*>(name), name->hash(), |
| 69 ZoneAllocationPolicy(zone)); | 69 ZoneAllocationPolicy(zone)); |
| 70 if (p->value == nullptr) { | 70 stmt->set_next(static_cast<SloppyBlockFunctionStatement*>(p->value)); |
| 71 p->value = new (zone->New(sizeof(Vector))) Vector(zone); | 71 p->value = stmt; |
| 72 } | |
| 73 Vector* delegates = static_cast<Vector*>(p->value); | |
| 74 delegates->push_back(stmt); | |
| 75 } | 72 } |
| 76 | 73 |
| 77 | 74 |
| 78 // ---------------------------------------------------------------------------- | 75 // ---------------------------------------------------------------------------- |
| 79 // Implementation of Scope | 76 // Implementation of Scope |
| 80 | 77 |
| 81 Scope::Scope(Zone* zone, Scope* outer_scope, ScopeType scope_type) | 78 Scope::Scope(Zone* zone, Scope* outer_scope, ScopeType scope_type) |
| 82 : zone_(zone), | 79 : zone_(zone), |
| 83 outer_scope_(outer_scope), | 80 outer_scope_(outer_scope), |
| 84 variables_(zone), | 81 variables_(zone), |
| (...skipping 1697 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1782 function != NULL && function->proxy()->var()->IsContextSlot(); | 1779 function != NULL && function->proxy()->var()->IsContextSlot(); |
| 1783 return num_heap_slots() - Context::MIN_CONTEXT_SLOTS - num_global_slots() - | 1780 return num_heap_slots() - Context::MIN_CONTEXT_SLOTS - num_global_slots() - |
| 1784 (is_function_var_in_context ? 1 : 0); | 1781 (is_function_var_in_context ? 1 : 0); |
| 1785 } | 1782 } |
| 1786 | 1783 |
| 1787 | 1784 |
| 1788 int Scope::ContextGlobalCount() const { return num_global_slots(); } | 1785 int Scope::ContextGlobalCount() const { return num_global_slots(); } |
| 1789 | 1786 |
| 1790 } // namespace internal | 1787 } // namespace internal |
| 1791 } // namespace v8 | 1788 } // namespace v8 |
| OLD | NEW |