1// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2// for details. All rights reserved. Use of this source code is governed by a
3// BSD-style license that can be found in the LICENSE file.
4
5#ifndef RUNTIME_VM_MALLOC_HOOKS_H_
6#define RUNTIME_VM_MALLOC_HOOKS_H_
7
8#include "vm/allocation.h"
9#include "vm/globals.h"
10
11namespace dart {
12
13class JSONObject;
14class Sample;
15
16// The number of frames that are generated by the malloc hooks and collection
17// of the stack trace. These frames are ignored when collecting the stack
18// trace for a memory allocation. If this number is incorrect, some tests in
19// malloc_hook_tests.cc might fail, particularily
20// StackTraceMallocHookLengthTest. If this value is updated, please make sure
21// that the MallocHooks test cases pass on all platforms.
22extern const intptr_t kSkipCount;
23
24class MallocHooks : public AllStatic {
25 public:
26 static void Init();
27 static void Cleanup();
28 static bool ProfilingEnabled();
29 static bool stack_trace_collection_enabled();
30 static void set_stack_trace_collection_enabled(bool enabled);
31 static void ResetStats();
32 static bool Active();
33 static void PrintToJSONObject(JSONObject* jsobj);
34 static Sample* GetSample(const void* ptr);
35
36 static intptr_t allocation_count();
37 static intptr_t heap_allocated_memory_in_bytes();
38};
39
40} // namespace dart
41
42#endif // RUNTIME_VM_MALLOC_HOOKS_H_
43