1/*
2 * Copyright (c) Huawei Technologies Co., Ltd. 2020-2020. All rights reserved.
3 * Description: improve heap dump.
4 * Create: 2020/11/20
5 */
6
7#ifndef HEAPDUMP_H
8#define HEAPDUMP_H
9
10#include "ecma-globals.h"
11#include "ecma-helpers.h"
12#include "jerryscript-core.h"
13
14#define REF_CNT_SHIFT 6
15
16FILE* GetHeapdumpFile(void);
17bool GetHeapdumpTracing(void);
18void SetHeapdumpTraring(bool flag);
19
20#define LogHeapdump(...) do { fprintf(GetHeapdumpFile(), __VA_ARGS__); } while (0)
21
22typedef enum {
23  HEAPDUMP_OBJECT_SIMPLE,
24  HEAPDUMP_OBJECT_GLOBAL,
25  HEAPDUMP_OBJECT_ROOT
26} heapdump_object_flags_t;
27
28void LogHeapdumpInit(const char* filepath);
29void LogHeapdumpClose(void);
30
31void DumpInfoObject(ecma_object_t* object, heapdump_object_flags_t flags);
32void DumpInfoLexEnv(const ecma_object_t* object);
33void DumpInfoFunction(const ecma_object_t* object);
34void DumpPropertyPair(ecma_property_pair_t* pair);
35
36#endif
37