about summary refs log tree commit diff
path: root/patches
diff options
context:
space:
mode:
authordan <dan.abramov@gmail.com>2023-11-01 15:31:33 +0000
committerGitHub <noreply@github.com>2023-11-01 15:31:33 +0000
commit85c26fb5a8eef0c60aba1b27d8d516034a7e508e (patch)
tree14ed36fb31c88f3cd4cff4d7bd347c73c17f7e0c /patches
parentadb5ce29614e21e1f061fb4be9c4a7887d0b6869 (diff)
downloadvoidsky-85c26fb5a8eef0c60aba1b27d8d516034a7e508e.tar.zst
Instrument module init in DEV (#1787)
Diffstat (limited to 'patches')
-rw-r--r--patches/metro-runtime+0.76.8.patch50
1 files changed, 50 insertions, 0 deletions
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();
+   }
+