parseProfileCpuSamples function

CpuSamples? parseProfileCpuSamples(
  1. Map<String, dynamic> json
)

Parses a stored VM CPU profile, restoring untyped function names and origins.

VM NativeFunction.toJson emits a name without a type discriminator. The generic VM parser does not restore these objects on an artifact round-trip. Only explicit names from the artifact are restored here.

Implementation

CpuSamples? parseProfileCpuSamples(Map<String, dynamic> json) {
  final result = CpuSamples.parse(json);
  if (result == null) return null;
  final rawFunctions = json['functions'] as List? ?? const [];
  final functions = result.functions ?? const <ProfileFunction>[];
  for (var i = 0; i < functions.length; i++) {
    final raw = (rawFunctions[i] as Map)['function'];
    if (functions[i].function == null && raw is Map && raw['name'] is String) {
      functions[i].function = NativeFunction(name: raw['name'] as String);
    }
  }
  final rawSamples = json['samples'] as List? ?? const [];
  final samples = result.samples ?? const <CpuSample>[];
  result.samples = [
    for (var i = 0; i < samples.length; i++)
      ProfileCpuSample(
        samples[i],
        isolateId: (rawSamples[i] as Map)['profilerIsolateId'] as String?,
      ),
  ];
  return result;
}