From 85c26fb5a8eef0c60aba1b27d8d516034a7e508e Mon Sep 17 00:00:00 2001 From: dan Date: Wed, 1 Nov 2023 15:31:33 +0000 Subject: Instrument module init in DEV (#1787) --- patches/metro-runtime+0.76.8.patch | 50 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 patches/metro-runtime+0.76.8.patch (limited to 'patches') diff --git a/patches/metro-runtime+0.76.8.patch b/patches/metro-runtime+0.76.8.patch new file mode 100644 index 000000000..65303775d --- /dev/null +++ b/patches/metro-runtime+0.76.8.patch @@ -0,0 +1,50 @@ +diff --git a/node_modules/metro-runtime/src/polyfills/require.js b/node_modules/metro-runtime/src/polyfills/require.js +index ce67cb4..eeeae84 100644 +--- a/node_modules/metro-runtime/src/polyfills/require.js ++++ b/node_modules/metro-runtime/src/polyfills/require.js +@@ -22,6 +22,13 @@ global.__c = clear; + global.__registerSegment = registerSegment; + var modules = clear(); + ++if (__DEV__) { ++ // Added by Dan for module init logging. ++ global.__INIT_LOGS__ = [] ++ var initModuleCounter = 0 ++ var initModuleStack = [] ++} ++ + // Don't use a Symbol here, it would pull in an extra polyfill with all sorts of + // additional stuff (e.g. Array.from). + const EMPTY = {}; +@@ -303,7 +310,30 @@ function loadModuleImplementation(moduleId, module) { + throw module.error; + } + if (__DEV__) { +- var Systrace = requireSystrace(); ++ // Added by Dan for module init logging. ++ var Systrace = { ++ beginEvent(label) { ++ let fullLabel = initModuleCounter++ + ' ' + label ++ global.__INIT_LOGS__.push( ++ ' '.repeat(initModuleStack.length) + ++ ' ENTER ' + fullLabel ++ ) ++ initModuleStack.push({ ++ fullLabel, ++ startTime: nativePerformanceNow(), ++ }) ++ }, ++ endEvent() { ++ const res = initModuleStack.pop() ++ const fullLabel = res.fullLabel ++ const startTime = res.startTime ++ const timeElapsed = Math.round(nativePerformanceNow() - startTime) ++ global.__INIT_LOGS__.push( ++ ' '.repeat(initModuleStack.length) + ++ ' LEAVE ' + fullLabel + ' [' + timeElapsed + 'ms]', ++ ) ++ } ++ }; + var Refresh = requireRefresh(); + } + -- cgit 1.4.1