Index: runtime/vm/dart_api_message.cc |
=================================================================== |
--- runtime/vm/dart_api_message.cc (revision 34679) |
+++ runtime/vm/dart_api_message.cc (working copy) |
@@ -458,6 +458,9 @@ |
if (object_id == kFalseValue) { |
return AllocateDartCObjectBool(false); |
} |
+ if (object_id == kDoubleObject) { |
+ return AllocateDartCObjectDouble(ReadDouble()); |
+ } |
if (Symbols::IsVMSymbolId(object_id)) { |
return ReadVMSymbol(object_id); |
} |
@@ -537,10 +540,9 @@ |
return object; |
} |
case kDoubleCid: { |
- // Read the double value for the object. |
- Dart_CObject* object = AllocateDartCObjectDouble(Read<double>()); |
- AddBackRef(object_id, object, kIsDeserialized); |
- return object; |
+ // Doubles are handled specially when being sent as part of message |
+ // snapshots. |
+ UNREACHABLE(); |
} |
case kOneByteStringCid: { |
intptr_t len = ReadSmiValue(); |
@@ -1053,13 +1055,8 @@ |
break; |
} |
case Dart_CObject_kDouble: |
- // Write out the serialization header value for this object. |
- WriteInlinedHeader(object); |
- // Write out the class and tags information. |
- WriteIndexedObject(kDoubleCid); |
- WriteIntptrValue(0); |
- // Write double value. |
- Write<double>(object->value.as_double); |
+ WriteVMIsolateObject(kDoubleObject); |
+ WriteDouble(object->value.as_double); |
break; |
case Dart_CObject_kString: { |
const uint8_t* utf8_str = |