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

Side by Side Diff: runtime/vm/scavenger.cc

Issue 1394673002: Move reusable handles from isolate to thread. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Fix release build Created 5 years, 2 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 | « runtime/vm/reusable_handles.h ('k') | runtime/vm/service.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 (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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 #include "vm/scavenger.h" 5 #include "vm/scavenger.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <map> 8 #include <map>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 251
252 DISALLOW_COPY_AND_ASSIGN(ScavengerVisitor); 252 DISALLOW_COPY_AND_ASSIGN(ScavengerVisitor);
253 }; 253 };
254 254
255 255
256 class ScavengerWeakVisitor : public HandleVisitor { 256 class ScavengerWeakVisitor : public HandleVisitor {
257 public: 257 public:
258 // 'prologue_weak_were_strong' is currently only used for sanity checking. 258 // 'prologue_weak_were_strong' is currently only used for sanity checking.
259 explicit ScavengerWeakVisitor(Scavenger* scavenger, 259 explicit ScavengerWeakVisitor(Scavenger* scavenger,
260 bool prologue_weak_were_strong) 260 bool prologue_weak_were_strong)
261 : HandleVisitor(scavenger->heap_->isolate()), 261 : HandleVisitor(Thread::Current()),
262 scavenger_(scavenger), 262 scavenger_(scavenger),
263 prologue_weak_were_strong_(prologue_weak_were_strong) { 263 prologue_weak_were_strong_(prologue_weak_were_strong) {
264 ASSERT(scavenger->heap_->isolate() == Thread::Current()->isolate());
264 } 265 }
265 266
266 void VisitHandle(uword addr) { 267 void VisitHandle(uword addr) {
267 FinalizablePersistentHandle* handle = 268 FinalizablePersistentHandle* handle =
268 reinterpret_cast<FinalizablePersistentHandle*>(addr); 269 reinterpret_cast<FinalizablePersistentHandle*>(addr);
269 RawObject** p = handle->raw_addr(); 270 RawObject** p = handle->raw_addr();
270 if (scavenger_->IsUnreachable(p)) { 271 if (scavenger_->IsUnreachable(p)) {
271 ASSERT(!handle->IsPrologueWeakPersistent() || 272 ASSERT(!handle->IsPrologueWeakPersistent() ||
272 !prologue_weak_were_strong_); 273 !prologue_weak_were_strong_);
273 handle->UpdateUnreachable(isolate()); 274 handle->UpdateUnreachable(thread()->isolate());
274 } else { 275 } else {
275 handle->UpdateRelocated(isolate()); 276 handle->UpdateRelocated(thread()->isolate());
276 } 277 }
277 } 278 }
278 279
279 private: 280 private:
280 Scavenger* scavenger_; 281 Scavenger* scavenger_;
281 bool prologue_weak_were_strong_; 282 bool prologue_weak_were_strong_;
282 283
283 DISALLOW_COPY_AND_ASSIGN(ScavengerWeakVisitor); 284 DISALLOW_COPY_AND_ASSIGN(ScavengerWeakVisitor);
284 }; 285 };
285 286
(...skipping 665 matching lines...) Expand 10 before | Expand all | Expand 10 after
951 } 952 }
952 953
953 954
954 void Scavenger::FreeExternal(intptr_t size) { 955 void Scavenger::FreeExternal(intptr_t size) {
955 ASSERT(size >= 0); 956 ASSERT(size >= 0);
956 external_size_ -= size; 957 external_size_ -= size;
957 ASSERT(external_size_ >= 0); 958 ASSERT(external_size_ >= 0);
958 } 959 }
959 960
960 } // namespace dart 961 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/reusable_handles.h ('k') | runtime/vm/service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698