Граф коммитов

455 Коммитов

Автор SHA1 Сообщение Дата
Nika Layzell fb07e18588 Bug 1744604 - Part 4: Make the alignas lint behave more consistently across platforms, r=andi
On aarch64 and x86-64 windows, the behaviour of canPassInRegisters is slightly
different than other platforms, accepting types to be passed in registers which
wouldn't be passed in registers on other platforms. This causes the lint to
behave slightly differently on that platform. This patch changes the lint to
always follow the non-win64 behaviour required by the C++ standard.

Depends on D132997

Differential Revision: https://phabricator.services.mozilla.com/D133685
2021-12-14 16:49:18 +00:00
Nika Layzell 5c13f41dd5 Bug 1744604 - Part 3: Relax the alignas lint to be more accurate to the potential alignment issue, r=andi
The platform in question which triggered this lint being added is the windows
x86 ABI, which pre-msvc version 19.14 emitted an error when passing complex
aggregate types as parameters due to not being able to align them.
Unfortunately modern versions of Clang still have a bug in the implementation
of the post-19.14 ABI and will pass types with incorrect alignments.

This change makes the intended behaviour more clear and avoids linting against
alignments <= the pointer alignment on all platforms, as well as alignment for
types which will be re-aligned in the callee by clang.

Finally, it also adds an exception for the `std::function` stdlib type which is
16-byte aligned on macOS, but has a legal alignment on windows x86, and
therefore should not be linted against as it will behave correctly on all
platforms.

In the future, if we update to a version of clang without this ABI bug, we may
want to remove this lint entirely.

Differential Revision: https://phabricator.services.mozilla.com/D132997
2021-12-14 16:49:18 +00:00
Nika Layzell 2e21209147 Bug 1744604 - Part 2: Be less restrictive with the non-memmovable static analysis, r=andi
This change adds an exception for stl types which implement
`std::is_trivially_move_constructible` and `std::is_trivially_destructible`, as
these are generally stable parts of the standard library type definition which
may be relied on by downstream code.

Differential Revision: https://phabricator.services.mozilla.com/D132996
2021-12-14 16:49:17 +00:00
Nika Layzell ab7c298175 Bug 1744604 - Part 1: Make CustomTypeAnnotation more flexible, r=andi
This allows CustomTypeAnnotation to customize the type traversal behaviour to
allow things like opting library types out of static analysis easier. It will
be used in parts 2 and 3 to improve the non-memmoveable and non-param trait
analysis.

Differential Revision: https://phabricator.services.mozilla.com/D132995
2021-12-14 16:49:17 +00:00
Sandor Molnar c0474edcdf Backed out 3 changesets (bug 1744604) for causing build bustages in TestNonParameterChecker. CLOSED TREE
Backed out changeset 31d7633b2826 (bug 1744604)
Backed out changeset 3fc47ff6a295 (bug 1744604)
Backed out changeset 051767551298 (bug 1744604)
2021-12-08 03:51:39 +02:00
Nika Layzell 6781985fe4 Bug 1744604 - Part 3: Relax the alignas lint to be more accurate to the potential alignment issue, r=andi
The platform in question which triggered this lint being added is the windows
x86 ABI, which pre-msvc version 19.14 emitted an error when passing complex
aggregate types as parameters due to not being able to align them.
Unfortunately modern versions of Clang still have a bug in the implementation
of the post-19.14 ABI and will pass types with incorrect alignments.

This change makes the intended behaviour more clear and avoids linting against
alignments <= the pointer alignment on all platforms, as well as alignment for
types which will be re-aligned in the callee by clang.

Finally, it also adds an exception for the `std::function` stdlib type which is
16-byte aligned on macOS, but has a legal alignment on windows x86, and
therefore should not be linted against as it will behave correctly on all
platforms.

In the future, if we update to a version of clang without this ABI bug, we may
want to remove this lint entirely.

Depends on D132996

Differential Revision: https://phabricator.services.mozilla.com/D132997
2021-12-07 20:38:16 +00:00
Nika Layzell 0047d8c90a Bug 1744604 - Part 2: Be less restrictive with the non-memmovable static analysis, r=andi
This change adds an exception for stl types which implement
`std::is_trivially_move_constructible` and `std::is_trivially_destructible`, as
these are generally stable parts of the standard library type definition which
may be relied on by downstream code.

Depends on D132995

Differential Revision: https://phabricator.services.mozilla.com/D132996
2021-12-07 20:38:15 +00:00
Nika Layzell 19478cb9ed Bug 1744604 - Part 1: Make CustomTypeAnnotation more flexible, r=andi
This allows CustomTypeAnnotation to customize the type traversal behaviour to
allow things like opting library types out of static analysis easier. It will
be used in parts 2 and 3 to improve the non-memmoveable and non-param trait
analysis.

Differential Revision: https://phabricator.services.mozilla.com/D132995
2021-12-07 20:38:15 +00:00
kriswright df91a347b4 Bug 1532955 - Track available memory on linux. r=gsvelto,tkikuchi
This introduces a low memory watcher that dispatches an offthread read of /proc/meminfo every 5000/1000ms depending on memory levels, then determines which information to act on. It works like this:
- Get a percentage of `MemAvailable` versus `MemTotal`.
- If memory drops below 5% availability, we are in a memory pressure scenario
- If `MemAvailable` is not large enough to accommodate a content process, we are in a memory pressure scenario
- If we are in a memory pressure scenario, notify the observers from the main thread.

The value I decided to use to represent a content process was based on observation and should be adjusted if it is not representative of what we consider a "typical" content process.

Differential Revision: https://phabricator.services.mozilla.com/D117972
2021-12-02 11:14:30 +00:00
Noemi Erli c25daf6c77 Backed out changeset 4b8b155c97a5 (bug 1532955) for causing build bustage in TestAvailableMemoryWatcherLinux.cpp CLOSED TREE 2021-12-02 12:24:03 +02:00
kriswright 58551a6795 Bug 1532955 - Track available memory on linux. r=gsvelto,tkikuchi
This introduces a low memory watcher that dispatches an offthread read of /proc/meminfo every 5000/1000ms depending on memory levels, then determines which information to act on. It works like this:
- Get a percentage of `MemAvailable` versus `MemTotal`.
- If memory drops below 5% availability, we are in a memory pressure scenario
- If `MemAvailable` is not large enough to accommodate a content process, we are in a memory pressure scenario
- If we are in a memory pressure scenario, notify the observers from the main thread.

The value I decided to use to represent a content process was based on observation and should be adjusted if it is not representative of what we consider a "typical" content process.

Differential Revision: https://phabricator.services.mozilla.com/D117972
2021-12-02 07:16:50 +00:00
Csoregi Natalia 5d43115f90 Backed out changeset 44b7971a0893 (bug 1532955) for bustage on AvailableMemoryWatcher.cpp and other failures. CLOSED TREE 2021-12-01 22:40:47 +02:00
kriswright 6c2438cacc Bug 1532955 - Track available memory on linux. r=gsvelto,tkikuchi
This introduces a low memory watcher that dispatches an offthread read of /proc/meminfo every 5000/1000ms depending on memory levels, then determines which information to act on. It works like this:
- Get a percentage of `MemAvailable` versus `MemTotal`.
- If memory drops below 5% availability, we are in a memory pressure scenario
- If `MemAvailable` is not large enough to accommodate a content process, we are in a memory pressure scenario
- If we are in a memory pressure scenario, notify the observers from the main thread.

The value I decided to use to represent a content process was based on observation and should be adjusted if it is not representative of what we consider a "typical" content process.

Differential Revision: https://phabricator.services.mozilla.com/D117972
2021-12-01 19:12:31 +00:00
Mike Hommey a90ac64587 Bug 1743708 - Fix clang-plugin tests to pass with clang-trunk. r=andi
This upstream change[1] changed the error messages when arrays are
involved, so we adjust the expected-errors/expected-notes to account for
that.

1. aee4925507

Differential Revision: https://phabricator.services.mozilla.com/D132533
2021-12-01 06:28:02 +00:00
Kershaw Chang 1b01ccfacd Bug 1392272 - P1: [windows] Monitor system proxy changes, r=necko-reviewers,dragana
Differential Revision: https://phabricator.services.mozilla.com/D127724
2021-11-08 09:00:26 +00:00
Byron Campen [:bwc] e3737b1c60 Bug 1654112 - Exempt code in webrtc namespace from implicit conversion operator checks. r=andi
Differential Revision: https://phabricator.services.mozilla.com/D105012
2021-02-12 14:26:36 +00:00
Andi-Bogdan Postelnicu ebad6463ab Bug 1731582 - starting with clang-13 some member functions from `StringRef` have been renamed. r=glandium
Differential Revision: https://phabricator.services.mozilla.com/D126319
2021-09-28 07:52:17 +00:00
Andi-Bogdan Postelnicu 8e5068999f Bug 1731582 - starting with clang-13 `Expr::isRValue` has been changed to `Expr::isPRValue`. r=glandium
Differential Revision: https://phabricator.services.mozilla.com/D126318
2021-09-28 07:52:16 +00:00
Tetsuharu Ohzeki 2eebd6e256 Bug 1732328 - Remove the vestiges of LayerScope. r=gfx-reviewers,jrmuizel
`Layer::GetDisplayListLog()` also still contains the metion to
LayerScope to dump display list.

But this change does not remove it because it's a part of debugging display list.
If we remove it, I think we should open a new bug for it.

Differential Revision: https://phabricator.services.mozilla.com/D126512
2021-09-25 16:22:25 +00:00
Chris Peterson 339c7d8961 Bug 1729598 - Remove now-unused MustUseChecker and MOZ_MUST_USE_TYPE attribute. r=static-analysis-reviewers,andi
Depends on D125504

Differential Revision: https://phabricator.services.mozilla.com/D125505
2021-09-15 05:10:51 +00:00
Andrew Sutherland c872d06387 Bug 1728376 - Searchfox should treat pure virtual declarations as definitions. r=jrmuizel
Differential Revision: https://phabricator.services.mozilla.com/D124152
2021-09-01 02:41:05 +00:00
Florian Quèze 2ef0bca3f5 Bug 1728228 - Add profiler markers in the Timer thread to understand its activity, r=gerald,smaug,KrisWright.
Differential Revision: https://phabricator.services.mozilla.com/D123989
2021-08-31 13:41:46 +00:00
Andrew Sutherland ae02905b1c Bug 1641372 - Emit structured records.
This is the corresponding mozilla-central landing of the searchfox upstream
clang indexing changes from https://github.com/mozsearch/mozsearch/pull/408
that is r=kats.

Differential Revision: https://phabricator.services.mozilla.com/D108360
2021-08-29 03:15:44 +00:00
Mike Hommey d873082139 Bug 1724606 - Replace uses of MACOSX_DEPLOYMENT_TARGET env variable with -mmacosx-version-min flag. r=firefox-build-system-reviewers,andi
They are equivalent, except for the fact that MACOSX_DEPLOYMENT_TARGET
may apply to more processes in a normal build. In practice, all the
processes that matter are covered through compiler flags.

On the opposite end, MACOSX_DEPLOYMENT_TARGET isn't necessary passed in
all cases (like clangd, mach static-analysis, etc.), while compiler
flags are.

Differential Revision: https://phabricator.services.mozilla.com/D122145
2021-08-11 07:40:57 +00:00
Brad Werth 3094cf0606 Bug 1717887 Part 2: Make RenderThread backed by nsIThread, with a hang monitor. r=gfx-reviewers,jrmuizel
The background hang monitor uses the same timing thresholds as the one used by
the compositor thread, for similar reasons.

Differential Revision: https://phabricator.services.mozilla.com/D120117
2021-07-19 17:35:55 +00:00
Mike Hommey 8189f56cd9 Bug 1599574 - Avoid re-running clang-plugin tests. r=firefox-build-system-reviewers,andi,mhentges
Differential Revision: https://phabricator.services.mozilla.com/D114320
2021-05-05 21:21:11 +00:00
Kagami Sascha Rosylight 1b59a49ab1 Bug 1707681 - Ignore third party paths in explicit-operator-bool check r=andi
Differential Revision: https://phabricator.services.mozilla.com/D113695
2021-05-04 06:20:25 +00:00
Emilio Cobos Álvarez 80439edf68 Bug 1699844 - Add an escape hatch for the refcounted inside lambda checker. r=andi
Allow using the MOZ_KnownLive function to get around it.

Use case is the following: I have an std::function member variable, and I want
that member to be able to capture `this`.

Using a strong reference creates a cycle and thus would leak. I know `this` to
always outlive the member, so it is fine to use a weak capture there.

Differential Revision: https://phabricator.services.mozilla.com/D111850
2021-04-14 19:12:02 +00:00
Simon Giesecke 415fa258ea Bug 1662652 - New non-standard move checker. r=andi
Differential Revision: https://phabricator.services.mozilla.com/D60955
2021-03-12 08:15:32 +00:00
Kagami Sascha Rosylight a2323b59a0 Bug 1691515 - Add MOZ_KNOWN_LIVE member annotation r=andi
Differential Revision: https://phabricator.services.mozilla.com/D107321
2021-03-05 23:23:03 +00:00
Florian Quèze b41e171c11 Bug 1694462 - Remove the nsIThreadManager.newThread API (newNamedThread should be used instead), r=bas,KrisWright.
Differential Revision: https://phabricator.services.mozilla.com/D106267
2021-03-02 22:34:51 +00:00
Simon Giesecke 7e11c5d899 Bug 1600239 - Make message produced by NoAddRefReleaseOnReturnChecker more explicit. r=andi
Add a reference to MOZ_NO_ADDREF_RELEASE_ON_RETURN in the message.

Use the qualified name of the function returning the object.

Differential Revision: https://phabricator.services.mozilla.com/D106143
2021-02-23 16:24:30 +00:00
Kartik Gautam 7ae6aea145 Bug 1684173 - Add newline character at end of files when missing r=sylvestre,geckoview-reviewers,agi
Differential Revision: https://phabricator.services.mozilla.com/D100484
2021-01-07 08:53:08 +00:00
David Major 767a9abd46 Bug 1685165 - Support clang-12 in TestNoRefcountedInsideLambdas.cpp r=static-analysis-reviewers,andi
clang-12 has gained some additional remarks for these code patterns.

Differential Revision: https://phabricator.services.mozilla.com/D100820
2021-01-05 21:47:22 +00:00
Cosmin Sabou 2978aa00a3 Backed out changeset dbed1cdf588f (bug 1684173) for mochitest plain and devtools failures. a=backout DONTBUILD 2020-12-28 00:43:51 +02:00
Kartik Gautam 775cdec032 Bug 1684173 - Add newline character at end of files when missing r=sylvestre
Depends on D100443

Differential Revision: https://phabricator.services.mozilla.com/D100484
2020-12-27 11:43:41 +00:00
David Major e169ac43d1 Bug 1682611 - Update clang-plugin for removal of ast_type_traits namespace in clang 12 r=static-analysis-reviewers,andi
In clang 11, the contents of `ast_type_traits` were moved to the `clang` namespace, but forwarders were kept to give a grace period for downstreams.

In this week's clang 12, the forwarders have been removed, and our builds will break.

Thanks to upstream kindly allowed this transition period, we can simply do the rename now to prepare for clang 12, and existing clang 11 builds still work.

Differential Revision: https://phabricator.services.mozilla.com/D99817
2020-12-15 19:30:51 +00:00
Kartik Gautam f7ffcd09fb Bug 1679758 - Remove trailing empty lines r=sylvestre,marionette-reviewers,jgraham
Differential Revision: https://phabricator.services.mozilla.com/D99595
2020-12-15 10:34:54 +00:00
Dorel Luca 7320ae982a Backed out changeset f3aaf04fce3b (bug 1679758) for Devtool failures in browser_styleeditor_syncAddProperty.js. CLOSED TREE 2020-12-13 16:38:21 +02:00
Kartik Gautam caf549c200 Bug 1679758 - Remove trailing empty lines r=sylvestre
Differential Revision: https://phabricator.services.mozilla.com/D99595
2020-12-13 13:28:30 +00:00
Kris Wright 410eb5ffc8 Bug 1676906 - Remove unnecessary names in ThreadAllows.txt r=andi
Sometimes thread names bit rot in the list because there is no checker in place to ensure they are still active. The threads I removed have either:
	-Been converted to use the background thread pool
	-Been removed entirely
	-Been renamed
And they no longer require entries in the list.

Differential Revision: https://phabricator.services.mozilla.com/D96846
2020-11-19 16:00:56 +00:00
Kartikaya Gupta 2fd4f2fc5c Bug 1418001 - Generate analysis for file inclusions. r=asuth,andi
This introduces a new mangled symbol of the form FILE_<hash>. It's defined
on line 1 of each visited source file, and it's referenced in places that
the preprocessor tells us there was an #include. Both angle-bracket includes
and quote includes are supported here.

Differential Revision: https://phabricator.services.mozilla.com/D95529
2020-11-03 15:57:32 +00:00
Kartikaya Gupta a979c5ff70 Bug 1418001 - Refactor to allow visitIdentifier callers to pass a full SourceRange. r=asuth,andi
In the next patch I'll want to be able to provide the entire source rather than
having visitIdentifier just use the token at `Loc`. The existing call sites
create a SourceRange from the SourceLocation and indicate (by not setting the
LocRangeEndValid flag) that the visitIdentifier function should retain it's
old behaviour of using the token to figure out the range.

Depends on D95527

Differential Revision: https://phabricator.services.mozilla.com/D95528
2020-11-02 20:38:37 +00:00
Kartikaya Gupta b28eaef8b0 Bug 1418001 - Refactor to make file type detection more explicit. r=asuth,andi
This extracts a relativizePath function that normalizes a file path to be
relative to the source/objdir, and returns the type of the file.

Differential Revision: https://phabricator.services.mozilla.com/D95527
2020-11-02 20:38:36 +00:00
David Major 5fde4e00e2 Bug 1674907 - Clean up C++17 ifdefs in TestNoRefcountedInsideLambdas.cpp r=static-analysis-reviewers,sg
I'll need to update this file for clang-12, and in order to prevent the need for adding more of these ifdefs, let's just assume they are true and remove the checks. Our codebase has been on C++17 for a while now.

Differential Revision: https://phabricator.services.mozilla.com/D95592
2020-11-03 09:25:50 +00:00
Ricky Stewart 02a7b4ebdf Bug 1654103: Standardize on Black for Python code in `mozilla-central`.
Allow-list all Python code in tree for use with the black linter, and re-format all code in-tree accordingly.

To produce this patch I did all of the following:

1. Make changes to tools/lint/black.yml to remove include: stanza and update list of source extensions.

2. Run ./mach lint --linter black --fix

3. Make some ad-hoc manual updates to python/mozbuild/mozbuild/test/configure/test_configure.py -- it has some hard-coded line numbers that the reformat breaks.

4. Make some ad-hoc manual updates to `testing/marionette/client/setup.py`, `testing/marionette/harness/setup.py`, and `testing/firefox-ui/harness/setup.py`, which have hard-coded regexes that break after the reformat.

5. Add a set of exclusions to black.yml. These will be deleted in a follow-up bug (1672023).

# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D94045
2020-10-26 18:34:53 +00:00
Bogdan Tara da1098d4aa Backed out 10 changesets (bug 1654103, bug 1672023, bug 1518999) for PanZoomControllerTest.touchEventForResult gv-junit failures CLOSED TREE
Backed out changeset ff3fb0b4a512 (bug 1672023)
Backed out changeset e7834b600201 (bug 1654103)
Backed out changeset 807893ca8069 (bug 1518999)
Backed out changeset 13e6b92440e9 (bug 1518999)
Backed out changeset 8b2ac5a6c98a (bug 1518999)
Backed out changeset 575748295752 (bug 1518999)
Backed out changeset 65f07ce7b39b (bug 1518999)
Backed out changeset 4bb80556158d (bug 1518999)
Backed out changeset 8ac8461d7bd7 (bug 1518999)
Backed out changeset e8ba13ee17f5 (bug 1518999)
2020-10-24 03:36:18 +03:00
Ricky Stewart c0cea3b0fa Bug 1654103: Standardize on Black for Python code in `mozilla-central`. r=remote-protocol-reviewers,marionette-reviewers,webdriver-reviewers,perftest-reviewers,devtools-backward-compat-reviewers,jgilbert,preferences-reviewers,sylvestre,maja_zf,webcompat-reviewers,denschub,ntim,whimboo,sparky
Allow-list all Python code in tree for use with the black linter, and re-format all code in-tree accordingly.

To produce this patch I did all of the following:

1. Make changes to tools/lint/black.yml to remove include: stanza and update list of source extensions.

2. Run ./mach lint --linter black --fix

3. Make some ad-hoc manual updates to python/mozbuild/mozbuild/test/configure/test_configure.py -- it has some hard-coded line numbers that the reformat breaks.

4. Make some ad-hoc manual updates to `testing/marionette/client/setup.py`, `testing/marionette/harness/setup.py`, and `testing/firefox-ui/harness/setup.py`, which have hard-coded regexes that break after the reformat.

5. Add a set of exclusions to black.yml. These will be deleted in a follow-up bug (1672023).

# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D94045
2020-10-23 20:40:42 +00:00
Dorel Luca 1ff59cb7a3 Backed out changeset 7558c8821a07 (bug 1654103) for multiple failures. CLOSED TREE 2020-10-22 03:51:06 +03:00
Ricky Stewart 50762dacab Bug 1654103: Standardize on Black for Python code in `mozilla-central`. r=remote-protocol-reviewers,marionette-reviewers,webdriver-reviewers,perftest-reviewers,devtools-backward-compat-reviewers,jgilbert,preferences-reviewers,sylvestre,maja_zf,webcompat-reviewers,denschub,ntim,whimboo,sparky
Allow-list all Python code in tree for use with the black linter, and re-format all code in-tree accordingly.

To produce this patch I did all of the following:

1. Make changes to tools/lint/black.yml to remove include: stanza and update list of source extensions.

2. Run ./mach lint --linter black --fix

3. Make some ad-hoc manual updates to python/mozbuild/mozbuild/test/configure/test_configure.py -- it has some hard-coded line numbers that the reformat breaks.

4. Add a set of exclusions to black.yml. These will be deleted in a follow-up bug (1672023).

# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D94045
2020-10-21 21:27:27 +00:00