Version 2.17.0-1.0.dev

Merge commit '28e958febb21f13f8486b6fe0a05ef8524b57808' into 'dev'
diff --git a/pkg/dds/lib/src/client.dart b/pkg/dds/lib/src/client.dart
index 5b3abdc..7aaeafd 100644
--- a/pkg/dds/lib/src/client.dart
+++ b/pkg/dds/lib/src/client.dart
@@ -97,13 +97,7 @@
   void _registerJsonRpcMethods() {
     _clientPeer.registerMethod('streamListen', (parameters) async {
       final streamId = parameters['streamId'].asString;
-      final includePrivates =
-          parameters['_includePrivateMembers'].asBoolOr(false);
-      await dds.streamManager.streamListen(
-        this,
-        streamId,
-        includePrivates: includePrivates,
-      );
+      await dds.streamManager.streamListen(this, streamId);
       return RPCResponses.success;
     });
 
diff --git a/pkg/dds/lib/src/stream_manager.dart b/pkg/dds/lib/src/stream_manager.dart
index be5b3f4..ee0bc49 100644
--- a/pkg/dds/lib/src/stream_manager.dart
+++ b/pkg/dds/lib/src/stream_manager.dart
@@ -170,19 +170,16 @@
   /// `streamListen` request for `stream` to the VM service.
   Future<void> streamListen(
     DartDevelopmentServiceClient? client,
-    String stream, {
-    bool? includePrivates,
-  }) async {
+    String stream,
+  ) async {
     await _streamSubscriptionMutex.runGuarded(
       () async {
         assert(stream.isNotEmpty);
-        bool streamNewlySubscribed = false;
         if (!streamListeners.containsKey(stream)) {
           // Initialize the list of clients for the new stream before we do
           // anything else to ensure multiple clients registering for the same
           // stream in quick succession doesn't result in multiple streamListen
           // requests being sent to the VM service.
-          streamNewlySubscribed = true;
           streamListeners[stream] = <DartDevelopmentServiceClient>[];
           if ((stream == kDebugStream && client == null) ||
               stream != kDebugStream) {
@@ -191,18 +188,12 @@
             final result =
                 await dds.vmServiceClient.sendRequest('streamListen', {
               'streamId': stream,
-              if (includePrivates != null)
-                '_includePrivateMembers': includePrivates,
             });
             assert(result['type'] == 'Success');
           }
         }
         if (streamListeners[stream]!.contains(client)) {
           throw kStreamAlreadySubscribedException;
-        } else if (!streamNewlySubscribed && includePrivates != null) {
-          await dds.vmServiceClient.sendRequest(
-              '_setStreamIncludePrivateMembers',
-              {'streamId': stream, 'includePrivateMembers': includePrivates});
         }
         if (client != null) {
           streamListeners[stream]!.add(client);
diff --git a/pkg/front_end/lib/src/fasta/incremental_compiler.dart b/pkg/front_end/lib/src/fasta/incremental_compiler.dart
index 31d90c59..6e01246 100644
--- a/pkg/front_end/lib/src/fasta/incremental_compiler.dart
+++ b/pkg/front_end/lib/src/fasta/incremental_compiler.dart
@@ -478,6 +478,7 @@
         convertedLibraries[builder] = [dillBuilder];
       }
     }
+    nextGoodKernelTarget.loader.clearSourceLibraryBuilders();
     if (changed) {
       // We suppress finalization errors because they have already been
       // reported.
@@ -521,6 +522,7 @@
     }
     nextGoodKernelTarget.loader.buildersCreatedWithReferences.clear();
     nextGoodKernelTarget.loader.hierarchyBuilder.clear();
+    nextGoodKernelTarget.loader.membersBuilder.clear();
     nextGoodKernelTarget.loader.referenceFromIndex = null;
     convertedLibraries = null;
     experimentalInvalidation = null;
@@ -2289,9 +2291,10 @@
 }
 
 class _InitializationFromComponent extends _InitializationStrategy {
-  Component componentToInitializeFrom;
+  Component? _componentToInitializeFrom;
 
-  _InitializationFromComponent(this.componentToInitializeFrom);
+  _InitializationFromComponent(Component componentToInitializeFrom)
+      : _componentToInitializeFrom = componentToInitializeFrom;
 
   @override
   Future<int> initialize(
@@ -2302,6 +2305,11 @@
       _ComponentProblems componentProblems,
       IncrementalSerializer? incrementalSerializer,
       RecorderForTesting? recorderForTesting) {
+    Component? componentToInitializeFrom = _componentToInitializeFrom;
+    _componentToInitializeFrom = null;
+    if (componentToInitializeFrom == null) {
+      throw const InitializeFromComponentError("Initialized twice.");
+    }
     dillLoadedData.ticker.logMs("About to initializeFromComponent");
 
     Component component = data.component = new Component(
diff --git a/pkg/front_end/lib/src/fasta/source/source_loader.dart b/pkg/front_end/lib/src/fasta/source/source_loader.dart
index 2d2cac8..afd4413 100644
--- a/pkg/front_end/lib/src/fasta/source/source_loader.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_loader.dart
@@ -247,6 +247,14 @@
     return _sourceLibraryBuilders!;
   }
 
+  void clearSourceLibraryBuilders() {
+    assert(
+        _sourceLibraryBuilders != null,
+        "Source library builder hasn't been computed yet. "
+        "The source libraries are in SourceLoader.resolveParts.");
+    _sourceLibraryBuilders!.clear();
+  }
+
   Iterable<Uri> get libraryImportUris => _builders.keys;
 
   void registerLibraryBuilder(LibraryBuilder libraryBuilder) {
diff --git a/pkg/front_end/test/incremental_suite.dart b/pkg/front_end/test/incremental_suite.dart
index 7c07a6a..c32d4c5 100644
--- a/pkg/front_end/test/incremental_suite.dart
+++ b/pkg/front_end/test/incremental_suite.dart
@@ -357,10 +357,11 @@
     }
     TestIncrementalCompiler compiler = new TestIncrementalCompiler(
         options, moduleSources.first, /* initializeFrom = */ null, outlineOnly);
-    IncrementalCompilerResult compilerResult = await compiler.computeDelta(
+    IncrementalCompilerResult? compilerResult = await compiler.computeDelta(
         entryPoints: moduleSources,
         trackNeededDillLibraries: trackNeededDillLibraries);
     Component c = compilerResult.component;
+    compilerResult = null;
     c.computeCanonicalNames();
     List<Library> wantedLibs = <Library>[];
     for (Library lib in c.libraries) {
@@ -669,13 +670,15 @@
       }
 
       Stopwatch stopwatch = new Stopwatch()..start();
-      IncrementalCompilerResult compilerResult = await compiler!.computeDelta(
+      IncrementalCompilerResult? compilerResult = await compiler!.computeDelta(
           entryPoints: entries,
           fullComponent:
               brandNewWorld ? false : (noFullComponent ? false : true),
           trackNeededDillLibraries: modulesToUse != null,
           simulateTransformer: world["simulateTransformer"]);
       component = compilerResult.component;
+      // compilerResult is null'ed out at the end to avoid any
+      // "artificial memory leak" on that account.
       if (outlineOnly && !skipOutlineBodyCheck) {
         for (Library lib in component!.libraries) {
           for (Class c in lib.classes) {
@@ -942,11 +945,13 @@
 
       if (!noFullComponent) {
         clearPrevErrorsEtc();
-        IncrementalCompilerResult compilerResult2 = await compiler.computeDelta(
-            entryPoints: entries,
-            fullComponent: true,
-            simulateTransformer: world["simulateTransformer"]);
+        IncrementalCompilerResult? compilerResult2 =
+            await compiler.computeDelta(
+                entryPoints: entries,
+                fullComponent: true,
+                simulateTransformer: world["simulateTransformer"]);
         component2 = compilerResult2.component;
+        compilerResult2 = null;
         Result<TestData>? result = performErrorAndWarningCheck(world, data,
             gotError, formattedErrors, gotWarning, formattedWarnings);
         if (result != null) return result;
@@ -1055,12 +1060,13 @@
         }
 
         Stopwatch stopwatch = new Stopwatch()..start();
-        IncrementalCompilerResult compilerResult3 =
+        IncrementalCompilerResult? compilerResult3 =
             await compilerFromScratch.computeDelta(
                 entryPoints: entries,
                 trackNeededDillLibraries: modulesToUse != null,
                 simulateTransformer: world["simulateTransformer"]);
         component3 = compilerResult3.component;
+        compilerResult3 = null;
         compilerFromScratch = null;
         Result<TestData>? result = performErrorAndWarningCheck(world, data,
             gotError, formattedErrors, gotWarning, formattedWarnings);
@@ -1112,6 +1118,7 @@
       }
 
       component = null;
+      compilerResult = null;
       component2 = null;
       component3 = null;
       // Dummy tree nodes can (currently) leak though the parent pointer.
diff --git a/pkg/front_end/test/spell_checking_list_tests.txt b/pkg/front_end/test/spell_checking_list_tests.txt
index 97ef414..3c9845d 100644
--- a/pkg/front_end/test/spell_checking_list_tests.txt
+++ b/pkg/front_end/test/spell_checking_list_tests.txt
@@ -716,6 +716,7 @@
 noo
 noted
 nottest
+null'ed
 numerator
 ob
 obool
diff --git a/pkg/vm/lib/transformations/ffi/native_type_cfe.dart b/pkg/vm/lib/transformations/ffi/native_type_cfe.dart
index bb73a94..ebbfe3b 100644
--- a/pkg/vm/lib/transformations/ffi/native_type_cfe.dart
+++ b/pkg/vm/lib/transformations/ffi/native_type_cfe.dart
@@ -81,11 +81,19 @@
   /// The size in bytes per [Abi].
   Map<Abi, int?> get size;
 
+  /// The size in bytes for [Abi].
+  int? getSizeFor(Abi abi);
+
   /// The alignment inside structs in bytes per [Abi].
   ///
   /// This is not the alignment on stack, this is only calculated in the VM.
   Map<Abi, int?> get alignment;
 
+  /// The alignment inside structs in bytes for [Abi].
+  ///
+  /// This is not the alignment on stack, this is only calculated in the VM.
+  int? getAlignmentFor(Abi abi);
+
   /// Generates a Constant representing the type which is consumed by the VM.
   ///
   /// Takes [transformer] to be able to lookup classes and methods.
@@ -120,6 +128,9 @@
   Map<Abi, int?> get alignment => throw reason;
 
   @override
+  int? getAlignmentFor(Abi abi) => throw reason;
+
+  @override
   Constant generateConstant(FfiTransformer transformer) => throw reason;
 
   @override
@@ -143,6 +154,9 @@
 
   @override
   Map<Abi, int?> get size => throw reason;
+
+  @override
+  int? getSizeFor(Abi abi) => throw reason;
 }
 
 class PrimitiveNativeTypeCfe implements NativeTypeCfe {
@@ -162,12 +176,25 @@
   }
 
   @override
+  int? getSizeFor(Abi abi) {
+    final int size = nativeTypeSizes[nativeType]!;
+    if (size == WORD_SIZE) {
+      return wordSize[abi];
+    }
+    return size;
+  }
+
+  @override
   Map<Abi, int> get alignment => {
         for (var abi in Abi.values)
-          abi: nonSizeAlignment[abi]![nativeType] ?? size[abi]!
+          abi: nonSizeAlignment[abi]![nativeType] ?? getSizeFor(abi)!
       };
 
   @override
+  int? getAlignmentFor(Abi abi) =>
+      nonSizeAlignment[abi]![nativeType] ?? getSizeFor(abi)!;
+
+  @override
   Constant generateConstant(FfiTransformer transformer) =>
       TypeLiteralConstant(InterfaceType(clazz, Nullability.nonNullable));
 
@@ -240,9 +267,15 @@
   Map<Abi, int?> get size => wordSize;
 
   @override
+  int? getSizeFor(Abi abi) => wordSize[abi];
+
+  @override
   Map<Abi, int?> get alignment => wordSize;
 
   @override
+  int? getAlignmentFor(Abi abi) => wordSize[abi];
+
+  @override
   Constant generateConstant(FfiTransformer transformer) => TypeLiteralConstant(
           InterfaceType(transformer.pointerClass, Nullability.nonNullable, [
         InterfaceType(
@@ -335,10 +368,16 @@
       layout.map((abi, layout) => MapEntry(abi, layout.size));
 
   @override
+  int? getSizeFor(Abi abi) => layout[abi]?.size;
+
+  @override
   Map<Abi, int?> get alignment =>
       layout.map((abi, layout) => MapEntry(abi, layout.alignment));
 
   @override
+  int? getAlignmentFor(Abi abi) => layout[abi]?.alignment;
+
+  @override
   Constant generateConstant(FfiTransformer transformer) =>
       TypeLiteralConstant(InterfaceType(clazz, Nullability.nonNullable));
 
@@ -424,8 +463,8 @@
     final offsets = <int?>[];
     int? structAlignment = 1;
     for (int i = 0; i < types.length; i++) {
-      final int? size = types[i].size[abi];
-      int? alignment = types[i].alignment[abi];
+      final int? size = types[i].getSizeFor(abi);
+      int? alignment = types[i].getAlignmentFor(abi);
       if (packing != null) {
         alignment = min(packing, alignment);
       }
@@ -459,8 +498,8 @@
     int? unionSize = 1;
     int? unionAlignment = 1;
     for (int i = 0; i < types.length; i++) {
-      final int? size = types[i].size[abi];
-      int? alignment = types[i].alignment[abi];
+      final int? size = types[i].getSizeFor(abi);
+      int? alignment = types[i].getAlignmentFor(abi);
       unionSize = max(unionSize, size);
       unionAlignment = max(unionAlignment, alignment);
     }
@@ -511,8 +550,14 @@
       elementType.size.map((abi, size) => MapEntry(abi, size * length));
 
   @override
+  int? getSizeFor(Abi abi) => elementType.getSizeFor(abi) * length;
+
+  @override
   Map<Abi, int?> get alignment => elementType.alignment;
 
+  @override
+  int? getAlignmentFor(Abi abi) => elementType.getAlignmentFor(abi);
+
   // Note that we flatten multi dimensional arrays.
   @override
   Constant generateConstant(FfiTransformer transformer) =>
@@ -592,14 +637,20 @@
   AbiSpecificNativeTypeCfe(this.abiSpecificTypes, this.clazz);
 
   @override
-  Map<Abi, int?> get size => abiSpecificTypes
-      .map((abi, nativeTypeCfe) => MapEntry(abi, nativeTypeCfe.size[abi]));
+  Map<Abi, int?> get size => abiSpecificTypes.map(
+      (abi, nativeTypeCfe) => MapEntry(abi, nativeTypeCfe.getSizeFor(abi)));
+
+  @override
+  int? getSizeFor(Abi abi) => abiSpecificTypes[abi]?.getSizeFor(abi);
 
   @override
   Map<Abi, int?> get alignment => abiSpecificTypes
       .map((abi, nativeTypeCfe) => MapEntry(abi, nativeTypeCfe.alignment[abi]));
 
   @override
+  int? getAlignmentFor(Abi abi) => abiSpecificTypes[abi]?.getAlignmentFor(abi);
+
+  @override
   Constant generateConstant(FfiTransformer transformer) =>
       TypeLiteralConstant(InterfaceType(clazz, Nullability.nonNullable));
 
diff --git a/runtime/lib/vmservice.cc b/runtime/lib/vmservice.cc
index 423381b..1f0744a 100644
--- a/runtime/lib/vmservice.cc
+++ b/runtime/lib/vmservice.cc
@@ -128,13 +128,10 @@
   return Object::null();
 }
 
-DEFINE_NATIVE_ENTRY(VMService_ListenStream, 0, 2) {
+DEFINE_NATIVE_ENTRY(VMService_ListenStream, 0, 1) {
 #ifndef PRODUCT
   GET_NON_NULL_NATIVE_ARGUMENT(String, stream_id, arguments->NativeArgAt(0));
-  GET_NON_NULL_NATIVE_ARGUMENT(Bool, include_privates,
-                               arguments->NativeArgAt(1));
-  bool result =
-      Service::ListenStream(stream_id.ToCString(), include_privates.value());
+  bool result = Service::ListenStream(stream_id.ToCString());
   return Bool::Get(result).ptr();
 #else
   return Object::null();
diff --git a/runtime/observatory/lib/service_common.dart b/runtime/observatory/lib/service_common.dart
index 5c62c48..236343c 100644
--- a/runtime/observatory/lib/service_common.dart
+++ b/runtime/observatory/lib/service_common.dart
@@ -149,11 +149,7 @@
       return new Future.error(exception);
     }
     String serial = (_requestSerial++).toString();
-    var request = new _WebSocketRequest(method, <String, dynamic>{
-      ...params,
-      // Include internal response data.
-      '_includePrivateMembers': true,
-    });
+    var request = new _WebSocketRequest(method, params);
     if ((_webSocket != null) && _webSocket!.isOpen) {
       // Already connected, send request immediately.
       _sendRequest(serial, request);
diff --git a/runtime/observatory_2/lib/service_common.dart b/runtime/observatory_2/lib/service_common.dart
index d6eba9b..b61f4a0 100644
--- a/runtime/observatory_2/lib/service_common.dart
+++ b/runtime/observatory_2/lib/service_common.dart
@@ -149,11 +149,7 @@
       return new Future.error(exception);
     }
     String serial = (_requestSerial++).toString();
-    var request = new _WebSocketRequest(method, <String, dynamic>{
-      ...params,
-      // Include internal response data.
-      '_includePrivateMembers': true,
-    });
+    var request = new _WebSocketRequest(method, params);
     if ((_webSocket != null) && _webSocket.isOpen) {
       // Already connected, send request immediately.
       _sendRequest(serial, request);
diff --git a/runtime/vm/bootstrap_natives.h b/runtime/vm/bootstrap_natives.h
index 1742e8d..ca3d03c 100644
--- a/runtime/vm/bootstrap_natives.h
+++ b/runtime/vm/bootstrap_natives.h
@@ -361,7 +361,7 @@
   V(VMService_OnStart, 0)                                                      \
   V(VMService_OnExit, 0)                                                       \
   V(VMService_OnServerAddressChange, 1)                                        \
-  V(VMService_ListenStream, 2)                                                 \
+  V(VMService_ListenStream, 1)                                                 \
   V(VMService_CancelStream, 1)                                                 \
   V(VMService_RequestAssets, 0)                                                \
   V(VMService_DecodeAssets, 1)                                                 \
diff --git a/runtime/vm/json_stream.cc b/runtime/vm/json_stream.cc
index 5194918..dfac508 100644
--- a/runtime/vm/json_stream.cc
+++ b/runtime/vm/json_stream.cc
@@ -37,9 +37,7 @@
       param_values_(NULL),
       num_params_(0),
       offset_(0),
-      count_(-1),
-      include_private_members_(true),
-      ignore_object_depth_(0) {
+      count_(-1) {
   ObjectIdRing* ring = NULL;
   Isolate* isolate = Isolate::Current();
   if (isolate != NULL) {
@@ -92,10 +90,6 @@
                  "request %s\n",
                  Dart::UptimeMillis(), main_port, isolate_name, method_);
   }
-  const char* kIncludePrivateMembersKey = "_includePrivateMembers";
-  if (HasParam(kIncludePrivateMembersKey)) {
-    include_private_members_ = ParamIs(kIncludePrivateMembersKey, "true");
-  }
   buffer()->Printf("{\"jsonrpc\":\"2.0\", \"result\":");
 }
 
@@ -374,61 +368,49 @@
   PrintProperty("id", id_zone_->GetServiceId(o));
 }
 
-#define PRIVATE_NAME_CHECK()                                                   \
-  if (!IsAllowableKey(name) || ignore_object_depth_ > 0) return
-
 void JSONStream::PrintProperty(const char* name, const ServiceEvent* event) {
-  PRIVATE_NAME_CHECK();
   PrintPropertyName(name);
   PrintValue(event);
 }
 
 void JSONStream::PrintProperty(const char* name, Breakpoint* bpt) {
-  PRIVATE_NAME_CHECK();
   PrintPropertyName(name);
   PrintValue(bpt);
 }
 
 void JSONStream::PrintProperty(const char* name, TokenPosition tp) {
-  PRIVATE_NAME_CHECK();
   PrintPropertyName(name);
   PrintValue(tp);
 }
 
 void JSONStream::PrintProperty(const char* name, Metric* metric) {
-  PRIVATE_NAME_CHECK();
   PrintPropertyName(name);
   PrintValue(metric);
 }
 
 void JSONStream::PrintProperty(const char* name, MessageQueue* queue) {
-  PRIVATE_NAME_CHECK();
   PrintPropertyName(name);
   PrintValue(queue);
 }
 
 void JSONStream::PrintProperty(const char* name, Isolate* isolate) {
-  PRIVATE_NAME_CHECK();
   PrintPropertyName(name);
   PrintValue(isolate);
 }
 
 void JSONStream::PrintProperty(const char* name,
                                const TimelineEvent* timeline_event) {
-  PRIVATE_NAME_CHECK();
   PrintPropertyName(name);
   PrintValue(timeline_event);
 }
 
 void JSONStream::PrintProperty(const char* name,
                                const TimelineEventBlock* timeline_event_block) {
-  PRIVATE_NAME_CHECK();
   PrintPropertyName(name);
   PrintValue(timeline_event_block);
 }
 
 void JSONStream::PrintfProperty(const char* name, const char* format, ...) {
-  PRIVATE_NAME_CHECK();
   va_list args;
   va_start(args, format);
   writer_.VPrintfProperty(name, format, args);
@@ -480,13 +462,11 @@
 }
 
 void JSONStream::PrintProperty(const char* name, const Object& o, bool ref) {
-  PRIVATE_NAME_CHECK();
   PrintPropertyName(name);
   PrintValue(o, ref);
 }
 
 void JSONStream::PrintPropertyVM(const char* name, bool ref) {
-  PRIVATE_NAME_CHECK();
   PrintPropertyName(name);
   PrintValueVM(ref);
 }
diff --git a/runtime/vm/json_stream.h b/runtime/vm/json_stream.h
index 5b37379..a00f266 100644
--- a/runtime/vm/json_stream.h
+++ b/runtime/vm/json_stream.h
@@ -9,7 +9,6 @@
 #include "platform/allocation.h"
 #include "platform/text_buffer.h"
 #include "vm/json_writer.h"
-#include "vm/os.h"
 #include "vm/service.h"
 #include "vm/token_position.h"
 
@@ -103,18 +102,6 @@
 
   void set_reply_port(Dart_Port port);
 
-  bool include_private_members() const { return include_private_members_; }
-  void set_include_private_members(bool include_private_members) {
-    include_private_members_ = include_private_members;
-  }
-
-  bool IsAllowableKey(const char* key) {
-    if (include_private_members_) {
-      return true;
-    }
-    return *key != '_';
-  }
-
   void SetParams(const char** param_keys,
                  const char** param_values,
                  intptr_t num_params);
@@ -180,41 +167,15 @@
   void PostNullReply(Dart_Port port);
 
   void OpenObject(const char* property_name = NULL) {
-    if (ignore_object_depth_ > 0 ||
-        (property_name != nullptr && !IsAllowableKey(property_name))) {
-      ignore_object_depth_++;
-      return;
-    }
     writer_.OpenObject(property_name);
   }
-  void CloseObject() {
-    if (ignore_object_depth_ > 0) {
-      ignore_object_depth_--;
-      return;
-    }
-    writer_.CloseObject();
-  }
-  void UncloseObject() {
-    // This should be updated to handle unclosing a private object if we need
-    // to handle that case, which we don't currently.
-    writer_.UncloseObject();
-  }
+  void CloseObject() { writer_.CloseObject(); }
+  void UncloseObject() { writer_.UncloseObject(); }
 
   void OpenArray(const char* property_name = NULL) {
-    if (ignore_object_depth_ > 0 ||
-        (property_name != nullptr && !IsAllowableKey(property_name))) {
-      ignore_object_depth_++;
-      return;
-    }
     writer_.OpenArray(property_name);
   }
-  void CloseArray() {
-    if (ignore_object_depth_ > 0) {
-      ignore_object_depth_--;
-      return;
-    }
-    writer_.CloseArray();
-  }
+  void CloseArray() { writer_.CloseArray(); }
 
   void PrintValueNull() { writer_.PrintValueNull(); }
   void PrintValueBool(bool b) { writer_.PrintValueBool(b); }
@@ -250,67 +211,46 @@
 
   void PrintServiceId(const Object& o);
 
-#define PRIVATE_NAME_CHECK()                                                   \
-  if (!IsAllowableKey(name) || ignore_object_depth_ > 0) {                     \
-    return;                                                                    \
-  }
-
   void PrintPropertyBool(const char* name, bool b) {
-    PRIVATE_NAME_CHECK();
     writer_.PrintPropertyBool(name, b);
   }
   void PrintProperty(const char* name, intptr_t i) {
-    PRIVATE_NAME_CHECK();
     writer_.PrintProperty(name, i);
   }
   void PrintProperty64(const char* name, int64_t i) {
-    PRIVATE_NAME_CHECK();
     writer_.PrintProperty64(name, i);
   }
   void PrintPropertyTimeMillis(const char* name, int64_t millis) {
-    PRIVATE_NAME_CHECK();
     writer_.PrintProperty64(name, millis);
   }
   void PrintPropertyTimeMicros(const char* name, int64_t micros) {
-    PRIVATE_NAME_CHECK();
     writer_.PrintProperty64(name, micros);
   }
   void PrintProperty(const char* name, double d) {
-    PRIVATE_NAME_CHECK();
     writer_.PrintProperty(name, d);
   }
   void PrintPropertyBase64(const char* name,
                            const uint8_t* bytes,
                            intptr_t length) {
-    PRIVATE_NAME_CHECK();
     writer_.PrintPropertyBase64(name, bytes, length);
   }
   void PrintProperty(const char* name, const char* s) {
-    PRIVATE_NAME_CHECK();
     writer_.PrintProperty(name, s);
   }
   bool PrintPropertyStr(const char* name,
                         const String& s,
                         intptr_t offset,
                         intptr_t count) {
-    if (!IsAllowableKey(name)) {
-      return false;
-    }
     return writer_.PrintPropertyStr(name, s, offset, count);
   }
   void PrintPropertyNoEscape(const char* name, const char* s) {
-    PRIVATE_NAME_CHECK();
     writer_.PrintPropertyNoEscape(name, s);
   }
   void PrintfProperty(const char* name, const char* format, ...)
       PRINTF_ATTRIBUTE(3, 4);
   void VPrintfProperty(const char* name, const char* format, va_list args) {
-    PRIVATE_NAME_CHECK();
     writer_.VPrintfProperty(name, format, args);
   }
-
-#undef PRIVATE_NAME_CHECK
-
   void PrintProperty(const char* name, const Object& o, bool ref = true);
 
   void PrintProperty(const char* name, const ServiceEvent* event);
@@ -345,8 +285,7 @@
   intptr_t offset_;
   intptr_t count_;
   int64_t setup_time_micros_;
-  bool include_private_members_;
-  intptr_t ignore_object_depth_;
+
   friend class JSONObject;
   friend class JSONArray;
   friend class TimelineEvent;
diff --git a/runtime/vm/service.cc b/runtime/vm/service.cc
index 2f2a075..9787cea 100644
--- a/runtime/vm/service.cc
+++ b/runtime/vm/service.cc
@@ -417,8 +417,7 @@
     &Service::timeline_stream, &Service::profiler_stream,
 };
 
-bool Service::ListenStream(const char* stream_id,
-                           bool include_private_members) {
+bool Service::ListenStream(const char* stream_id) {
   if (FLAG_trace_service) {
     OS::PrintErr("vm-service: starting stream '%s'\n", stream_id);
   }
@@ -426,7 +425,6 @@
   for (intptr_t i = 0; i < num_streams; i++) {
     if (strcmp(stream_id, streams_[i]->id()) == 0) {
       streams_[i]->set_enabled(true);
-      streams_[i]->set_include_private_members(include_private_members);
       return true;
     }
   }
@@ -1217,7 +1215,7 @@
 }
 
 void Service::HandleEvent(ServiceEvent* event, bool enter_safepoint) {
-  if (event->stream_info() != nullptr && !event->stream_info()->enabled()) {
+  if (event->stream_info() != NULL && !event->stream_info()->enabled()) {
     if (FLAG_warn_on_pause_with_no_debugger && event->IsPause()) {
       // If we are about to pause a running program which has no
       // debugger connected, tell the user about it.
@@ -1225,7 +1223,7 @@
     }
     // Ignore events when no one is listening to the event stream.
     return;
-  } else if (event->stream_info() != nullptr &&
+  } else if (event->stream_info() != NULL &&
              FLAG_warn_on_pause_with_no_debugger && event->IsPause()) {
     ReportPauseOnConsole(event);
   }
@@ -1233,12 +1231,8 @@
     return;
   }
   JSONStream js;
-  if (event->stream_info() != nullptr) {
-    js.set_include_private_members(
-        event->stream_info()->include_private_members());
-  }
   const char* stream_id = event->stream_id();
-  ASSERT(stream_id != nullptr);
+  ASSERT(stream_id != NULL);
   {
     JSONObject jsobj(&js);
     jsobj.AddProperty("jsonrpc", "2.0");
@@ -1554,31 +1548,6 @@
   }
 }
 
-static const MethodParameter* const
-    set_stream_include_private_members_params[] = {
-        NO_ISOLATE_PARAMETER,
-        new BoolParameter("includePrivateMembers", true),
-        nullptr,
-};
-
-static void SetStreamIncludePrivateMembers(Thread* thread, JSONStream* js) {
-  const char* stream_id = js->LookupParam("streamId");
-  if (stream_id == nullptr) {
-    PrintMissingParamError(js, "streamId");
-    return;
-  }
-  bool include_private_members =
-      BoolParameter::Parse(js->LookupParam("includePrivateMembers"), false);
-  intptr_t num_streams = sizeof(streams_) / sizeof(streams_[0]);
-  for (intptr_t i = 0; i < num_streams; i++) {
-    if (strcmp(stream_id, streams_[i]->id()) == 0) {
-      streams_[i]->set_include_private_members(include_private_members);
-      break;
-    }
-  }
-  PrintSuccess(js);
-}
-
 static void ActOnIsolateGroup(JSONStream* js,
                               std::function<void(IsolateGroup*)> visitor) {
   const String& prefix =
@@ -5710,8 +5679,6 @@
     set_library_debuggable_params },
   { "setName", SetName,
     set_name_params },
-  { "_setStreamIncludePrivateMembers", SetStreamIncludePrivateMembers,
-    set_stream_include_private_members_params },
   { "setTraceClassAllocation", SetTraceClassAllocation,
     set_trace_class_allocation_params },
   { "setVMName", SetVMName,
diff --git a/runtime/vm/service.h b/runtime/vm/service.h
index d6324d9..97baa4b 100644
--- a/runtime/vm/service.h
+++ b/runtime/vm/service.h
@@ -68,23 +68,16 @@
 
 class StreamInfo {
  public:
-  explicit StreamInfo(const char* id)
-      : id_(id), enabled_(false), include_private_members_(false) {}
+  explicit StreamInfo(const char* id) : id_(id), enabled_(false) {}
 
   const char* id() const { return id_; }
 
   void set_enabled(bool value) { enabled_ = value; }
   bool enabled() const { return enabled_; }
 
-  void set_include_private_members(bool value) {
-    include_private_members_ = value;
-  }
-  bool include_private_members() const { return include_private_members_; }
-
  private:
   const char* id_;
   bool enabled_;
-  bool include_private_members_;
 };
 
 class Service : public AllStatic {
@@ -181,7 +174,7 @@
   static StreamInfo timeline_stream;
   static StreamInfo profiler_stream;
 
-  static bool ListenStream(const char* stream_id, bool include_privates);
+  static bool ListenStream(const char* stream_id);
   static void CancelStream(const char* stream_id);
 
   static ObjectPtr RequestAssets();
diff --git a/sdk/lib/vmservice/vmservice.dart b/sdk/lib/vmservice/vmservice.dart
index ae16c86..5af3cfd 100644
--- a/sdk/lib/vmservice/vmservice.dart
+++ b/sdk/lib/vmservice/vmservice.dart
@@ -549,9 +549,7 @@
       return encodeRpcError(message, kStreamAlreadySubscribed);
     }
     if (!_isAnyClientSubscribed(streamId)) {
-      final includePrivates = message.params['_includePrivateMembers'] == true;
-      if (!serviceStreams.contains(streamId) &&
-          !_vmListenStream(streamId, includePrivates)) {
+      if (!serviceStreams.contains(streamId) && !_vmListenStream(streamId)) {
         return encodeRpcError(message, kInvalidParams,
             details: "streamListen: invalid 'streamId' parameter: ${streamId}");
       }
@@ -833,7 +831,7 @@
 
 /// Subscribe to a service stream.
 @pragma("vm:external-name", "VMService_ListenStream")
-external bool _vmListenStream(String streamId, bool include_privates);
+external bool _vmListenStream(String streamId);
 
 /// Cancel a subscription to a service stream.
 @pragma("vm:external-name", "VMService_CancelStream")
diff --git a/tools/VERSION b/tools/VERSION
index d4dc248..0477199 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 17
 PATCH 0
-PRERELEASE 0
+PRERELEASE 1
 PRERELEASE_PATCH 0
\ No newline at end of file