MCPcopy Create free account
hub / github.com/Snapchat/Valdi / JSValueRefHolder

Method JSValueRefHolder

valdi/src/valdi/runtime/JavaScript/JSValueRefHolder.cpp:17–36  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15namespace Valdi {
16
17JSValueRefHolder::JSValueRefHolder(IJavaScriptContext& jsContext,
18 const JSValue& jsValue,
19 const ReferenceInfo& referenceInfo,
20 JSExceptionTracker& exceptionTracker,
21 bool captureStackTrace)
22 : _context(Context::currentRoot()),
23 _taskScheduler(weakRef(jsContext.getTaskScheduler())),
24 _jsValueId(jsContext.stashJSValue(jsValue)),
25 _referenceInfo(referenceInfo) {
26 SC_ASSERT(_context != nullptr, "No context set when creating the JSValueRefHolder");
27 _context->insertDisposable(this);
28
29 if (captureStackTrace) {
30 if (exceptionTracker.getStackTraceProvider() == nullptr && jsContext.getListener() != nullptr) {
31 exceptionTracker.setStackTraceProvider(jsContext.getListener()->captureCurrentStackTrace());
32 }
33
34 _stackTraceProvider = exceptionTracker.getStackTraceProvider();
35 }
36}
37
38// JSValueRefHolder deallocation triggers a tsan warning, as it is possible that
39// the dispose() virtual method gets called while the holder is being destroyed.

Callers

nothing calls this directly

Calls 7

weakRefFunction · 0.85
stashJSValueMethod · 0.80
insertDisposableMethod · 0.80
setStackTraceProviderMethod · 0.80
getTaskSchedulerMethod · 0.45
getListenerMethod · 0.45

Tested by

no test coverage detected