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 | |
11 | namespace dart { |
12 | |
13 | class JSONObject; |
14 | class 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. |
22 | extern const intptr_t kSkipCount; |
23 | |
24 | class 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 | |