forked from microsoft/hermes-windows
-
Notifications
You must be signed in to change notification settings - Fork 0
/
GCExecTrace.cpp
45 lines (40 loc) · 1.23 KB
/
GCExecTrace.cpp
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
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#include "hermes/VM/GCExecTrace.h"
#include <hermes/Support/JSONEmitter.h>
namespace hermes {
namespace vm {
#ifdef HERMESVM_API_TRACE_DEBUG
void GCExecTrace::emit(::hermes::JSONEmitter &json) const {
json.emitKey("gcExecTrace");
json.openArray();
for (const auto &gcRec : gcs_) {
json.openDict();
json.emitKeyValue("isYG", gcRec.isYG);
json.emitKeyValue("ygUsedBefore", gcRec.ygUsedBefore);
json.emitKeyValue("ygUsedAfter", gcRec.ygUsedAfter);
json.emitKeyValue("ogUsedBefore", gcRec.ogUsedBefore);
json.emitKeyValue("ogUsedAfter", gcRec.ogUsedAfter);
if (gcRec.isYG) {
json.emitKey("ygAllocs");
json.openArray();
for (auto &alloc : gcRec.allocSizes) {
json.openDict();
json.emitKeyValue("kind", cellKindStr(std::get<0>(alloc)));
json.emitKeyValue("sz", std::get<1>(alloc));
json.emitKeyValue("str", std::get<2>(alloc));
json.closeDict();
}
json.closeArray();
}
json.closeDict();
}
json.closeArray();
}
#endif
} // namespace vm
} // namespace hermes