ma1 pushed to branch mullvad-browser-115.14.0esr-13.5-1 at The Tor Project / Applications / Mullvad Browser
Commits:
-
9d8af849
by Timothy Nikkel at 2024-08-05T10:31:07+02:00
-
7f222f82
by Jon Coppeard at 2024-08-05T10:31:07+02:00
3 changed files:
- js/src/gc/Zone.cpp
- + js/src/jit-test/tests/debug/bug-1904011.js
- toolkit/components/antitracking/StoragePrincipalHelper.cpp
Changes:
... | ... | @@ -918,7 +918,13 @@ void Zone::clearScriptCounts(Realm* realm) { |
918 | 918 | // Clear all hasScriptCounts_ flags of BaseScript, in order to release all
|
919 | 919 | // ScriptCounts entries of the given realm.
|
920 | 920 | for (auto i = scriptCountsMap->modIter(); !i.done(); i.next()) {
|
921 | - BaseScript* script = i.get().key();
|
|
921 | + const HeapPtr<BaseScript*>& script = i.get().key();
|
|
922 | + if (IsAboutToBeFinalized(script)) {
|
|
923 | + // Dead scripts may be present during incremental GC until script
|
|
924 | + // finalizers have been run.
|
|
925 | + continue;
|
|
926 | + }
|
|
927 | + |
|
922 | 928 | if (script->realm() != realm) {
|
923 | 929 | continue;
|
924 | 930 | }
|
... | ... | @@ -939,7 +945,13 @@ void Zone::clearScriptLCov(Realm* realm) { |
939 | 945 | }
|
940 | 946 | |
941 | 947 | for (auto i = scriptLCovMap->modIter(); !i.done(); i.next()) {
|
942 | - BaseScript* script = i.get().key();
|
|
948 | + const HeapPtr<BaseScript*>& script = i.get().key();
|
|
949 | + if (IsAboutToBeFinalized(script)) {
|
|
950 | + // Dead scripts may be present during incremental GC until script
|
|
951 | + // finalizers have been run.
|
|
952 | + continue;
|
|
953 | + }
|
|
954 | + |
|
943 | 955 | if (script->realm() == realm) {
|
944 | 956 | i.remove();
|
945 | 957 | }
|
1 | +// |jit-test| --fuzzing-safe; --ion-offthread-compile=off
|
|
2 | +gczeal(0);
|
|
3 | + |
|
4 | +let g = newGlobal({newCompartment: true});
|
|
5 | +let dbg = new Debugger(g);
|
|
6 | + |
|
7 | +dbg.collectCoverageInfo = true;
|
|
8 | +g.eval("0");
|
|
9 | + |
|
10 | +// Start a GC in the debugger's zone and yield after sweeping objects.
|
|
11 | +schedulezone(g);
|
|
12 | +gczeal(22);
|
|
13 | +startgc(100);
|
|
14 | + |
|
15 | +dbg.collectCoverageInfo = false; |
... | ... | @@ -445,7 +445,7 @@ bool StoragePrincipalHelper::GetOriginAttributes( |
445 | 445 | nsCOMPtr<nsILoadInfo> loadInfo = aChannel->LoadInfo();
|
446 | 446 | loadInfo->GetOriginAttributes(&aAttributes);
|
447 | 447 | |
448 | - bool isPrivate = false;
|
|
448 | + bool isPrivate = aAttributes.mPrivateBrowsingId > 0;
|
|
449 | 449 | nsCOMPtr<nsIPrivateBrowsingChannel> pbChannel = do_QueryInterface(aChannel);
|
450 | 450 | if (pbChannel) {
|
451 | 451 | nsresult rv = pbChannel->GetIsChannelPrivate(&isPrivate);
|
... | ... | @@ -454,7 +454,9 @@ bool StoragePrincipalHelper::GetOriginAttributes( |
454 | 454 | // Some channels may not implement nsIPrivateBrowsingChannel
|
455 | 455 | nsCOMPtr<nsILoadContext> loadContext;
|
456 | 456 | NS_QueryNotificationCallbacks(aChannel, loadContext);
|
457 | - isPrivate = loadContext && loadContext->UsePrivateBrowsing();
|
|
457 | + if (loadContext) {
|
|
458 | + isPrivate = loadContext->UsePrivateBrowsing();
|
|
459 | + }
|
|
458 | 460 | }
|
459 | 461 | aAttributes.SyncAttributesWithPrivateBrowsing(isPrivate);
|
460 | 462 |