| 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 = | 
|  |