diff --git a/runtime/vm/raw_object_snapshot.cc b/runtime/vm/raw_object_snapshot.cc
index 6d39757..3974b99 100644
--- a/runtime/vm/raw_object_snapshot.cc
+++ b/runtime/vm/raw_object_snapshot.cc
@@ -2571,6 +2571,13 @@
 }
 
 
+#define EXT_TYPED_DATA_WRITE(cid, type)                                        \
+  writer->WriteIndexedObject(cid);                                             \
+  writer->WriteIntptrValue(RawObject::ClassIdTag::update(cid, tags));          \
+  writer->Write<RawObject*>(ptr()->length_);                                   \
+  TYPED_DATA_WRITE(type)                                                       \
+
+
 void RawExternalTypedData::WriteTo(SnapshotWriter* writer,
                                    intptr_t object_id,
                                    Snapshot::Kind kind) {
@@ -2582,52 +2589,46 @@
   // Write out the serialization header value for this object.
   writer->WriteInlinedObjectHeader(object_id);
 
-  // Write out the class and tags information.
-  writer->WriteIndexedObject(cid);
-  writer->WriteIntptrValue(tags);
-
-  // Write out the length field.
-  writer->Write<RawObject*>(ptr()->length_);
-
   switch (cid) {
     case kExternalTypedDataInt8ArrayCid:
-      TYPED_DATA_WRITE(int8_t);
+      EXT_TYPED_DATA_WRITE(kTypedDataInt8ArrayCid, int8_t);
       break;
     case kExternalTypedDataUint8ArrayCid:
-      TYPED_DATA_WRITE(uint8_t);
+      EXT_TYPED_DATA_WRITE(kTypedDataUint8ArrayCid, uint8_t);
       break;
     case kExternalTypedDataUint8ClampedArrayCid:
-      TYPED_DATA_WRITE(uint8_t);
+      EXT_TYPED_DATA_WRITE(kTypedDataUint8ClampedArrayCid, uint8_t);
       break;
     case kExternalTypedDataInt16ArrayCid:
-      TYPED_DATA_WRITE(int16_t);
+      EXT_TYPED_DATA_WRITE(kTypedDataInt16ArrayCid, int16_t);
       break;
     case kExternalTypedDataUint16ArrayCid:
-      TYPED_DATA_WRITE(uint16_t);
+      EXT_TYPED_DATA_WRITE(kTypedDataUint16ArrayCid, uint16_t);
       break;
     case kExternalTypedDataInt32ArrayCid:
-      TYPED_DATA_WRITE(int32_t);
+      EXT_TYPED_DATA_WRITE(kTypedDataInt32ArrayCid, int32_t);
       break;
     case kExternalTypedDataUint32ArrayCid:
-      TYPED_DATA_WRITE(uint32_t);
+      EXT_TYPED_DATA_WRITE(kTypedDataUint32ArrayCid, uint32_t);
       break;
     case kExternalTypedDataInt64ArrayCid:
-      TYPED_DATA_WRITE(int64_t);
+      EXT_TYPED_DATA_WRITE(kTypedDataInt64ArrayCid, int64_t);
       break;
     case kExternalTypedDataUint64ArrayCid:
-      TYPED_DATA_WRITE(uint64_t);
+      EXT_TYPED_DATA_WRITE(kTypedDataUint64ArrayCid, uint64_t);
       break;
     case kExternalTypedDataFloat32ArrayCid:
-      TYPED_DATA_WRITE(float);  // NOLINT.
+      EXT_TYPED_DATA_WRITE(kTypedDataFloat32ArrayCid, float);  // NOLINT.
       break;
     case kExternalTypedDataFloat64ArrayCid:
-      TYPED_DATA_WRITE(double);  // NOLINT.
+      EXT_TYPED_DATA_WRITE(kTypedDataFloat64ArrayCid, double);  // NOLINT.
       break;
     default:
       UNREACHABLE();
   }
 }
 #undef TYPED_DATA_WRITE
+#undef EXT_TYPED_DATA_WRITE
 
 
 RawDartFunction* DartFunction::ReadFrom(SnapshotReader* reader,
diff --git a/tests/standalone/standalone.status b/tests/standalone/standalone.status
index 22c188d..2e39371 100644
--- a/tests/standalone/standalone.status
+++ b/tests/standalone/standalone.status
@@ -82,6 +82,7 @@
 number_identity_test: Skip # Bigints and int/double diff. not supported.
 typed_data_test: Skip # This is a VM test
 typed_data_view_test: Skip # This is a VM test
+typed_data_isolate_test: Skip # This is a VM test
 typed_array_test: Skip # This is a VM test
 float_array_test: Skip # This is a VM test
 int_array_test: Skip  # This is a VM test
diff --git a/tests/standalone/typed_data_isolate_test.dart b/tests/standalone/typed_data_isolate_test.dart
new file mode 100644
index 0000000..086a20f
--- /dev/null
+++ b/tests/standalone/typed_data_isolate_test.dart
@@ -0,0 +1,32 @@
+// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+//
+// Dart test program for testing typed data.
+
+// Library tag to be able to run in html test framework.
+library TypedDataIsolateTest;
+
+import 'dart:io';
+import 'dart:isolate';
+
+second() {
+ print('spawned');
+ port.receive((data, replyTo) {
+   print('got data');
+   print(data);
+   print('printed data');
+   replyTo.send('OK');
+   port.close();
+ });
+}
+
+main() {
+ new File(new Options().script).readAsBytes().then((List<int> data) {
+   spawnFunction(second).call(data).then((reply) {
+     print('got reply');
+     port.close();
+   });
+ });
+}
+
diff --git a/tools/VERSION b/tools/VERSION
index d7aaa81..275240e 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -1,4 +1,4 @@
 MAJOR 0
 MINOR 4
 BUILD 3
-PATCH 2
+PATCH 3
