No bug - tagging b4d3227540c9ebc43d64aac6168fdca7019c22d8 with FIREFOX_BETA_126_BASE...
[gecko.git] / devtools / shared / specs / memory.js
blobb70999c9f18b1e8c560e8e89808177b70f4802c9
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4 "use strict";
6 const {
7   Arg,
8   RetVal,
9   types,
10   generateActorSpec,
11 } = require("resource://devtools/shared/protocol.js");
13 types.addDictType("AllocationsRecordingOptions", {
14   // The probability we sample any given allocation when recording
15   // allocations. Must be between 0.0 and 1.0. Defaults to 1.0, or sampling
16   // every allocation.
17   probability: "number",
19   // The maximum number of of allocation events to keep in the allocations
20   // log. If new allocations arrive, when we are already at capacity, the oldest
21   // allocation event is lost. This number must fit in a 32 bit signed integer.
22   maxLogLength: "number",
23 });
25 const memorySpec = generateActorSpec({
26   typeName: "memory",
28   /**
29    * The set of unsolicited events the MemoryActor emits that will be sent over
30    * the RDP (by protocol.js).
31    */
32   events: {
33     // Same format as the data passed to the
34     // `Debugger.Memory.prototype.onGarbageCollection` hook. See
35     // `js/src/doc/Debugger/Debugger.Memory.md` for documentation.
36     "garbage-collection": {
37       type: "garbage-collection",
38       data: Arg(0, "json"),
39     },
41     // Same data as the data from `getAllocations` -- only fired if
42     // `autoDrain` set during `startRecordingAllocations`.
43     allocations: {
44       type: "allocations",
45       data: Arg(0, "json"),
46     },
47   },
49   methods: {
50     attach: {
51       request: {},
52       response: {
53         type: RetVal("string"),
54       },
55     },
56     detach: {
57       request: {},
58       response: {
59         type: RetVal("string"),
60       },
61     },
62     getState: {
63       response: {
64         state: RetVal(0, "string"),
65       },
66     },
67     takeCensus: {
68       request: {},
69       response: RetVal("json"),
70     },
71     startRecordingAllocations: {
72       request: {
73         options: Arg(0, "nullable:AllocationsRecordingOptions"),
74       },
75       response: {
76         // Accept `nullable` in the case of server Gecko <= 37, handled on the front
77         value: RetVal(0, "nullable:number"),
78       },
79     },
80     stopRecordingAllocations: {
81       request: {},
82       response: {
83         // Accept `nullable` in the case of server Gecko <= 37, handled on the front
84         value: RetVal(0, "nullable:number"),
85       },
86     },
87     getAllocationsSettings: {
88       request: {},
89       response: {
90         options: RetVal(0, "json"),
91       },
92     },
93     getAllocations: {
94       request: {},
95       response: RetVal("json"),
96     },
97     forceGarbageCollection: {
98       request: {},
99       response: {},
100     },
101     forceCycleCollection: {
102       request: {},
103       response: {},
104     },
105     measure: {
106       request: {},
107       response: RetVal("json"),
108     },
109     residentUnique: {
110       request: {},
111       response: { value: RetVal("number") },
112     },
113     saveHeapSnapshot: {
114       request: {
115         boundaries: Arg(0, "nullable:json"),
116       },
117       response: {
118         snapshotId: RetVal("string"),
119       },
120     },
121   },
124 exports.memorySpec = memorySpec;