Skip to content

Commit b540208

Browse files
committed
track when a special stack trace symbolication occurs
1 parent 7774c38 commit b540208

2 files changed

Lines changed: 26 additions & 2 deletions

File tree

front_end/core/host/RNPerfMetrics.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,15 @@ class RNPerfMetrics {
270270
});
271271
}
272272

273+
stackTraceParsedWithHermesFrame(frameType: string): void {
274+
this.sendEvent({
275+
eventName: 'StackTraceParsedWithHermesFrame',
276+
params: {
277+
frameType,
278+
},
279+
});
280+
}
281+
273282
panelShown(_panelName: string, _isLaunching?: boolean): void {
274283
// no-op
275284
// We only care about the "main" and "drawer" panels for now via panelShownInLocation(…)
@@ -443,10 +452,18 @@ export type StackTraceSymbolicationFailed = Readonly<{
443452
}>,
444453
}>;
445454

455+
export type StackTraceParsedWithHermesFrame = Readonly<{
456+
eventName: 'StackTraceParsedWithHermesFrame',
457+
params: Readonly<{
458+
frameType: string,
459+
}>,
460+
}>;
461+
446462
export type ReactNativeChromeDevToolsEvent =
447463
EntrypointLoadingStartedEvent|EntrypointLoadingFinishedEvent|DebuggerReadyEvent|BrowserVisibilityChangeEvent|
448464
BrowserErrorEvent|RemoteDebuggingTerminatedEvent|DeveloperResourceLoadingStartedEvent|
449465
DeveloperResourceLoadingFinishedEvent|FuseboxSetClientMetadataStartedEvent|FuseboxSetClientMetadataFinishedEvent|
450-
MemoryPanelActionStartedEvent|MemoryPanelActionFinishedEvent|PanelShownEvent|PanelClosedEvent|StackTraceSymbolicationFailed;
466+
MemoryPanelActionStartedEvent|MemoryPanelActionFinishedEvent|PanelShownEvent|PanelClosedEvent|
467+
StackTraceSymbolicationFailed|StackTraceParsedWithHermesFrame;
451468

452469
export type DecoratedReactNativeChromeDevToolsEvent = CommonEventFields&ReactNativeChromeDevToolsEvent;

front_end/panels/console/ErrorStackParser.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ export function parseSourcePositionsFromErrorStack(
7979

8080
const linkCandidate = line.substring(left, right);
8181
const splitResult = Common.ParsedURL.ParsedURL.splitLineAndColumn(linkCandidate);
82-
if (splitResult.url === '<anonymous>' || splitResult.url === 'native') {
82+
if (splitResult.url === '<anonymous>') {
8383
if (linkInfos.length && linkInfos[linkInfos.length - 1].isCallFrame && !linkInfos[linkInfos.length - 1].link) {
8484
// Combine builtin frames.
8585
linkInfos[linkInfos.length - 1].line += `\n${line}`;
@@ -110,6 +110,13 @@ export function parseSourcePositionsFromErrorStack(
110110
},
111111
});
112112
}
113+
114+
if (linkInfos?.length) {
115+
if (linkInfos.some(({line}) => /at .*\(native\)$/.test(line))) {
116+
Host.rnPerfMetrics.stackTraceParsedWithHermesFrame('native frame');
117+
}
118+
}
119+
113120
return linkInfos;
114121
}
115122

0 commit comments

Comments
 (0)