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

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

Issue 816123002: MemorySanitizer support. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years 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
« no previous file with comments | « runtime/vm/profiler.cc ('k') | runtime/vm/stack_frame.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 506 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 void Scavenger::IterateStoreBuffers(Isolate* isolate, 517 void Scavenger::IterateStoreBuffers(Isolate* isolate,
518 ScavengerVisitor* visitor) { 518 ScavengerVisitor* visitor) {
519 StoreBuffer* buffer = isolate->store_buffer(); 519 StoreBuffer* buffer = isolate->store_buffer();
520 heap_->RecordData(kStoreBufferEntries, buffer->Count()); 520 heap_->RecordData(kStoreBufferEntries, buffer->Count());
521 521
522 // Iterating through the store buffers. 522 // Iterating through the store buffers.
523 // Grab the deduplication sets out of the store buffer. 523 // Grab the deduplication sets out of the store buffer.
524 StoreBufferBlock* pending = isolate->store_buffer()->Blocks(); 524 StoreBufferBlock* pending = isolate->store_buffer()->Blocks();
525 while (pending != NULL) { 525 while (pending != NULL) {
526 StoreBufferBlock* next = pending->next(); 526 StoreBufferBlock* next = pending->next();
527 // Generated code appends to store buffers; tell MemorySanitizer.
528 MSAN_UNPOISON(pending, sizeof(*pending));
527 intptr_t count = pending->Count(); 529 intptr_t count = pending->Count();
528 for (intptr_t i = 0; i < count; i++) { 530 for (intptr_t i = 0; i < count; i++) {
529 RawObject* raw_object = pending->At(i); 531 RawObject* raw_object = pending->At(i);
530 ASSERT(raw_object->IsRemembered()); 532 ASSERT(raw_object->IsRemembered());
531 raw_object->ClearRememberedBit(); 533 raw_object->ClearRememberedBit();
532 visitor->VisitingOldObject(raw_object); 534 visitor->VisitingOldObject(raw_object);
533 raw_object->VisitPointers(visitor); 535 raw_object->VisitPointers(visitor);
534 } 536 }
535 delete pending; 537 delete pending;
536 pending = next; 538 pending = next;
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after
896 } 898 }
897 899
898 900
899 void Scavenger::FreeExternal(intptr_t size) { 901 void Scavenger::FreeExternal(intptr_t size) {
900 ASSERT(size >= 0); 902 ASSERT(size >= 0);
901 external_size_ -= size; 903 external_size_ -= size;
902 ASSERT(external_size_ >= 0); 904 ASSERT(external_size_ >= 0);
903 } 905 }
904 906
905 } // namespace dart 907 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/profiler.cc ('k') | runtime/vm/stack_frame.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698