1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2  * vim: set ts=8 sts=2 et sw=2 tw=80:
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_ClearEdgesTracer_h
8 #define gc_ClearEdgesTracer_h
9 
10 #include "js/TracingAPI.h"
11 
12 namespace js {
13 namespace gc {
14 
15 struct ClearEdgesTracer final : public GenericTracer {
16   explicit ClearEdgesTracer(JSRuntime* rt);
17   ClearEdgesTracer();
18 
19   template <typename T>
20   inline T* onEdge(T* thing);
21 
22   JSObject* onObjectEdge(JSObject* obj) override;
23   JSString* onStringEdge(JSString* str) override;
24   JS::Symbol* onSymbolEdge(JS::Symbol* sym) override;
25   JS::BigInt* onBigIntEdge(JS::BigInt* bi) override;
26   js::BaseScript* onScriptEdge(js::BaseScript* script) override;
27   js::Shape* onShapeEdge(js::Shape* shape) override;
28   js::BaseShape* onBaseShapeEdge(js::BaseShape* base) override;
29   js::GetterSetter* onGetterSetterEdge(js::GetterSetter* gs) override;
30   js::PropMap* onPropMapEdge(js::PropMap* map) override;
31   js::jit::JitCode* onJitCodeEdge(js::jit::JitCode* code) override;
32   js::Scope* onScopeEdge(js::Scope* scope) override;
33   js::RegExpShared* onRegExpSharedEdge(js::RegExpShared* shared) override;
34 };
35 
36 }  // namespace gc
37 }  // namespace js
38 
39 #endif  // gc_ClearEdgesTracer_h
40