Skip to content

Commit

Permalink
[compiler] Add JSX inlining optimization (#30867)
Browse files Browse the repository at this point in the history
This adds an `InlineJsxTransform` optimization pass, toggled by the
`enableInlineJsxTransform` flag. When enabled, JSX will be transformed
into React Element object literals, preventing runtime overhead during
element creation.

TODO:
- [ ] Add conditionals to make transform PROD-only
- [ ] Make the React element symbol configurable so this works with
runtimes that support `react.element` or `react.transitional.element`
- [ ] Look into additional optimization to pass props spread through
directly if none of the properties are mutated

DiffTrain build for [5dcb009](5dcb009)
  • Loading branch information
jackpope committed Sep 18, 2024
1 parent a5e6d67 commit c0925f3
Show file tree
Hide file tree
Showing 34 changed files with 181 additions and 178 deletions.
2 changes: 1 addition & 1 deletion compiled/facebook-www/REVISION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8dfbd16fce9077ab4e5fe85a7b86fa7c97a5ae04
5dcb009760160c085496e943f76090d98528f971
2 changes: 1 addition & 1 deletion compiled/facebook-www/REVISION_TRANSFORMS
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8dfbd16fce9077ab4e5fe85a7b86fa7c97a5ae04
5dcb009760160c085496e943f76090d98528f971
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-dev.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -2000,7 +2000,7 @@ __DEV__ &&
exports.useTransition = function () {
return resolveDispatcher().useTransition();
};
exports.version = "19.0.0-www-classic-8dfbd16f-20240917";
exports.version = "19.0.0-www-classic-5dcb0097-20240918";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-dev.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -1980,7 +1980,7 @@ __DEV__ &&
exports.useTransition = function () {
return resolveDispatcher().useTransition();
};
exports.version = "19.0.0-www-modern-8dfbd16f-20240917";
exports.version = "19.0.0-www-modern-5dcb0097-20240918";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-prod.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -665,4 +665,4 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactSharedInternals.H.useTransition();
};
exports.version = "19.0.0-www-classic-8dfbd16f-20240917";
exports.version = "19.0.0-www-classic-5dcb0097-20240918";
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-prod.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -665,4 +665,4 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactSharedInternals.H.useTransition();
};
exports.version = "19.0.0-www-modern-8dfbd16f-20240917";
exports.version = "19.0.0-www-modern-5dcb0097-20240918";
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-profiling.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -669,7 +669,7 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactSharedInternals.H.useTransition();
};
exports.version = "19.0.0-www-classic-8dfbd16f-20240917";
exports.version = "19.0.0-www-classic-5dcb0097-20240918";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
2 changes: 1 addition & 1 deletion compiled/facebook-www/React-profiling.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -669,7 +669,7 @@ exports.useSyncExternalStore = function (
exports.useTransition = function () {
return ReactSharedInternals.H.useTransition();
};
exports.version = "19.0.0-www-modern-8dfbd16f-20240917";
exports.version = "19.0.0-www-modern-5dcb0097-20240918";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
6 changes: 3 additions & 3 deletions compiled/facebook-www/ReactART-dev.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -17026,11 +17026,11 @@ __DEV__ &&
(function () {
var internals = {
bundleType: 1,
version: "19.0.0-www-classic-8dfbd16f-20240917",
version: "19.0.0-www-classic-5dcb0097-20240918",
rendererPackageName: "react-art",
currentDispatcherRef: ReactSharedInternals,
findFiberByHostInstance: getInstanceFromNode,
reconcilerVersion: "19.0.0-www-classic-8dfbd16f-20240917"
reconcilerVersion: "19.0.0-www-classic-5dcb0097-20240918"
};
internals.overrideHookState = overrideHookState;
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
Expand Down Expand Up @@ -17064,7 +17064,7 @@ __DEV__ &&
exports.Shape = Shape;
exports.Surface = Surface;
exports.Text = Text;
exports.version = "19.0.0-www-classic-8dfbd16f-20240917";
exports.version = "19.0.0-www-classic-5dcb0097-20240918";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
6 changes: 3 additions & 3 deletions compiled/facebook-www/ReactART-dev.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -16472,11 +16472,11 @@ __DEV__ &&
(function () {
var internals = {
bundleType: 1,
version: "19.0.0-www-modern-8dfbd16f-20240917",
version: "19.0.0-www-modern-5dcb0097-20240918",
rendererPackageName: "react-art",
currentDispatcherRef: ReactSharedInternals,
findFiberByHostInstance: getInstanceFromNode,
reconcilerVersion: "19.0.0-www-modern-8dfbd16f-20240917"
reconcilerVersion: "19.0.0-www-modern-5dcb0097-20240918"
};
internals.overrideHookState = overrideHookState;
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
Expand Down Expand Up @@ -16510,7 +16510,7 @@ __DEV__ &&
exports.Shape = Shape;
exports.Surface = Surface;
exports.Text = Text;
exports.version = "19.0.0-www-modern-8dfbd16f-20240917";
exports.version = "19.0.0-www-modern-5dcb0097-20240918";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
6 changes: 3 additions & 3 deletions compiled/facebook-www/ReactART-prod.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -10853,13 +10853,13 @@ var slice = Array.prototype.slice,
})(React.Component);
var internals$jscomp$inline_1439 = {
bundleType: 0,
version: "19.0.0-www-classic-8dfbd16f-20240917",
version: "19.0.0-www-classic-5dcb0097-20240918",
rendererPackageName: "react-art",
currentDispatcherRef: ReactSharedInternals,
findFiberByHostInstance: function () {
return null;
},
reconcilerVersion: "19.0.0-www-classic-8dfbd16f-20240917"
reconcilerVersion: "19.0.0-www-classic-5dcb0097-20240918"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1440 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
Expand All @@ -10885,4 +10885,4 @@ exports.RadialGradient = RadialGradient;
exports.Shape = TYPES.SHAPE;
exports.Surface = Surface;
exports.Text = Text;
exports.version = "19.0.0-www-classic-8dfbd16f-20240917";
exports.version = "19.0.0-www-classic-5dcb0097-20240918";
6 changes: 3 additions & 3 deletions compiled/facebook-www/ReactART-prod.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -10367,13 +10367,13 @@ var slice = Array.prototype.slice,
})(React.Component);
var internals$jscomp$inline_1431 = {
bundleType: 0,
version: "19.0.0-www-modern-8dfbd16f-20240917",
version: "19.0.0-www-modern-5dcb0097-20240918",
rendererPackageName: "react-art",
currentDispatcherRef: ReactSharedInternals,
findFiberByHostInstance: function () {
return null;
},
reconcilerVersion: "19.0.0-www-modern-8dfbd16f-20240917"
reconcilerVersion: "19.0.0-www-modern-5dcb0097-20240918"
};
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
var hook$jscomp$inline_1432 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
Expand All @@ -10399,4 +10399,4 @@ exports.RadialGradient = RadialGradient;
exports.Shape = TYPES.SHAPE;
exports.Surface = Surface;
exports.Text = Text;
exports.version = "19.0.0-www-modern-8dfbd16f-20240917";
exports.version = "19.0.0-www-modern-5dcb0097-20240918";
30 changes: 14 additions & 16 deletions compiled/facebook-www/ReactDOM-dev.classic.js
Original file line number Diff line number Diff line change
Expand Up @@ -18576,43 +18576,41 @@ __DEV__ &&
: !1;
}
function getActiveElementDeep(containerInfo) {
var $jscomp$optchain$tmpm1504296778$1, $jscomp$nullish$tmp0;
var $jscomp$optchain$tmpm70183647$1, $jscomp$nullish$tmp0;
containerInfo =
null !=
($jscomp$nullish$tmp0 =
null == containerInfo
? void 0
: null ==
($jscomp$optchain$tmpm1504296778$1 =
containerInfo.ownerDocument)
($jscomp$optchain$tmpm70183647$1 = containerInfo.ownerDocument)
? void 0
: $jscomp$optchain$tmpm1504296778$1.defaultView)
: $jscomp$optchain$tmpm70183647$1.defaultView)
? $jscomp$nullish$tmp0
: window;
for (
$jscomp$optchain$tmpm1504296778$1 = getActiveElement(
$jscomp$optchain$tmpm70183647$1 = getActiveElement(
containerInfo.document
);
$jscomp$optchain$tmpm1504296778$1 instanceof
$jscomp$optchain$tmpm70183647$1 instanceof
containerInfo.HTMLIFrameElement;

) {
try {
var JSCompiler_inline_result =
"string" ===
typeof $jscomp$optchain$tmpm1504296778$1.contentWindow.location
.href;
typeof $jscomp$optchain$tmpm70183647$1.contentWindow.location.href;
} catch (err) {
JSCompiler_inline_result = !1;
}
if (JSCompiler_inline_result)
containerInfo = $jscomp$optchain$tmpm1504296778$1.contentWindow;
containerInfo = $jscomp$optchain$tmpm70183647$1.contentWindow;
else break;
$jscomp$optchain$tmpm1504296778$1 = getActiveElement(
$jscomp$optchain$tmpm70183647$1 = getActiveElement(
containerInfo.document
);
}
return $jscomp$optchain$tmpm1504296778$1;
return $jscomp$optchain$tmpm70183647$1;
}
function hasSelectionCapabilities(elem) {
var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
Expand Down Expand Up @@ -27776,11 +27774,11 @@ __DEV__ &&
: flushSyncErrorInBuildsThatSupportLegacyMode;
(function () {
var isomorphicReactPackageVersion = React.version;
if ("19.0.0-www-classic-8dfbd16f-20240917" !== isomorphicReactPackageVersion)
if ("19.0.0-www-classic-5dcb0097-20240918" !== isomorphicReactPackageVersion)
throw Error(
'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
(isomorphicReactPackageVersion +
"\n - react-dom: 19.0.0-www-classic-8dfbd16f-20240917\nLearn more: https://react.dev/warnings/version-mismatch")
"\n - react-dom: 19.0.0-www-classic-5dcb0097-20240918\nLearn more: https://react.dev/warnings/version-mismatch")
);
})();
("function" === typeof Map &&
Expand Down Expand Up @@ -27824,11 +27822,11 @@ __DEV__ &&
!(function () {
var internals = {
bundleType: 1,
version: "19.0.0-www-classic-8dfbd16f-20240917",
version: "19.0.0-www-classic-5dcb0097-20240918",
rendererPackageName: "react-dom",
currentDispatcherRef: ReactSharedInternals,
findFiberByHostInstance: getClosestInstanceFromNode,
reconcilerVersion: "19.0.0-www-classic-8dfbd16f-20240917"
reconcilerVersion: "19.0.0-www-classic-5dcb0097-20240918"
};
internals.overrideHookState = overrideHookState;
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
Expand Down Expand Up @@ -28481,7 +28479,7 @@ __DEV__ &&
exports.useFormStatus = function () {
return resolveDispatcher().useHostTransitionStatus();
};
exports.version = "19.0.0-www-classic-8dfbd16f-20240917";
exports.version = "19.0.0-www-classic-5dcb0097-20240918";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
28 changes: 14 additions & 14 deletions compiled/facebook-www/ReactDOM-dev.modern.js
Original file line number Diff line number Diff line change
Expand Up @@ -17910,41 +17910,41 @@ __DEV__ &&
: !1;
}
function getActiveElementDeep(containerInfo) {
var $jscomp$optchain$tmpm908513861$1, $jscomp$nullish$tmp0;
var $jscomp$optchain$tmp225122935$1, $jscomp$nullish$tmp0;
containerInfo =
null !=
($jscomp$nullish$tmp0 =
null == containerInfo
? void 0
: null ==
($jscomp$optchain$tmpm908513861$1 = containerInfo.ownerDocument)
($jscomp$optchain$tmp225122935$1 = containerInfo.ownerDocument)
? void 0
: $jscomp$optchain$tmpm908513861$1.defaultView)
: $jscomp$optchain$tmp225122935$1.defaultView)
? $jscomp$nullish$tmp0
: window;
for (
$jscomp$optchain$tmpm908513861$1 = getActiveElement(
$jscomp$optchain$tmp225122935$1 = getActiveElement(
containerInfo.document
);
$jscomp$optchain$tmpm908513861$1 instanceof
$jscomp$optchain$tmp225122935$1 instanceof
containerInfo.HTMLIFrameElement;

) {
try {
var JSCompiler_inline_result =
"string" ===
typeof $jscomp$optchain$tmpm908513861$1.contentWindow.location.href;
typeof $jscomp$optchain$tmp225122935$1.contentWindow.location.href;
} catch (err) {
JSCompiler_inline_result = !1;
}
if (JSCompiler_inline_result)
containerInfo = $jscomp$optchain$tmpm908513861$1.contentWindow;
containerInfo = $jscomp$optchain$tmp225122935$1.contentWindow;
else break;
$jscomp$optchain$tmpm908513861$1 = getActiveElement(
$jscomp$optchain$tmp225122935$1 = getActiveElement(
containerInfo.document
);
}
return $jscomp$optchain$tmpm908513861$1;
return $jscomp$optchain$tmp225122935$1;
}
function hasSelectionCapabilities(elem) {
var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
Expand Down Expand Up @@ -26891,11 +26891,11 @@ __DEV__ &&
return_targetInst = null;
(function () {
var isomorphicReactPackageVersion = React.version;
if ("19.0.0-www-modern-8dfbd16f-20240917" !== isomorphicReactPackageVersion)
if ("19.0.0-www-modern-5dcb0097-20240918" !== isomorphicReactPackageVersion)
throw Error(
'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' +
(isomorphicReactPackageVersion +
"\n - react-dom: 19.0.0-www-modern-8dfbd16f-20240917\nLearn more: https://react.dev/warnings/version-mismatch")
"\n - react-dom: 19.0.0-www-modern-5dcb0097-20240918\nLearn more: https://react.dev/warnings/version-mismatch")
);
})();
("function" === typeof Map &&
Expand Down Expand Up @@ -26938,11 +26938,11 @@ __DEV__ &&
!(function () {
var internals = {
bundleType: 1,
version: "19.0.0-www-modern-8dfbd16f-20240917",
version: "19.0.0-www-modern-5dcb0097-20240918",
rendererPackageName: "react-dom",
currentDispatcherRef: ReactSharedInternals,
findFiberByHostInstance: getClosestInstanceFromNode,
reconcilerVersion: "19.0.0-www-modern-8dfbd16f-20240917"
reconcilerVersion: "19.0.0-www-modern-5dcb0097-20240918"
};
internals.overrideHookState = overrideHookState;
internals.overrideHookStateDeletePath = overrideHookStateDeletePath;
Expand Down Expand Up @@ -27547,7 +27547,7 @@ __DEV__ &&
exports.useFormStatus = function () {
return resolveDispatcher().useHostTransitionStatus();
};
exports.version = "19.0.0-www-modern-8dfbd16f-20240917";
exports.version = "19.0.0-www-modern-5dcb0097-20240918";
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
"function" ===
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&
Expand Down
Loading

0 comments on commit c0925f3

Please sign in to comment.