We should have CI Lint YAML files in the tree.
MozReview-Commit-ID: F8hTBerSNIj
--HG--
extra : rebase_source : b3b420eb4f66e448e41de4b556c200e1bd590094
We should have CI Lint YAML files in the tree.
MozReview-Commit-ID: ATX5IOK747y
--HG--
extra : rebase_source : 493c6c762e3b26f1295205c0300df8b0cd87bc7b
We should have CI Lint YAML files in the tree.
MozReview-Commit-ID: IMOKGhxKFJW
--HG--
extra : rebase_source : 0ef71f24141a531833d48f2a305183dd808f00f5
We should have CI Lint YAML files in the tree.
MozReview-Commit-ID: 758kdSddjJN
--HG--
extra : rebase_source : f057b0ce281adb67a156235b051a371a252bd22c
We should have CI Lint YAML files in the tree.
MozReview-Commit-ID: L83j6SODA3w
--HG--
extra : rebase_source : 2be273b518f3424d62f4a90cebe25a3c2833c8a0
We should have CI Lint YAML files in the tree.
MozReview-Commit-ID: HYVWXzNnnzG
--HG--
rename : tools/lint/flake8_/__init__.py => tools/lint/yamllint_/__init__.py
extra : rebase_source : 635ef617eeba1cd1299366beb0c83232d42f0258
The upload now uses MOZ_SCM_LEVEL to determine which secret and bucket to
upload to, so it can potentially run at any level.
This also modifies task descriptions to allow {level} in scopes, and updates
try syntax to allow `-j doc-upload` even though run-on-tasks says it doesn't
run on try by default.
MozReview-Commit-ID: Dm27TGPa7IM
--HG--
extra : rebase_source : f1131abc8cd639251e085c8ebf776827a6b831ed
extra : amend_source : b2b0cb253c7f6e90fdd710c2c788877411bd9e1d
The new code preserves the existing behaviour, but it clearer, and gets rid of
two XXX comments.
--HG--
extra : rebase_source : db434de38bcf585771cdc7d93fd7f24471fb0c1c
Mostly removals, but also adding docs on how to create a
multilingual package right now.
I think I'd like to take another pass at those docs in a follow-up.
MozReview-Commit-ID: Dkw4MJ5DLyb
--HG--
extra : rebase_source : 4f79499e376cf6ddd23169a1c4525ed6b551a740
MozStackWalk() is different on Windows to the other platforms. It has two extra
arguments, which can be used to walk the stack of a different thread.
This patch makes those differences clearer. Instead of having a single function
and forbidding those two arguments on non-Windows, it removes those arguments
from MozStackWalk, and splits off MozStackWalkThread() which retains them. This
also allows those arguments to have more appropriate types (HANDLE instead of
uintptr_t; CONTEXT* instead of than void*) and names (aContext instead of
aPlatformData).
The patch also removes unnecessary reinterpret_casts for the aClosure argument
at a couple of MozStackWalk() callsites.
--HG--
extra : rebase_source : 111ab7d6426d7be921facc2264f6db86c501d127
This uses credentials stored in the Taskcluster secret service. The task should
only run on mozilla-central to avoid confusion between branches.
MozReview-Commit-ID: 31XfTg0sCht
--HG--
extra : rebase_source : c3ef4ec15ecd4fa0ec0b5af7aacddfa8d6dd90e0
extra : source : 19f92c04608cec275dab73e8acad5141de8a5c44
Adds support to unwrap_full_update.pl to detect if the mar file's contents were compressed using bzip2 and if not to default to lzma, a=app_update_lzma
Update scripts to support both lzma and bzip2
Update unused python script to support lzma. This also adds python 3.0 support to the script while still supporting pythin 2.7
Update test scripts to support lzma
This uses credentials stored in the Taskcluster secret service. The task should
only run on mozilla-central to avoid confusion between branches.
MozReview-Commit-ID: 31XfTg0sCht
--HG--
extra : rebase_source : d2881d6ee093d0f0c87880ba63b451fb0e54415e
extra : amend_source : 6a34a633daab264863a668aca801ce4a4ffb782b
When set to true, the resulting profile will have a non-null meta.shutdownTime
field which is set to current time.
Non-shutdown profiles also get that field, but it's null for them.
MozReview-Commit-ID: 1vpmhBR8rC6
--HG--
extra : rebase_source : b026088053c30acd287f0dc3afa7ddf14093ec27
This try selector works as follows:
1. Generate target tasks (similar to ./mach taskgraph target)
2. Pipe all tasks to fzf (a fuzzy finding binary, this will be bootstrapped if necessary)
3. Allow user to make selection
4. Save selected tasks to 'try_task_config.json'. This is a new try scheduling
mechanism built into taskcluster (see bug 1380306).
5. Use `hg push-to-try` (or git-cinnabar) to push the added file to try. This
will use a temporary commit, so no trace of 'try_task_config.json' should be
left over after use.
If you get messages like STOP! No try syntax found, you need to update version-control-tools:
./mach mercurial-setup --update
MozReview-Commit-ID: 4xHwZ9fATLv
--HG--
extra : rebase_source : e22ccb44d5e99e1556bf7315b096b5d6ac96c918
This copies the vcs abstraction from python/mozlint/mozlint/vcs.py. Consumers can call:
VCSHelper.create()
and that will automatically detect whether we're in hg or git and return the appropriate
abstraction class.
MozReview-Commit-ID: 4xHwZ9fATLv
--HG--
extra : rebase_source : f89a0884a58c5057e7edebf85e7cdfca4c5b58bd
This avoids large gaps in the profiler output.
Sometimes we hold on to exit profiles for a long time before a profile is
gathered. During that time, the parent process's profile buffer might have
looped around several times. At that point, profiles from processes that have
exited long ago are no longer interesting.
MozReview-Commit-ID: 5C47vb69DfK
--HG--
extra : rebase_source : 57f0df2f21ab778ec689a08d0bbf010b10f18ed9
The original NetworkPrioritizer tracks each browser window and give the high priority to the selected tab.
This patch is based on the NetworkPrioritizer, but only send a notification of the current selected tab's content outer window ID to network module.
Also removes InstallManifestNoSymlinks which can be more simply expressed by
passing link_policy='copy' to InstallManifest.populate_registry.
MozReview-Commit-ID: Bkjc2hIub4A
--HG--
extra : rebase_source : df05080fef3baf7e6c60ff9a468e71f0b2c67462
When set to true, the resulting profile will have a non-null meta.shutdownTime
field which is set to current time.
Non-shutdown profiles also get that field, but it's null for them.
MozReview-Commit-ID: 1vpmhBR8rC6
--HG--
extra : rebase_source : 38573ff847ee7e2ac5df9c82564dd6495cc1636f
This is a straightforward copy of code from the mach_commands.py to autotry.py
MozReview-Commit-ID: 7TkbTff0Tv8
--HG--
extra : rebase_source : 7996131427217d9f0213af920d0d4ef0d2e7d0ac
extra : source : f0693a73539265f74f79db9d1e136e7f1c16a1f0
This also fixes a handful of lint errors in the mach_commands.py and syntax.py files.
MozReview-Commit-ID: 6nXz87ch3z4
--HG--
extra : rebase_source : f4dd8e19066a28793a941112a39243429a234969
The |mach try| implementation isn't really testing specific so figured while doing this refactor
anyway we could take the opportunity to move it to /tools. This renames the "autotry" module to
"syntax" as one of the 'selectors' under the newly created tryselect module.
MozReview-Commit-ID: DmnGU5sKuCk
--HG--
rename : testing/tools/autotry/autotry.py => tools/tryselect/selectors/syntax.py
extra : rebase_source : 52f2a61d97107b8d50e3894ea0f5cd9c24d4108d
This handles the case where the profiler state changes in the parent process
between the initial launch of the child process and the time at which the
PProfiler connection is established.
MozReview-Commit-ID: 5SQme5M7P30
--HG--
extra : rebase_source : 301d5541ff5c05a9540e45f1b57c13fb37d5d6fa
This also fixes the bug where we would always profile child processes if the
parent process had been launched with MOZ_PROFILER_STARTUP=1, regardless of
whether the profiler was still running in the parent process.
MozReview-Commit-ID: LkIpYmKJOJ1
--HG--
extra : rebase_source : 49b38bc58ded91ecc2e2fce08bcb4f2d20a13b92
This is what prenv.h suggests:
When manipulating the environment there is no way to un-set
an environment variable across all platforms. We suggest
you interpret the return of a pointer to null-string to
mean the same as a return of NULL from PR_GetEnv().
I interpret "null-string" to mean "empty string".
MozReview-Commit-ID: 2mfVD1zULXL
--HG--
extra : rebase_source : 07ec16c002f5c6d1ed0003fa05985f4155f85dfc
If set, MOZ_PROFILER_STARTUP_FEATURES_BITFIELD overrides the value set by
MOZ_PROFILER_STARTUP_FEATURES.
This means that we won't need to go through an intermediate string
representation when propagating profiler settings to a child process through
environment variables.
MozReview-Commit-ID: 49eTVMI21GJ
--HG--
extra : rebase_source : 084040e7816929a8b63b7b087d7202180be4d4d5
This allows code outside the profiler to get fully interleaved stack traces
containing frames from the pseudo-stack, native stack, and JS stack.
--HG--
extra : rebase_source : e21b64e86ffec83a0052947afad1793f3fd62d00
This works since we added the modules as local references in package.json.
MozReview-Commit-ID: 5e6EkcThJTX
--HG--
extra : rebase_source : 8d432c5fa9620981c20af7a3608f282508c51930
This patch changes ProfileBuffer arguments from pointers to references. For
functions that modify the ProfileBuffer, it also moves the argument to the end.
--HG--
extra : rebase_source : 394dd3effc852447c703c0f5802c092ae96e2eaa
When a sample with a label and a dynamic string is written to the
ProfileBuffer, the profiler currently joins them together (up to a max length
of 512, omitting any that exceed this) and then writes a CodeLocation entry
with an empty string followed by a sequence of EmbeddedString entries. When
parsing those entries, we allow a length up to 8192, but that limit is never
reached due to the prior limit of 512.
This patch makes the following changes.
- Removes the joining at write time. Labels and dynamic strings are now written
separately into the ProfileBuffer. The 512 limit still applies, but just for
dynamic strings; dynamic strings longer than that are replaced with "(too
long)". (Labels also always take up one entry, because they only require a
single pointer, because they are always static strings.) The joining is
now done when the ProfileBuffer is parsed, and the max length for the joined
string is still 512; any strings exceeding 512 at that point are truncated,
rather than omitted. (This also happens to be outside the profier's critical
section.)
- Renames CodeLocation as Label and EmbeddedString as DynamicStringFragment.
This makes the ProfileBuffer entry names better match the names used in
GeckoProfiler.h.
- Moves AddDynamicCodeLocation(), now called addDynamicStringEntry(), into
ProfileBuffer.
- Adds some testing of long and overly-long dynamic strings to the GTest.
--HG--
extra : rebase_source : 38bdf6e84fa19576c9e0291249e84b19dbb421f7
On Win32, stack frames are now always present, so we can always use
FramePointerStackWalk(). On Win64, stack frames are never present, so we always
use MozStackWalk().
In both cases, we can get stack traces no matter the value of MOZ_PROFILING. So
this patch removes MOZ_PROFILING from the relevant conditions. It also
restructures the conditions and adds some helpful comments.
--HG--
extra : rebase_source : c76aee00432b875ae0c81f8e61f56cd4112bffde
Currently LUL is a member of CorePS, meaning that it is guarded by the PSMutex.
This mutex is grabbed by the main thread at random points during the execution
of the program. This is unfortunate, as initializing LUL can take a long
time (>1s on my local machine), and we definitely don't want to be blocking the
main thread waiting for it.
In addition, in the BHR case, we used to be grabbing LUL when we got our first
hang, while both the PSMutex and the BHR monitor were being held. This meant
that the main thread could make no progress during LUL initializaion, as the BHR
monitor is grabbed by the main thread on every spin of the event loop.
This patch moves that initialization to be behind a completely separate lock,
and makes BHR initialize it on the background thread before acquiring the BHR
lock, meaning that no locks other than the one guarding LUL should be held
during its initialization.
MozReview-Commit-ID: GwNYQaEAqJ1
The eslint task ignores warnings, therefore the vcs hook should as well. The --quiet argument will
be ignored by other linters.
This also makes tools/lint/hooks.py executable which was preventing it from being used on git.
MozReview-Commit-ID: DXbx01shJmX
--HG--
extra : rebase_source : 9c80a069f486c0b6b7b9c970b84d44b964c59a0f
The profiler writes ProfileBuffer entries in a particular order, and then later
has to parse them, mostly in StreamSamplesToJSON(). That function's parsing
code is poorly structured and rather gross, at least partly because no explicit
grammar is identified.
This patch identifies the grammar in a comment, and in the same comment also
includes some examples of the more complicated subsequences. Once written down,
the grammar is obviously suboptimal -- the |Sample| entries serve no useful
purpose, for example -- but I will leave grammar improvements as follow-ups.
The patch also rewrites the parser in a more typical fashion that obviously
matches the grammar. The new parser is slightly more verbose but far easier to
understand.
--HG--
extra : rebase_source : 762c21a68cdc18ff25b5feda3c5dfcf33afa53be
This adds pre-push and pre-commit hooks for both hg and git. All
four possibilities are implemented in the same file.
To enable a pre-push hg hook, add the following to hgrc:
[hooks]
pre-push.lint = python:/path/to/gecko/tools/lint/hooks.py:hg
To enable a pre-commit hg hook, add the following to hgrc:
[hooks]
pretxncommit.lint = python:/path/to/gecko/tools/lint/hooks.py:hg
To enable a pre-push git hook, run the following command:
$ ln -s /path/to/gecko/tools/lint/hooks.py .git/hooks/pre-push
To enable a pre-commit git hook, run the following command:
$ ln -s /path/to/gecko/tools/lint/hooks.py .git/hooks/pre-commit
MozReview-Commit-ID: DUxCKN2fiag
--HG--
extra : rebase_source : 67c97a3fd8adc50d6bb3c488345077065b63de7d
The patch also changes ProfileBuffer::processEmbeddedString() to take the
readAheadPos, instead of recomputing it.
--HG--
extra : rebase_source : 62bacb4c7cc61f43d78ada342af0a813c307b96a
The double variant is always 8 bytes, so the chars variant can be too. As well
as reducing memory usage on 32-bit platforms, this patch makes the code
clearer.
--HG--
extra : rebase_source : 8f3dd0a1e35c18ac812fa5db7c3f6e4626447c4c
- It's common for unions to be named |u|, because this makes it obvious that
it's a union when you access it, which is good. This patch introduces that
for the union in ProfilerBufferEntry. (This required move the union setting in
each constructor from the initializer list to the constructor body.)
- Each union variant had the prefix "mTag". But that's a bad name, because
|mKind| is actually the tag. So this patch removes the "Tag".
- |mTagData| was a poor name for the |const char*| variant, so this patch
renames it |mString|.
- The patch moves |mKind| before |u|, because that's the normal way that tagged
unions are done.
--HG--
extra : rebase_source : 563cbcf6414fa3c45abcdd5eafd99965bb842de5
If marker pointer is null the uses of it will immediately crash, so asserting
non-nullness doesn't add much. And removing the getter makes it more similar to
the other union variants.
--HG--
extra : rebase_source : a1066ef98ac5d2dae5303b465106b844937cfb73