Skip to content

Conversation

@eps1lon
Copy link
Collaborator

@eps1lon eps1lon commented Nov 17, 2025

The call stack was doubled in #35005 by adding a cache wrapper.

GCC was not able to inline the implementation. We can aid GCC with inlining by refactoring the return in the switch statement to a single return and multiple break.

We still need to limit the depth manually or rewrite as an iterative function since we're effectively turning iterative, async loops into recursive calls

test plan

bundled code diff for Turbopack shows visitAsyncNodeImpl has been inlined.

@meta-cla meta-cla bot added the CLA Signed label Nov 17, 2025
@github-actions github-actions bot added the React Core Team Opened by a member of the React Core Team label Nov 17, 2025
@react-sizebot
Copy link

react-sizebot commented Nov 17, 2025

Comparing: fb2177c...cc3d32f

Critical size changes

Includes critical production bundles, as well as any change greater than 2%:

Name +/- Base Current +/- gzip Base gzip Current gzip
oss-stable/react-dom/cjs/react-dom.production.js = 6.68 kB 6.68 kB = 1.83 kB 1.83 kB
oss-stable/react-dom/cjs/react-dom-client.production.js = 608.16 kB 608.16 kB = 107.65 kB 107.65 kB
oss-experimental/react-dom/cjs/react-dom.production.js = 6.69 kB 6.69 kB = 1.83 kB 1.83 kB
oss-experimental/react-dom/cjs/react-dom-client.production.js = 666.18 kB 666.18 kB = 117.35 kB 117.35 kB
facebook-www/ReactDOM-prod.classic.js = 693.31 kB 693.31 kB = 121.98 kB 121.98 kB
facebook-www/ReactDOM-prod.modern.js = 683.73 kB 683.73 kB = 120.36 kB 120.36 kB

Significant size changes

Includes any change greater than 0.2%:

Expand to show
Name +/- Base Current +/- gzip Base gzip Current gzip
oss-stable-semver/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js +0.35% 212.27 kB 213.01 kB +0.15% 38.73 kB 38.79 kB
oss-stable/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js +0.35% 212.27 kB 213.01 kB +0.15% 38.73 kB 38.79 kB
oss-experimental/react-server-dom-esm/cjs/react-server-dom-esm-server.node.development.js +0.35% 214.36 kB 215.10 kB +0.15% 39.19 kB 39.25 kB
oss-stable-semver/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.development.js +0.34% 218.68 kB 219.43 kB +0.15% 39.41 kB 39.47 kB
oss-stable/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.development.js +0.34% 218.68 kB 219.43 kB +0.15% 39.41 kB 39.47 kB
oss-experimental/react-server-dom-parcel/cjs/react-server-dom-parcel-server.node.development.js +0.34% 220.77 kB 221.52 kB +0.15% 39.86 kB 39.92 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js +0.33% 225.40 kB 226.14 kB +0.14% 40.49 kB 40.55 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js +0.33% 225.40 kB 226.14 kB +0.14% 40.49 kB 40.55 kB
oss-stable-semver/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +0.33% 226.60 kB 227.35 kB +0.14% 40.79 kB 40.84 kB
oss-stable/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +0.33% 226.60 kB 227.35 kB +0.14% 40.79 kB 40.84 kB
oss-stable-semver/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js +0.33% 226.65 kB 227.40 kB +0.14% 40.79 kB 40.84 kB
oss-stable/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js +0.33% 226.65 kB 227.40 kB +0.14% 40.79 kB 40.84 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js +0.33% 227.49 kB 228.23 kB +0.15% 40.95 kB 41.01 kB
oss-experimental/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +0.33% 228.69 kB 229.44 kB +0.16% 41.24 kB 41.30 kB
oss-experimental/react-server-dom-turbopack/cjs/react-server-dom-turbopack-server.node.development.js +0.33% 228.74 kB 229.49 kB +0.15% 41.24 kB 41.30 kB

Generated by 🚫 dangerJS against cc3d32f

@eps1lon eps1lon force-pushed the sebbie/11-17-_flight_reduce_risk_of_maximum_call_stack_exceeded_when_tracking_async_debug_info branch from 9dbe4bd to cc3d32f Compare November 17, 2025 11:43
@eps1lon eps1lon marked this pull request as ready for review November 17, 2025 11:51
Copy link
Collaborator

@sebmarkbage sebmarkbage left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It might also be worth putting a limit on the collection end so that we don't keep every step of an iterative loop in memory in the first place.

In addition to avoiding emitting an I/O entry for every iteration through a loop over a stream.

@eps1lon eps1lon merged commit 45bc3c9 into facebook:main Nov 17, 2025
240 of 241 checks passed
@eps1lon eps1lon deleted the sebbie/11-17-_flight_reduce_risk_of_maximum_call_stack_exceeded_when_tracking_async_debug_info branch November 17, 2025 17:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed React Core Team Opened by a member of the React Core Team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants