• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "common_interfaces/heap/heap_visitor.h"
17 
18 #include "common_components/common_runtime/hooks.h"
19 #include "common_components/mutator/mutator.h"
20 
21 namespace common {
22 
VisitRoots(const RefFieldVisitor & visitor)23 void VisitRoots(const RefFieldVisitor &visitor)
24 {
25     VisitDynamicGlobalRoots(visitor);
26     VisitDynamicLocalRoots(visitor);
27     VisitDynamicConcurrentRoots(visitor);
28     VisitBaseRoots(visitor);
29 }
30 
VisitSTWRoots(const RefFieldVisitor & visitor)31 void VisitSTWRoots(const RefFieldVisitor &visitor)
32 {
33     VisitDynamicGlobalRoots(visitor);
34     VisitDynamicLocalRoots(visitor);
35     VisitBaseRoots(visitor);
36 }
37 
VisitConcurrentRoots(const RefFieldVisitor & visitor)38 void VisitConcurrentRoots(const RefFieldVisitor &visitor)
39 {
40     VisitDynamicConcurrentRoots(visitor);
41 }
42 
VisitWeakRoots(const WeakRefFieldVisitor & visitor)43 void VisitWeakRoots(const WeakRefFieldVisitor &visitor)
44 {
45     VisitDynamicWeakGlobalRoots(visitor);
46     VisitDynamicWeakGlobalRootsOld(visitor);
47     VisitDynamicWeakLocalRoots(visitor);
48 }
49 
VisitGlobalRoots(const RefFieldVisitor & visitor)50 void VisitGlobalRoots(const RefFieldVisitor &visitor)
51 {
52     VisitDynamicGlobalRoots(visitor);
53     VisitBaseRoots(visitor);
54 }
55 
VisitWeakGlobalRoots(const WeakRefFieldVisitor & visitor)56 void VisitWeakGlobalRoots(const WeakRefFieldVisitor &visitor)
57 {
58     VisitDynamicWeakGlobalRoots(visitor);
59     VisitDynamicWeakGlobalRootsOld(visitor);
60 }
61 
VisitPreforwardRoots(const RefFieldVisitor & visitor)62 void VisitPreforwardRoots(const RefFieldVisitor &visitor)
63 {
64     VisitDynamicPreforwardRoots(visitor);
65 }
66 
67 // Visit specific mutator's root.
VisitMutatorRoot(const RefFieldVisitor & visitor,Mutator & mutator)68 void VisitMutatorRoot(const RefFieldVisitor &visitor, Mutator &mutator)
69 {
70     if (mutator.GetEcmaVMPtr()) {
71         VisitDynamicThreadRoot(visitor, mutator.GetEcmaVMPtr());
72     }
73 }
74 
VisitWeakMutatorRoot(const WeakRefFieldVisitor & visitor,Mutator & mutator)75 void VisitWeakMutatorRoot(const WeakRefFieldVisitor &visitor, Mutator &mutator)
76 {
77     if (mutator.GetEcmaVMPtr()) {
78         VisitDynamicWeakThreadRoot(visitor, mutator.GetEcmaVMPtr());
79     }
80 }
81 
VisitMutatorPreforwardRoot(const RefFieldVisitor & visitor,Mutator & mutator)82 void VisitMutatorPreforwardRoot(const RefFieldVisitor &visitor, Mutator &mutator)
83 {
84     if (mutator.GetEcmaVMPtr()) {
85         VisitDynamicThreadPreforwardRoot(visitor, mutator.GetEcmaVMPtr());
86     }
87 }
88 }  // namespace common
89