Line data Source code
1 : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 : * vim: set ts=8 sts=4 et sw=4 tw=99:
3 : * This Source Code Form is subject to the terms of the Mozilla Public
4 : * License, v. 2.0. If a copy of the MPL was not distributed with this
5 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 :
7 : #ifndef gc_GCTrace_h
8 : #define gc_GCTrace_h
9 :
10 : #include "gc/Heap.h"
11 :
12 : namespace js {
13 :
14 : class ObjectGroup;
15 :
16 : namespace gc {
17 :
18 : #ifdef JS_GC_TRACE
19 :
20 : extern MOZ_MUST_USE bool InitTrace(GCRuntime& gc);
21 : extern void FinishTrace();
22 : extern bool TraceEnabled();
23 : extern void TraceNurseryAlloc(Cell* thing, size_t size);
24 : extern void TraceTenuredAlloc(Cell* thing, AllocKind kind);
25 : extern void TraceCreateObject(JSObject* object);
26 : extern void TraceMinorGCStart();
27 : extern void TracePromoteToTenured(Cell* src, Cell* dst);
28 : extern void TraceMinorGCEnd();
29 : extern void TraceMajorGCStart();
30 : extern void TraceTenuredFinalize(Cell* thing);
31 : extern void TraceMajorGCEnd();
32 : extern void TraceTypeNewScript(js::ObjectGroup* group);
33 :
34 : #else
35 :
36 4 : inline MOZ_MUST_USE bool InitTrace(GCRuntime& gc) { return true; }
37 0 : inline void FinishTrace() {}
38 115 : inline bool TraceEnabled() { return false; }
39 34752 : inline void TraceNurseryAlloc(Cell* thing, size_t size) {}
40 450423 : inline void TraceTenuredAlloc(Cell* thing, AllocKind kind) {}
41 168828 : inline void TraceCreateObject(JSObject* object) {}
42 24 : inline void TraceMinorGCStart() {}
43 22681 : inline void TracePromoteToTenured(Cell* src, Cell* dst) {}
44 24 : inline void TraceMinorGCEnd() {}
45 3 : inline void TraceMajorGCStart() {}
46 0 : inline void TraceTenuredFinalize(Cell* thing) {}
47 3 : inline void TraceMajorGCEnd() {}
48 195 : inline void TraceTypeNewScript(js::ObjectGroup* group) {}
49 :
50 : #endif
51 :
52 : } /* namespace gc */
53 : } /* namespace js */
54 :
55 : #endif
|