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

Side by Side Diff: runtime/vm/zone.h

Issue 269023005: - Ensure that BaseIsolate is only used to break the header include cycles. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
« runtime/vm/allocation.h ('K') | « runtime/vm/timer.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #ifndef VM_ZONE_H_ 5 #ifndef VM_ZONE_H_
6 #define VM_ZONE_H_ 6 #define VM_ZONE_H_
7 7
8 #include "platform/utils.h" 8 #include "platform/utils.h"
9 #include "vm/allocation.h" 9 #include "vm/allocation.h"
10 #include "vm/handles.h" 10 #include "vm/handles.h"
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 friend class StackZone; 150 friend class StackZone;
151 friend class ApiZone; 151 friend class ApiZone;
152 template<typename T, typename B> friend class BaseGrowableArray; 152 template<typename T, typename B> friend class BaseGrowableArray;
153 DISALLOW_COPY_AND_ASSIGN(Zone); 153 DISALLOW_COPY_AND_ASSIGN(Zone);
154 }; 154 };
155 155
156 156
157 class StackZone : public StackResource { 157 class StackZone : public StackResource {
158 public: 158 public:
159 // Create an empty zone and set is at the current zone for the Isolate. 159 // Create an empty zone and set is at the current zone for the Isolate.
160 explicit StackZone(BaseIsolate* isolate) 160 explicit StackZone(Isolate* isolate)
161 : StackResource(isolate), 161 : StackResource(isolate),
162 zone_() { 162 zone_() {
163 #ifdef DEBUG 163 #ifdef DEBUG
164 if (FLAG_trace_zones) { 164 if (FLAG_trace_zones) {
165 OS::PrintErr("*** Starting a new Stack zone 0x%" Px "(0x%" Px ")\n", 165 OS::PrintErr("*** Starting a new Stack zone 0x%" Px "(0x%" Px ")\n",
166 reinterpret_cast<intptr_t>(this), 166 reinterpret_cast<intptr_t>(this),
167 reinterpret_cast<intptr_t>(&zone_)); 167 reinterpret_cast<intptr_t>(&zone_));
168 } 168 }
169 #endif 169 #endif
170 zone_.Link(isolate->current_zone()); 170 BaseIsolate* base_isolate = reinterpret_cast<BaseIsolate*>(isolate);
171 isolate->set_current_zone(&zone_); 171 zone_.Link(base_isolate->current_zone());
172 base_isolate->set_current_zone(&zone_);
172 } 173 }
173 174
174 // Delete all memory associated with the zone. 175 // Delete all memory associated with the zone.
175 ~StackZone() { 176 ~StackZone() {
176 ASSERT(isolate()->current_zone() == &zone_); 177 BaseIsolate* base_isolate = reinterpret_cast<BaseIsolate*>(isolate());
177 isolate()->set_current_zone(zone_.previous_); 178 ASSERT(base_isolate->current_zone() == &zone_);
179 base_isolate->set_current_zone(zone_.previous_);
178 #ifdef DEBUG 180 #ifdef DEBUG
179 if (FLAG_trace_zones) { 181 if (FLAG_trace_zones) {
180 OS::PrintErr("*** Deleting Stack zone 0x%" Px "(0x%" Px ")\n", 182 OS::PrintErr("*** Deleting Stack zone 0x%" Px "(0x%" Px ")\n",
181 reinterpret_cast<intptr_t>(this), 183 reinterpret_cast<intptr_t>(this),
182 reinterpret_cast<intptr_t>(&zone_)); 184 reinterpret_cast<intptr_t>(&zone_));
183 } 185 }
184 #endif 186 #endif
185 } 187 }
186 188
187 // Compute the total size of this zone. This includes wasted space that is 189 // Compute the total size of this zone. This includes wasted space that is
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 reinterpret_cast<void*>(old_data), 245 reinterpret_cast<void*>(old_data),
244 Utils::Minimum(old_len * sizeof(ElementType), 246 Utils::Minimum(old_len * sizeof(ElementType),
245 new_len * sizeof(ElementType))); 247 new_len * sizeof(ElementType)));
246 } 248 }
247 return new_data; 249 return new_data;
248 } 250 }
249 251
250 } // namespace dart 252 } // namespace dart
251 253
252 #endif // VM_ZONE_H_ 254 #endif // VM_ZONE_H_
OLDNEW
« runtime/vm/allocation.h ('K') | « runtime/vm/timer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698