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

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

Issue 1339363002: Reapply "Move megamorphic cache table into the Dart heap." (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 3 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/object_store.cc ('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 #include "vm/snapshot.h" 5 #include "vm/snapshot.h"
6 6
7 #include "platform/assert.h" 7 #include "platform/assert.h"
8 #include "vm/bootstrap.h" 8 #include "vm/bootstrap.h"
9 #include "vm/class_finalizer.h" 9 #include "vm/class_finalizer.h"
10 #include "vm/dart.h" 10 #include "vm/dart.h"
(...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after
653 653
654 // The version string matches. Read the rest of the snapshot. 654 // The version string matches. Read the rest of the snapshot.
655 655
656 // TODO(asiva): Add a check here to ensure we have the right heap 656 // TODO(asiva): Add a check here to ensure we have the right heap
657 // size for the full snapshot being read. 657 // size for the full snapshot being read.
658 { 658 {
659 NoSafepointScope no_safepoint; 659 NoSafepointScope no_safepoint;
660 HeapLocker hl(isolate, old_space()); 660 HeapLocker hl(isolate, old_space());
661 661
662 // Read in all the objects stored in the object store. 662 // Read in all the objects stored in the object store.
663 intptr_t num_flds = (object_store->to() - object_store->from()); 663 RawObject** toobj = snapshot_code() ? object_store->to()
664 : object_store->to_snapshot();
665 intptr_t num_flds = (toobj - object_store->from());
664 for (intptr_t i = 0; i <= num_flds; i++) { 666 for (intptr_t i = 0; i <= num_flds; i++) {
665 *(object_store->from() + i) = ReadObjectImpl(kAsInlinedObject); 667 *(object_store->from() + i) = ReadObjectImpl(kAsInlinedObject);
666 } 668 }
667 for (intptr_t i = 0; i < backward_references_->length(); i++) { 669 for (intptr_t i = 0; i < backward_references_->length(); i++) {
668 if (!(*backward_references_)[i].is_deserialized()) { 670 if (!(*backward_references_)[i].is_deserialized()) {
669 ReadObjectImpl(kAsInlinedObject); 671 ReadObjectImpl(kAsInlinedObject);
670 (*backward_references_)[i].set_state(kIsDeserialized); 672 (*backward_references_)[i].set_state(kIsDeserialized);
671 } 673 }
672 } 674 }
673 675
(...skipping 1313 matching lines...) Expand 10 before | Expand all | Expand 10 after
1987 writer.ReserveHeader(); 1989 writer.ReserveHeader();
1988 1990
1989 // Write out the version string. 1991 // Write out the version string.
1990 writer.WriteVersion(); 1992 writer.WriteVersion();
1991 1993
1992 // Write out the full snapshot. 1994 // Write out the full snapshot.
1993 1995
1994 // Write out all the objects in the object store of the isolate which 1996 // Write out all the objects in the object store of the isolate which
1995 // is the root set for all dart allocated objects at this point. 1997 // is the root set for all dart allocated objects at this point.
1996 SnapshotWriterVisitor visitor(&writer, false); 1998 SnapshotWriterVisitor visitor(&writer, false);
1997 object_store->VisitObjectPointers(&visitor); 1999 visitor.VisitPointers(object_store->from(),
2000 snapshot_code_ ? object_store->to()
2001 : object_store->to_snapshot());
1998 2002
1999 // Write out all forwarded objects. 2003 // Write out all forwarded objects.
2000 writer.WriteForwardedObjects(); 2004 writer.WriteForwardedObjects();
2001 2005
2002 writer.FillHeader(writer.kind()); 2006 writer.FillHeader(writer.kind());
2003 writer.UnmarkAll(); 2007 writer.UnmarkAll();
2004 2008
2005 isolate_snapshot_size_ = writer.BytesWritten(); 2009 isolate_snapshot_size_ = writer.BytesWritten();
2006 } else { 2010 } else {
2007 writer.ThrowException(writer.exception_type(), writer.exception_msg()); 2011 writer.ThrowException(writer.exception_type(), writer.exception_msg());
(...skipping 776 matching lines...) Expand 10 before | Expand all | Expand 10 after
2784 NoSafepointScope no_safepoint; 2788 NoSafepointScope no_safepoint;
2785 WriteObject(obj.raw()); 2789 WriteObject(obj.raw());
2786 UnmarkAll(); 2790 UnmarkAll();
2787 } else { 2791 } else {
2788 ThrowException(exception_type(), exception_msg()); 2792 ThrowException(exception_type(), exception_msg());
2789 } 2793 }
2790 } 2794 }
2791 2795
2792 2796
2793 } // namespace dart 2797 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/object_store.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698