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

Method captureJavaScriptStackTraces

valdi/src/valdi/android/NativeBridge.cpp:1651–1673  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1649}
1650
1651jobject ValdiAndroid::NativeBridge::captureJavaScriptStackTraces( // NOLINT
1652 fbjni::alias_ref<fbjni::JClass> /* clazz */, // NOLINT
1653 jlong runtimeHandle,
1654 jlong timeoutMs) {
1655 Valdi::Ref<Valdi::ValueArray> retval;
1656
1657 auto runtime = getRuntime(runtimeHandle);
1658 if (runtime != nullptr) {
1659 // TODO(rjaber): Move to better duration
1660 const std::vector<Valdi::JavaScriptCapturedStacktrace> threadStacks =
1661 runtime->getJavaScriptRuntime()->captureStackTraces(std::chrono::steady_clock::duration(timeoutMs * 1000));
1662 retval = Valdi::ValueArray::make(threadStacks.size());
1663 for (size_t i = 0; i < threadStacks.size(); i++) { // NOLINT
1664 auto currentStack = threadStacks[i];
1665 auto threadStackPacked = Valdi::ValueArray::make(2);
1666 threadStackPacked->emplace(0, Valdi::Value(currentStack.getStackTrace()));
1667 threadStackPacked->emplace(1, Valdi::Value(static_cast<int32_t>(currentStack.getStatus())));
1668 retval->emplace(i, Valdi::Value(threadStackPacked));
1669 }
1670 }
1671
1672 return ValdiAndroid::toJavaObject(ValdiAndroid::JavaEnv(), retval).releaseObject();
1673}
1674
1675/**
1676 * Java->C++ entry point for getting all hashes of loaded modules.

Callers

nothing calls this directly

Calls 12

getRuntimeFunction · 0.85
durationFunction · 0.85
toJavaObjectFunction · 0.85
getJavaScriptRuntimeMethod · 0.80
getStatusMethod · 0.80
getStackTraceMethod · 0.65
releaseObjectMethod · 0.65
ValueClass · 0.50
JavaEnvClass · 0.50
captureStackTracesMethod · 0.45
sizeMethod · 0.45
emplaceMethod · 0.45

Tested by

no test coverage detected