forked from sbt/zinc
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathzprof.proto
More file actions
72 lines (58 loc) · 2.1 KB
/
Copy pathzprof.proto
File metadata and controls
72 lines (58 loc) · 2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
syntax = "proto3";
package sbt.internal.inc;
///////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////// ZINC PROF ///////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
// This protobuf scheme is inspired by https://github.com/google/pprof/blob/master/proto/profile.proto
// As pprof, it uses a string table and all the supposed strings in the format are represented as an
// index (int32) of that string table. This is done to minimize overhead in memory and disk.
message Profile {
repeated ZincRun runs = 1;
repeated string string_table = 2;
}
message ZincRun {
InitialChanges initial = 1;
repeated CycleInvalidation cycles = 3;
}
message CycleInvalidation {
repeated int32 invalidated = 1;
repeated int32 invalidatedByPackageObjects = 2;
repeated int32 initialSources = 3;
repeated int32 invalidatedSources = 4;
repeated int32 recompiledClasses = 5;
int64 startTimeNanos = 6; // Start time of compilation (UTC) as nanoseconds past the epoch
int64 compilationDurationNanos = 7; // Duration of the compilation profile in nanoseconds
repeated ApiChange changesAfterRecompilation = 8;
repeated InvalidationEvent events = 9;
repeated int32 nextInvalidations = 10;
bool shouldCompileIncrementally = 11;
}
message InvalidationEvent {
string kind = 1;
repeated int32 inputs = 2;
repeated int32 outputs = 3;
string reason = 4;
}
message Changes {
repeated int32 added = 1;
repeated int32 removed = 2;
repeated int32 modified = 3;
}
message ApiChange {
int32 modifiedClass = 1;
string reason = 2;
repeated UsedName usedNames = 3; // Can be empty if the change is not related to names
}
message InitialChanges {
Changes changes = 1;
repeated int32 removedProducts = 2;
repeated int32 binaryDependencies = 3;
repeated ApiChange externalChanges = 4;
}
message UsedName {
int32 name = 1;
repeated Scope scopes = 2;
}
message Scope {
int32 kind = 1;
}