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

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

Issue 1260033004: Fix for issue 23244 (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: indent-code 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 | « no previous file | 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 463 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 } 474 }
475 ASSERT(SerializedHeaderTag::decode(value) == kInlined); 475 ASSERT(SerializedHeaderTag::decode(value) == kInlined);
476 // Read the class header information and lookup the class. 476 // Read the class header information and lookup the class.
477 intptr_t class_header = Read<int32_t>(); 477 intptr_t class_header = Read<int32_t>();
478 478
479 intptr_t object_id = SerializedHeaderData::decode(value); 479 intptr_t object_id = SerializedHeaderData::decode(value);
480 if (object_id == kOmittedObjectId) { 480 if (object_id == kOmittedObjectId) {
481 object_id = NextAvailableObjectId(); 481 object_id = NextAvailableObjectId();
482 } 482 }
483 483
484 intptr_t tags = ReadTags();
485 USE(tags);
486
484 // Reading of regular dart instances has limited support in order to 487 // Reading of regular dart instances has limited support in order to
485 // read typed data views. 488 // read typed data views.
486 if (SerializedHeaderData::decode(class_header) == kInstanceObjectId) { 489 if (SerializedHeaderData::decode(class_header) == kInstanceObjectId) {
487 Dart_CObject_Internal* object = 490 Dart_CObject_Internal* object =
488 AllocateDartCObjectInternal(Dart_CObject_Internal::kUninitialized); 491 AllocateDartCObjectInternal(Dart_CObject_Internal::kUninitialized);
489 AddBackRef(object_id, object, kIsNotDeserialized); 492 AddBackRef(object_id, object, kIsNotDeserialized);
490 // Read class of object. 493 // Read class of object.
491 object->cls = reinterpret_cast<Dart_CObject_Internal*>(ReadObjectImpl()); 494 object->cls = reinterpret_cast<Dart_CObject_Internal*>(ReadObjectImpl());
492 ASSERT(object->cls->type == 495 ASSERT(object->cls->type ==
493 static_cast<Dart_CObject_Type>(Dart_CObject_Internal::kClass)); 496 static_cast<Dart_CObject_Type>(Dart_CObject_Internal::kClass));
494 return object; 497 return object;
495 } 498 }
496 ASSERT((class_header & kSmiTagMask) != 0); 499 ASSERT((class_header & kSmiTagMask) != 0);
497 intptr_t class_id = LookupInternalClass(class_header); 500 intptr_t class_id = LookupInternalClass(class_header);
498 if ((class_id == kArrayCid) || (class_id == kImmutableArrayCid)) { 501 if ((class_id == kArrayCid) || (class_id == kImmutableArrayCid)) {
499 ASSERT(GetBackRef(object_id) == NULL); 502 ASSERT(GetBackRef(object_id) == NULL);
500 intptr_t len = ReadSmiValue(); 503 intptr_t len = ReadSmiValue();
501 Dart_CObject* value = AllocateDartCObjectArray(len); 504 Dart_CObject* value = AllocateDartCObjectArray(len);
502 AddBackRef(object_id, value, kIsNotDeserialized); 505 AddBackRef(object_id, value, kIsNotDeserialized);
503 return value; 506 return value;
504 } 507 }
505
506 intptr_t tags = ReadTags();
507 USE(tags);
508
509 return ReadInternalVMObject(class_id, object_id); 508 return ReadInternalVMObject(class_id, object_id);
510 } 509 }
511 510
512 511
513 Dart_CObject* ApiMessageReader::ReadVMIsolateObject(intptr_t value) { 512 Dart_CObject* ApiMessageReader::ReadVMIsolateObject(intptr_t value) {
514 intptr_t object_id = GetVMIsolateObjectId(value); 513 intptr_t object_id = GetVMIsolateObjectId(value);
515 if (object_id == kNullObject) { 514 if (object_id == kNullObject) {
516 return AllocateDartCObjectNull(); 515 return AllocateDartCObjectNull();
517 } 516 }
518 if (object_id == kTrueValue) { 517 if (object_id == kTrueValue) {
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after
1053 if (type == Dart_CObject_kArray) { 1052 if (type == Dart_CObject_kArray) {
1054 const intptr_t array_length = object->value.as_array.length; 1053 const intptr_t array_length = object->value.as_array.length;
1055 if (array_length < 0 || 1054 if (array_length < 0 ||
1056 array_length > Array::kMaxElements) { 1055 array_length > Array::kMaxElements) {
1057 return false; 1056 return false;
1058 } 1057 }
1059 // Write out the serialization header value for this object. 1058 // Write out the serialization header value for this object.
1060 WriteInlinedHeader(object); 1059 WriteInlinedHeader(object);
1061 // Write out the class information. 1060 // Write out the class information.
1062 WriteIndexedObject(kArrayCid); 1061 WriteIndexedObject(kArrayCid);
1062 WriteTags(0);
1063 // Write out the length information. 1063 // Write out the length information.
1064 WriteSmi(array_length); 1064 WriteSmi(array_length);
1065 // Add object to forward list so that this object is serialized later. 1065 // Add object to forward list so that this object is serialized later.
1066 AddToForwardList(object); 1066 AddToForwardList(object);
1067 return true; 1067 return true;
1068 } 1068 }
1069 return WriteCObjectInlined(object, type); 1069 return WriteCObjectInlined(object, type);
1070 } 1070 }
1071 1071
1072 1072
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
1290 if (!success) { 1290 if (!success) {
1291 UnmarkAllCObjects(object); 1291 UnmarkAllCObjects(object);
1292 return false; 1292 return false;
1293 } 1293 }
1294 } 1294 }
1295 UnmarkAllCObjects(object); 1295 UnmarkAllCObjects(object);
1296 return true; 1296 return true;
1297 } 1297 }
1298 1298
1299 } // namespace dart 1299 } // namespace dart
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/raw_object_snapshot.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698