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