mirror of
https://github.com/zebrajr/react.git
synced 2025-12-07 12:20:38 +01:00
[compiler][be] Clean up nested function context in DCE (#31202)
Now that we rely on function context exclusively, let's clean up `HIRFunction.context` after DCE. This PR is in preparation of #31204, which would otherwise have unnecessary declarations (of context values that become entirely DCE'd) ' --- [//]: # (BEGIN SAPLING FOOTER) Stack created with [Sapling](https://sapling-scm.com). Best reviewed with [ReviewStack](https://reviewstack.dev/facebook/react/pull/31202). * __->__ #31202 * #31203 * #31201 * #31200 * #31521
This commit is contained in:
parent
0f3c62b466
commit
0480cdb58c
|
|
@ -58,6 +58,14 @@ export function deadCodeElimination(fn: HIRFunction): void {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constant propagation and DCE may have deleted or rewritten instructions
|
||||||
|
* that reference context variables.
|
||||||
|
*/
|
||||||
|
retainWhere(fn.context, contextVar =>
|
||||||
|
state.isIdOrNameUsed(contextVar.identifier),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
class State {
|
class State {
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ function Component() {
|
||||||
t0 = () => {
|
t0 = () => {
|
||||||
"worklet";
|
"worklet";
|
||||||
|
|
||||||
setCount((count_0) => count_0 + 1);
|
setCount(_temp);
|
||||||
};
|
};
|
||||||
$[0] = t0;
|
$[0] = t0;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -45,6 +45,9 @@ function Component() {
|
||||||
}
|
}
|
||||||
return t1;
|
return t1;
|
||||||
}
|
}
|
||||||
|
function _temp(count_0) {
|
||||||
|
return count_0 + 1;
|
||||||
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -55,11 +55,7 @@ function getNativeLogFunction(level) {
|
||||||
if (arguments.length === 1 && typeof arguments[0] === "string") {
|
if (arguments.length === 1 && typeof arguments[0] === "string") {
|
||||||
str = arguments[0];
|
str = arguments[0];
|
||||||
} else {
|
} else {
|
||||||
str = Array.prototype.map
|
str = Array.prototype.map.call(arguments, _temp).join(", ");
|
||||||
.call(arguments, function (arg) {
|
|
||||||
return inspect(arg, { depth: 10 });
|
|
||||||
})
|
|
||||||
.join(", ");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const firstArg = arguments[0];
|
const firstArg = arguments[0];
|
||||||
|
|
@ -92,6 +88,9 @@ function getNativeLogFunction(level) {
|
||||||
}
|
}
|
||||||
return t0;
|
return t0;
|
||||||
}
|
}
|
||||||
|
function _temp(arg) {
|
||||||
|
return inspect(arg, { depth: 10 });
|
||||||
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -34,7 +34,7 @@ function Component() {
|
||||||
t0 = function update() {
|
t0 = function update() {
|
||||||
"worklet";
|
"worklet";
|
||||||
|
|
||||||
setCount((count_0) => count_0 + 1);
|
setCount(_temp);
|
||||||
};
|
};
|
||||||
$[0] = t0;
|
$[0] = t0;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -51,6 +51,9 @@ function Component() {
|
||||||
}
|
}
|
||||||
return t1;
|
return t1;
|
||||||
}
|
}
|
||||||
|
function _temp(count_0) {
|
||||||
|
return count_0 + 1;
|
||||||
|
}
|
||||||
|
|
||||||
export const FIXTURE_ENTRYPOINT = {
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
fn: Component,
|
fn: Component,
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ function Component() {
|
||||||
let t0;
|
let t0;
|
||||||
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
||||||
t0 = () => {
|
t0 = () => {
|
||||||
setState((s) => s + 1);
|
setState(_temp);
|
||||||
};
|
};
|
||||||
$[0] = t0;
|
$[0] = t0;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -61,6 +61,9 @@ function Component() {
|
||||||
}
|
}
|
||||||
return t2;
|
return t2;
|
||||||
}
|
}
|
||||||
|
function _temp(s) {
|
||||||
|
return s + 1;
|
||||||
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ function Component() {
|
||||||
```javascript
|
```javascript
|
||||||
import { c as _c } from "react/compiler-runtime"; // @enableAssumeHooksFollowRulesOfReact @enableTransitivelyFreezeFunctionExpressions
|
import { c as _c } from "react/compiler-runtime"; // @enableAssumeHooksFollowRulesOfReact @enableTransitivelyFreezeFunctionExpressions
|
||||||
function Component() {
|
function Component() {
|
||||||
const $ = _c(8);
|
const $ = _c(7);
|
||||||
const items = useItems();
|
const items = useItems();
|
||||||
let t0;
|
let t0;
|
||||||
let t1;
|
let t1;
|
||||||
|
|
@ -47,35 +47,25 @@ function Component() {
|
||||||
if ($[0] !== items) {
|
if ($[0] !== items) {
|
||||||
t2 = Symbol.for("react.early_return_sentinel");
|
t2 = Symbol.for("react.early_return_sentinel");
|
||||||
bb0: {
|
bb0: {
|
||||||
let t3;
|
t0 = items.filter(_temp);
|
||||||
if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
|
|
||||||
t3 = (t4) => {
|
|
||||||
const [item] = t4;
|
|
||||||
return item.name != null;
|
|
||||||
};
|
|
||||||
$[4] = t3;
|
|
||||||
} else {
|
|
||||||
t3 = $[4];
|
|
||||||
}
|
|
||||||
t0 = items.filter(t3);
|
|
||||||
const filteredItems = t0;
|
const filteredItems = t0;
|
||||||
if (filteredItems.length === 0) {
|
if (filteredItems.length === 0) {
|
||||||
let t4;
|
let t3;
|
||||||
if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
|
if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
|
||||||
t4 = (
|
t3 = (
|
||||||
<div>
|
<div>
|
||||||
<span />
|
<span />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
$[5] = t4;
|
$[4] = t3;
|
||||||
} else {
|
} else {
|
||||||
t4 = $[5];
|
t3 = $[4];
|
||||||
}
|
}
|
||||||
t2 = t4;
|
t2 = t3;
|
||||||
break bb0;
|
break bb0;
|
||||||
}
|
}
|
||||||
|
|
||||||
t1 = filteredItems.map(_temp);
|
t1 = filteredItems.map(_temp2);
|
||||||
}
|
}
|
||||||
$[0] = items;
|
$[0] = items;
|
||||||
$[1] = t1;
|
$[1] = t1;
|
||||||
|
|
@ -90,19 +80,23 @@ function Component() {
|
||||||
return t2;
|
return t2;
|
||||||
}
|
}
|
||||||
let t3;
|
let t3;
|
||||||
if ($[6] !== t1) {
|
if ($[5] !== t1) {
|
||||||
t3 = <>{t1}</>;
|
t3 = <>{t1}</>;
|
||||||
$[6] = t1;
|
$[5] = t1;
|
||||||
$[7] = t3;
|
$[6] = t3;
|
||||||
} else {
|
} else {
|
||||||
t3 = $[7];
|
t3 = $[6];
|
||||||
}
|
}
|
||||||
return t3;
|
return t3;
|
||||||
}
|
}
|
||||||
function _temp(t0) {
|
function _temp2(t0) {
|
||||||
const [item_0] = t0;
|
const [item_0] = t0;
|
||||||
return <Stringify item={item_0} />;
|
return <Stringify item={item_0} />;
|
||||||
}
|
}
|
||||||
|
function _temp(t0) {
|
||||||
|
const [item] = t0;
|
||||||
|
return item.name != null;
|
||||||
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ function Component() {
|
||||||
let t0;
|
let t0;
|
||||||
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
||||||
t0 = () => {
|
t0 = () => {
|
||||||
setState((s) => s + 1);
|
setState(_temp);
|
||||||
};
|
};
|
||||||
$[0] = t0;
|
$[0] = t0;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -67,6 +67,9 @@ function Component() {
|
||||||
}
|
}
|
||||||
return t2;
|
return t2;
|
||||||
}
|
}
|
||||||
|
function _temp(s) {
|
||||||
|
return s + 1;
|
||||||
|
}
|
||||||
|
|
||||||
export const FIXTURE_ENTRYPOINT = {
|
export const FIXTURE_ENTRYPOINT = {
|
||||||
fn: Component,
|
fn: Component,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user