upgradeToVersion method

  1. @override
Map<String, dynamic> upgradeToVersion(
  1. Map<String, dynamic> payload,
  2. int oldVersion
)
override

Implementation

@override
Map<String, dynamic> upgradeToVersion(
  Map<String, dynamic> payload,
  int oldVersion,
) {
  assert(oldVersion < version);
  assert(oldVersion == 1);
  final updatedPayload = Map<String, dynamic>.of(payload);
  updatedPayload['version'] = version;
  final oldData = (payload['data'] as List).map((e) => _OldData(e));
  updatedPayload['data'] = [
    for (final data in oldData)
      {
        'type': 'ClassHeapStats',
        'class': <String, dynamic>{
          'type': '@Class',
          ...data.class_,
        },
        'bytesCurrent': data.bytesCurrent,
        'accumulatedSize': data.bytesDelta,
        'instancesCurrent': data.instancesCurrent,
        'instancesAccumulated': data.instancesDelta,
        // new and old space data is just reported as a list of ints
        '_new': <int>[
          // # of instances in new space.
          data.instancesCurrent,
          // shallow memory consumption in new space.
          data.bytesCurrent,
          // external memory consumption.
          0,
        ],
        // We'll just fudge the old space numbers.
        '_old': const <int>[0, 0, 0],
      },
  ];
  return updatedPayload;
}