Bug 1411450 - Switch devtools CoreDump.proto to the LITE_RUNTIME. r?fitzgen draft
authorFrancois Marier <francois@mozilla.com>
Thu, 26 Oct 2017 16:12:51 -0700
changeset 689807 3c31593ee859097c8629b875f81754646308e9dd
parent 686540 64bab5cbb9b63808d04babfbcfba3175fd99f69d
child 689808 1428d2ffb296c27d6a55b1e4f25bbd620540944d
child 689810 472231f50c371b30a29f032d1dd736ac00785e1c
push id87108
push userfmarier@mozilla.com
push dateTue, 31 Oct 2017 23:13:27 +0000
reviewersfitzgen
bugs1411450
milestone58.0a1
Bug 1411450 - Switch devtools CoreDump.proto to the LITE_RUNTIME. r?fitzgen The "lite" runtime allows us to pull in a lot less of the protocol buffers library: https://developers.google.com/protocol-buffers/docs/proto#options MozReview-Commit-ID: 2m41fqa9j09
devtools/shared/heapsnapshot/CoreDump.pb.cc
devtools/shared/heapsnapshot/CoreDump.pb.h
devtools/shared/heapsnapshot/CoreDump.proto
--- a/devtools/shared/heapsnapshot/CoreDump.pb.cc
+++ b/devtools/shared/heapsnapshot/CoreDump.pb.cc
@@ -6,20 +6,17 @@
 
 #include <algorithm>
 
 #include <google/protobuf/stubs/common.h>
 #include <google/protobuf/stubs/port.h>
 #include <google/protobuf/stubs/once.h>
 #include <google/protobuf/io/coded_stream.h>
 #include <google/protobuf/wire_format_lite_inl.h>
-#include <google/protobuf/descriptor.h>
-#include <google/protobuf/generated_message_reflection.h>
-#include <google/protobuf/reflection_ops.h>
-#include <google/protobuf/wire_format.h>
+#include <google/protobuf/io/zero_copy_stream_impl_lite.h>
 // @@protoc_insertion_point(includes)
 
 namespace mozilla {
 namespace devtools {
 namespace protobuf {
 class MetadataDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<Metadata>
@@ -57,23 +54,16 @@ public:
  ::google::protobuf::internal::ExplicitlyConstructed<Edge>
      _instance;
   ::google::protobuf::internal::ArenaStringPtr name_;
   ::google::protobuf::uint64 nameref_;
 } _Edge_default_instance_;
 
 namespace protobuf_CoreDump_2eproto {
 
-
-namespace {
-
-::google::protobuf::Metadata file_level_metadata[5];
-
-}  // namespace
-
 PROTOBUF_CONSTEXPR_VAR ::google::protobuf::internal::ParseTableField
     const TableStruct::entries[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
   {0, 0, 0, ::google::protobuf::internal::kInvalidMask, 0, 0},
 };
 
 PROTOBUF_CONSTEXPR_VAR ::google::protobuf::internal::AuxillaryParseTableField
     const TableStruct::aux[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
   ::google::protobuf::internal::AuxillaryParseTableField(),
@@ -82,253 +72,70 @@ PROTOBUF_CONSTEXPR_VAR ::google::protobu
     TableStruct::schema[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
   { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
   { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
   { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
   { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
   { NULL, NULL, 0, -1, -1, -1, -1, NULL, false },
 };
 
-const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Metadata, _has_bits_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Metadata, _internal_metadata_),
-  ~0u,  // no _extensions_
-  ~0u,  // no _oneof_case_
-  ~0u,  // no _weak_field_map_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Metadata, timestamp_),
-  0,
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(StackFrame_Data, _has_bits_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(StackFrame_Data, _internal_metadata_),
-  ~0u,  // no _extensions_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(StackFrame_Data, _oneof_case_[0]),
-  ~0u,  // no _weak_field_map_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(StackFrame_Data, id_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(StackFrame_Data, parent_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(StackFrame_Data, line_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(StackFrame_Data, column_),
-  offsetof(StackFrame_DataDefaultTypeInternal, source_),
-  offsetof(StackFrame_DataDefaultTypeInternal, sourceref_),
-  offsetof(StackFrame_DataDefaultTypeInternal, functiondisplayname_),
-  offsetof(StackFrame_DataDefaultTypeInternal, functiondisplaynameref_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(StackFrame_Data, issystem_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(StackFrame_Data, isselfhosted_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(StackFrame_Data, SourceOrRef_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(StackFrame_Data, FunctionDisplayNameOrRef_),
-  1,
-  0,
-  2,
-  3,
-  ~0u,
-  ~0u,
-  ~0u,
-  ~0u,
-  4,
-  5,
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(StackFrame, _has_bits_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(StackFrame, _internal_metadata_),
-  ~0u,  // no _extensions_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(StackFrame, _oneof_case_[0]),
-  ~0u,  // no _weak_field_map_
-  offsetof(StackFrameDefaultTypeInternal, data_),
-  offsetof(StackFrameDefaultTypeInternal, ref_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(StackFrame, StackFrameType_),
-  ~0u,
-  ~0u,
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Node, _has_bits_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Node, _internal_metadata_),
-  ~0u,  // no _extensions_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Node, _oneof_case_[0]),
-  ~0u,  // no _weak_field_map_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Node, id_),
-  offsetof(NodeDefaultTypeInternal, typename__),
-  offsetof(NodeDefaultTypeInternal, typenameref_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Node, size_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Node, edges_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Node, allocationstack_),
-  offsetof(NodeDefaultTypeInternal, jsobjectclassname_),
-  offsetof(NodeDefaultTypeInternal, jsobjectclassnameref_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Node, coarsetype_),
-  offsetof(NodeDefaultTypeInternal, scriptfilename_),
-  offsetof(NodeDefaultTypeInternal, scriptfilenameref_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Node, TypeNameOrRef_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Node, JSObjectClassNameOrRef_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Node, ScriptFilenameOrRef_),
-  1,
-  ~0u,
-  ~0u,
-  2,
-  ~0u,
-  0,
-  ~0u,
-  ~0u,
-  3,
-  ~0u,
-  ~0u,
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Edge, _has_bits_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Edge, _internal_metadata_),
-  ~0u,  // no _extensions_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Edge, _oneof_case_[0]),
-  ~0u,  // no _weak_field_map_
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Edge, referent_),
-  offsetof(EdgeDefaultTypeInternal, name_),
-  offsetof(EdgeDefaultTypeInternal, nameref_),
-  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(Edge, EdgeNameOrRef_),
-  0,
-  ~0u,
-  ~0u,
-};
-static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
-  { 0, 6, sizeof(Metadata)},
-  { 7, 24, sizeof(StackFrame_Data)},
-  { 34, 42, sizeof(StackFrame)},
-  { 44, 63, sizeof(Node)},
-  { 74, 83, sizeof(Edge)},
-};
-
-static ::google::protobuf::Message const * const file_default_instances[] = {
-  reinterpret_cast<const ::google::protobuf::Message*>(&_Metadata_default_instance_),
-  reinterpret_cast<const ::google::protobuf::Message*>(&_StackFrame_Data_default_instance_),
-  reinterpret_cast<const ::google::protobuf::Message*>(&_StackFrame_default_instance_),
-  reinterpret_cast<const ::google::protobuf::Message*>(&_Node_default_instance_),
-  reinterpret_cast<const ::google::protobuf::Message*>(&_Edge_default_instance_),
-};
-
-namespace {
-
-void protobuf_AssignDescriptors() {
-  AddDescriptors();
-  ::google::protobuf::MessageFactory* factory = NULL;
-  AssignDescriptors(
-      "CoreDump.proto", schemas, file_default_instances, TableStruct::offsets, factory,
-      file_level_metadata, NULL, NULL);
-}
-
-void protobuf_AssignDescriptorsOnce() {
-  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
-  ::google::protobuf::GoogleOnceInit(&once, &protobuf_AssignDescriptors);
-}
-
-void protobuf_RegisterTypes(const ::std::string&) GOOGLE_ATTRIBUTE_COLD;
-void protobuf_RegisterTypes(const ::std::string&) {
-  protobuf_AssignDescriptorsOnce();
-  ::google::protobuf::internal::RegisterAllTypes(file_level_metadata, 5);
-}
-
-}  // namespace
 void TableStruct::InitDefaultsImpl() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
   ::google::protobuf::internal::InitProtobufDefaults();
   _Metadata_default_instance_._instance.DefaultConstruct();
   ::google::protobuf::internal::OnShutdownDestroyMessage(
       &_Metadata_default_instance_);_StackFrame_Data_default_instance_._instance.DefaultConstruct();
   ::google::protobuf::internal::OnShutdownDestroyMessage(
       &_StackFrame_Data_default_instance_);_StackFrame_default_instance_._instance.DefaultConstruct();
   ::google::protobuf::internal::OnShutdownDestroyMessage(
       &_StackFrame_default_instance_);_Node_default_instance_._instance.DefaultConstruct();
   ::google::protobuf::internal::OnShutdownDestroyMessage(
       &_Node_default_instance_);_Edge_default_instance_._instance.DefaultConstruct();
   ::google::protobuf::internal::OnShutdownDestroyMessage(
       &_Edge_default_instance_);_StackFrame_Data_default_instance_._instance.get_mutable()->parent_ = const_cast< ::mozilla::devtools::protobuf::StackFrame*>(
       ::mozilla::devtools::protobuf::StackFrame::internal_default_instance());
-  _StackFrame_Data_default_instance_.source_.UnsafeSetDefault(
-      &::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  _StackFrame_Data_default_instance_.sourceref_ = GOOGLE_ULONGLONG(0);
-  _StackFrame_Data_default_instance_.functiondisplayname_.UnsafeSetDefault(
-      &::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  _StackFrame_Data_default_instance_.functiondisplaynameref_ = GOOGLE_ULONGLONG(0);
-  _StackFrame_default_instance_.data_ = const_cast< ::mozilla::devtools::protobuf::StackFrame_Data*>(
-      ::mozilla::devtools::protobuf::StackFrame_Data::internal_default_instance());
-  _StackFrame_default_instance_.ref_ = GOOGLE_ULONGLONG(0);
-  _Node_default_instance_.typename__.UnsafeSetDefault(
-      &::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  _Node_default_instance_.typenameref_ = GOOGLE_ULONGLONG(0);
   _Node_default_instance_._instance.get_mutable()->allocationstack_ = const_cast< ::mozilla::devtools::protobuf::StackFrame*>(
       ::mozilla::devtools::protobuf::StackFrame::internal_default_instance());
-  _Node_default_instance_.jsobjectclassname_.UnsafeSetDefault(
-      &::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  _Node_default_instance_.jsobjectclassnameref_ = GOOGLE_ULONGLONG(0);
-  _Node_default_instance_.scriptfilename_.UnsafeSetDefault(
-      &::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  _Node_default_instance_.scriptfilenameref_ = GOOGLE_ULONGLONG(0);
-  _Edge_default_instance_.name_.UnsafeSetDefault(
-      &::google::protobuf::internal::GetEmptyStringAlreadyInited());
-  _Edge_default_instance_.nameref_ = GOOGLE_ULONGLONG(0);
 }
 
 void InitDefaults() {
   static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
   ::google::protobuf::GoogleOnceInit(&once, &TableStruct::InitDefaultsImpl);
 }
 namespace {
 void AddDescriptorsImpl() {
   InitDefaults();
-  static const char descriptor[] GOOGLE_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
-      "\n\016CoreDump.proto\022\031mozilla.devtools.proto"
-      "buf\"\035\n\010Metadata\022\021\n\ttimeStamp\030\001 \001(\004\"\216\003\n\nS"
-      "tackFrame\022:\n\004data\030\001 \001(\0132*.mozilla.devtoo"
-      "ls.protobuf.StackFrame.DataH\000\022\r\n\003ref\030\002 \001"
-      "(\004H\000\032\242\002\n\004Data\022\n\n\002id\030\001 \001(\004\0225\n\006parent\030\002 \001("
-      "\0132%.mozilla.devtools.protobuf.StackFrame"
-      "\022\014\n\004line\030\003 \001(\r\022\016\n\006column\030\004 \001(\r\022\020\n\006source"
-      "\030\005 \001(\014H\000\022\023\n\tsourceRef\030\006 \001(\004H\000\022\035\n\023functio"
-      "nDisplayName\030\007 \001(\014H\001\022 \n\026functionDisplayN"
-      "ameRef\030\010 \001(\004H\001\022\020\n\010isSystem\030\t \001(\010\022\024\n\014isSe"
-      "lfHosted\030\n \001(\010B\r\n\013SourceOrRefB\032\n\030Functio"
-      "nDisplayNameOrRefB\020\n\016StackFrameType\"\210\003\n\004"
-      "Node\022\n\n\002id\030\001 \001(\004\022\022\n\010typeName\030\002 \001(\014H\000\022\025\n\013"
-      "typeNameRef\030\003 \001(\004H\000\022\014\n\004size\030\004 \001(\004\022.\n\005edg"
-      "es\030\005 \003(\0132\037.mozilla.devtools.protobuf.Edg"
-      "e\022>\n\017allocationStack\030\006 \001(\0132%.mozilla.dev"
-      "tools.protobuf.StackFrame\022\033\n\021jsObjectCla"
-      "ssName\030\007 \001(\014H\001\022\036\n\024jsObjectClassNameRef\030\010"
-      " \001(\004H\001\022\025\n\ncoarseType\030\t \001(\r:\0010\022\030\n\016scriptF"
-      "ilename\030\n \001(\014H\002\022\033\n\021scriptFilenameRef\030\013 \001"
-      "(\004H\002B\017\n\rTypeNameOrRefB\030\n\026JSObjectClassNa"
-      "meOrRefB\025\n\023ScriptFilenameOrRef\"L\n\004Edge\022\020"
-      "\n\010referent\030\001 \001(\004\022\016\n\004name\030\002 \001(\014H\000\022\021\n\007name"
-      "Ref\030\003 \001(\004H\000B\017\n\rEdgeNameOrRef"
-  };
-  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
-      descriptor, 948);
-  ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
-    "CoreDump.proto", &protobuf_RegisterTypes);
 }
 } // anonymous namespace
 
 void AddDescriptors() {
   static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
   ::google::protobuf::GoogleOnceInit(&once, &AddDescriptorsImpl);
 }
-// Force AddDescriptors() to be called at dynamic initialization time.
-struct StaticDescriptorInitializer {
-  StaticDescriptorInitializer() {
-    AddDescriptors();
-  }
-} static_descriptor_initializer;
 
 }  // namespace protobuf_CoreDump_2eproto
 
 
 // ===================================================================
 
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int Metadata::kTimeStampFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 Metadata::Metadata()
-  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
     protobuf_CoreDump_2eproto::InitDefaults();
   }
   SharedCtor();
   // @@protoc_insertion_point(constructor:mozilla.devtools.protobuf.Metadata)
 }
 Metadata::Metadata(const Metadata& from)
-  : ::google::protobuf::Message(),
+  : ::google::protobuf::MessageLite(),
       _internal_metadata_(NULL),
       _has_bits_(from._has_bits_),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   timestamp_ = from.timestamp_;
   // @@protoc_insertion_point(copy_constructor:mozilla.devtools.protobuf.Metadata)
 }
 
@@ -345,21 +152,16 @@ Metadata::~Metadata() {
 void Metadata::SharedDtor() {
 }
 
 void Metadata::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* Metadata::descriptor() {
-  protobuf_CoreDump_2eproto::protobuf_AssignDescriptorsOnce();
-  return protobuf_CoreDump_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
-}
-
 const Metadata& Metadata::default_instance() {
   protobuf_CoreDump_2eproto::InitDefaults();
   return *internal_default_instance();
 }
 
 Metadata* Metadata::New(::google::protobuf::Arena* arena) const {
   Metadata* n = new Metadata;
   if (arena != NULL) {
@@ -378,16 +180,22 @@ void Metadata::Clear() {
   _has_bits_.Clear();
   _internal_metadata_.Clear();
 }
 
 bool Metadata::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
+  ::google::protobuf::io::LazyStringOutputStream unknown_fields_string(
+      ::google::protobuf::NewPermanentCallback(&_internal_metadata_,
+          &::google::protobuf::internal::InternalMetadataWithArenaLite::
+              mutable_unknown_fields));
+  ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
+      &unknown_fields_string, false);
   // @@protoc_insertion_point(parse_start:mozilla.devtools.protobuf.Metadata)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
       // optional uint64 timeStamp = 1;
       case 1: {
@@ -403,18 +211,18 @@ bool Metadata::MergePartialFromCodedStre
         break;
       }
 
       default: {
       handle_unusual:
         if (tag == 0) {
           goto success;
         }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        DO_(::google::protobuf::internal::WireFormatLite::SkipField(
+            input, tag, &unknown_fields_stream));
         break;
       }
     }
   }
 success:
   // @@protoc_insertion_point(parse_success:mozilla.devtools.protobuf.Metadata)
   return true;
 failure:
@@ -430,101 +238,58 @@ void Metadata::SerializeWithCachedSizes(
   (void) cached_has_bits;
 
   cached_has_bits = _has_bits_[0];
   // optional uint64 timeStamp = 1;
   if (cached_has_bits & 0x00000001u) {
     ::google::protobuf::internal::WireFormatLite::WriteUInt64(1, this->timestamp(), output);
   }
 
-  if (_internal_metadata_.have_unknown_fields()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
-  }
+  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
+                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
   // @@protoc_insertion_point(serialize_end:mozilla.devtools.protobuf.Metadata)
 }
 
-::google::protobuf::uint8* Metadata::InternalSerializeWithCachedSizesToArray(
-    bool deterministic, ::google::protobuf::uint8* target) const {
-  (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:mozilla.devtools.protobuf.Metadata)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  cached_has_bits = _has_bits_[0];
-  // optional uint64 timeStamp = 1;
-  if (cached_has_bits & 0x00000001u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(1, this->timestamp(), target);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:mozilla.devtools.protobuf.Metadata)
-  return target;
-}
-
 size_t Metadata::ByteSizeLong() const {
 // @@protoc_insertion_point(message_byte_size_start:mozilla.devtools.protobuf.Metadata)
   size_t total_size = 0;
 
-  if (_internal_metadata_.have_unknown_fields()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
-  }
+  total_size += _internal_metadata_.unknown_fields().size();
+
   // optional uint64 timeStamp = 1;
   if (has_timestamp()) {
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::UInt64Size(
         this->timestamp());
   }
 
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = cached_size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
-void Metadata::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:mozilla.devtools.protobuf.Metadata)
-  GOOGLE_DCHECK_NE(&from, this);
-  const Metadata* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const Metadata>(
-          &from);
-  if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:mozilla.devtools.protobuf.Metadata)
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:mozilla.devtools.protobuf.Metadata)
-    MergeFrom(*source);
-  }
+void Metadata::CheckTypeAndMergeFrom(
+    const ::google::protobuf::MessageLite& from) {
+  MergeFrom(*::google::protobuf::down_cast<const Metadata*>(&from));
 }
 
 void Metadata::MergeFrom(const Metadata& from) {
 // @@protoc_insertion_point(class_specific_merge_from_start:mozilla.devtools.protobuf.Metadata)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
   if (from.has_timestamp()) {
     set_timestamp(from.timestamp());
   }
 }
 
-void Metadata::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:mozilla.devtools.protobuf.Metadata)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
 void Metadata::CopyFrom(const Metadata& from) {
 // @@protoc_insertion_point(class_specific_copy_from_start:mozilla.devtools.protobuf.Metadata)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
 bool Metadata::IsInitialized() const {
@@ -538,19 +303,18 @@ void Metadata::Swap(Metadata* other) {
 void Metadata::InternalSwap(Metadata* other) {
   using std::swap;
   swap(timestamp_, other->timestamp_);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata Metadata::GetMetadata() const {
-  protobuf_CoreDump_2eproto::protobuf_AssignDescriptorsOnce();
-  return protobuf_CoreDump_2eproto::file_level_metadata[kIndexInFileMessages];
+::std::string Metadata::GetTypeName() const {
+  return "mozilla.devtools.protobuf.Metadata";
 }
 
 #if PROTOBUF_INLINE_NOT_IN_HEADERS
 // Metadata
 
 // optional uint64 timeStamp = 1;
 bool Metadata::has_timestamp() const {
   return (_has_bits_[0] & 0x00000001u) != 0;
@@ -588,25 +352,25 @@ const int StackFrame_Data::kSourceFieldN
 const int StackFrame_Data::kSourceRefFieldNumber;
 const int StackFrame_Data::kFunctionDisplayNameFieldNumber;
 const int StackFrame_Data::kFunctionDisplayNameRefFieldNumber;
 const int StackFrame_Data::kIsSystemFieldNumber;
 const int StackFrame_Data::kIsSelfHostedFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 StackFrame_Data::StackFrame_Data()
-  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
     protobuf_CoreDump_2eproto::InitDefaults();
   }
   SharedCtor();
   // @@protoc_insertion_point(constructor:mozilla.devtools.protobuf.StackFrame.Data)
 }
 StackFrame_Data::StackFrame_Data(const StackFrame_Data& from)
-  : ::google::protobuf::Message(),
+  : ::google::protobuf::MessageLite(),
       _internal_metadata_(NULL),
       _has_bits_(from._has_bits_),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   if (from.has_parent()) {
     parent_ = new ::mozilla::devtools::protobuf::StackFrame(*from.parent_);
   } else {
     parent_ = NULL;
@@ -669,21 +433,16 @@ void StackFrame_Data::SharedDtor() {
   }
 }
 
 void StackFrame_Data::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* StackFrame_Data::descriptor() {
-  protobuf_CoreDump_2eproto::protobuf_AssignDescriptorsOnce();
-  return protobuf_CoreDump_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
-}
-
 const StackFrame_Data& StackFrame_Data::default_instance() {
   protobuf_CoreDump_2eproto::InitDefaults();
   return *internal_default_instance();
 }
 
 StackFrame_Data* StackFrame_Data::New(::google::protobuf::Arena* arena) const {
   StackFrame_Data* n = new StackFrame_Data;
   if (arena != NULL) {
@@ -750,16 +509,22 @@ void StackFrame_Data::Clear() {
   _has_bits_.Clear();
   _internal_metadata_.Clear();
 }
 
 bool StackFrame_Data::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
+  ::google::protobuf::io::LazyStringOutputStream unknown_fields_string(
+      ::google::protobuf::NewPermanentCallback(&_internal_metadata_,
+          &::google::protobuf::internal::InternalMetadataWithArenaLite::
+              mutable_unknown_fields));
+  ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
+      &unknown_fields_string, false);
   // @@protoc_insertion_point(parse_start:mozilla.devtools.protobuf.StackFrame.Data)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
       // optional uint64 id = 1;
       case 1: {
@@ -897,18 +662,18 @@ bool StackFrame_Data::MergePartialFromCo
         break;
       }
 
       default: {
       handle_unusual:
         if (tag == 0) {
           goto success;
         }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        DO_(::google::protobuf::internal::WireFormatLite::SkipField(
+            input, tag, &unknown_fields_stream));
         break;
       }
     }
   }
 success:
   // @@protoc_insertion_point(parse_success:mozilla.devtools.protobuf.StackFrame.Data)
   return true;
 failure:
@@ -926,17 +691,17 @@ void StackFrame_Data::SerializeWithCache
   cached_has_bits = _has_bits_[0];
   // optional uint64 id = 1;
   if (cached_has_bits & 0x00000002u) {
     ::google::protobuf::internal::WireFormatLite::WriteUInt64(1, this->id(), output);
   }
 
   // optional .mozilla.devtools.protobuf.StackFrame parent = 2;
   if (cached_has_bits & 0x00000001u) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+    ::google::protobuf::internal::WireFormatLite::WriteMessage(
       2, *this->parent_, output);
   }
 
   // optional uint32 line = 3;
   if (cached_has_bits & 0x00000004u) {
     ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->line(), output);
   }
 
@@ -970,102 +735,27 @@ void StackFrame_Data::SerializeWithCache
     ::google::protobuf::internal::WireFormatLite::WriteBool(9, this->issystem(), output);
   }
 
   // optional bool isSelfHosted = 10;
   if (cached_has_bits & 0x00000020u) {
     ::google::protobuf::internal::WireFormatLite::WriteBool(10, this->isselfhosted(), output);
   }
 
-  if (_internal_metadata_.have_unknown_fields()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
-  }
+  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
+                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
   // @@protoc_insertion_point(serialize_end:mozilla.devtools.protobuf.StackFrame.Data)
 }
 
-::google::protobuf::uint8* StackFrame_Data::InternalSerializeWithCachedSizesToArray(
-    bool deterministic, ::google::protobuf::uint8* target) const {
-  (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:mozilla.devtools.protobuf.StackFrame.Data)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  cached_has_bits = _has_bits_[0];
-  // optional uint64 id = 1;
-  if (cached_has_bits & 0x00000002u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(1, this->id(), target);
-  }
-
-  // optional .mozilla.devtools.protobuf.StackFrame parent = 2;
-  if (cached_has_bits & 0x00000001u) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      InternalWriteMessageNoVirtualToArray(
-        2, *this->parent_, deterministic, target);
-  }
-
-  // optional uint32 line = 3;
-  if (cached_has_bits & 0x00000004u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(3, this->line(), target);
-  }
-
-  // optional uint32 column = 4;
-  if (cached_has_bits & 0x00000008u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(4, this->column(), target);
-  }
-
-  switch (SourceOrRef_case()) {
-    case kSource:
-      target =
-        ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
-          5, this->source(), target);
-      break;
-    case kSourceRef:
-      target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(6, this->sourceref(), target);
-      break;
-    default: ;
-  }
-  switch (FunctionDisplayNameOrRef_case()) {
-    case kFunctionDisplayName:
-      target =
-        ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
-          7, this->functiondisplayname(), target);
-      break;
-    case kFunctionDisplayNameRef:
-      target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(8, this->functiondisplaynameref(), target);
-      break;
-    default: ;
-  }
-  // optional bool isSystem = 9;
-  if (cached_has_bits & 0x00000010u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(9, this->issystem(), target);
-  }
-
-  // optional bool isSelfHosted = 10;
-  if (cached_has_bits & 0x00000020u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(10, this->isselfhosted(), target);
-  }
-
-  if (_internal_metadata_.have_unknown_fields()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:mozilla.devtools.protobuf.StackFrame.Data)
-  return target;
-}
-
 size_t StackFrame_Data::ByteSizeLong() const {
 // @@protoc_insertion_point(message_byte_size_start:mozilla.devtools.protobuf.StackFrame.Data)
   size_t total_size = 0;
 
-  if (_internal_metadata_.have_unknown_fields()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
-  }
+  total_size += _internal_metadata_.unknown_fields().size();
+
   if (_has_bits_[0 / 32] & 63u) {
     // optional .mozilla.devtools.protobuf.StackFrame parent = 2;
     if (has_parent()) {
       total_size += 1 +
         ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
           *this->parent_);
     }
 
@@ -1141,29 +831,19 @@ size_t StackFrame_Data::ByteSizeLong() c
   }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = cached_size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
-void StackFrame_Data::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:mozilla.devtools.protobuf.StackFrame.Data)
-  GOOGLE_DCHECK_NE(&from, this);
-  const StackFrame_Data* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const StackFrame_Data>(
-          &from);
-  if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:mozilla.devtools.protobuf.StackFrame.Data)
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:mozilla.devtools.protobuf.StackFrame.Data)
-    MergeFrom(*source);
-  }
+void StackFrame_Data::CheckTypeAndMergeFrom(
+    const ::google::protobuf::MessageLite& from) {
+  MergeFrom(*::google::protobuf::down_cast<const StackFrame_Data*>(&from));
 }
 
 void StackFrame_Data::MergeFrom(const StackFrame_Data& from) {
 // @@protoc_insertion_point(class_specific_merge_from_start:mozilla.devtools.protobuf.StackFrame.Data)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
@@ -1213,23 +893,16 @@ void StackFrame_Data::MergeFrom(const St
       break;
     }
     case FUNCTIONDISPLAYNAMEORREF_NOT_SET: {
       break;
     }
   }
 }
 
-void StackFrame_Data::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:mozilla.devtools.protobuf.StackFrame.Data)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
 void StackFrame_Data::CopyFrom(const StackFrame_Data& from) {
 // @@protoc_insertion_point(class_specific_copy_from_start:mozilla.devtools.protobuf.StackFrame.Data)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
 bool StackFrame_Data::IsInitialized() const {
@@ -1252,19 +925,18 @@ void StackFrame_Data::InternalSwap(Stack
   swap(_oneof_case_[0], other->_oneof_case_[0]);
   swap(FunctionDisplayNameOrRef_, other->FunctionDisplayNameOrRef_);
   swap(_oneof_case_[1], other->_oneof_case_[1]);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata StackFrame_Data::GetMetadata() const {
-  protobuf_CoreDump_2eproto::protobuf_AssignDescriptorsOnce();
-  return protobuf_CoreDump_2eproto::file_level_metadata[kIndexInFileMessages];
+::std::string StackFrame_Data::GetTypeName() const {
+  return "mozilla.devtools.protobuf.StackFrame.Data";
 }
 
 #if PROTOBUF_INLINE_NOT_IN_HEADERS
 // StackFrame_Data
 
 // optional uint64 id = 1;
 bool StackFrame_Data::has_id() const {
   return (_has_bits_[0] & 0x00000002u) != 0;
@@ -1702,25 +1374,25 @@ StackFrame_Data::FunctionDisplayNameOrRe
 // ===================================================================
 
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int StackFrame::kDataFieldNumber;
 const int StackFrame::kRefFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 StackFrame::StackFrame()
-  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
     protobuf_CoreDump_2eproto::InitDefaults();
   }
   SharedCtor();
   // @@protoc_insertion_point(constructor:mozilla.devtools.protobuf.StackFrame)
 }
 StackFrame::StackFrame(const StackFrame& from)
-  : ::google::protobuf::Message(),
+  : ::google::protobuf::MessageLite(),
       _internal_metadata_(NULL),
       _has_bits_(from._has_bits_),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   clear_has_StackFrameType();
   switch (from.StackFrameType_case()) {
     case kData: {
       mutable_data()->::mozilla::devtools::protobuf::StackFrame_Data::MergeFrom(from.data());
@@ -1753,21 +1425,16 @@ void StackFrame::SharedDtor() {
   }
 }
 
 void StackFrame::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* StackFrame::descriptor() {
-  protobuf_CoreDump_2eproto::protobuf_AssignDescriptorsOnce();
-  return protobuf_CoreDump_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
-}
-
 const StackFrame& StackFrame::default_instance() {
   protobuf_CoreDump_2eproto::InitDefaults();
   return *internal_default_instance();
 }
 
 StackFrame* StackFrame::New(::google::protobuf::Arena* arena) const {
   StackFrame* n = new StackFrame;
   if (arena != NULL) {
@@ -1805,16 +1472,22 @@ void StackFrame::Clear() {
   _has_bits_.Clear();
   _internal_metadata_.Clear();
 }
 
 bool StackFrame::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
+  ::google::protobuf::io::LazyStringOutputStream unknown_fields_string(
+      ::google::protobuf::NewPermanentCallback(&_internal_metadata_,
+          &::google::protobuf::internal::InternalMetadataWithArenaLite::
+              mutable_unknown_fields));
+  ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
+      &unknown_fields_string, false);
   // @@protoc_insertion_point(parse_start:mozilla.devtools.protobuf.StackFrame)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
       // optional .mozilla.devtools.protobuf.StackFrame.Data data = 1;
       case 1: {
@@ -1843,18 +1516,18 @@ bool StackFrame::MergePartialFromCodedSt
         break;
       }
 
       default: {
       handle_unusual:
         if (tag == 0) {
           goto success;
         }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        DO_(::google::protobuf::internal::WireFormatLite::SkipField(
+            input, tag, &unknown_fields_stream));
         break;
       }
     }
   }
 success:
   // @@protoc_insertion_point(parse_success:mozilla.devtools.protobuf.StackFrame)
   return true;
 failure:
@@ -1866,66 +1539,35 @@ failure:
 void StackFrame::SerializeWithCachedSizes(
     ::google::protobuf::io::CodedOutputStream* output) const {
   // @@protoc_insertion_point(serialize_start:mozilla.devtools.protobuf.StackFrame)
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
 
   switch (StackFrameType_case()) {
     case kData:
-      ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      ::google::protobuf::internal::WireFormatLite::WriteMessage(
         1, *StackFrameType_.data_, output);
       break;
     case kRef:
       ::google::protobuf::internal::WireFormatLite::WriteUInt64(2, this->ref(), output);
       break;
     default: ;
   }
-  if (_internal_metadata_.have_unknown_fields()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
-  }
+  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
+                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
   // @@protoc_insertion_point(serialize_end:mozilla.devtools.protobuf.StackFrame)
 }
 
-::google::protobuf::uint8* StackFrame::InternalSerializeWithCachedSizesToArray(
-    bool deterministic, ::google::protobuf::uint8* target) const {
-  (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:mozilla.devtools.protobuf.StackFrame)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  switch (StackFrameType_case()) {
-    case kData:
-      target = ::google::protobuf::internal::WireFormatLite::
-        InternalWriteMessageNoVirtualToArray(
-          1, *StackFrameType_.data_, deterministic, target);
-      break;
-    case kRef:
-      target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(2, this->ref(), target);
-      break;
-    default: ;
-  }
-  if (_internal_metadata_.have_unknown_fields()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:mozilla.devtools.protobuf.StackFrame)
-  return target;
-}
-
 size_t StackFrame::ByteSizeLong() const {
 // @@protoc_insertion_point(message_byte_size_start:mozilla.devtools.protobuf.StackFrame)
   size_t total_size = 0;
 
-  if (_internal_metadata_.have_unknown_fields()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
-  }
+  total_size += _internal_metadata_.unknown_fields().size();
+
   switch (StackFrameType_case()) {
     // optional .mozilla.devtools.protobuf.StackFrame.Data data = 1;
     case kData: {
       total_size += 1 +
         ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
           *StackFrameType_.data_);
       break;
     }
@@ -1942,29 +1584,19 @@ size_t StackFrame::ByteSizeLong() const 
   }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = cached_size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
-void StackFrame::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:mozilla.devtools.protobuf.StackFrame)
-  GOOGLE_DCHECK_NE(&from, this);
-  const StackFrame* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const StackFrame>(
-          &from);
-  if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:mozilla.devtools.protobuf.StackFrame)
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:mozilla.devtools.protobuf.StackFrame)
-    MergeFrom(*source);
-  }
+void StackFrame::CheckTypeAndMergeFrom(
+    const ::google::protobuf::MessageLite& from) {
+  MergeFrom(*::google::protobuf::down_cast<const StackFrame*>(&from));
 }
 
 void StackFrame::MergeFrom(const StackFrame& from) {
 // @@protoc_insertion_point(class_specific_merge_from_start:mozilla.devtools.protobuf.StackFrame)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
@@ -1979,23 +1611,16 @@ void StackFrame::MergeFrom(const StackFr
       break;
     }
     case STACKFRAMETYPE_NOT_SET: {
       break;
     }
   }
 }
 
-void StackFrame::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:mozilla.devtools.protobuf.StackFrame)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
 void StackFrame::CopyFrom(const StackFrame& from) {
 // @@protoc_insertion_point(class_specific_copy_from_start:mozilla.devtools.protobuf.StackFrame)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
 bool StackFrame::IsInitialized() const {
@@ -2010,19 +1635,18 @@ void StackFrame::InternalSwap(StackFrame
   using std::swap;
   swap(StackFrameType_, other->StackFrameType_);
   swap(_oneof_case_[0], other->_oneof_case_[0]);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata StackFrame::GetMetadata() const {
-  protobuf_CoreDump_2eproto::protobuf_AssignDescriptorsOnce();
-  return protobuf_CoreDump_2eproto::file_level_metadata[kIndexInFileMessages];
+::std::string StackFrame::GetTypeName() const {
+  return "mozilla.devtools.protobuf.StackFrame";
 }
 
 #if PROTOBUF_INLINE_NOT_IN_HEADERS
 // StackFrame
 
 // optional .mozilla.devtools.protobuf.StackFrame.Data data = 1;
 bool StackFrame::has_data() const {
   return StackFrameType_case() == kData;
@@ -2123,25 +1747,25 @@ const int Node::kAllocationStackFieldNum
 const int Node::kJsObjectClassNameFieldNumber;
 const int Node::kJsObjectClassNameRefFieldNumber;
 const int Node::kCoarseTypeFieldNumber;
 const int Node::kScriptFilenameFieldNumber;
 const int Node::kScriptFilenameRefFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 Node::Node()
-  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
     protobuf_CoreDump_2eproto::InitDefaults();
   }
   SharedCtor();
   // @@protoc_insertion_point(constructor:mozilla.devtools.protobuf.Node)
 }
 Node::Node(const Node& from)
-  : ::google::protobuf::Message(),
+  : ::google::protobuf::MessageLite(),
       _internal_metadata_(NULL),
       _has_bits_(from._has_bits_),
       _cached_size_(0),
       edges_(from.edges_) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   if (from.has_allocationstack()) {
     allocationstack_ = new ::mozilla::devtools::protobuf::StackFrame(*from.allocationstack_);
   } else {
@@ -2223,21 +1847,16 @@ void Node::SharedDtor() {
   }
 }
 
 void Node::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* Node::descriptor() {
-  protobuf_CoreDump_2eproto::protobuf_AssignDescriptorsOnce();
-  return protobuf_CoreDump_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
-}
-
 const Node& Node::default_instance() {
   protobuf_CoreDump_2eproto::InitDefaults();
   return *internal_default_instance();
 }
 
 Node* Node::New(::google::protobuf::Arena* arena) const {
   Node* n = new Node;
   if (arena != NULL) {
@@ -2324,16 +1943,22 @@ void Node::Clear() {
   _has_bits_.Clear();
   _internal_metadata_.Clear();
 }
 
 bool Node::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
+  ::google::protobuf::io::LazyStringOutputStream unknown_fields_string(
+      ::google::protobuf::NewPermanentCallback(&_internal_metadata_,
+          &::google::protobuf::internal::InternalMetadataWithArenaLite::
+              mutable_unknown_fields));
+  ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
+      &unknown_fields_string, false);
   // @@protoc_insertion_point(parse_start:mozilla.devtools.protobuf.Node)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
       // optional uint64 id = 1;
       case 1: {
@@ -2482,18 +2107,18 @@ bool Node::MergePartialFromCodedStream(
         break;
       }
 
       default: {
       handle_unusual:
         if (tag == 0) {
           goto success;
         }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        DO_(::google::protobuf::internal::WireFormatLite::SkipField(
+            input, tag, &unknown_fields_stream));
         break;
       }
     }
   }
 success:
   // @@protoc_insertion_point(parse_success:mozilla.devtools.protobuf.Node)
   return true;
 failure:
@@ -2527,23 +2152,23 @@ void Node::SerializeWithCachedSizes(
   // optional uint64 size = 4;
   if (cached_has_bits & 0x00000004u) {
     ::google::protobuf::internal::WireFormatLite::WriteUInt64(4, this->size(), output);
   }
 
   // repeated .mozilla.devtools.protobuf.Edge edges = 5;
   for (unsigned int i = 0,
       n = static_cast<unsigned int>(this->edges_size()); i < n; i++) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+    ::google::protobuf::internal::WireFormatLite::WriteMessage(
       5, this->edges(static_cast<int>(i)), output);
   }
 
   // optional .mozilla.devtools.protobuf.StackFrame allocationStack = 6;
   if (cached_has_bits & 0x00000001u) {
-    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+    ::google::protobuf::internal::WireFormatLite::WriteMessage(
       6, *this->allocationstack_, output);
   }
 
   switch (JSObjectClassNameOrRef_case()) {
     case kJsObjectClassName:
       ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
         7, this->jsobjectclassname(), output);
       break;
@@ -2562,111 +2187,27 @@ void Node::SerializeWithCachedSizes(
       ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
         10, this->scriptfilename(), output);
       break;
     case kScriptFilenameRef:
       ::google::protobuf::internal::WireFormatLite::WriteUInt64(11, this->scriptfilenameref(), output);
       break;
     default: ;
   }
-  if (_internal_metadata_.have_unknown_fields()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
-  }
+  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
+                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
   // @@protoc_insertion_point(serialize_end:mozilla.devtools.protobuf.Node)
 }
 
-::google::protobuf::uint8* Node::InternalSerializeWithCachedSizesToArray(
-    bool deterministic, ::google::protobuf::uint8* target) const {
-  (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:mozilla.devtools.protobuf.Node)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  cached_has_bits = _has_bits_[0];
-  // optional uint64 id = 1;
-  if (cached_has_bits & 0x00000002u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(1, this->id(), target);
-  }
-
-  switch (TypeNameOrRef_case()) {
-    case kTypeName:
-      target =
-        ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
-          2, this->typename_(), target);
-      break;
-    case kTypeNameRef:
-      target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(3, this->typenameref(), target);
-      break;
-    default: ;
-  }
-  // optional uint64 size = 4;
-  if (cached_has_bits & 0x00000004u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(4, this->size(), target);
-  }
-
-  // repeated .mozilla.devtools.protobuf.Edge edges = 5;
-  for (unsigned int i = 0,
-      n = static_cast<unsigned int>(this->edges_size()); i < n; i++) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      InternalWriteMessageNoVirtualToArray(
-        5, this->edges(static_cast<int>(i)), deterministic, target);
-  }
-
-  // optional .mozilla.devtools.protobuf.StackFrame allocationStack = 6;
-  if (cached_has_bits & 0x00000001u) {
-    target = ::google::protobuf::internal::WireFormatLite::
-      InternalWriteMessageNoVirtualToArray(
-        6, *this->allocationstack_, deterministic, target);
-  }
-
-  switch (JSObjectClassNameOrRef_case()) {
-    case kJsObjectClassName:
-      target =
-        ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
-          7, this->jsobjectclassname(), target);
-      break;
-    case kJsObjectClassNameRef:
-      target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(8, this->jsobjectclassnameref(), target);
-      break;
-    default: ;
-  }
-  // optional uint32 coarseType = 9 [default = 0];
-  if (cached_has_bits & 0x00000008u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(9, this->coarsetype(), target);
-  }
-
-  switch (ScriptFilenameOrRef_case()) {
-    case kScriptFilename:
-      target =
-        ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
-          10, this->scriptfilename(), target);
-      break;
-    case kScriptFilenameRef:
-      target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(11, this->scriptfilenameref(), target);
-      break;
-    default: ;
-  }
-  if (_internal_metadata_.have_unknown_fields()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:mozilla.devtools.protobuf.Node)
-  return target;
-}
-
 size_t Node::ByteSizeLong() const {
 // @@protoc_insertion_point(message_byte_size_start:mozilla.devtools.protobuf.Node)
   size_t total_size = 0;
 
-  if (_internal_metadata_.have_unknown_fields()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
-  }
+  total_size += _internal_metadata_.unknown_fields().size();
+
   // repeated .mozilla.devtools.protobuf.Edge edges = 5;
   {
     unsigned int count = static_cast<unsigned int>(this->edges_size());
     total_size += 1UL * count;
     for (unsigned int i = 0; i < count; i++) {
       total_size +=
         ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
           this->edges(static_cast<int>(i)));
@@ -2762,29 +2303,19 @@ size_t Node::ByteSizeLong() const {
   }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = cached_size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
-void Node::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:mozilla.devtools.protobuf.Node)
-  GOOGLE_DCHECK_NE(&from, this);
-  const Node* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const Node>(
-          &from);
-  if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:mozilla.devtools.protobuf.Node)
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:mozilla.devtools.protobuf.Node)
-    MergeFrom(*source);
-  }
+void Node::CheckTypeAndMergeFrom(
+    const ::google::protobuf::MessageLite& from) {
+  MergeFrom(*::google::protobuf::down_cast<const Node*>(&from));
 }
 
 void Node::MergeFrom(const Node& from) {
 // @@protoc_insertion_point(class_specific_merge_from_start:mozilla.devtools.protobuf.Node)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
@@ -2842,23 +2373,16 @@ void Node::MergeFrom(const Node& from) {
       break;
     }
     case SCRIPTFILENAMEORREF_NOT_SET: {
       break;
     }
   }
 }
 
-void Node::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:mozilla.devtools.protobuf.Node)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
 void Node::CopyFrom(const Node& from) {
 // @@protoc_insertion_point(class_specific_copy_from_start:mozilla.devtools.protobuf.Node)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
 bool Node::IsInitialized() const {
@@ -2882,19 +2406,18 @@ void Node::InternalSwap(Node* other) {
   swap(_oneof_case_[1], other->_oneof_case_[1]);
   swap(ScriptFilenameOrRef_, other->ScriptFilenameOrRef_);
   swap(_oneof_case_[2], other->_oneof_case_[2]);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata Node::GetMetadata() const {
-  protobuf_CoreDump_2eproto::protobuf_AssignDescriptorsOnce();
-  return protobuf_CoreDump_2eproto::file_level_metadata[kIndexInFileMessages];
+::std::string Node::GetTypeName() const {
+  return "mozilla.devtools.protobuf.Node";
 }
 
 #if PROTOBUF_INLINE_NOT_IN_HEADERS
 // Node
 
 // optional uint64 id = 1;
 bool Node::has_id() const {
   return (_has_bits_[0] & 0x00000002u) != 0;
@@ -3448,25 +2971,25 @@ Node::ScriptFilenameOrRefCase Node::Scri
 
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int Edge::kReferentFieldNumber;
 const int Edge::kNameFieldNumber;
 const int Edge::kNameRefFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 Edge::Edge()
-  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
+  : ::google::protobuf::MessageLite(), _internal_metadata_(NULL) {
   if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
     protobuf_CoreDump_2eproto::InitDefaults();
   }
   SharedCtor();
   // @@protoc_insertion_point(constructor:mozilla.devtools.protobuf.Edge)
 }
 Edge::Edge(const Edge& from)
-  : ::google::protobuf::Message(),
+  : ::google::protobuf::MessageLite(),
       _internal_metadata_(NULL),
       _has_bits_(from._has_bits_),
       _cached_size_(0) {
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   referent_ = from.referent_;
   clear_has_EdgeNameOrRef();
   switch (from.EdgeNameOrRef_case()) {
     case kName: {
@@ -3501,21 +3024,16 @@ void Edge::SharedDtor() {
   }
 }
 
 void Edge::SetCachedSize(int size) const {
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
 }
-const ::google::protobuf::Descriptor* Edge::descriptor() {
-  protobuf_CoreDump_2eproto::protobuf_AssignDescriptorsOnce();
-  return protobuf_CoreDump_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
-}
-
 const Edge& Edge::default_instance() {
   protobuf_CoreDump_2eproto::InitDefaults();
   return *internal_default_instance();
 }
 
 Edge* Edge::New(::google::protobuf::Arena* arena) const {
   Edge* n = new Edge;
   if (arena != NULL) {
@@ -3554,16 +3072,22 @@ void Edge::Clear() {
   _has_bits_.Clear();
   _internal_metadata_.Clear();
 }
 
 bool Edge::MergePartialFromCodedStream(
     ::google::protobuf::io::CodedInputStream* input) {
 #define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
   ::google::protobuf::uint32 tag;
+  ::google::protobuf::io::LazyStringOutputStream unknown_fields_string(
+      ::google::protobuf::NewPermanentCallback(&_internal_metadata_,
+          &::google::protobuf::internal::InternalMetadataWithArenaLite::
+              mutable_unknown_fields));
+  ::google::protobuf::io::CodedOutputStream unknown_fields_stream(
+      &unknown_fields_string, false);
   // @@protoc_insertion_point(parse_start:mozilla.devtools.protobuf.Edge)
   for (;;) {
     ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
     tag = p.first;
     if (!p.second) goto handle_unusual;
     switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
       // optional uint64 referent = 1;
       case 1: {
@@ -3606,18 +3130,18 @@ bool Edge::MergePartialFromCodedStream(
         break;
       }
 
       default: {
       handle_unusual:
         if (tag == 0) {
           goto success;
         }
-        DO_(::google::protobuf::internal::WireFormat::SkipField(
-              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        DO_(::google::protobuf::internal::WireFormatLite::SkipField(
+            input, tag, &unknown_fields_stream));
         break;
       }
     }
   }
 success:
   // @@protoc_insertion_point(parse_success:mozilla.devtools.protobuf.Edge)
   return true;
 failure:
@@ -3643,64 +3167,27 @@ void Edge::SerializeWithCachedSizes(
       ::google::protobuf::internal::WireFormatLite::WriteBytesMaybeAliased(
         2, this->name(), output);
       break;
     case kNameRef:
       ::google::protobuf::internal::WireFormatLite::WriteUInt64(3, this->nameref(), output);
       break;
     default: ;
   }
-  if (_internal_metadata_.have_unknown_fields()) {
-    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
-        _internal_metadata_.unknown_fields(), output);
-  }
+  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
+                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
   // @@protoc_insertion_point(serialize_end:mozilla.devtools.protobuf.Edge)
 }
 
-::google::protobuf::uint8* Edge::InternalSerializeWithCachedSizesToArray(
-    bool deterministic, ::google::protobuf::uint8* target) const {
-  (void)deterministic; // Unused
-  // @@protoc_insertion_point(serialize_to_array_start:mozilla.devtools.protobuf.Edge)
-  ::google::protobuf::uint32 cached_has_bits = 0;
-  (void) cached_has_bits;
-
-  cached_has_bits = _has_bits_[0];
-  // optional uint64 referent = 1;
-  if (cached_has_bits & 0x00000001u) {
-    target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(1, this->referent(), target);
-  }
-
-  switch (EdgeNameOrRef_case()) {
-    case kName:
-      target =
-        ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
-          2, this->name(), target);
-      break;
-    case kNameRef:
-      target = ::google::protobuf::internal::WireFormatLite::WriteUInt64ToArray(3, this->nameref(), target);
-      break;
-    default: ;
-  }
-  if (_internal_metadata_.have_unknown_fields()) {
-    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
-        _internal_metadata_.unknown_fields(), target);
-  }
-  // @@protoc_insertion_point(serialize_to_array_end:mozilla.devtools.protobuf.Edge)
-  return target;
-}
-
 size_t Edge::ByteSizeLong() const {
 // @@protoc_insertion_point(message_byte_size_start:mozilla.devtools.protobuf.Edge)
   size_t total_size = 0;
 
-  if (_internal_metadata_.have_unknown_fields()) {
-    total_size +=
-      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
-        _internal_metadata_.unknown_fields());
-  }
+  total_size += _internal_metadata_.unknown_fields().size();
+
   // optional uint64 referent = 1;
   if (has_referent()) {
     total_size += 1 +
       ::google::protobuf::internal::WireFormatLite::UInt64Size(
         this->referent());
   }
 
   switch (EdgeNameOrRef_case()) {
@@ -3724,29 +3211,19 @@ size_t Edge::ByteSizeLong() const {
   }
   int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
   GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
   _cached_size_ = cached_size;
   GOOGLE_SAFE_CONCURRENT_WRITES_END();
   return total_size;
 }
 
-void Edge::MergeFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_merge_from_start:mozilla.devtools.protobuf.Edge)
-  GOOGLE_DCHECK_NE(&from, this);
-  const Edge* source =
-      ::google::protobuf::internal::DynamicCastToGenerated<const Edge>(
-          &from);
-  if (source == NULL) {
-  // @@protoc_insertion_point(generalized_merge_from_cast_fail:mozilla.devtools.protobuf.Edge)
-    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
-  } else {
-  // @@protoc_insertion_point(generalized_merge_from_cast_success:mozilla.devtools.protobuf.Edge)
-    MergeFrom(*source);
-  }
+void Edge::CheckTypeAndMergeFrom(
+    const ::google::protobuf::MessageLite& from) {
+  MergeFrom(*::google::protobuf::down_cast<const Edge*>(&from));
 }
 
 void Edge::MergeFrom(const Edge& from) {
 // @@protoc_insertion_point(class_specific_merge_from_start:mozilla.devtools.protobuf.Edge)
   GOOGLE_DCHECK_NE(&from, this);
   _internal_metadata_.MergeFrom(from._internal_metadata_);
   ::google::protobuf::uint32 cached_has_bits = 0;
   (void) cached_has_bits;
@@ -3764,23 +3241,16 @@ void Edge::MergeFrom(const Edge& from) {
       break;
     }
     case EDGENAMEORREF_NOT_SET: {
       break;
     }
   }
 }
 
-void Edge::CopyFrom(const ::google::protobuf::Message& from) {
-// @@protoc_insertion_point(generalized_copy_from_start:mozilla.devtools.protobuf.Edge)
-  if (&from == this) return;
-  Clear();
-  MergeFrom(from);
-}
-
 void Edge::CopyFrom(const Edge& from) {
 // @@protoc_insertion_point(class_specific_copy_from_start:mozilla.devtools.protobuf.Edge)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
 bool Edge::IsInitialized() const {
@@ -3796,19 +3266,18 @@ void Edge::InternalSwap(Edge* other) {
   swap(referent_, other->referent_);
   swap(EdgeNameOrRef_, other->EdgeNameOrRef_);
   swap(_oneof_case_[0], other->_oneof_case_[0]);
   swap(_has_bits_[0], other->_has_bits_[0]);
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(_cached_size_, other->_cached_size_);
 }
 
-::google::protobuf::Metadata Edge::GetMetadata() const {
-  protobuf_CoreDump_2eproto::protobuf_AssignDescriptorsOnce();
-  return protobuf_CoreDump_2eproto::file_level_metadata[kIndexInFileMessages];
+::std::string Edge::GetTypeName() const {
+  return "mozilla.devtools.protobuf.Edge";
 }
 
 #if PROTOBUF_INLINE_NOT_IN_HEADERS
 // Edge
 
 // optional uint64 referent = 1;
 bool Edge::has_referent() const {
   return (_has_bits_[0] & 0x00000001u) != 0;
--- a/devtools/shared/heapsnapshot/CoreDump.pb.h
+++ b/devtools/shared/heapsnapshot/CoreDump.pb.h
@@ -19,21 +19,20 @@
 #error regenerate this file with a newer version of protoc.
 #endif
 
 #include <google/protobuf/io/coded_stream.h>
 #include <google/protobuf/arena.h>
 #include <google/protobuf/arenastring.h>
 #include <google/protobuf/generated_message_table_driven.h>
 #include <google/protobuf/generated_message_util.h>
-#include <google/protobuf/metadata.h>
-#include <google/protobuf/message.h>
+#include <google/protobuf/metadata_lite.h>
+#include <google/protobuf/message_lite.h>
 #include <google/protobuf/repeated_field.h>  // IWYU pragma: export
 #include <google/protobuf/extension_set.h>  // IWYU pragma: export
-#include <google/protobuf/unknown_field_set.h>
 // @@protoc_insertion_point(includes)
 namespace mozilla {
 namespace devtools {
 namespace protobuf {
 class Edge;
 class EdgeDefaultTypeInternal;
 extern EdgeDefaultTypeInternal _Edge_default_instance_;
 class Metadata;
@@ -68,17 +67,17 @@ struct TableStruct {
   static void InitDefaultsImpl();
 };
 void AddDescriptors();
 void InitDefaults();
 }  // namespace protobuf_CoreDump_2eproto
 
 // ===================================================================
 
-class Metadata : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:mozilla.devtools.protobuf.Metadata) */ {
+class Metadata : public ::google::protobuf::MessageLite /* @@protoc_insertion_point(class_definition:mozilla.devtools.protobuf.Metadata) */ {
  public:
   Metadata();
   virtual ~Metadata();
 
   Metadata(const Metadata& from);
 
   inline Metadata& operator=(const Metadata& from) {
     CopyFrom(from);
@@ -94,24 +93,23 @@ class Metadata : public ::google::protob
     if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
       if (this != &from) InternalSwap(&from);
     } else {
       CopyFrom(from);
     }
     return *this;
   }
   #endif
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
+  inline const ::std::string& unknown_fields() const {
     return _internal_metadata_.unknown_fields();
   }
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
+  inline ::std::string* mutable_unknown_fields() {
     return _internal_metadata_.mutable_unknown_fields();
   }
 
-  static const ::google::protobuf::Descriptor* descriptor();
   static const Metadata& default_instance();
 
   static inline const Metadata* internal_default_instance() {
     return reinterpret_cast<const Metadata*>(
                &_Metadata_default_instance_);
   }
   static PROTOBUF_CONSTEXPR int const kIndexInFileMessages =
     0;
@@ -121,46 +119,45 @@ class Metadata : public ::google::protob
     a.Swap(&b);
   }
 
   // implements Message ----------------------------------------------
 
   inline Metadata* New() const PROTOBUF_FINAL { return New(NULL); }
 
   Metadata* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
-  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
-  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from)
+    PROTOBUF_FINAL;
   void CopyFrom(const Metadata& from);
   void MergeFrom(const Metadata& from);
   void Clear() PROTOBUF_FINAL;
   bool IsInitialized() const PROTOBUF_FINAL;
 
   size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
       ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
       ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
-  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  void DiscardUnknownFields();
   int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const PROTOBUF_FINAL;
+  void SetCachedSize(int size) const;
   void InternalSwap(Metadata* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
     return NULL;
   }
   inline void* MaybeArenaPtr() const {
     return NULL;
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
+  ::std::string GetTypeName() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
   // accessors -------------------------------------------------------
 
   // optional uint64 timeStamp = 1;
   bool has_timestamp() const;
   void clear_timestamp();
@@ -168,25 +165,25 @@ class Metadata : public ::google::protob
   ::google::protobuf::uint64 timestamp() const;
   void set_timestamp(::google::protobuf::uint64 value);
 
   // @@protoc_insertion_point(class_scope:mozilla.devtools.protobuf.Metadata)
  private:
   void set_has_timestamp();
   void clear_has_timestamp();
 
-  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::internal::InternalMetadataWithArenaLite _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
   mutable int _cached_size_;
   ::google::protobuf::uint64 timestamp_;
   friend struct protobuf_CoreDump_2eproto::TableStruct;
 };
 // -------------------------------------------------------------------
 
-class StackFrame_Data : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:mozilla.devtools.protobuf.StackFrame.Data) */ {
+class StackFrame_Data : public ::google::protobuf::MessageLite /* @@protoc_insertion_point(class_definition:mozilla.devtools.protobuf.StackFrame.Data) */ {
  public:
   StackFrame_Data();
   virtual ~StackFrame_Data();
 
   StackFrame_Data(const StackFrame_Data& from);
 
   inline StackFrame_Data& operator=(const StackFrame_Data& from) {
     CopyFrom(from);
@@ -202,24 +199,23 @@ class StackFrame_Data : public ::google:
     if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
       if (this != &from) InternalSwap(&from);
     } else {
       CopyFrom(from);
     }
     return *this;
   }
   #endif
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
+  inline const ::std::string& unknown_fields() const {
     return _internal_metadata_.unknown_fields();
   }
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
+  inline ::std::string* mutable_unknown_fields() {
     return _internal_metadata_.mutable_unknown_fields();
   }
 
-  static const ::google::protobuf::Descriptor* descriptor();
   static const StackFrame_Data& default_instance();
 
   enum SourceOrRefCase {
     kSource = 5,
     kSourceRef = 6,
     SOURCEORREF_NOT_SET = 0,
   };
 
@@ -241,46 +237,45 @@ class StackFrame_Data : public ::google:
     a.Swap(&b);
   }
 
   // implements Message ----------------------------------------------
 
   inline StackFrame_Data* New() const PROTOBUF_FINAL { return New(NULL); }
 
   StackFrame_Data* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
-  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
-  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from)
+    PROTOBUF_FINAL;
   void CopyFrom(const StackFrame_Data& from);
   void MergeFrom(const StackFrame_Data& from);
   void Clear() PROTOBUF_FINAL;
   bool IsInitialized() const PROTOBUF_FINAL;
 
   size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
       ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
       ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
-  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  void DiscardUnknownFields();
   int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const PROTOBUF_FINAL;
+  void SetCachedSize(int size) const;
   void InternalSwap(StackFrame_Data* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
     return NULL;
   }
   inline void* MaybeArenaPtr() const {
     return NULL;
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
+  ::std::string GetTypeName() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
   // accessors -------------------------------------------------------
 
   // optional .mozilla.devtools.protobuf.StackFrame parent = 2;
   bool has_parent() const;
   void clear_parent();
@@ -393,17 +388,17 @@ class StackFrame_Data : public ::google:
   inline bool has_SourceOrRef() const;
   void clear_SourceOrRef();
   inline void clear_has_SourceOrRef();
 
   inline bool has_FunctionDisplayNameOrRef() const;
   void clear_FunctionDisplayNameOrRef();
   inline void clear_has_FunctionDisplayNameOrRef();
 
-  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::internal::InternalMetadataWithArenaLite _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
   mutable int _cached_size_;
   ::mozilla::devtools::protobuf::StackFrame* parent_;
   ::google::protobuf::uint64 id_;
   ::google::protobuf::uint32 line_;
   ::google::protobuf::uint32 column_;
   bool issystem_;
   bool isselfhosted_;
@@ -418,17 +413,17 @@ class StackFrame_Data : public ::google:
     ::google::protobuf::uint64 functiondisplaynameref_;
   } FunctionDisplayNameOrRef_;
   ::google::protobuf::uint32 _oneof_case_[2];
 
   friend struct protobuf_CoreDump_2eproto::TableStruct;
 };
 // -------------------------------------------------------------------
 
-class StackFrame : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:mozilla.devtools.protobuf.StackFrame) */ {
+class StackFrame : public ::google::protobuf::MessageLite /* @@protoc_insertion_point(class_definition:mozilla.devtools.protobuf.StackFrame) */ {
  public:
   StackFrame();
   virtual ~StackFrame();
 
   StackFrame(const StackFrame& from);
 
   inline StackFrame& operator=(const StackFrame& from) {
     CopyFrom(from);
@@ -444,24 +439,23 @@ class StackFrame : public ::google::prot
     if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
       if (this != &from) InternalSwap(&from);
     } else {
       CopyFrom(from);
     }
     return *this;
   }
   #endif
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
+  inline const ::std::string& unknown_fields() const {
     return _internal_metadata_.unknown_fields();
   }
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
+  inline ::std::string* mutable_unknown_fields() {
     return _internal_metadata_.mutable_unknown_fields();
   }
 
-  static const ::google::protobuf::Descriptor* descriptor();
   static const StackFrame& default_instance();
 
   enum StackFrameTypeCase {
     kData = 1,
     kRef = 2,
     STACKFRAMETYPE_NOT_SET = 0,
   };
 
@@ -477,46 +471,45 @@ class StackFrame : public ::google::prot
     a.Swap(&b);
   }
 
   // implements Message ----------------------------------------------
 
   inline StackFrame* New() const PROTOBUF_FINAL { return New(NULL); }
 
   StackFrame* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
-  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
-  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from)
+    PROTOBUF_FINAL;
   void CopyFrom(const StackFrame& from);
   void MergeFrom(const StackFrame& from);
   void Clear() PROTOBUF_FINAL;
   bool IsInitialized() const PROTOBUF_FINAL;
 
   size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
       ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
       ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
-  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  void DiscardUnknownFields();
   int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const PROTOBUF_FINAL;
+  void SetCachedSize(int size) const;
   void InternalSwap(StackFrame* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
     return NULL;
   }
   inline void* MaybeArenaPtr() const {
     return NULL;
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
+  ::std::string GetTypeName() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
   typedef StackFrame_Data Data;
 
   // accessors -------------------------------------------------------
 
   // optional .mozilla.devtools.protobuf.StackFrame.Data data = 1;
@@ -540,31 +533,31 @@ class StackFrame : public ::google::prot
  private:
   void set_has_data();
   void set_has_ref();
 
   inline bool has_StackFrameType() const;
   void clear_StackFrameType();
   inline void clear_has_StackFrameType();
 
-  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::internal::InternalMetadataWithArenaLite _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
   mutable int _cached_size_;
   union StackFrameTypeUnion {
     StackFrameTypeUnion() {}
     ::mozilla::devtools::protobuf::StackFrame_Data* data_;
     ::google::protobuf::uint64 ref_;
   } StackFrameType_;
   ::google::protobuf::uint32 _oneof_case_[1];
 
   friend struct protobuf_CoreDump_2eproto::TableStruct;
 };
 // -------------------------------------------------------------------
 
-class Node : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:mozilla.devtools.protobuf.Node) */ {
+class Node : public ::google::protobuf::MessageLite /* @@protoc_insertion_point(class_definition:mozilla.devtools.protobuf.Node) */ {
  public:
   Node();
   virtual ~Node();
 
   Node(const Node& from);
 
   inline Node& operator=(const Node& from) {
     CopyFrom(from);
@@ -580,24 +573,23 @@ class Node : public ::google::protobuf::
     if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
       if (this != &from) InternalSwap(&from);
     } else {
       CopyFrom(from);
     }
     return *this;
   }
   #endif
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
+  inline const ::std::string& unknown_fields() const {
     return _internal_metadata_.unknown_fields();
   }
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
+  inline ::std::string* mutable_unknown_fields() {
     return _internal_metadata_.mutable_unknown_fields();
   }
 
-  static const ::google::protobuf::Descriptor* descriptor();
   static const Node& default_instance();
 
   enum TypeNameOrRefCase {
     kTypeName = 2,
     kTypeNameRef = 3,
     TYPENAMEORREF_NOT_SET = 0,
   };
 
@@ -625,46 +617,45 @@ class Node : public ::google::protobuf::
     a.Swap(&b);
   }
 
   // implements Message ----------------------------------------------
 
   inline Node* New() const PROTOBUF_FINAL { return New(NULL); }
 
   Node* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
-  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
-  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from)
+    PROTOBUF_FINAL;
   void CopyFrom(const Node& from);
   void MergeFrom(const Node& from);
   void Clear() PROTOBUF_FINAL;
   bool IsInitialized() const PROTOBUF_FINAL;
 
   size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
       ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
       ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
-  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  void DiscardUnknownFields();
   int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const PROTOBUF_FINAL;
+  void SetCachedSize(int size) const;
   void InternalSwap(Node* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
     return NULL;
   }
   inline void* MaybeArenaPtr() const {
     return NULL;
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
+  ::std::string GetTypeName() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
   // accessors -------------------------------------------------------
 
   // repeated .mozilla.devtools.protobuf.Edge edges = 5;
   int edges_size() const;
   void clear_edges();
@@ -800,17 +791,17 @@ class Node : public ::google::protobuf::
   inline bool has_JSObjectClassNameOrRef() const;
   void clear_JSObjectClassNameOrRef();
   inline void clear_has_JSObjectClassNameOrRef();
 
   inline bool has_ScriptFilenameOrRef() const;
   void clear_ScriptFilenameOrRef();
   inline void clear_has_ScriptFilenameOrRef();
 
-  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::internal::InternalMetadataWithArenaLite _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
   mutable int _cached_size_;
   ::google::protobuf::RepeatedPtrField< ::mozilla::devtools::protobuf::Edge > edges_;
   ::mozilla::devtools::protobuf::StackFrame* allocationstack_;
   ::google::protobuf::uint64 id_;
   ::google::protobuf::uint64 size_;
   ::google::protobuf::uint32 coarsetype_;
   union TypeNameOrRefUnion {
@@ -829,17 +820,17 @@ class Node : public ::google::protobuf::
     ::google::protobuf::uint64 scriptfilenameref_;
   } ScriptFilenameOrRef_;
   ::google::protobuf::uint32 _oneof_case_[3];
 
   friend struct protobuf_CoreDump_2eproto::TableStruct;
 };
 // -------------------------------------------------------------------
 
-class Edge : public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:mozilla.devtools.protobuf.Edge) */ {
+class Edge : public ::google::protobuf::MessageLite /* @@protoc_insertion_point(class_definition:mozilla.devtools.protobuf.Edge) */ {
  public:
   Edge();
   virtual ~Edge();
 
   Edge(const Edge& from);
 
   inline Edge& operator=(const Edge& from) {
     CopyFrom(from);
@@ -855,24 +846,23 @@ class Edge : public ::google::protobuf::
     if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
       if (this != &from) InternalSwap(&from);
     } else {
       CopyFrom(from);
     }
     return *this;
   }
   #endif
-  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
+  inline const ::std::string& unknown_fields() const {
     return _internal_metadata_.unknown_fields();
   }
-  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
+  inline ::std::string* mutable_unknown_fields() {
     return _internal_metadata_.mutable_unknown_fields();
   }
 
-  static const ::google::protobuf::Descriptor* descriptor();
   static const Edge& default_instance();
 
   enum EdgeNameOrRefCase {
     kName = 2,
     kNameRef = 3,
     EDGENAMEORREF_NOT_SET = 0,
   };
 
@@ -888,46 +878,45 @@ class Edge : public ::google::protobuf::
     a.Swap(&b);
   }
 
   // implements Message ----------------------------------------------
 
   inline Edge* New() const PROTOBUF_FINAL { return New(NULL); }
 
   Edge* New(::google::protobuf::Arena* arena) const PROTOBUF_FINAL;
-  void CopyFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
-  void MergeFrom(const ::google::protobuf::Message& from) PROTOBUF_FINAL;
+  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from)
+    PROTOBUF_FINAL;
   void CopyFrom(const Edge& from);
   void MergeFrom(const Edge& from);
   void Clear() PROTOBUF_FINAL;
   bool IsInitialized() const PROTOBUF_FINAL;
 
   size_t ByteSizeLong() const PROTOBUF_FINAL;
   bool MergePartialFromCodedStream(
       ::google::protobuf::io::CodedInputStream* input) PROTOBUF_FINAL;
   void SerializeWithCachedSizes(
       ::google::protobuf::io::CodedOutputStream* output) const PROTOBUF_FINAL;
-  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
-      bool deterministic, ::google::protobuf::uint8* target) const PROTOBUF_FINAL;
+  void DiscardUnknownFields();
   int GetCachedSize() const PROTOBUF_FINAL { return _cached_size_; }
   private:
   void SharedCtor();
   void SharedDtor();
-  void SetCachedSize(int size) const PROTOBUF_FINAL;
+  void SetCachedSize(int size) const;
   void InternalSwap(Edge* other);
   private:
   inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
     return NULL;
   }
   inline void* MaybeArenaPtr() const {
     return NULL;
   }
   public:
 
-  ::google::protobuf::Metadata GetMetadata() const PROTOBUF_FINAL;
+  ::std::string GetTypeName() const PROTOBUF_FINAL;
 
   // nested types ----------------------------------------------------
 
   // accessors -------------------------------------------------------
 
   // optional uint64 referent = 1;
   bool has_referent() const;
   void clear_referent();
@@ -964,17 +953,17 @@ class Edge : public ::google::protobuf::
   void clear_has_referent();
   void set_has_name();
   void set_has_nameref();
 
   inline bool has_EdgeNameOrRef() const;
   void clear_EdgeNameOrRef();
   inline void clear_has_EdgeNameOrRef();
 
-  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::internal::InternalMetadataWithArenaLite _internal_metadata_;
   ::google::protobuf::internal::HasBits<1> _has_bits_;
   mutable int _cached_size_;
   ::google::protobuf::uint64 referent_;
   union EdgeNameOrRefUnion {
     EdgeNameOrRefUnion() {}
     ::google::protobuf::internal::ArenaStringPtr name_;
     ::google::protobuf::uint64 nameref_;
   } EdgeNameOrRef_;
--- a/devtools/shared/heapsnapshot/CoreDump.proto
+++ b/devtools/shared/heapsnapshot/CoreDump.proto
@@ -52,16 +52,19 @@
 // be a reference to the first as the edgeNameRef oneof property whose value is
 // K.
 //
 // We would ordinarily abstract these de-duplicated strings with messages of
 // their own, but unfortunately, the protobuf compiler does not have a way to
 // inline a messsage within another message and the child message must be
 // referenced by pointer. This leads to extra mallocs that we wish to avoid.
 
+syntax = "proto2";
+
+option optimize_for = LITE_RUNTIME;
 
 package mozilla.devtools.protobuf;
 
 // A collection of metadata about this core dump.
 message Metadata {
     // Number of microseconds since midnight (00:00:00) 1 January 1970 UTC.
     optional uint64 timeStamp = 1;
 }