Skip to content

Commit bc0fa9e

Browse files
committed
[Fiber] Use a safer strategy to track the last precedence (#28110)
Uses a safer strategy to track the last precedence to avoid the need to consistently remember to preprend `'p'` to the precedence value DiffTrain build for [1c958aa](1c958aa)
1 parent 52a1078 commit bc0fa9e

13 files changed

+113
-89
lines changed

compiled/facebook-www/REVISION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
766eac46bb52bda28f87c11740214a4444ca881b
1+
1c958aa4abf9e6b638489b1d73cdb1b6dc7c3ab6

compiled/facebook-www/React-dev.classic.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ if (__DEV__) {
2424
) {
2525
__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());
2626
}
27-
var ReactVersion = "18.3.0-www-classic-482168c3";
27+
var ReactVersion = "18.3.0-www-classic-2277e96d";
2828

2929
// ATTENTION
3030
// When adding new symbols to this file,

compiled/facebook-www/ReactART-dev.modern.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ if (__DEV__) {
6666
return self;
6767
}
6868

69-
var ReactVersion = "18.3.0-www-modern-2cff546f";
69+
var ReactVersion = "18.3.0-www-modern-416a65ea";
7070

7171
var LegacyRoot = 0;
7272
var ConcurrentRoot = 1;

compiled/facebook-www/ReactDOM-dev.classic.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35039,7 +35039,7 @@ if (__DEV__) {
3503935039
return root;
3504035040
}
3504135041

35042-
var ReactVersion = "18.3.0-www-classic-8a83edec";
35042+
var ReactVersion = "18.3.0-www-classic-dedd8149";
3504335043

3504435044
function createPortal$1(
3504535045
children,
@@ -45535,7 +45535,13 @@ if (__DEV__) {
4553545535
unsuspend();
4553645536
}
4553745537
}
45538-
} // This is typecast to non-null because it will always be set before read.
45538+
} // We use a value that is type distinct from precedence to track which one is last.
45539+
// This ensures there is no collision with user defined precedences. Normally we would
45540+
// just track this in module scope but since the precedences are tracked per HoistableRoot
45541+
// we need to associate it to something other than a global scope hence why we try to
45542+
// colocate it with the map of precedences in the first place
45543+
45544+
var LAST_PRECEDENCE = null; // This is typecast to non-null because it will always be set before read.
4553945545
// it is important that this not be used except when the stack guarantees it exists.
4554045546
// Currentlyt his is only during insertSuspendedStylesheet.
4554145547

@@ -45585,28 +45591,28 @@ if (__DEV__) {
4558545591
// and will be hoisted by the Fizz runtime imminently.
4558645592
node.getAttribute("media") !== "not all"
4558745593
) {
45588-
precedences.set("p" + node.dataset.precedence, node);
45594+
precedences.set(node.dataset.precedence, node);
4558945595
last = node;
4559045596
}
4559145597
}
4559245598

4559345599
if (last) {
45594-
precedences.set("last", last);
45600+
precedences.set(LAST_PRECEDENCE, last);
4559545601
}
4559645602
} else {
45597-
last = precedences.get("last");
45603+
last = precedences.get(LAST_PRECEDENCE);
4559845604
} // We only call this after we have constructed an instance so we assume it here
4559945605

4560045606
var instance = resource.instance; // We will always have a precedence for stylesheet instances
4560145607

4560245608
var precedence = instance.getAttribute("data-precedence");
45603-
var prior = precedences.get("p" + precedence) || last;
45609+
var prior = precedences.get(precedence) || last;
4560445610

4560545611
if (prior === last) {
45606-
precedences.set("last", instance);
45612+
precedences.set(LAST_PRECEDENCE, instance);
4560745613
}
4560845614

45609-
precedences.set("p" + precedence, instance);
45615+
precedences.set(precedence, instance);
4561045616
this.count++;
4561145617
var onComplete = onUnsuspend.bind(this);
4561245618
instance.addEventListener("load", onComplete);

compiled/facebook-www/ReactDOM-dev.modern.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34860,7 +34860,7 @@ if (__DEV__) {
3486034860
return root;
3486134861
}
3486234862

34863-
var ReactVersion = "18.3.0-www-modern-30f1d245";
34863+
var ReactVersion = "18.3.0-www-modern-57106b67";
3486434864

3486534865
function createPortal$1(
3486634866
children,
@@ -46021,7 +46021,13 @@ if (__DEV__) {
4602146021
unsuspend();
4602246022
}
4602346023
}
46024-
} // This is typecast to non-null because it will always be set before read.
46024+
} // We use a value that is type distinct from precedence to track which one is last.
46025+
// This ensures there is no collision with user defined precedences. Normally we would
46026+
// just track this in module scope but since the precedences are tracked per HoistableRoot
46027+
// we need to associate it to something other than a global scope hence why we try to
46028+
// colocate it with the map of precedences in the first place
46029+
46030+
var LAST_PRECEDENCE = null; // This is typecast to non-null because it will always be set before read.
4602546031
// it is important that this not be used except when the stack guarantees it exists.
4602646032
// Currentlyt his is only during insertSuspendedStylesheet.
4602746033

@@ -46071,28 +46077,28 @@ if (__DEV__) {
4607146077
// and will be hoisted by the Fizz runtime imminently.
4607246078
node.getAttribute("media") !== "not all"
4607346079
) {
46074-
precedences.set("p" + node.dataset.precedence, node);
46080+
precedences.set(node.dataset.precedence, node);
4607546081
last = node;
4607646082
}
4607746083
}
4607846084

4607946085
if (last) {
46080-
precedences.set("last", last);
46086+
precedences.set(LAST_PRECEDENCE, last);
4608146087
}
4608246088
} else {
46083-
last = precedences.get("last");
46089+
last = precedences.get(LAST_PRECEDENCE);
4608446090
} // We only call this after we have constructed an instance so we assume it here
4608546091

4608646092
var instance = resource.instance; // We will always have a precedence for stylesheet instances
4608746093

4608846094
var precedence = instance.getAttribute("data-precedence");
46089-
var prior = precedences.get("p" + precedence) || last;
46095+
var prior = precedences.get(precedence) || last;
4609046096

4609146097
if (prior === last) {
46092-
precedences.set("last", instance);
46098+
precedences.set(LAST_PRECEDENCE, instance);
4609346099
}
4609446100

46095-
precedences.set("p" + precedence, instance);
46101+
precedences.set(precedence, instance);
4609646102
this.count++;
4609746103
var onComplete = onUnsuspend.bind(this);
4609846104
instance.addEventListener("load", onComplete);

compiled/facebook-www/ReactDOM-prod.classic.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15801,7 +15801,7 @@ function insertSuspendedStylesheets(state, resources) {
1580115801
function insertStylesheetIntoRoot(root, resource) {
1580215802
if (!(resource.state.loading & 4)) {
1580315803
var precedences = precedencesByRoot.get(root);
15804-
if (precedences) var last = precedences.get("last");
15804+
if (precedences) var last = precedences.get(null);
1580515805
else {
1580615806
precedences = new Map();
1580715807
precedencesByRoot.set(root, precedences);
@@ -15818,15 +15818,15 @@ function insertStylesheetIntoRoot(root, resource) {
1581815818
"link" === node.nodeName ||
1581915819
"not all" !== node.getAttribute("media")
1582015820
)
15821-
precedences.set("p" + node.dataset.precedence, node), (last = node);
15821+
precedences.set(node.dataset.precedence, node), (last = node);
1582215822
}
15823-
last && precedences.set("last", last);
15823+
last && precedences.set(null, last);
1582415824
}
1582515825
nodes = resource.instance;
1582615826
node = nodes.getAttribute("data-precedence");
15827-
i = precedences.get("p" + node) || last;
15828-
i === last && precedences.set("last", nodes);
15829-
precedences.set("p" + node, nodes);
15827+
i = precedences.get(node) || last;
15828+
i === last && precedences.set(null, nodes);
15829+
precedences.set(node, nodes);
1583015830
this.count++;
1583115831
last = onUnsuspend.bind(this);
1583215832
nodes.addEventListener("load", last);
@@ -16637,7 +16637,7 @@ Internals.Events = [
1663716637
var devToolsConfig$jscomp$inline_1801 = {
1663816638
findFiberByHostInstance: getClosestInstanceFromNode,
1663916639
bundleType: 0,
16640-
version: "18.3.0-www-classic-092a346f",
16640+
version: "18.3.0-www-classic-aa2ac027",
1664116641
rendererPackageName: "react-dom"
1664216642
};
1664316643
var internals$jscomp$inline_2147 = {
@@ -16667,7 +16667,7 @@ var internals$jscomp$inline_2147 = {
1666716667
scheduleRoot: null,
1666816668
setRefreshHandler: null,
1666916669
getCurrentFiber: null,
16670-
reconcilerVersion: "18.3.0-www-classic-092a346f"
16670+
reconcilerVersion: "18.3.0-www-classic-aa2ac027"
1667116671
};
1667216672
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
1667316673
var hook$jscomp$inline_2148 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -17004,4 +17004,4 @@ exports.useFormState = function () {
1700417004
exports.useFormStatus = function () {
1700517005
throw Error(formatProdErrorMessage(248));
1700617006
};
17007-
exports.version = "18.3.0-www-classic-092a346f";
17007+
exports.version = "18.3.0-www-classic-aa2ac027";

compiled/facebook-www/ReactDOM-prod.modern.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16027,7 +16027,7 @@ function insertSuspendedStylesheets(state, resources) {
1602716027
function insertStylesheetIntoRoot(root, resource) {
1602816028
if (!(resource.state.loading & 4)) {
1602916029
var precedences = precedencesByRoot.get(root);
16030-
if (precedences) var last = precedences.get("last");
16030+
if (precedences) var last = precedences.get(null);
1603116031
else {
1603216032
precedences = new Map();
1603316033
precedencesByRoot.set(root, precedences);
@@ -16044,15 +16044,15 @@ function insertStylesheetIntoRoot(root, resource) {
1604416044
"link" === node.nodeName ||
1604516045
"not all" !== node.getAttribute("media")
1604616046
)
16047-
precedences.set("p" + node.dataset.precedence, node), (last = node);
16047+
precedences.set(node.dataset.precedence, node), (last = node);
1604816048
}
16049-
last && precedences.set("last", last);
16049+
last && precedences.set(null, last);
1605016050
}
1605116051
nodes = resource.instance;
1605216052
node = nodes.getAttribute("data-precedence");
16053-
i = precedences.get("p" + node) || last;
16054-
i === last && precedences.set("last", nodes);
16055-
precedences.set("p" + node, nodes);
16053+
i = precedences.get(node) || last;
16054+
i === last && precedences.set(null, nodes);
16055+
precedences.set(node, nodes);
1605616056
this.count++;
1605716057
last = onUnsuspend.bind(this);
1605816058
nodes.addEventListener("load", last);
@@ -16160,7 +16160,7 @@ Internals.Events = [
1616016160
var devToolsConfig$jscomp$inline_1760 = {
1616116161
findFiberByHostInstance: getClosestInstanceFromNode,
1616216162
bundleType: 0,
16163-
version: "18.3.0-www-modern-492c5262",
16163+
version: "18.3.0-www-modern-571f606f",
1616416164
rendererPackageName: "react-dom"
1616516165
};
1616616166
var internals$jscomp$inline_2111 = {
@@ -16191,7 +16191,7 @@ var internals$jscomp$inline_2111 = {
1619116191
scheduleRoot: null,
1619216192
setRefreshHandler: null,
1619316193
getCurrentFiber: null,
16194-
reconcilerVersion: "18.3.0-www-modern-492c5262"
16194+
reconcilerVersion: "18.3.0-www-modern-571f606f"
1619516195
};
1619616196
if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {
1619716197
var hook$jscomp$inline_2112 = __REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -16456,4 +16456,4 @@ exports.useFormState = function () {
1645616456
exports.useFormStatus = function () {
1645716457
throw Error(formatProdErrorMessage(248));
1645816458
};
16459-
exports.version = "18.3.0-www-modern-492c5262";
16459+
exports.version = "18.3.0-www-modern-571f606f";

compiled/facebook-www/ReactDOM-profiling.classic.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16570,7 +16570,7 @@ function insertSuspendedStylesheets(state, resources) {
1657016570
function insertStylesheetIntoRoot(root, resource) {
1657116571
if (!(resource.state.loading & 4)) {
1657216572
var precedences = precedencesByRoot.get(root);
16573-
if (precedences) var last = precedences.get("last");
16573+
if (precedences) var last = precedences.get(null);
1657416574
else {
1657516575
precedences = new Map();
1657616576
precedencesByRoot.set(root, precedences);
@@ -16587,15 +16587,15 @@ function insertStylesheetIntoRoot(root, resource) {
1658716587
"link" === node.nodeName ||
1658816588
"not all" !== node.getAttribute("media")
1658916589
)
16590-
precedences.set("p" + node.dataset.precedence, node), (last = node);
16590+
precedences.set(node.dataset.precedence, node), (last = node);
1659116591
}
16592-
last && precedences.set("last", last);
16592+
last && precedences.set(null, last);
1659316593
}
1659416594
nodes = resource.instance;
1659516595
node = nodes.getAttribute("data-precedence");
16596-
i = precedences.get("p" + node) || last;
16597-
i === last && precedences.set("last", nodes);
16598-
precedences.set("p" + node, nodes);
16596+
i = precedences.get(node) || last;
16597+
i === last && precedences.set(null, nodes);
16598+
precedences.set(node, nodes);
1659916599
this.count++;
1660016600
last = onUnsuspend.bind(this);
1660116601
nodes.addEventListener("load", last);
@@ -17406,7 +17406,7 @@ Internals.Events = [
1740617406
var devToolsConfig$jscomp$inline_1886 = {
1740717407
findFiberByHostInstance: getClosestInstanceFromNode,
1740817408
bundleType: 0,
17409-
version: "18.3.0-www-classic-54ebd8ef",
17409+
version: "18.3.0-www-classic-071ab715",
1741017410
rendererPackageName: "react-dom"
1741117411
};
1741217412
(function (internals) {
@@ -17450,7 +17450,7 @@ var devToolsConfig$jscomp$inline_1886 = {
1745017450
scheduleRoot: null,
1745117451
setRefreshHandler: null,
1745217452
getCurrentFiber: null,
17453-
reconcilerVersion: "18.3.0-www-classic-54ebd8ef"
17453+
reconcilerVersion: "18.3.0-www-classic-071ab715"
1745417454
});
1745517455
assign(Internals, {
1745617456
ReactBrowserEventEmitter: {
@@ -17774,7 +17774,7 @@ exports.useFormState = function () {
1777417774
exports.useFormStatus = function () {
1777517775
throw Error(formatProdErrorMessage(248));
1777617776
};
17777-
exports.version = "18.3.0-www-classic-54ebd8ef";
17777+
exports.version = "18.3.0-www-classic-071ab715";
1777817778
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
1777917779
"function" ===
1778017780
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&

compiled/facebook-www/ReactDOM-profiling.modern.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16790,7 +16790,7 @@ function insertSuspendedStylesheets(state, resources) {
1679016790
function insertStylesheetIntoRoot(root, resource) {
1679116791
if (!(resource.state.loading & 4)) {
1679216792
var precedences = precedencesByRoot.get(root);
16793-
if (precedences) var last = precedences.get("last");
16793+
if (precedences) var last = precedences.get(null);
1679416794
else {
1679516795
precedences = new Map();
1679616796
precedencesByRoot.set(root, precedences);
@@ -16807,15 +16807,15 @@ function insertStylesheetIntoRoot(root, resource) {
1680716807
"link" === node.nodeName ||
1680816808
"not all" !== node.getAttribute("media")
1680916809
)
16810-
precedences.set("p" + node.dataset.precedence, node), (last = node);
16810+
precedences.set(node.dataset.precedence, node), (last = node);
1681116811
}
16812-
last && precedences.set("last", last);
16812+
last && precedences.set(null, last);
1681316813
}
1681416814
nodes = resource.instance;
1681516815
node = nodes.getAttribute("data-precedence");
16816-
i = precedences.get("p" + node) || last;
16817-
i === last && precedences.set("last", nodes);
16818-
precedences.set("p" + node, nodes);
16816+
i = precedences.get(node) || last;
16817+
i === last && precedences.set(null, nodes);
16818+
precedences.set(node, nodes);
1681916819
this.count++;
1682016820
last = onUnsuspend.bind(this);
1682116821
nodes.addEventListener("load", last);
@@ -16923,7 +16923,7 @@ Internals.Events = [
1692316923
var devToolsConfig$jscomp$inline_1845 = {
1692416924
findFiberByHostInstance: getClosestInstanceFromNode,
1692516925
bundleType: 0,
16926-
version: "18.3.0-www-modern-2cff546f",
16926+
version: "18.3.0-www-modern-416a65ea",
1692716927
rendererPackageName: "react-dom"
1692816928
};
1692916929
(function (internals) {
@@ -16968,7 +16968,7 @@ var devToolsConfig$jscomp$inline_1845 = {
1696816968
scheduleRoot: null,
1696916969
setRefreshHandler: null,
1697016970
getCurrentFiber: null,
16971-
reconcilerVersion: "18.3.0-www-modern-2cff546f"
16971+
reconcilerVersion: "18.3.0-www-modern-416a65ea"
1697216972
});
1697316973
exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = Internals;
1697416974
exports.createPortal = function (children, container) {
@@ -17220,7 +17220,7 @@ exports.useFormState = function () {
1722017220
exports.useFormStatus = function () {
1722117221
throw Error(formatProdErrorMessage(248));
1722217222
};
17223-
exports.version = "18.3.0-www-modern-2cff546f";
17223+
exports.version = "18.3.0-www-modern-416a65ea";
1722417224
"undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&
1722517225
"function" ===
1722617226
typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&

0 commit comments

Comments
 (0)