xref: /aosp_15_r20/external/skia/src/sksl/tracing/SkSLTraceHook.cpp (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1 /*
2  * Copyright 2023 Google LLC
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #include "src/sksl/tracing/SkSLDebugTracePriv.h"
9 #include "src/sksl/tracing/SkSLTraceHook.h"
10 
11 namespace SkSL {
12 
Make(std::vector<TraceInfo> * traceInfo)13 std::unique_ptr<Tracer> Tracer::Make(std::vector<TraceInfo>* traceInfo) {
14     auto hook = std::make_unique<Tracer>();
15     hook->fTraceInfo = traceInfo;
16     return hook;
17 }
18 
line(int lineNum)19 void Tracer::line(int lineNum) {
20     fTraceInfo->push_back({TraceInfo::Op::kLine, /*data=*/{lineNum, 0}});
21 }
var(int slot,int32_t val)22 void Tracer::var(int slot, int32_t val) {
23     fTraceInfo->push_back({TraceInfo::Op::kVar, /*data=*/{slot, val}});
24 }
enter(int fnIdx)25 void Tracer::enter(int fnIdx) {
26     fTraceInfo->push_back({TraceInfo::Op::kEnter, /*data=*/{fnIdx, 0}});
27 }
exit(int fnIdx)28 void Tracer::exit(int fnIdx) {
29     fTraceInfo->push_back({TraceInfo::Op::kExit, /*data=*/{fnIdx, 0}});
30 }
scope(int delta)31 void Tracer::scope(int delta) {
32     fTraceInfo->push_back({TraceInfo::Op::kScope, /*data=*/{delta, 0}});
33 }
34 
35 }  // namespace SkSL
36