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

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

Issue 1276753002: 1. Fix the type arguments recursion problem that gets introduced when canonicalization of type argu… (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: address-code-review Created 5 years, 4 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/dart_api_impl.cc ('k') | runtime/vm/raw_object_snapshot.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) 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/dart_api_message.h" 5 #include "vm/dart_api_message.h"
6 #include "vm/object.h" 6 #include "vm/object.h"
7 #include "vm/snapshot_ids.h" 7 #include "vm/snapshot_ids.h"
8 #include "vm/symbols.h" 8 #include "vm/symbols.h"
9 #include "vm/unicode.h" 9 #include "vm/unicode.h"
10 10
(...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after
761 761
762 case kTypedDataFloat32ArrayCid: 762 case kTypedDataFloat32ArrayCid:
763 case kExternalTypedDataFloat32ArrayCid: 763 case kExternalTypedDataFloat32ArrayCid:
764 READ_TYPED_DATA(Float32, float); 764 READ_TYPED_DATA(Float32, float);
765 765
766 case kTypedDataFloat64ArrayCid: 766 case kTypedDataFloat64ArrayCid:
767 case kExternalTypedDataFloat64ArrayCid: 767 case kExternalTypedDataFloat64ArrayCid:
768 READ_TYPED_DATA(Float64, double); 768 READ_TYPED_DATA(Float64, double);
769 769
770 case kGrowableObjectArrayCid: { 770 case kGrowableObjectArrayCid: {
771 // A GrowableObjectArray is serialized as its length followed by 771 // A GrowableObjectArray is serialized as its type arguments and
772 // its backing store. The backing store is an array with a 772 // length followed by its backing store. The backing store is an
773 // length which might be longer than the length of the 773 // array with a length which might be longer than the length of
774 // GrowableObjectArray. 774 // the GrowableObjectArray.
775
776 // Read and skip the type arguments field.
777 // TODO(sjesse): Remove this when message serialization format is
778 // updated (currently type_arguments is leaked).
779 Dart_CObject* type_arguments = ReadObjectImpl();
780 if (type_arguments != &type_arguments_marker &&
781 type_arguments->type != Dart_CObject_kNull) {
782 return AllocateDartCObjectUnsupported();
783 }
784
785 // Read the length field.
775 intptr_t len = ReadSmiValue(); 786 intptr_t len = ReadSmiValue();
776 787
777 Dart_CObject* value = GetBackRef(object_id); 788 Dart_CObject* value = GetBackRef(object_id);
778 ASSERT(value == NULL); 789 ASSERT(value == NULL);
779 // Allocate an empty array for the GrowableObjectArray which 790 // Allocate an empty array for the GrowableObjectArray which
780 // will be updated to point to the content when the backing 791 // will be updated to point to the content when the backing
781 // store has been deserialized. 792 // store has been deserialized.
782 value = AllocateDartCObjectArray(0); 793 value = AllocateDartCObjectArray(0);
783 AddBackRef(object_id, value, kIsDeserialized); 794 AddBackRef(object_id, value, kIsDeserialized);
784 // Read the content of the GrowableObjectArray. 795 // Read the content of the GrowableObjectArray.
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after
1304 if (!success) { 1315 if (!success) {
1305 UnmarkAllCObjects(object); 1316 UnmarkAllCObjects(object);
1306 return false; 1317 return false;
1307 } 1318 }
1308 } 1319 }
1309 UnmarkAllCObjects(object); 1320 UnmarkAllCObjects(object);
1310 return true; 1321 return true;
1311 } 1322 }
1312 1323
1313 } // namespace dart 1324 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/dart_api_impl.cc ('k') | runtime/vm/raw_object_snapshot.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698