OLD | NEW |
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 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 : reserved_(reserved), region_(NULL, 0) { | 320 : reserved_(reserved), region_(NULL, 0) { |
321 if (reserved != NULL) { | 321 if (reserved != NULL) { |
322 region_ = MemoryRegion(reserved_->address(), reserved_->size()); | 322 region_ = MemoryRegion(reserved_->address(), reserved_->size()); |
323 } | 323 } |
324 } | 324 } |
325 | 325 |
326 | 326 |
327 SemiSpace::~SemiSpace() { | 327 SemiSpace::~SemiSpace() { |
328 if (reserved_ != NULL) { | 328 if (reserved_ != NULL) { |
329 #if defined(DEBUG) | 329 #if defined(DEBUG) |
330 memset(reserved_->address(), kZapValue, size_in_words() << kWordSizeLog2); | 330 memset(reserved_->address(), Heap::kZapByte, |
| 331 size_in_words() << kWordSizeLog2); |
331 #endif // defined(DEBUG) | 332 #endif // defined(DEBUG) |
332 delete reserved_; | 333 delete reserved_; |
333 } | 334 } |
334 } | 335 } |
335 | 336 |
336 | 337 |
337 Mutex* SemiSpace::mutex_ = NULL; | 338 Mutex* SemiSpace::mutex_ = NULL; |
338 SemiSpace* SemiSpace::cache_ = NULL; | 339 SemiSpace* SemiSpace::cache_ = NULL; |
339 | 340 |
340 | 341 |
(...skipping 18 matching lines...) Expand all Loading... |
359 return new SemiSpace(NULL); | 360 return new SemiSpace(NULL); |
360 } else { | 361 } else { |
361 intptr_t size_in_bytes = size_in_words << kWordSizeLog2; | 362 intptr_t size_in_bytes = size_in_words << kWordSizeLog2; |
362 VirtualMemory* reserved = VerifiedMemory::Reserve(size_in_bytes); | 363 VirtualMemory* reserved = VerifiedMemory::Reserve(size_in_bytes); |
363 if ((reserved == NULL) || !reserved->Commit(false)) { // Not executable. | 364 if ((reserved == NULL) || !reserved->Commit(false)) { // Not executable. |
364 // TODO(koda): If cache_ is not empty, we could try to delete it. | 365 // TODO(koda): If cache_ is not empty, we could try to delete it. |
365 delete reserved; | 366 delete reserved; |
366 return NULL; | 367 return NULL; |
367 } | 368 } |
368 #if defined(DEBUG) | 369 #if defined(DEBUG) |
369 memset(reserved->address(), kZapValue, size_in_bytes); | 370 memset(reserved->address(), Heap::kZapByte, size_in_bytes); |
370 VerifiedMemory::Accept(reserved->start(), size_in_bytes); | 371 VerifiedMemory::Accept(reserved->start(), size_in_bytes); |
371 #endif // defined(DEBUG) | 372 #endif // defined(DEBUG) |
372 return new SemiSpace(reserved); | 373 return new SemiSpace(reserved); |
373 } | 374 } |
374 } | 375 } |
375 | 376 |
376 | 377 |
377 void SemiSpace::Delete() { | 378 void SemiSpace::Delete() { |
378 #ifdef DEBUG | 379 #ifdef DEBUG |
379 if (reserved_ != NULL) { | 380 if (reserved_ != NULL) { |
380 const intptr_t size_in_bytes = size_in_words() << kWordSizeLog2; | 381 const intptr_t size_in_bytes = size_in_words() << kWordSizeLog2; |
381 memset(reserved_->address(), kZapValue, size_in_bytes); | 382 memset(reserved_->address(), Heap::kZapByte, size_in_bytes); |
382 VerifiedMemory::Accept(reserved_->start(), size_in_bytes); | 383 VerifiedMemory::Accept(reserved_->start(), size_in_bytes); |
383 } | 384 } |
384 #endif | 385 #endif |
385 SemiSpace* old_cache = NULL; | 386 SemiSpace* old_cache = NULL; |
386 { | 387 { |
387 MutexLocker locker(mutex_); | 388 MutexLocker locker(mutex_); |
388 old_cache = cache_; | 389 old_cache = cache_; |
389 cache_ = this; | 390 cache_ = this; |
390 } | 391 } |
391 delete old_cache; | 392 delete old_cache; |
(...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
898 } | 899 } |
899 | 900 |
900 | 901 |
901 void Scavenger::FreeExternal(intptr_t size) { | 902 void Scavenger::FreeExternal(intptr_t size) { |
902 ASSERT(size >= 0); | 903 ASSERT(size >= 0); |
903 external_size_ -= size; | 904 external_size_ -= size; |
904 ASSERT(external_size_ >= 0); | 905 ASSERT(external_size_ >= 0); |
905 } | 906 } |
906 | 907 |
907 } // namespace dart | 908 } // namespace dart |
OLD | NEW |