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

4777 Коммитов

Автор SHA1 Сообщение Дата
Markus Stange 180a94d4c2 Bug 1346592 - When stopping the profiler, mark all ThreadInfos as not being profiled. r=njn
This also renames HasProfile() to IsBeingProfiled().

MozReview-Commit-ID: 70RGHNbyZG3

--HG--
extra : rebase_source : 64f1df6985f41ae52d2385edcfd7822d16fd1e00
2017-04-17 22:46:54 -04:00
Iris Hsiao 063f52934e Backed out changeset 1b277ae21ba5 (bug 1346592)
CLOSED TREE
2017-04-18 11:05:12 +08:00
Iris Hsiao 82a868141d Backed out changeset 9d86f0c3ddd4 (bug 830990) for build bustage
CLOSED TREE
2017-04-18 11:05:00 +08:00
Markus Stange e6bcc1a69f Bug 830990 - Stop dispatching CheckResponsivenessEvents when the profiler is stopped. r=njn
MozReview-Commit-ID: 4MnRGqE2sEK

--HG--
extra : rebase_source : 10078745ac3839ea80879a6ebe710a0f4973f25d
2017-04-16 14:48:24 -04:00
Markus Stange b1002e6197 Bug 1346592 - When stopping the profiler, mark all ThreadInfos as not being profiled. r=njn
This also renames HasProfile() to IsBeingProfiled().

MozReview-Commit-ID: 70RGHNbyZG3

--HG--
extra : rebase_source : fbe6faf0ed9ee7273e77f1f81b79915800772212
2017-04-16 13:41:32 -04:00
Paul Bignier a07aa00315 Bug 1356797 - Update ThirdPartyPaths.txt. r=sylvestre 2017-04-16 19:08:29 -07:00
Sebastian Hengst a7334b2896 Bug 1347709 and Bug 1356569 - Bump eslint plugin version to resolve conflict. r=instruction-by-florian a=bustage-fix
MozReview-Commit-ID: 2zp9hXqxT26

--HG--
extra : amend_source : 465b881899a40cf29d0f3d7dbdd883d8a61edb2c
2017-04-15 20:05:51 +02:00
Sebastian Hengst 8bd051237a merge mozilla-inbound to mozilla-central. r=merge a=merge
MozReview-Commit-ID: JpAhOPjgvkF
2017-04-15 19:59:24 +02:00
Mark Banner f515ecdff3 Bug 1347709 - Allow modules.json to be loaded from a local version for out-of-tree uses of eslint-plugin-mozilla. r=mossop
MozReview-Commit-ID: 7RzAUqNJQ15

--HG--
extra : rebase_source : c71873fd9864032345fb48047f2c272c2703a210
2017-04-13 12:03:30 +01:00
Mark Banner 4ef57a002d Bug 1347709 - Add a prepublish script to save the current globals for the published version of eslint-plugin-mozilla, and use that when not in mozilla-central. r=mossop
MozReview-Commit-ID: GHD7GQ0Pjnp

--HG--
extra : rebase_source : 8a8deeb0544799426baa820fa91a22eb9e1d3526
2017-04-12 18:02:53 +01:00
Markus Stange 2d2f47f7b2 Bug 1355634 - Use MozPromise to make ProfileGatherer more generic. r=njn
MozReview-Commit-ID: GKqxJW8zjca

--HG--
extra : rebase_source : a6f0903008503ae34cb1584bbd38357ff2343c22
extra : histedit_source : 7e077d757dfa919b4a88a10cff0fc15beb3a62f9
2017-04-12 16:57:58 -04:00
Markus Stange c0b86ef8ba Bug 1321617 - Add a test for profiler_stream_json_for_this_process. r=njn
MozReview-Commit-ID: A5Iu3dQFvHK

--HG--
extra : rebase_source : e15843dba66e427c6b1eb7bc2f8a63f419f9e3ca
extra : histedit_source : 6f7e9ee3a31aa2463c4946d543e4358fd724f02f
2017-04-12 16:48:16 -04:00
Markus Stange e668a84964 Bug 1321617 - Capture parent process profiles in ProfileGatherer::Start2, not in ProfileGatherer::Finish. r=njn
MozReview-Commit-ID: 3vC2qb90KN5

--HG--
extra : rebase_source : 45930d88a88648b9d472f990e79e815c106d4fa3
extra : histedit_source : e8b1ef002432231cf3698a5408a1a0d80f3bcac6
2017-04-09 16:52:22 -04:00
Markus Stange dcfba9f179 Bug 1321617 - Call profiler_stream_json_for_this_process in ProfileGatherer::Finish() and get rid of the 'profile-subprocess' notification indirection. r=njn
MozReview-Commit-ID: CnE0SJBsfDN

--HG--
extra : rebase_source : 59f4201d3d8b8fb0d5bc7743f9dafd60789d916a
extra : histedit_source : 5b8b9b26ac87d22d118891868a8a07fe225e85b2
2017-04-12 16:40:03 -04:00
Markus Stange 4a1b5c4027 Bug 1321617 - Reduce the scope of the lock in profiler_get_profile. r=njn
MozReview-Commit-ID: 5OmVMwy1yMl

--HG--
extra : rebase_source : 9cebf6f6ff860fc6b0750e9e4d9eaf23773ccc19
extra : histedit_source : cbd1321ea17a26553384efb6ee7511d800878b84
2017-04-12 16:45:28 -04:00
Markus Stange a951919765 Bug 1321617 - Move parts of StreamJSON out into the callers and rename it to locked_profiler_stream_json_for_this_process. r=njn
MozReview-Commit-ID: 239BJOa2bix

--HG--
extra : rebase_source : 36f248d60bf4c82deb2a62c5a45d9c1c3c44af2e
extra : histedit_source : e5b2b4cb5f19e6efb69ff8e2d391199d3dbaf3ea
2017-04-08 21:07:52 -04:00
Markus Stange 0fc86487fd Bug 1321617 - Don't store profiles on the CPPC; pass them right to the ProfileGatherer. r=njn
MozReview-Commit-ID: 6gaP8Ltm7ms

--HG--
extra : rebase_source : c91f87f096286f8914553a26d692ea99ec9369c5
extra : histedit_source : 0fd9f4a9bf8b9f8f0acaaab30640a5e2f462148b
2017-04-08 21:54:16 -04:00
Markus Stange 59446b4f09 Bug 1321617 - Tell the CrossProcessProfilerController whether a profile is a response to a GatherProfile request or whether it was sent because the process was exiting. r=mconley
MozReview-Commit-ID: BLkaeZqtRhv

--HG--
extra : rebase_source : b0271115a66afbf54d98b5bad61165f815f5bd8c
extra : histedit_source : 299cccc9cc8c06de4d61686ff49d2b0e7649da78
2017-04-12 16:44:31 -04:00
Markus Stange dc05eb93fd Bug 1329114 - Put profiles from other processes into a 'processes' array, not into the threads array, and don't stringify them. r=njn
MozReview-Commit-ID: Ccl6JIbRMyX

--HG--
extra : rebase_source : 1b9a5bbff6da5b1dbfb907630900526e95981a28
extra : histedit_source : 8c830a0178c14fdb044dea2c7323025d3892454b
2017-04-08 16:00:30 -04:00
Mark Banner b624a1a95b Bug 1347709 - Add a .npmignore file to stop publishing unnecessary files for eslint-plugin-mozilla. r=mossop
MozReview-Commit-ID: BcZBIFM1Ugu

--HG--
extra : rebase_source : ca8cbc2e04cb96e98da5febdd82d8ac7393ebc8b
2017-04-06 12:04:52 +01:00
Markus Stange eb07a56986 Bug 1356752 - Fix --enable-tasktracer build by adding the missing aWriter argument. r=njn
MozReview-Commit-ID: L87KE3BmYRB

--HG--
extra : rebase_source : 09e34cc04ea7f76a07419e0e75cc0b097c001b6b
2017-04-15 00:22:07 -04:00
Julian Seward 0187151352 Bug 1355136 - LUL on i686/x86_64-linux: allow CFAs to be arbitrary prefix expressions. r=froydnj.
For reasons which are unclear, but possibly due to lack of any known use cases
when the code was written, LUL on i686/x86_64-linux only accepts CFA (canonical
frame address) expressions of the form SP+offset or FP+offset.  However, on
Fedora 25 x86_64 and Ubuntu 16.10 x86_64, at least one address range per object
uses a Dwarf expression for the CFA, for example:

00000018 000000000024 0000001c FDE cie=00000000 pc=0000000031e0..0000000031f0
  DW_CFA_def_cfa_offset: 16
  DW_CFA_advance_loc: 6 to 00000000000031e6
  DW_CFA_def_cfa_offset: 24
  DW_CFA_advance_loc: 10 to 00000000000031f0
  DW_CFA_def_cfa_expression(
          DW_OP_breg7 (rsp): 8; DW_OP_breg16 (rip): 0; DW_OP_lit15; DW_OP_and;
          DW_OP_lit11; DW_OP_ge; DW_OP_lit3; DW_OP_shl; DW_OP_plus)

producing the following complaint from LUL:

  can't summarise: SVMA=0x31f0: rule for DW_REG_CFA: invalid |how|, expr=LExpr(PFXEXPR,0,0)

Given that LUL is capable of handling such a CFA expression, it seems artificial
to stop it doing so.  This patch changes Summariser::Rule() so as to allow such
expressions.
2017-04-12 08:42:02 +02:00
Wes Kocher c8a2033f35 Merge m-c to inbound, a=merge 2017-04-13 17:33:39 -07:00
Wes Kocher 514e230373 Merge inbound to central, a=merge 2017-04-13 17:24:01 -07:00
Nicholas Nethercote 1fbc5e1dab Bug 1355807 - Fix condition guarding stopJSSampling() calls. r=jseward.
PseudoStack requires that startJSSampling() and stopJSSampling() calls be
interleaved. But currently the conditions guarding those calls don't match:
startJSSampling() is guarded by ShouldProfileThread(), and stopJSSampling() is
guarded by HasProfile().

It's possible for HasProfile() to be true when ShouldProfileThread() is not
true -- e.g. profile many threads, then restart and profile fewer threads, and
we end up with live threads that have a profile but aren't being profiled right
now -- which leads to assertion failures in stopJSSampling().

This patch makes the stopJSSampling() condition use ShouldProfileThread(), just
like the startJSSampling() condition, which fixes the assertion failure.

--HG--
extra : rebase_source : e9931928c8ac1301f5018f9da319bc478722b98e
2017-04-13 09:34:42 +10:00
Julian Seward 553b8e9b10 Bug 1354546 - Make LUL read CFI from the main executable on x86_64-Linux. r=n.nethercote.
LUL doesn't read CFI from the main executable on x86_64-linux, and possibly
other Linux variants, because SharedLibraryInfo::GetInfoForSelf() doesn't
produce a name for the main executable object, even though it does notice the
mapping.

This causes noticeable unwind breakage because the main executable on Linux
contains various wrapper functions pertaining to memory allocation and locking,
such as

  moz_xmalloc, moz_xcalloc, moz_xrealloc
  mozilla::detail::MutexImpl::lock, mozilla::detail::MutexImpl::unlock

and is generally observable on x86_64-Linux as unwinding failures out of
functions with addresses around 0x40xxxx, since that's the traditional load
address for the main executable.

This patch modifies the Linux implementation of GetInfoForSelf() so as to
harvest the main executable's name from /proc/self/maps.  This is then added
into the information acquired from dl_iterate_phdr.  As a result
GetInfoForSelf() does correctly report the executable name, so LUL reads Dwarf
unwind info from it, and the abovementioned unwinding failures disappear.

--HG--
extra : rebase_source : 267c6d7c3967a4d29f8ff0b4a91d339a6625085d
2017-04-12 07:56:58 +02:00
Wes Kocher dd8c316d53 Merge m-c to inbound, a=merge 2017-04-12 18:24:24 -07:00
Wes Kocher 2986c817dc Merge autoland to central, a=merge CLOSED TREE 2017-04-12 15:13:30 -07:00
Wes Kocher 25d50f2c30 Merge inbound to central, a=merge 2017-04-12 14:39:09 -07:00
Nicholas Nethercote 32998fa82c Bug 1347258 - Pass TickSample as a reference, not a pointer. r=mstange.
--HG--
extra : rebase_source : cec4e4435b5e67b4bbf29c5f0637f5ebe3a37fca
2017-04-12 14:56:41 +10:00
Mark Banner 3dd96b34b3 Bug 1355776 - Upgrade ESLint to version 3.19.0 to pick up autofix improvements and other fixes. r=mossop
Pick up autofix improvements in 3.19.0. Upgrade eslint-plugin-react. Also fix issues with the package.json file and the ESLint node_modules upload script.

MozReview-Commit-ID: IDZ1n4qTTuv

--HG--
extra : rebase_source : aa97cd6f314ce10d16d12446e50a27d6f994a9f1
2017-04-12 12:07:01 +01:00
Nicholas Nethercote 02ad712a35 Bug 1355357 (part 3) - Construct nativeStack with the right count. r=jseward.
--HG--
extra : rebase_source : 1f619c7fd3af728d34d1f0d350e0d94fa618b5d0
2017-04-11 18:49:00 +10:00
Nicholas Nethercote 2ce4e19d9c Bug 1355357 (part 2) - Avoid a GetThreadHandle() call. r=jseward.
Using ProfiledThread() instead avoids a cast.

--HG--
extra : rebase_source : ddd6b75bc741fc04aa94d0ec2494eb24a2ef9fca
2017-04-11 18:48:02 +10:00
Nicholas Nethercote e64832b7ec Bug 1355357 (part 1) - Rename profiled_thread_ and profiled_thread() in PlatformData. r=jseward.
--HG--
extra : rebase_source : e223ab428aeeb0e711c31dc47a19d5d1bcc471ed
2017-04-11 18:47:15 +10:00
Iris Hsiao 944f87c575 merge mozilla-inbound to mozilla-central a=merge 2017-04-12 11:16:46 +08:00
Julian Seward ac843f7319 Bug 1355052 - Tidy up shared-linux-libraries.cc. r=n.nethercote.
shared-linux-libraries.cc is a maze of ifdefs which is hard to navigate, hard to
reason about and gets in the way of making a proper fix for bug 1354546.  This
bug is for cleanup only.  It should not change any functionality.

The following changes are made:

* adds emacs/vi tab-width lines

* removes the ARRAY_SIZE macro as it appears to be unused

* documents the 3 different configurations, splits #includes accordingly

* comments SharedLibraryInfo::GetInfoForSelf accordingly

* wraps some long lines

* documents in which cases dl_iterate_phdr is used and in which cases
  /proc/<pid>/maps is used

* Puts /proc/<pid>/maps reading in its own scope

* Makes the LOG messages on failure clearer
2017-04-11 18:11:16 +02:00
Kan-Ru Chen da0e46ae95 Bug 1355123 - Initialize gecko profiler properly for IPDL test runner. r=mstange,njn
MozReview-Commit-ID: C9hkZPj3SVL
2017-04-11 10:56:58 -04:00
Nicholas Nethercote d8427b066c Bug 1354436 - Fix crash when MOZ_PROFILER_HELP is specified. r=jseward.
--HG--
extra : rebase_source : 86bedf7edc2b0bfce3b75f8828f3c4fb5015a16c
2017-04-10 14:52:05 +10:00
Carsten "Tomcat" Book 023be17063 Merge mozilla-central to autoland 2017-04-11 10:24:02 +02:00
Mark Banner a49e5501a1 Bug 1354460 - Fix the Mercurial ESLint Hook after the node_modules location change. r=mossop
MozReview-Commit-ID: LhB6twS4TLI

--HG--
extra : rebase_source : 07167ded1cab35a4ade756d773e02b297aaf36bf
2017-04-10 10:07:37 +01:00
Kearwood Gilbert 8cedccb89e Bug 1341423 - Integrate OpenVR binding library r=daoshengmu
MozReview-Commit-ID: GaUnfbXgh9L

--HG--
rename : gfx/vr/openvr/openvr.h => gfx/vr/openvr/headers/openvr.h
extra : rebase_source : e7a0983371c1ed381ddf431e2d5a814c510d4967
2017-02-27 16:59:30 -08:00
Nicholas Nethercote 632b8b594d Bug 1353630 (part 5) - Allocate PseudoStack within ThreadInfo's constructor. r=jseward. 2017-04-06 09:40:28 +10:00
Nicholas Nethercote bd098b6cbc Bug 1353630 (part 4) - Separate ThreadInfos for live and dead threads. r=jseward.
Currently, ThreadInfos for live and dead threads are stored in a single vector.
This patch separates them into two separate vectors.

This ensures that the two kinds of ThreadInfos can't be mixed up. It also means
ThreadInfo::mPendingDelete can be removed.
2017-04-03 10:40:23 +10:00
Nicholas Nethercote 3bd73aaa4b Bug 1353630 (part 3) - Don't hold onto ThreadInfos for dead threads that aren't being profiled. r=jseward.
Currently, when the profiler is active we hold onto the ThreadInfo of all
threads that die. Then when capturing a profile we ignore all threads that
aren't being profiled.

This patch changes things so we only hold onto the ThreadInfos of threads that
die if they are being profiled. In effect it removes state 3 from the following
list of possible ThreadInfo states:

  1. !PendingDelete + !HasProfile
  2. !PendingDelete + HasProfile
  3. PendingDelete + !HasProfile  (no longer used)
  4. PendingDelete + HasProfile
2017-04-03 10:40:23 +10:00
Nicholas Nethercote 76d203f1da Bug 1353630 (part 2) - Replace MaybeSetProfile() with ShouldProfileThread(). r=jseward.
MaybeSetProfile() does a check and then sets on success. By separating the
check from the set, we can avoid some subsequent HasProfile() checks.
2017-04-06 07:44:59 +10:00
Nicholas Nethercote 9c349c7a6c Bug 1353630 (part 1) - Refactor ThreadResponsiveness use in ThreadInfo. r=mstange.
Now that ThreadResponsiveness is only used on the main thread, we can refactor
ThreadInfo a bit. This patch does the following.

- Removes ThreadInfo::mThread, which is unused.

- Changes ThreadInfo::mRespInfo to a Maybe<>, and moves the is-main-thread
  checking outside of ThreadInfo and ThreadResponsiveness.

- Renames {ThreadInfo,TickSample}::mRespInfo as mResponsiveness, to better
  match the class name.
2017-04-05 15:53:13 +10:00
Nicholas Nethercote df889bc9f6 Bug 1350967 (part 2) - Remove profiler_get_profile_jsobject_async() and profiler_save_profile_to_file_async(). r=mstange.
The state management is better done within nsProfiler::GetProfileDataAsync()
and nsProfiler::DumpProfileToFileAsync(). (The latter function is new in this
patch.)

This fixes a deadlock.

Other notes:

- The patch moves ProfileGatherer from ProfilerState to nsProfiler. This is
  nice because the former is shared between threads but the latter is main
  thread only. (This is how the deadlock is avoided.)

- ProfilerStateMutex and PSLockRef are no longer required in platform.h. Those
  types and variables are now only used in platform.cpp and platform-*.cpp.

- ProfilerGatherer now calls profiler_get_profile() instead of ToJSON(). Which
  means that ToJSON() now has a single caller, so the patch inlines it at the
  callsite and removes it.

- profiler_save_profile_to_file_async() dispatched a Runnable to the main
  thread. But this wasn't necessary, because it always ran on the main thread
  itself. So the new function nsProfiler::DumpProfileToFileAsync() doesn't do
  that.

- profiler_will_gather_OOP_profile(), profiler_gathered_OOP_profile(), and
  profiler_OOP_exit_profile() are all moved into nsProfiler as well. This
  removes the need for the horrible fake lock in
  profiler_will_gather_OOP_profile(), hooray!
2017-03-29 15:48:13 +11:00
Nicholas Nethercote 445b5b7145 Bug 1350967 (part 1) - Remove profiler_get_profile_jsobject. r=mstange.
The conversion to a JSObject is better done within
nsProfiler::GetProfileData().

--HG--
extra : rebase_source : 4a0ba97d99681fca96f2d26b609bafe188095787
2017-03-29 14:02:37 +11:00
Mark Banner 92c422a2d6 Bug 1342459 - Add a rule to automatically detect ContentTask.spawn and inject the relevant globals. r=mossop
This reduces the amount of places where we need to specify the mozilla/frame-script environment. It does have
the side effect of allowing those globals in the whole file, but that is what specifying the environment would
do, and this is also for mochitest test files only.

MozReview-Commit-ID: 1LLFbn6fFJR

--HG--
extra : rebase_source : 82a6934d90bbbbd25f91b7b06bf4f9354e38865a
2017-04-05 10:00:25 +01:00
Mark Banner 427e3b23dc Bug 1342459 - Fix various no-undef issues in browser/base. r=mossop
MozReview-Commit-ID: CRYxu7copKb

--HG--
extra : rebase_source : bc176c5e6890ffc6a4e26cb9bc9d441d9486ce7b
2017-04-04 13:42:33 +01:00
Carsten "Tomcat" Book c5364b4b43 Merge mozilla-central to mozilla-inbound 2017-04-05 14:50:28 +02:00
Carsten "Tomcat" Book 7a670cdd01 merge mozilla-inbound to mozilla-central a=merge 2017-04-05 14:33:35 +02:00
Joel Maher 8db607ac7d Bug 1341876 - annotate tools/* with BUG_COMPONENTS. r=gps
MozReview-Commit-ID: 4v1CzI8RtJs
2017-04-05 08:31:05 -04:00
Nicholas Nethercote f9e82b4a80 Bug 1351136 (follow-up) - Fix a harmless argument mis-ordering in a call to profiler_get_start_params(). r=me.
Found by Coverity.

--HG--
extra : rebase_source : 6f65ceef59e8b32252146eec6703a7fd17b3479b
2017-04-05 11:56:37 +10:00
Andrew McCreight 2f83bee3a7 Bug 1353174, part 1 - Turn ContentObservers.jsm into a process script. r=Gijs
This retains the advantage of running only once per process, while
avoiding the per-process overhead of a jsm.

MozReview-Commit-ID: 1N53MvRwUpg

--HG--
rename : browser/modules/ContentObservers.jsm => browser/modules/ContentObservers.js
extra : rebase_source : 6a502cff26fcb55526f97385274bbae871f5cc6c
2017-04-04 11:21:48 -07:00
Mark Banner 9f564cd9e1 Bug 1352969 - Improve ESLint environment browser-window globals list, and automatically inject it into browser-window scripts. r=mossop
MozReview-Commit-ID: 3lv0K1unAc

--HG--
extra : rebase_source : 4e4ef0f40f377298013dc17ca0f077890d32669c
2017-03-09 17:17:26 +00:00
Mark Banner 1087fc1884 Bug 1352969 - Fix various ESLint no-undef issues in browser/base (no-undef is not enabled yet). r=mossop
MozReview-Commit-ID: BuTyJAfUoWR

--HG--
extra : rebase_source : 482bdc039362347f35aec9fd15e07a143dccb860
2017-02-22 17:02:59 +00:00
Mark Banner 2cc135d612 Bug 1353385 - Make './mach eslint --setup' a little quieter and fix the reported location of the eslint binary. r=mossop
MozReview-Commit-ID: 3ucPJP5JXV8

--HG--
extra : rebase_source : ba9f2f1b79e6bbdbf20884ec01d095bd40f8c3c3
2017-04-04 16:06:14 +01:00
Nicholas Nethercote f91e7e7672 Bug 1351963 (part 9) - Improve SetSampleContext(). r=jseward.
SetSampleContext() sets the TickSample's register fields, and the two callers
of SetSampleContext() set the TickSample's mContext.

This patch changes SetSampleContext() so it sets all the fields in one place.
It also renames SetSampleContext() as FillInSample(), because it sets more than
just the context.

--HG--
extra : rebase_source : 9b9f749fe3de687a7fd32f5c38e2321c2abebfdc
2017-03-31 11:13:28 +11:00
Nicholas Nethercote c29e97d66d Bug 1351963 (part 8) - Simplify PseudoStack ownership. r=jseward.
Currently each live thread has a PseudoStack that is owned by tlsPseudoStack,
and a ThreadInfo that has a non-owning pointer to the same PseudoStack.
Then, if the profile is active when the thread dies, ownership of the
PseudoStack is transferred to the ThreadInfo.

This patch simplifies the ownership rules. Every ThreadInfo now always owns its
PseudoStack and is responsible for destroying it. tlsPseudoStack is a
non-owning pointer, and so must be cleared when a PseudoStack is destroyed.
This simplifies the code in a few places.

--HG--
extra : rebase_source : 1012b6590380091d60eff98b4e0c5b1ba946cc7e
2017-03-31 11:01:50 +11:00
Nicholas Nethercote 00f3bc4e23 Bug 1351963 (part 7) - Factor out repeated thread-finding code. r=jseward.
The patch also adds a MOZ_RELEASE_ASSERT in profiler_unregister_thread() for
the case where the ThreadInfo isn't found, which is informative.

--HG--
extra : rebase_source : 11a86914db235e4a60955ff1c9b77d46109af548
2017-03-24 09:24:45 +11:00
Nicholas Nethercote 28cde67779 Bug 1351963 (part 6) - Remove ThreadInfo from TickSample. r=jseward.
This avoids the need for the fake ThreadInfo in profiler_get_backtrace(). It
requires adding a few extra fields to TickSample.

--HG--
extra : rebase_source : c28e5493edc7db96a7160e78b297ae09dc05ca7c
2017-03-31 10:49:36 +11:00
Nicholas Nethercote f76f4f4892 Bug 1351963 (part 5) - Improve TickSample. r=jseward.
This patch does the following.

- Splits TickSample's constructor in two, one for the periodic sample case, and
  one for the synchronous sample case, and initializes more stuff in them. (The
  two constructors aren't that different right now, but they will become more
  different when I remove TickSample::mThreadInfo.)

- Makes all the constructor-filled fields in TickSample |const|.

- Reorders the fields so that the constructor-filled ones are before the ones
  that get filled in later.

- Omits mContext on Mac via conditional compilation, to make the omission
  clearer.

--HG--
extra : rebase_source : f3e392c4cf777df5b9f39577af82615890137018
2017-03-31 10:35:54 +11:00
Nicholas Nethercote 25993378b9 Bug 1351963 (part 4) - Make the LastSample argument to addTagThreadId optional. r=jseward.
LastSample only makes sense for periodic samples, which are written to the
global ProfileBuffer. It doesn't make sense for synchronous samples which are
written to their own unshared buffer. At the moment it doesn't hurt to use
them in this nonsensical way, but the ThreadInfo profiler_get_backtrace()
will be removed soon, and we won't even have a LastSample to use nonsensically.

So this patch makes the LastSample argument to addTagThreadId() optional. Which
means we have to pass in a ThreadId, so there's no longer much point
duplicating the ThreadId in LastSample, so the patch removes that field too.
This avoids the possibility of the duplicate ThreadId failing to match, which
is nice.

--HG--
extra : rebase_source : dad76ff8b33663398e6f45f85da500b0fd7a598f
2017-03-31 10:13:13 +11:00
Nicholas Nethercote f9ffeeb27b Bug 1351963 (part 3, attempt 2) - Remove ThreadInfo from ProfilerBacktrace. r=mstange. 2017-04-04 09:41:53 +10:00
Nicholas Nethercote 44c0cb1064 Bug 1351963 (part 2, attempt 2) - Move StreamSamplesAndMarkers() out of ThreadInfo. r=mstange. 2017-04-04 09:41:11 +10:00
Mark Banner b8e9cadef9 Bug 1305023 - Move ESLint's package.json and node_modules to the top level to improve editor integration. r=gps
Editors generally look for configurations at the top level of a project. For ESLint, they also look for the specific binary in node_modules before defaulting to the system binary. Whilst you can override the location, generally it doesn't work well when switching between projects.

The custom in-tree libraries make setup of a system ESLint more difficult as well.

Therefore to make it simple for developers to pick up the ESLint integrations with Editors, by moving the package.json and associated node_modules to the top-level directory.

MozReview-Commit-ID: 1pQpd7hTQ61

--HG--
rename : tools/lint/eslint/npm-shrinkwrap.json => npm-shrinkwrap.json
rename : tools/lint/eslint/package.json => package.json
extra : rebase_source : 9d69d791f86b5c55b1fcd5f6449f0ab84e56b05c
2017-03-22 12:27:00 +01:00
Carsten "Tomcat" Book 8d910c41e3 merge mozilla-inbound to mozilla-central a=merge 2017-04-03 12:13:46 +02:00
Carsten "Tomcat" Book ac161c6904 Backed out changeset d9ce5cdb4e5a (bug 1351963) for hopefully fix the dt leaks 2017-04-03 08:19:22 +02:00
Carsten "Tomcat" Book b9e48685b2 Backed out changeset 016c13131fff (bug 1351963) 2017-04-03 08:18:55 +02:00
Nicholas Nethercote 5ed484057c Bug 1351963 (part 3) - Remove ThreadInfo from ProfilerBacktrace. r=mstange.
At this point the only things in the ThreadInfo it uses are the thread name and
id, which are easy to store instead. This gets a step closer to avoiding the
use of ThreadInfo in profiler_get_backtrace().

--HG--
extra : rebase_source : f4feb08ec9fe7880ee43f784c6878c1c04fd3294
2017-03-31 09:41:42 +11:00
Nicholas Nethercote 9fe90f9b94 Bug 1351963 (part 2) - Move StreamSamplesAndMarkers() out of ThreadInfo. r=mstange.
StreamSamplesAndMarkers() is the only ThreadInfo method called on
ProfilerBacktrace::mThreadInfo. Furthermore, it doesn't use all that much stuff
from ThreadInfo, and what stuff it does use we can instead pass in as
arguments.

This patch moves StreamSamplesAndMarkers() out of the class. It's a little
ugly, but a necessary precursor for removing ProfilerBacktrace::mThreadInfo and
all the subsequent improvements.

--HG--
extra : rebase_source : 417bda4f29a27c525f7240d3427494dd86b9a868
2017-03-31 09:37:24 +11:00
Nicholas Nethercote c6942af645 Bug 1351963 (part 1) - Tidy up ThreadInfo. r=mstange.
It doesn't need any virtual methods, nor the FRIEND_TEST declarations.

--HG--
extra : rebase_source : 973c01f43737d5672b0257bb40e029894857a90d
2017-03-31 09:28:41 +11:00
Nicholas Nethercote 8a81f4a587 Bug 1351136 - Write a gtest for basic features of the Gecko Profiler. r=mstange.
This required a tweak to DoNativeBacktrace() to work around an ASAN false
positive.

--HG--
extra : rebase_source : 2e21ae4c132db812150f42c26aa708aefce311be
2017-03-29 15:49:44 +11:00
Markus Stange fcdd5dbd1f Bug 1351920 - Remove the nsCString&& version of PROFILER_LABEL_DYNAMIC because it makes misleading promises about performance. r=njn
MozReview-Commit-ID: I4y5xnFyfUj

--HG--
extra : rebase_source : 8cd3d9fc90df1cb7ff6199cf0a5b1cf3319bebe0
2017-03-29 21:47:51 -04:00
Markus Stange 353da4ad55 Bug 1351920 - Check privacy mode during sampling, not during PROFILER_LABEL_DYNAMIC. r=njn
When the profiler is running in privacy mode, we don't want to include dynamic
strings from PROFILER_LABEL_DYNAMIC to end up in the profile.
Rather than checking this every time we enter a scope marked with
PROFILER_LABEL_DYNAMIC, with this patch we will push the dynamic string into
the pseudo stack entry regardless, and then check the privacy mode during
sampling and ignore the dynamic string as necessary.
This way we can avoid taking the profiler state lock in PROFILER_LABEL_DYNAMIC
and also save a branch.

MozReview-Commit-ID: 5dXrtMuFJ5r

--HG--
extra : rebase_source : 1c2057e7ced332d9001137b5b280feab77a712e5
2017-03-30 12:41:04 -04:00
Carsten "Tomcat" Book 095969b8ee merge mozilla-inbound to mozilla-central a=merge 2017-03-31 14:45:33 +02:00
Nicholas Nethercote 6e2f13d8c2 Bug 1351946 (part 2) - Inline and remove GetEntries() and GetInterval(). r=mstange.
--HG--
extra : rebase_source : 127ff560940a93bf9bd5298ac6ab92812bdd94c7
2017-03-30 17:49:27 +11:00
Nicholas Nethercote 35bc116a65 Bug 1351946 (part 1) - Remove SigstartHandler from the profiler. r=mstange.
It was only needed for B2G.

--HG--
extra : rebase_source : 2063f1560503989d0ae0d3f2609e031bd06851a9
2017-03-30 16:27:20 +11:00
Bryce Van Dyk 19caff72af Bug 1325481 - Update clang-format fetch/locate codepath to gracefully fail. r=sylvestre
The checking on the return of value of fetch/locate is not working as intended.
The code should be early returning, but the return value of fetch/locate is 1 in
failure cases, which will not trigger the early return. The return value has
been altered to None, which will trigger the early return.

MozReview-Commit-ID: FDCW6rbZI6T

--HG--
extra : rebase_source : 8b087174db268d7d6a0bb62e6537f82a3b15b28d
2016-12-23 11:15:00 +13:00
Edouard Oger d09f746bfb Bug 1345955 - Update FxA profile when push notification received. r=markh
MozReview-Commit-ID: 4LL6F5Qnnj4

--HG--
extra : rebase_source : 00bc6a445d22fdfb626e7af6ad62fb750f444460
2017-03-16 17:15:18 -04:00
Nicholas Nethercote ecaa485dee Bug 1348024 - Make the env vars MOZ_PROFILER_{ENTRIES,INTERVAL} specific to startup. r=mstange.
The patch also renames profiler_usage() as PrintUsageThenExit().

--HG--
extra : rebase_source : 28b49f9f99d760ef1fcd1d56f8035caa0c5f2192
2017-03-23 13:44:15 +11:00
Mark Banner d12d56b126 Bug 1355778 - Manual fix of ESLint issues in eslint-plugin-* due to the rule changes. r=mossop
MozReview-Commit-ID: Ieh4qkSORjW

--HG--
extra : rebase_source : 9ad2b0257d578eac6106ee16b97394b4f69d1ef3
2017-04-12 12:19:14 +01:00
Mark Banner c8c632d328 Bug 1355778 - Autofix ESLint issues in eslint-plugin-* due to the rule changes. r=mossop
MozReview-Commit-ID: AGnEkeNuxhx

--HG--
extra : rebase_source : 668e5f11679c909b25d15da08c32ce8a1d05fef2
2017-04-12 12:15:13 +01:00
Mark Banner 6bf4da0caf Bug 1355778 - Unify some of the eslint-plugin-* rules to match the Mozilla recommended configuration. r=mossop
MozReview-Commit-ID: IyLtlZCtMtH

--HG--
extra : rebase_source : cb7beeea5d6e59a4cb6503c3d80c65a206679315
2017-04-12 12:14:43 +01:00
Florian Queze 457e21bc53 Bug 1356569 - Update the no-useless-parameters eslint rule to report trailing optional parameters for addObserver, appendElement and notifyObservers, r=jaws. 2017-04-14 21:51:40 +02:00
Florian Queze 37ff4fc7cc Bug 1356569 - Remove addObserver's last parameter when it is false, r=jaws. 2017-04-14 21:51:38 +02:00
Sebastian Hengst a07223d699 Backed out changeset 322fde2d53bf (bug 1356569) so bug 1355161 can be backed out. r=backout 2017-04-14 23:39:22 +02:00
Sebastian Hengst 608dc9589d Backed out changeset c724e1485608 (bug 1356569) 2017-04-14 23:39:15 +02:00
Florian Queze 9b6b71947a Bug 1356569 - Update the no-useless-parameters eslint rule to report trailing optional parameters for addObserver, appendElement and notifyObservers, r=jaws. 2017-04-14 21:51:40 +02:00
Florian Queze 95d4d20c17 Bug 1356569 - Remove addObserver's last parameter when it is false, r=jaws. 2017-04-14 21:51:38 +02:00
Nicholas Nethercote 2a3ba6e9fa Bug 1351528 (part 2) - Rename TracingMetadata as TracingKind. r=mstange.
"Metadata" regularly confuses me, because it suggests something complicated
rather than a simple enum.

This change also has the benefit of removing inconsistent capitalization
("Metadata" vs. "MetaData").

--HG--
extra : rebase_source : b651e124142c8d93139d22dae1c993c899be4d7a
2017-03-29 13:56:14 +11:00
Nicholas Nethercote 4285c8907d Bug 1351528 (part 1) - Streamline TracingMetadata. r=mstange.
This patch:

- Removes TRACING_EVENT_BACKTRACE, which is unused.

- Removes TRACING_DEFAULT and replaces all its uses with TRACING_EVENT, because
  there is no difference in how those two are used.

- Removes TRACING_TIMESTAMP, which is unused and also doesn't do anything
  different to TRACING_EVENT.

--HG--
extra : rebase_source : 69af1c53aa918798d8050e6b9d1a2658a0902af5
2017-03-29 13:52:47 +11:00
Nicholas Nethercote 37a83290da Bug 1351523 - Reorder profiler_get_start_params() arguments. r=mstange.
profiler_start() and nsProfilerStartParams() both have features before filters.
This patch makes profiler_get_start_params() follow suit.
2017-03-29 13:22:29 +11:00
Nicholas Nethercote a8a6c5c4ba Bug 1348776 (part 2) - Fix up HAVE_NATIVE_UNWIND. r=mstange.
This patch simplifies and increases the consistency of how HAVE_NATIVE_UNWIND
is used.

- Its definition is moved from platform.h to platform.cpp, because the latter
  is the only file that uses it.

- It's now defined in the same place as USE_{NS,EHABI,LUL}_STACKWALK, and used
  in preference to those, where possible. Also, it's now defined on Linux and
  Android even if MOZ_PROFILING is not.

- HAVE_NATIVE_UNWIND is now used consistently and by itself for all relevant
  conditions, including when defining the presence and use of the "stackwalk"
  feature.

- The patch inlines and removes is_native_unwinding_avail().

Note that MOZ_PROFILING must be defined for HAVE_NATIVE_UNWIND to be true on
Windows and Mac, but not on Linux and Android.

--HG--
extra : rebase_source : 5be3e5fe65706a15179a2cf46ba9451f68fff815
2017-03-27 17:04:56 +11:00
Nicholas Nethercote 399c98ac3c Bug 1348776 (part 1) - Fix a crash in the profiler when MOZ_PROFILING is undefined. r=mstange.
Bug 1339695 part 8 unintentionally changed behaviour in profiler_init() when
MOZ_PROFILING is undefined. This patch undoes that change.

--HG--
extra : rebase_source : 16e992382e06fbc673555c87499c236e2b39bc7f
2017-03-27 16:49:41 +11:00
Carsten "Tomcat" Book a441709a12 Merge mozilla-central to autoland 2017-03-27 13:00:23 +02:00
Carsten "Tomcat" Book 8fa2774978 merge mozilla-inbound to mozilla-central a=merge 2017-03-27 12:57:16 +02:00
Mark Banner 314a1804e2 Bug 1350298 - Enable ESLint of nsContextMenu.js, fixing the last issues. Also enable it for finding globals for the browser-window environment. r=jaws
MozReview-Commit-ID: Cl8AFvzR6o8

--HG--
extra : rebase_source : 8ad57d20d53def238bbe214aa2f33f6948e49809
2017-03-24 12:04:36 +00:00
Andreas Tolfsen 869b1b932a Bug 1344748 - Rename and register Marionette prefs; r=maja_zf
This change renames the following Marionette preferences:

    	marionette.defaultPrefs.enabled	marionette.enabled
    	marionette.defaultPrefs.port	marionette.port
    	marionette.force-local		marionette.forcelocal
    	marionette.logging		marionette.log.level

The old preference names are still usable, but are henceforth considered
deprecated.  They will be removed when Firefox 55 ships.

It also registers these preferences in Firefox so that they are
discoverable through about:config.

This patch also refactors testing/marionette/components/marionette.js.

MozReview-Commit-ID: 1dAMQS2e0og

--HG--
extra : rebase_source : e59a9e656442d8e8cebeaf5e741dc8306436bc22
2017-03-09 11:12:53 +00:00
Andreas Tolfsen 55ec9308b0 Bug 1344748 - Make testing/marionette/server.js a class; r=maja_zf,whimboo
No functional changes apart from class'ifying the file and harmonising
the export symbol with the rest of the Marionette code base by renaming
the MarionetteServer class to server.TCPListener.

MozReview-Commit-ID: 8WJKoprGGvr

--HG--
extra : rebase_source : 1f706a0f5e4c9fdccac90bfc14f767763ec85257
2017-03-06 17:09:07 +00:00
Nicholas Nethercote 32c944de0f Bug 1350212 - Improve TickSample. r=jseward.
This patch does the following.

- Renames TickSample's members to mFoo style.

- Changes TickSample's constructor to set mTimeStamp.

- Moves TickSample creation from
  SamplerThread::SuspendAndSampleAndResumeThread() to SamplerThread::Run(), so
  it's not repeated for each platform.

- Changes TickSample::PopulateContext() so it takes a |tick_context_t*|
  parameter, which avoids having to cast from |void*|.
2017-03-24 15:09:05 +11:00
Nicholas Nethercote 56501f9f6f Bug 1350211 - Re-enable native stack walking on Android. r=mstange.
Bug 1339695 part 8 accidentally disabled native stack walking on Android by
using GP_arm_android instead of GP_PLAT_arm_android in a #if. This patch fixes
that. It also fixes a couple of compile errors that crept into the relevant
code while it was disabled.

--HG--
extra : rebase_source : a7a94b018b8de7a7ca3c621a2b662859a65e69c1
2017-03-24 17:02:54 +11:00
Thinker K.F. Li 885084ba60 Bug 1323076 - Part 1: TaskTracer with only flag checking overhead. r=cervantes 2017-03-22 21:43:00 +01:00
Nicholas Nethercote e0caeb137c Bug 1346132 (part 5) - Remove ThreadInfo::CanInvokeJS. r=jseward.
It's unused.

--HG--
extra : rebase_source : 37483099d82004ba1d66cf7a3bb60d5cefd3f03d
2017-03-23 12:42:55 +11:00
Nicholas Nethercote be676c67d2 Bug 1346132 (part 4) - Improve the profiler's logging output. r=jseward.
This patch adds logging to some important functions that currently lack it.
Thread registration/unregistration is done with DEBUG_LOG because it's
more verbose than the other profiler logging, but less verbose than LUL's
logging.

The patch also scraps the BEGIN/END logging pairs because they bloat the output
for little gain. Now it just logs on function entry.

--HG--
extra : rebase_source : 3ef3d263c19cda03198e8b3a9ab89866f74ed1cd
2017-03-15 10:56:50 +11:00
Nicholas Nethercote f1d3df720c Bug 1346132 (part 3) - Remove the profiler's bespoke logging system in favour of MOZ_LOG. r=erahm,jseward.
The profiler will use level 3 (Info) and 4 (Debug) logging, though this patch
only uses level 3. LUL will use level 5 (Verbose) debugging.

The patch also tweaks parts of the the usage message, including adding
MOZ_PROFILER_{STARTUP,SHUTDOWN} to it.

--HG--
extra : rebase_source : f43a023912fbce993ed367cdd26b8f25f25381de
2017-03-14 16:49:12 +11:00
Nicholas Nethercote e105cad299 Bug 1346132 (part 2) - Remove set_stderr_callback(). r=mstange.
It's a very general mechanism for replacing the implementation of
printf_stderr().

It's primarily used by the profiler, sparingly, and not in an important way.
Worse, it prevents us from using MOZ_LOG in the profiler, which is something I
want. Because if any code that locks gPSMutex also calls MOZ_LOG, that then
calls printf_stderr(), which calls profiler_log(), which locks gPSMutex, which
deadlocks.

The only other use of set_stderr_callback() is for the ultra-hacky,
for-local-use-only copy_stderr_to_file() function, which was added for B2G
debugging and is no longer necessary.

This patch removes set_stderr_callback() altogether.

--HG--
extra : rebase_source : d31ecb482fe5899f62dc56a38e87d91f9271bab0
2017-03-16 08:17:56 +11:00
Wes Kocher 1d9dc01136 Merge m-c to inbound, a=merge
MozReview-Commit-ID: HwfVdTF9Np5
2017-03-23 16:55:48 -07:00
Mark Banner 0eb1f2ca26 Bug 1349203 - Upgrade ESLint to version 3.18.0 to pick up performance and other fixes. Also update other dependencies for ESLint. r=mossop
MozReview-Commit-ID: C1oB0pQ3fev

--HG--
extra : rebase_source : 93e63db48f815e173b80611ae592806e4ef43fae
2017-03-21 14:50:45 +01:00
Julian Seward 31acb1259a Bug 1344169 - Factor out the common parts of SamplerThread::Run(). r=n.nethercote.
All three platform-*.cpp files have similar structure, most especially for
SamplerThread::Run(), with considerable duplication.  This patch factors out
the common parts into a single implementation in platform.cpp.

* The top level structure of class SamplerThread has been moved to
  platform.cpp.

* The class has some target-dependent fields, relating to signal handling and
  thread identity.

* There's a single implementation of Run() in platform.cpp.

* AllocPlatformData() and PlatformDataDestructor::operator() have also been
  commoned up and moved into platform.cpp.

* Time units in SamplerThread have been tidied up.  We now use microseconds
  throughout, except in the constructor.  All time interval field and variable
  names incorporate the unit (microseconds/milliseconds) for clarity.  The
  Windows uses of such values are scaled up/down by 1000 accordingly.

* The pre-existing MacOS Run() implementation contained logic that attempted
  to keep "to schedule" in the presence of inaccuracy in the actual sleep
  intervals.  This now applies to all targets.  A couple of comments on this
  code have been added.

* platform-{win32,macos,linux-android}.cpp have had their Run() methods
  removed, and all other methods placed in the same sequences, to the extent
  that is possible.

* In the Win32 and MacOS implementations, Thread::SampleContext has been
  renamed to Thread::SuspendSampleAndResumeThread as that better describes
  what it does.  In the Linux/Android implementation there was no such
  separate method, so one has been created.

* The three Thread::SuspendSampleAndResumeThread methods have been commented
  in such a way as to emphasise their identical top level structure.

* The point in platform.cpp where platform-{win32,macos,linux-android}.cpp are
  #included has been moved slightly earlier in the file, into the
  SamplerThread encampment, as that seems like a better place for it.

--HG--
extra : rebase_source : 0f93e15967b810c09e645fa593dbf85f94b53a9b
2017-03-10 16:10:14 +01:00
Carsten "Tomcat" Book 492970c342 merge mozilla-inbound to mozilla-central a=merge 2017-03-23 13:44:09 +01:00
Julian Seward 660aaef3f5 Bug 1345032 - Further cost reductions for ProfileBuffer::FindLastSampleOfThread. r=n.nethercote.
ProfileBuffer::FindLastSampleOfThread currently involves a linear search
backwards through the sample buffer.  Profiling showed that to be the largest
profiler cost by far, at least on Linux.  Bugs 1344118 and 1344258
significantly improve the situation, collectively reducing the cost by a
factor of at least 5 and often much more.  But the linear search is still
present and still dominant.  The worst of it is that it's unnecessary: we
could achieve the same by recording the start point of the most recent sample
for each thread in that thread's ThreadInfo record.

This patch does exactly that, adding the type ProfileBuffer::LastSample to
store the start points.  LastSample also includes the ID of the thread it
pertains to as a read-only field, as that is needed in various places.

addTag doesn't check whether we're overwriting buffer entries containing start
points.  Instead, FindLastSample checks whether the entry pointed to the
LastSample it is given still contains a marker.

--HG--
extra : rebase_source : 2987ec744a5c16e8b6814abe7efb507fc7280605
2017-03-22 11:18:31 +01:00
Luke Wagner 2164377bd8 Bug 1334504 - Baldr: maintain fp register instead a virtual fp (r=bbouvier)
MozReview-Commit-ID: 2Mi60u3DyJg

--HG--
extra : rebase_source : 155ce830bcd55e7f9fdf890d4da4b1c12377f12b
2017-03-22 17:26:05 -05:00
Markus Stange c1e6abcc0a Bug 1321907 - Remove mIsProfilerActive. r=njn
Replace it with profiler_is_active() in one place, and simply remove it in the
other places. These other places are:
 - Around the call to profiler_OOP_exit_profile: profiler_OOP_exit_profile
   itself already checks whether the profiler is running and does nothing if
   it's not.
 - When handling the 'profiler-subprocess-gather' notification. This
   notification is sent by the profiler because it's interested in the
   profile, so there's little reason to reject it.
 - In RecvProfile: If the child process sent us a profile, it did so in
   response to a GatherProfile request, so chances are that we're still
   interested in that response.

These changes may get us a little closer to a state where you can call
getProfileDataAsync, stop the profiler before the content process profiles
have all come in, and then still receive a response with all the profiles.
At the moment, stopping the profiler will abort the profile gathering process,
but that seems more like an accident and less like the behavior you'd want.

MozReview-Commit-ID: 2tRXC70BztJ

--HG--
extra : rebase_source : 3b2f6f51d75d5f0d439e1a815d84164a5a763603
2017-03-22 21:45:10 -04:00
Markus Stange 2a4fe61200 Bug 1321907 - Move cross process profiler controlling code from ContentParent and PluginModuleParent into a new class called CrossProcessProfilerController. r=mconley,njn
MozReview-Commit-ID: HY2iWHlDaEy

--HG--
extra : rebase_source : a91e7b40ea2dbd6d75c2d1a62c359d7ea983fe3c
2017-03-22 21:44:59 -04:00
Markus Stange 730b4fc829 Bug 1339897 - Rename PROFILER_LABEL_PRINTF to PROFILER_LABEL_DYNAMIC and make it really cheap. r=Ehsan,njn
Instead of copying and concatenating strings into an mDest buffer in
SamplerStackFramePrintfRAII, require callers to keep the string buffer alive
for the duration of the current scope, and store the pointer to the annotation
string in the ProfileEntry. During stackwalking, concatenate the label and the
annotation (separated by a space) and store the resulting string in the
profile buffer.

MozReview-Commit-ID: GEjcLrhhdvb

--HG--
extra : rebase_source : 683749421ee2122805a249cf413e882ee5f33331
2017-03-22 19:37:33 -04:00
Carsten "Tomcat" Book 62f6c37109 merge mozilla-inbound to mozilla-central a=merge 2017-03-22 14:26:27 +01:00
Mark Banner c225eb9884 Bug 1347712 - Add the tree-wide rules and config to the recommended eslint-plugin-mozilla config, to make it easier for outside projects. r=jaws
MozReview-Commit-ID: K7X57ZNppkE

--HG--
extra : rebase_source : 697cdbcbbc732a7ae5b538112f3c603943e86692
2017-03-21 15:40:33 +01:00
Mark Banner d7d8be9285 Bug 1347712 - Move toolkit/.eslintrc.js rules into a 'recommended' set within eslint-plugin-mozilla. r=jaws
MozReview-Commit-ID: Jy4apKnmWcV

--HG--
rename : toolkit/.eslintrc.js => tools/lint/eslint/eslint-plugin-mozilla/lib/configs/recommended.js
extra : rebase_source : ae0c740c1c2a9cf620c1ac34024622ade12e6fd4
2017-03-22 10:43:00 +01:00
Mark Banner d4822994da Bug 1347712 - Change the testing configurations into ESLint configurations within eslint-plugin-mozilla - structural changes. r=jaws
MozReview-Commit-ID: HmNYrVyNiMr

--HG--
rename : testing/mochitest/browser.eslintrc.js => tools/lint/eslint/eslint-plugin-mozilla/lib/configs/browser-test.js
rename : testing/mochitest/chrome.eslintrc.js => tools/lint/eslint/eslint-plugin-mozilla/lib/configs/chrome-test.js
rename : testing/mochitest/mochitest.eslintrc.js => tools/lint/eslint/eslint-plugin-mozilla/lib/configs/mochitest-test.js
rename : testing/xpcshell/xpcshell.eslintrc.js => tools/lint/eslint/eslint-plugin-mozilla/lib/configs/xpcshell-test.js
extra : rebase_source : 21380c13600e54e5fe86ef2d85518272b8a75de6
2017-03-21 16:43:01 +01:00
Geoff Brown df122d5bfa Bug 1340584 - Remove devicemanagerSUT and references to sutagent; r=wlach
sutagent is no longer built or used; devicemanagerSUT is completely
unused. After this change, devicemanagerADB is the only implementation of
devicemanager, and test harness options like --dm_trans are eliminated.
2017-03-21 12:20:01 -06:00
Carsten "Tomcat" Book 6fd1303c2a merge mozilla-inbound to mozilla-central a=merge 2017-03-21 12:04:43 +01:00
Wes Kocher 5d7c0bee97 Merge m-c to inbound a=merge
MozReview-Commit-ID: 860fBgcgHiy
2017-03-20 18:28:24 -07:00
Nicholas Nethercote fa5cfb7c00 Bug 1348374 - Remove paf_child(). r=jseward.
It's not necessary and causes hangs.

The patch also inlines setup_atfork() and moves the Linux-only code closer to
the Linux-only PlatformInit(), and tweaks the comments a bit.

--HG--
extra : rebase_source : 0db23d649d9468b9308b881c0bbf5ea25a95ea13
2017-03-21 09:52:15 +11:00
Gabriele Svelto 7b64f6d545 Bug 1319071 - Make crash minidumps use the same format for filenames on Linux as on other platforms; r=ted
This patch forks the breakpad files used for GUID generation and replaces them
with copies living together with the rest of the forked sources. Since other
files in the breakpad sources rely on the original files being present they
haven't been removed but we deliberately define their inclusion definitions in
the build system to prevent them from contributing to the build. This ensures
that we always use our own version of the GUID generator while not touching
the non-forked sources.

MozReview-Commit-ID: 5kW74yAPUDW

--HG--
rename : toolkit/crashreporter/google-breakpad/src/common/linux/guid_creator.cc => toolkit/crashreporter/breakpad-client/linux/handler/guid_generator.cc
rename : toolkit/crashreporter/google-breakpad/src/common/linux/guid_creator.h => toolkit/crashreporter/breakpad-client/linux/handler/guid_generator.h
extra : rebase_source : 60eb027258833996777469d2a13142077486bee9
2017-03-14 14:37:26 +01:00
Mark Banner 644825e657 Bug 1344932 - Separate out the ESLint spidermonkey preprocessor to avoid breaking './mach eslint --fix' on the whole tree.' r=jryans
This doesn't allow --fix to run on the whole tree in one go, but does allow it to be run on individual directories. This
is due to an ESLint issue, where once the processor is loaded, it applies to the rest of the files.

MozReview-Commit-ID: Fqg5yK22Dhu

--HG--
rename : tools/lint/eslint/eslint-plugin-mozilla/.eslintrc.js => tools/lint/eslint/.eslintrc.js
rename : tools/lint/eslint/eslint-plugin-mozilla/lib/processors/self-hosted.js => tools/lint/eslint/eslint-plugin-spidermonkey-js/lib/processors/self-hosted.js
extra : rebase_source : 9913f929985016f4a22ff78641051dc025df14f2
2017-03-19 18:35:17 +00:00
Chris Pearce 106fa550f9 Bug 1348982 - Make 'mach clang-format' format the current revision instead of the tip. r=gps
Currently the mach clang-format command is formating '-r tip^', which is
everything in the tip revision, plus changes. Often this does what you want,
but if you're using changeset evolution or history rewriting this doesn't work
so well.  If you `hg up $rev` to some other revision with the intention of
clang-formating that revision, you don't get that revision formated when you
run clang-format. You get the lines touched by the changeset with the "tip"
bookmark formatted. We really want to have clang-format format '-r .^' which
means "the current revision in the working dir, plus any uncommited changes".

This results in the expected behaviour, and means clang-format can be used to
re-format commits which are work-in-progress and/or being evolved.


MozReview-Commit-ID: iv82HENxiA

--HG--
extra : rebase_source : a1d05472f499f5a68bcaab9ce260d60ecbca067d
2017-03-21 10:31:15 +13:00
Carsten "Tomcat" Book 3e0a5441c6 Merge mozilla-central to mozilla-inbound 2017-03-17 14:55:15 +01:00
Florian Quèze be00c3b9e8 Bug 1345294 - add an eslint rule to reject usage of {get,set}ComplexValue for nsISupportsString and suggest {get,set}StringPref instead, and make it pass, r=Mossop. 2017-03-16 19:26:02 +01:00
Florian Quèze 2ce3d7d34a Bug 1347947 - Move static checking browser mochitests to their own folder, r=Gijs.
--HG--
rename : browser/base/content/test/general/browser_misused_characters_in_strings.js => browser/base/content/test/static/browser_misused_characters_in_strings.js
rename : browser/base/content/test/general/browser_parsable_css.js => browser/base/content/test/static/browser_parsable_css.js
rename : browser/base/content/test/general/browser_parsable_script.js => browser/base/content/test/static/browser_parsable_script.js
rename : browser/base/content/test/general/bug1262648_string_with_newlines.dtd => browser/base/content/test/static/bug1262648_string_with_newlines.dtd
rename : browser/base/content/test/general/dummy_page.html => browser/base/content/test/static/dummy_page.html
rename : browser/base/content/test/general/parsingTestHelpers.jsm => browser/base/content/test/static/head.js
2017-03-16 19:26:01 +01:00
Wes Kocher efcef12931 Backed out changeset e73241bcb49a (bug 1340584) for Windows build failures a=backout CLOSED TREE
MozReview-Commit-ID: 22csfCgl7Wb
2017-03-16 10:25:15 -07:00
Geoff Brown ecc9668072 Bug 1340584 - Remove devicemanagerSUT and references to sutagent; r=wlach
sutagent is no longer built or usedr; devicemanagerSUT is completely
unused. After this change, devicemanagerADB is the only implementation of
devicemanager, and the --dmTrans and similar options have been removed
from test harnesses and mach commands.
2017-03-16 10:44:44 -06:00
Nicholas Nethercote 1b01d89d14 Bug 1347348 (part 4) - Fix comments in GeckoProfiler.h. r=mstange.
Specifically:

- Improve the documentation on all the profiler_*() functions, esp. about what
  they do when the profiler is inactive.

- Fix numerous spelling mistakes.

- Wrap all comment lines at 80 chars.

- Change /**/ comments to // comments throughout.

--HG--
extra : rebase_source : 17f766301416806764413cea7f949c42e7721ab9
2017-03-07 16:54:58 +11:00
Nicholas Nethercote d982dc67b5 Bug 1347348 (part 3) - Rejig thread registration in the profiler. r=mstange.
Specifically:

- Renames kGeckoThreadName as kMainThreadName, and RegisterCurrentThread() as
  locked_register_thread().

- Removes the aIsMainThread parameter from locked_register_thread(). It can be
  computed via NS_IsMainThread().

- Moves the PseudoStack initialization within locked_register_thread(), so it's
  done in a single place. Also calls init() at that place; previously the
  non-main threads didn't have init() called on their tlsPseudoStack! According
  to ThreadLocal.h this shouldn't have worked...

- Adds some !NS_IsMainThread() assertions to
  profiler_{register,unregister}_thread().

--HG--
extra : rebase_source : c44836dddc988c1f49ec91eccd35f088e0d30ed1
2017-03-07 16:54:56 +11:00
Nicholas Nethercote af3c0f7fd5 Bug 1347348 (part 2) - Add a comment about the profiler's "startTime" field. r=mstange.
It took me some time to understand this snippet of code, so I wrote a comment
about it.

--HG--
extra : rebase_source : b25fc8384a4fe00df7d8a0585e7a1944226fa212
2017-03-14 16:47:18 +11:00
Nicholas Nethercote 0414a346c4 Bug 1347348 (part 1) - Don't export ProfilerBacktrace.h. r=mstange.
ProfilerBacktrace.h doesn't need to be visible outside the profiler because
the ProfilerBacktrace type is only used in pointers outside the profiler and
the existing forward declaration in GeckoProfiler.h suffices for that.

--HG--
rename : tools/profiler/public/ProfilerBacktrace.h => tools/profiler/core/ProfilerBacktrace.h
extra : rebase_source : 50752626fbd6948de26e193956ed7b82b41b1830
2017-03-07 16:54:50 +11:00
Markus Stange 5c5945bfa0 Bug 1329111 - Change the nsIProfiler shared library information API. r=njn
API before this change:
 - nsIProfiler::getSharedLibraryInformation() returns a string containing a
   JSON array of libraries.
 - The profile format is at version 3.
 - Every profile has a "libs" field that contains the same JSON string as the
   return value of nsIProfiler::getSharedLibraryInformation.
 - The array of libraries is not sorted.
 - Each library has a "name" field that contains:
    - The module's debug name on Windows
    - The full path to the binary on Mac + Linux

API after this change:
 - nsIProfiler::getSharedLibraryInformation() is removed.
 - nsIProfiler has a readonly property called sharedLibraries.
 - The profile format is at version 4.
 - Every profile has a "libs" field that contains the same array as
   nsIProfiler.sharedLibraries, no longer as a JSON string but as a regular
   array.
 - The array of libraries is sorted by start address.
 - Each library has a "name" field that contains the binary file's basename,
   on all platforms.
 - Each library has a "path" field that contains the full path to the binary,
   on all platforms.
 - Each library has a "debugName" field that contains the library's debug
   name, on all platforms. On Windows, the debug name is the filename
   (basename) of the pdb file for that binary. On other platforms, debugName
   is the same as |name|.
 - Each library has a "debugPath" field that contains the absolute path
   library's pdb file on Windows; on non-Windows, debugPath and path are the
   same.
 - Each library has an "arch" field that is either an empty string (Linux +
   Windows) or the library's architecture; it'll differentiate between the
   architectures "x86_64" and "x86_64h". (x86_64h is used for binaries that
   contain instructions that are specific to the Intel Haswell
   microarchitecture.)

MozReview-Commit-ID: 8Nrs4dyHhDS

--HG--
extra : rebase_source : 4039926ae4d776bf53ea71df5fe3f8200d3e2784
extra : source : 4e282aa03422de5b8d51e1aaeb3e53ee547293dd
2017-03-14 18:59:20 -04:00
Markus Stange e552737d0a Bug 1329111 - Use JSONWriter when generating the GetSharedLibraryInfo() JSON. r=njn
MozReview-Commit-ID: LZalkkFreym

--HG--
extra : rebase_source : 71d95c3ff6454d72515c33ea7df742d95e94872b
2017-03-13 17:08:38 -04:00
Markus Stange 5d618f99af Bug 1329111 - Record shared library architecture on Mac. r=glandium,njn
This is interesting information on Mac because some system libraries come in
two 64 bit versions: a regular one, and one that contains Haswell-specific
instructions. The former 'architecture' is called x86_64 and the latter is
called x86_64h (h for Haswell).

We set arch to the empty string on non-Mac platforms. It's not all that
interesting on those platforms because there will be only one architecture
in the binary at the given path, unlike on Mac where you can have fat
binaries with multiple architectures.

MozReview-Commit-ID: Dgnslv0D3Ug

--HG--
extra : rebase_source : cf1fcfc1635d373eaeea35aad2f73b235097c748
2017-03-13 17:51:41 -04:00
Markus Stange 4be87b17a8 Bug 1329111 - Supply SharedLibraryInfo with the absolute module path and debug path on all platforms. r=marco
MozReview-Commit-ID: 9R3ecPxGoMr

--HG--
extra : rebase_source : 3cc2af0e5c2b40f349f9e77e06731188d9af07ea
2017-03-14 18:26:50 -04:00
Markus Stange 0048861a6b Bug 1329111 - Rename SharedLibraryInfo::mName to mModuleName, and consistently cut off the path on all platforms. r=marco
MozReview-Commit-ID: 8gqqVjTjy1Z

--HG--
extra : rebase_source : 646340086cd46fe023495bfca140e859c98a5205
2017-03-14 17:07:43 -04:00
Sebastian Hengst 8b715d46ad Backed out changeset ff2306d8e07f (bug 1329111) for lacking a semicolon in devtools/server/performance/profiler.js. r=backout 2017-03-16 20:00:34 +01:00
Sebastian Hengst 224e25992e Backed out changeset 2656a5fa88a2 (bug 1329111) 2017-03-16 19:59:53 +01:00
Sebastian Hengst 01760e033d Backed out changeset 54d438799138 (bug 1329111) 2017-03-16 19:59:48 +01:00
Sebastian Hengst 43b6b924d6 Backed out changeset 2f4e6242c90c (bug 1329111) 2017-03-16 19:59:43 +01:00
Sebastian Hengst 80e2e16b3e Backed out changeset eaac943ff2f6 (bug 1329111) 2017-03-16 19:59:39 +01:00
Markus Stange 32230f6988 Bug 1329111 - Change the nsIProfiler shared library information API. r=njn
API before this change:
 - nsIProfiler::getSharedLibraryInformation() returns a string containing a
   JSON array of libraries.
 - The profile format is at version 3.
 - Every profile has a "libs" field that contains the same JSON string as the
   return value of nsIProfiler::getSharedLibraryInformation.
 - The array of libraries is not sorted.
 - Each library has a "name" field that contains:
    - The module's debug name on Windows
    - The full path to the binary on Mac + Linux

API after this change:
 - nsIProfiler::getSharedLibraryInformation() is removed.
 - nsIProfiler has a readonly property called sharedLibraries.
 - The profile format is at version 4.
 - Every profile has a "libs" field that contains the same array as
   nsIProfiler.sharedLibraries, no longer as a JSON string but as a regular
   array.
 - The array of libraries is sorted by start address.
 - Each library has a "name" field that contains the binary file's basename,
   on all platforms.
 - Each library has a "path" field that contains the full path to the binary,
   on all platforms.
 - Each library has a "debugName" field that contains the library's debug
   name, on all platforms. On Windows, the debug name is the filename
   (basename) of the pdb file for that binary. On other platforms, debugName
   is the same as |name|.
 - Each library has a "debugPath" field that contains the absolute path
   library's pdb file on Windows; on non-Windows, debugPath and path are the
   same.
 - Each library has an "arch" field that is either an empty string (Linux +
   Windows) or the library's architecture; it'll differentiate between the
   architectures "x86_64" and "x86_64h". (x86_64h is used for binaries that
   contain instructions that are specific to the Intel Haswell
   microarchitecture.)

MozReview-Commit-ID: 8Nrs4dyHhDS

--HG--
extra : rebase_source : 4039926ae4d776bf53ea71df5fe3f8200d3e2784
extra : source : 4e282aa03422de5b8d51e1aaeb3e53ee547293dd
2017-03-14 18:59:20 -04:00
Markus Stange 05996c7dbf Bug 1329111 - Use JSONWriter when generating the GetSharedLibraryInfo() JSON. r=njn
MozReview-Commit-ID: LZalkkFreym

--HG--
extra : rebase_source : 71d95c3ff6454d72515c33ea7df742d95e94872b
2017-03-13 17:08:38 -04:00
Markus Stange 5fdbdd6b74 Bug 1329111 - Record shared library architecture on Mac. r=glandium,njn
This is interesting information on Mac because some system libraries come in
two 64 bit versions: a regular one, and one that contains Haswell-specific
instructions. The former 'architecture' is called x86_64 and the latter is
called x86_64h (h for Haswell).

We set arch to the empty string on non-Mac platforms. It's not all that
interesting on those platforms because there will be only one architecture
in the binary at the given path, unlike on Mac where you can have fat
binaries with multiple architectures.

MozReview-Commit-ID: Dgnslv0D3Ug

--HG--
extra : rebase_source : cf1fcfc1635d373eaeea35aad2f73b235097c748
2017-03-13 17:51:41 -04:00
Markus Stange 13cdaa1908 Bug 1329111 - Supply SharedLibraryInfo with the absolute module path and debug path on all platforms. r=marco
MozReview-Commit-ID: 9R3ecPxGoMr

--HG--
extra : rebase_source : 3cc2af0e5c2b40f349f9e77e06731188d9af07ea
2017-03-14 18:26:50 -04:00
Markus Stange c76fa9b925 Bug 1329111 - Rename SharedLibraryInfo::mName to mModuleName, and consistently cut off the path on all platforms. r=marco
MozReview-Commit-ID: 8gqqVjTjy1Z

--HG--
extra : rebase_source : 646340086cd46fe023495bfca140e859c98a5205
2017-03-14 17:07:43 -04:00
Greg Tatum 23488bd6ef Bug 1346776 - Add the process id in the Gecko Profiler; r=mstange
I also tweaked the int type of the JSON writer to match the IntProperty
method.

MozReview-Commit-ID: rtxLDKtJQZ

--HG--
extra : rebase_source : fa924479926cad6e07755d10c049a40ad896c3cd
2017-03-13 14:47:15 +01:00
Jared Wein a54eda04ca Bug 1348068 - Enable the key-spacing rule for eslint and fix the related issues. r=standard8
Running eslint with --fix didn't fix many of the issues. The majority here had to be fixed by hand but a significant majority of the issues were related to a few files that I was able to use find-and-replace with. I regret not making this in to separate commits of the hand-fixes and the fixes from --fix but I don't recall --fix fixing any of the issues.

MozReview-Commit-ID: ANyg2qfo3Qx

--HG--
extra : rebase_source : 61d2aa91bf9474af3d72a5dea41b25dca442c1b7
2017-03-21 14:29:43 -04:00
Sylvestre Ledru 6b9210f7cd Bug 1347474 - Update mach to download clang-format 5.0 r297730 r=andi
MozReview-Commit-ID: 69HZXo00gnG

--HG--
extra : rebase_source : cf045e62184ce96d1ec2f140178900b65636b4c7
2017-03-15 11:20:54 +01:00
Andi-Bogdan Postelnicu 0b7f0cc371 Bug 1346725 - removed useless null check in DoSampleStackTrace. r=mstange
MozReview-Commit-ID: 374xPqkTMxJ

--HG--
extra : rebase_source : f465278b0211f7a5ec47a1302a6d0a08cf35e804
2017-03-13 12:50:22 +02:00
Carsten "Tomcat" Book f807b332df merge mozilla-inbound to mozilla-central a=merge 2017-03-15 13:12:42 +01:00
Nicholas Nethercote 8876b32323 Bug 1345262 (part 5) - Fix how JS sampling is started/stopped by the profiler. r=mstange,djvj.
Currently, JS sampling has major problems.

- JS sampling is enabled for all JS threads from the thread that runs
  locked_profiler_start() -- currently only the main thread -- but the JS
  engine can't handle enabling from off-thread, and asserts. This makes
  profiling workers impossible in a debug build.

- No JS thread will be JS sampled unless enableJSSampling() is called, but that
  only happens in locked_profiler_start(). That means any worker threads
  created while the profiler is active won't be JS sampled.

- Only the thread that runs locked_profiler_stop() -- currently only the main
  thread -- ever calls disableJSSampling(). This means that worker threads that
  start being JS sampled never stop being JS sampled.

This patch fixes these three problems in the following ways.

- locked_profiler_start() now sets a flag in PseudoStack that indicates
  JS sampling is desired, but doesn't directly enable it. Instead, the JS
  thread polls that flag and enables JS sampling itself when it sees the flag
  is set. The polling is done by the interrupt callback. There was already a
  flag of this sort (mJSSampling) but the new one is better.

  This required adding a call to profiler_js_operation_callback() to the
  InterruptCallback() in XPCJSContext.cpp. (In comparison, the
  InterruptCallback() in dom/workers/RuntimeService.cpp already had such a
  call.)

- RegisterCurrentThread() now requests JS sampling of a JS thread when the
  profiler is active, the thread is being profiled, and JS sampling is enabled.

- locked_profiler_stop() now calls stopJSSampling() on all live threads.

The patch makes the following smaller changes as well.

- Renames profiler_js_operation_callback() as profiler_js_interrupt_callback(),
  because "interrupt callback" is the standard name (viz.
  JS_AddInterruptCallback()).

- Calls js::RegisterContextProfilingEventMarker() with nullptr when stopping
  JS sampling, so that ProfilerJSEventMarker won't fire unnecessarily.

- Some minor formatting changes.

--HG--
extra : rebase_source : 372f94c963a9e5b2493389892499b1ca205ebc2f
2017-03-10 09:04:23 +11:00
Nicholas Nethercote ce17b32bef Bug 1345262 (part 4) - Remove and inline PseudoStack::{clearContext,flushSamplerOnJSShutdown}(). r=mstange.
They each have a single call site, and this code makes makes more sense in
platform.cpp than as PseudoStack methods because it's mostly dealing with gPS.

--HG--
extra : rebase_source : 84d8c7d8989f0e02b238d591ece2be110cbbcb1a
2017-03-10 08:33:33 +11:00
Nicholas Nethercote 5703ff4afb Bug 1345262 (part 3) - Split PseudoStack::sampleContext() in two. r=mstange.
It does almost entirely different things depending on whether we are setting or
clearing the context.

--HG--
extra : rebase_source : 356445957968e1d055f4b717c65476fa765d8bd5
2017-03-09 17:06:39 +11:00
Nicholas Nethercote d8023679e3 Bug 1345262 (part 2) - Add profiler_{set,clear}_js_context(). r=mstange.
PseudoContext::sampleContext() is always called immediately after
profiler_get_pseudo_stack(). This patch introduces profiler_set_js_context()
and profiler_clear_js_context(), which replace the profiler_get_pseudo_stack()
+ sampleContext() pairs. This takes us a step closer to not having to export
PseudoStack outside the profiler.

--HG--
extra : rebase_source : 8558d1600eafd395cc696d31f3d21fb52a1a74b0
2017-03-09 17:06:35 +11:00
Markus Stange f3242f83fb Bug 1341924 - Don't attempt to dispatch CheckResponsivenessTasks to non-main threads. r=njn
This is more of a workaround than a real fix, but the old code wasn't working
for non-main threads either, and we'd like to change the way this information
is computed anyway (bug 1340714) and then we won't need CheckResponsivenessTask
any more.

MozReview-Commit-ID: FGiomjwpk3z

--HG--
extra : rebase_source : 95fc57c0622fdbaa928700a971a4ce839ad92797
2017-03-13 20:44:15 -04:00
Nicholas Nethercote 8c96fbb044 Bug 1345262 (part 1) - Remove unnecessary assertion. r=jseward.
Bug 1341255 changed PseudoStack::mStack to a js::ProfileEntry[], so we don't
need this assertion any more.

--HG--
extra : rebase_source : 7fcb5218db56b5a9409d81ff67d653e9db37414e
2017-03-07 16:54:54 +11:00
Nicholas Nethercote 9b58a42f2d Bug 1347044 - Shrink two gPSMutex thread-locking scopes in platform.cpp. r=mstange.
The most important of these is the one in profiler_get_profile_jsobject().
Currently the JS_ParseJSON() call frequently leads to deadlock, due to
profiler_log() being called within it.

--HG--
extra : rebase_source : 7825229da61ad0d567c11bd455a7a9b8f25b5b78
2017-03-14 16:13:55 +11:00
Nicholas Nethercote d4cea5f1de Bug 1346356 (part 4) - Clean up notification in the profiler. r=mstange.
This patch does the following.

- Introduces NotifyObservers() for the simple notification cases in
  platform.cpp.

- Removes profiler_lock() and profiler_unlock() because they do notifications
  that the profiler add-on no longer listens for.

--HG--
extra : rebase_source : 77a1868ba494dea314702bbdf9478a1da36c9efb
2017-03-14 10:03:33 +11:00
Nicholas Nethercote b152707def Bug 1346356 (part 3) - Do most NotifyObserver() calls when gPSMutex is unlocked. r=mstange.
Calling NotifyObserver() with gPSMutex locked is a bad idea; arbitrary code can
run in observers, which can easily include code that calls other profiler
functions that themselves lock gPSMutex, causing deadlock. This has been seen
in practise with locked_profiler_stop().

This patch moves all but one of the NotifyObserver() calls in platform.cpp to
after the sections where gPSMutex is locked. The remaining call (for the
"profiler-subprocess") is harmless, because it just calls a simple callback
implemented within platform.cpp, and hard to move.

In the future we plan to allow profiler_start() and profiler_stop() to be
called from different threads. When that happens, it will be possible for the
"profiler-start" and "profiler-stop" notifications to arrive out of order.
Unfortunately this seems difficult to avoid. (Well, recursive mutexes would
make this problem much easier, but we don't have those...)

--HG--
extra : rebase_source : 78455c4b2d93a0d4110cdd401d6b542b641dd217
2017-03-14 10:03:33 +11:00
Nicholas Nethercote bb5a8f5d97 Bug 1346356 (part 2) - Merge SamplerThread::Join() into ~SamplerThread(). r=mstange.
SamplerThread::Join() is always called just before the SamplerThread object is
deleted. Might as well combine them.

--HG--
extra : rebase_source : d7fc013b83ec77e347ffc3929533c5259df77e06
2017-03-14 10:03:33 +11:00
Nicholas Nethercote d498318442 Bug 1346356 (part 1) - Fix SamplerThread leak in profiler_start(). r=mstange.
profiler_start() can call locked_profiler_stop(). In that case it must then
call SamplerThread::Join() in order to free the SamplerThread, but it currently
doesn't.

This patch adds such a call. It also marks locked_profiler_start() with
MOZ_MUST_USE to make this mistake less likely in the future.

--HG--
extra : rebase_source : 9045561aa54b54099e710c3eaea5ac533ca5485b
2017-03-14 10:03:33 +11:00
Carsten "Tomcat" Book c1edc7067d merge mozilla-inbound to mozilla-central a=merge 2017-03-13 15:22:26 +01:00
Thinker K.F. Li 3a54d26c11 Bug 1346151 - Avoid compile time warning for format strings. r=cervantes
--HG--
extra : rebase_source : 9a8d0732a6d08288bf705c9fbc4ade23453cce19
2017-03-10 02:03:00 -05:00
Christoph Diehl 4d87f0665b Bug 777600 - Add MessageManager Fuzzer. r=billm
--HG--
extra : rebase_source : 2e37fe0109e45216820543512dfbe58f1fba15fe
2017-02-28 16:24:43 -08:00
Dave Townsend 15bd196ab5 Bug 1346014: Update the minimum required version of node to 6.9.1. r=jaws
MozReview-Commit-ID: Ex0HiKWHfwK

--HG--
extra : rebase_source : 2af12fc6b9c4153ed1b3c6d5b46ecda68c478dc2
2017-03-09 13:57:20 -08:00
Mark Banner 5420828c24 Bug 1314405 - Provide a readme for eslint-plugin-mozilla, and add some more details to its package.json. r=mossop
MozReview-Commit-ID: DdzWwWEFvf6

--HG--
extra : rebase_source : 6d1825b1007b56cd99567b46e735740ac0414757
2017-03-09 11:45:04 +00:00
Dan Minor 52f0cc6d8b Bug 1343557 - Make PfxInstr::operator== const; r=jseward
MozReview-Commit-ID: 5WpBNHbqz0q

--HG--
extra : rebase_source : 04a53887c9542cdafbb5d837090a62dd56a1333d
2017-03-01 15:26:29 -05:00
Joel Maher ca7bfa4829 Bug 1341819 - remove old tools/memory/ files. r=ahal
MozReview-Commit-ID: 6tFZH1tKATz
2017-03-08 11:17:11 -05:00
Florian Quèze 9d62681259 Bug 1345253 - Use element.firstChild.remove() instead of element.removeChild(element.firstChild), r=jaws. 2017-03-08 10:17:52 +01:00
Nicholas Nethercote d5457902e2 Bug 1342306 (part 3) - Properly synchronize the global state in platform*.cpp. r=mstange.
This patch properly synchronizes all the global state in platform*.cpp, which
gets us a long way towards implementing bug 1330184.

- Most of the global state goes in a new class, ProfilerState, with a single
  instance, gPS. All accesses to gPS are protected by gPSMutex. All functions
  that access ProfilerState require a token proving that gPS is locked; this
  makes things much clearer.

  gRegisteredThreadsMutex is removed because it is subsumed by gPSMutex.

- gVerbosity, however, does not go in ProfilerState. It stays separate, and
  gains its own mutex, gVerbosityMutex.

Also, the tracking of the current profiler state is streamlined. Previously it
was tracked via:

- stack_key_initialized, gInitCount, gSampler, gIsProfiling, gIsActive, and
  gIsPaused.

Now it is tracked via:

- gPS, gPS->sActivity, and gPS->mIsPaused.

This means that the Sampler class is no longer necessary, and the patch removes
it.

Other changes of note made by the patch are as follows.

- It removes ThreadInfo::{mMutex,GetMutex}. This mutex was only used in two
  places, and both these are now protected by gPSMutex.

- It tweaks the LOG calls. All the main functions (init(), shutdown(), start(),
  stop()) now do consistent BEGIN/END logging, and a couple of other low-value
  incidental LOG calls have been removed.

- It adds a lot of release assertions requiring that gPS be initialized (e.g.
  profiler_init() has been called but profiler_shutdown() has not).

- It uses alphabetical order for everything involving profiler feature names.

- It removes Platform{Start,Stop}() and SamplerThread::{Start,Stop}Sampler().
  These are no longer necessary now that SamplerThread::sInstance has been
  replaced with ProfilerState::mSamplerThread which allows more direct access
  to the current SamplerThread instance.

- It removes PseudoStack::mPrivacyMode. This was derived from the "privacy"
  feature, and we now use gPS->mFeaturePrivacy directly, which is simpler.
  It also replaces profiler_in_privacy_mode() with
  profiler_is_active_and_not_in_privacy_mode(), which avoids an unnecessary
  lock/unlock of gPSMutex on a moderately hot path.

Finally, the new code does more locking than the old one. A number of operation
The following operations now lock a mutex when they previously didn't; the
following are ones that are significant, according to some ad hoc profiling.

- profiler_tracing()
- profiler_is_active()
- profiler_is_active_and_not_in_privacy_mode()
- profiler_add_marker()
- profiler_feature_active()
- SamplerThread::Run() [when the profiler is paused]

All up this roughly doubles the amount of mutex locking done by the profiler.
It's probably possible to avoid this increase by allowing careful unlocked
access to three of the fields in ProfilerState (mActivityGeneration,
mFeaturePrivacy, mStartTime), but this should only be done as a follow-up if
the extra locking is found to be a problem.

--HG--
extra : rebase_source : c2e41231f131b3e9ccd23ddf43626b54ccc77b7b
2017-03-08 12:40:39 +11:00
Nicholas Nethercote f16f2400e4 Bug 1340161 - Fix PseudoStack handling when profiler threads are marked with SetPendingDelete(). r=jseward.
Instead of nulling ThreadInfo::mPseudoStack, the patch changes things so that
ownership of the PseudoStack is transferred to the ThreadInfo. This avoids
crashes in some cases.

The patch also makes ThreadInfo::mPseudoStack a NotNull<>.

--HG--
extra : rebase_source : 95ace8886092ebe17ac0f4431c8c0936946c1f44
2017-03-08 11:37:00 +11:00
Florian Quèze e2b53c13ce Bug 1344711 - Add an eslint rule to report an error when a get*Pref call is the only instruction in a try block, r=jaws.
--HG--
extra : rebase_source : b98fc9c75089c3eeb2f1317623b08ee9cd4d1541
2017-03-07 15:29:47 +01:00
Carsten "Tomcat" Book 087da3f0d9 merge mozilla-inbound to mozilla-central a=merge 2017-03-07 15:13:31 +01:00
djmdev 9ac2a16551 Bug 1332651 - Enabled python code linting in Telemetry. r=Dexter
Enabled python code linting in Telemetry and created a new .flake8 file in
toolkit/components/telemetry.
2017-03-03 23:47:04 +05:30
Zibi Braniecki 100766fec4 Bug 1335877 - Remove resource://services-common/stringbundle.js from gecko. r=gandalf
MozReview-Commit-ID: FNoj7XH71E4

--HG--
extra : rebase_source : 294d3e425ca60e2aac6149998da7f39f62864ae5
2017-03-06 09:39:52 -08:00
Carsten "Tomcat" Book 1bc7720a43 Backed out changeset 0bd17b868a31 (bug 1335877) for causing regression bug 1344760 2017-03-06 17:03:11 +01:00
Carsten "Tomcat" Book d0bd960945 merge mozilla-inbound to mozilla-central a=merge 2017-03-06 10:53:27 +01:00
Nicholas Nethercote 548ee91cb0 Bug 1342306 (part 2a) - Fix a comment that part 2 made out-of-date. r=me.
DONTBUILD because it's a comment-only change.
2017-03-06 12:53:37 +11:00
David Major 544886d651 Bug 1343752 - Guard against modules list shrinking between EnumProcessModules calls. (telemetry/) r=marco
--HG--
extra : rebase_source : ab1539bec3d74c22b06f00bcb42f8c589bc8433f
2017-03-06 14:10:36 +13:00
Mark Banner 7d5e6f23c5 Bug 1344027 - Move eslint-plugin-mozilla's .eslintrc.js file so that all of the plugin is linted, and fix the resulting issues. r=mossop
MozReview-Commit-ID: POYhxkeOaw

--HG--
rename : tools/lint/eslint/eslint-plugin-mozilla/lib/rules/.eslintrc.js => tools/lint/eslint/eslint-plugin-mozilla/.eslintrc.js
extra : rebase_source : efd9a97796e72e94c436df6f4223a12d6daa036a
2017-03-03 10:17:54 +00:00
Mark Banner 8796160b00 Bug 1344027 - Add a places-overlay environment for ESLint for when placesOverlay.xul is included. r=mossop
MozReview-Commit-ID: 3uoneyJdEmx

--HG--
extra : rebase_source : 4c09327246e3c490c0fa30fd792c04b53d6b142e
2017-03-03 09:25:31 +00:00
Mark Banner 800c6a4602 Bug 1344027 - Change the import-global-from option for eslint to allow circular references and resolve most of the no-undef issues in browser/components/preferences. r=mossop
MozReview-Commit-ID: BERAbtYkxsF

--HG--
extra : rebase_source : e319699651a8d33db026d7697ccaddd2d1e4e2d3
2017-02-22 10:19:11 +00:00
Wes Kocher 1b29a33fce Merge m-c to autoland, a=merge
MozReview-Commit-ID: K0Q4b2wzvlJ
2017-03-03 17:29:54 -08:00
Nicholas Nethercote 5b2fe03654 Bug 1344118 - Fix the profiler's sleeping threads optimization. r=jseward.
When ProfilerBuffer::reset() is called, DuplicateLastSample() will start
failing for all sleeping threads because there will be no prior thread data in
the buffer to duplicate. But the sampling loop doesn't detect such failure.
This causes two problems:

- Missing samples.

- CPU usage goes through the roof, because each time around the sampling loop
  the length of the failing search increases.

The fix is simple: detect failure in the sampling loop and do a normal sample
in that case.

The patch also removes ThreadInfo::DuplicateLastSample(), because it just calls
onto ProfileBuffer::DuplicateLastSample().

--HG--
extra : rebase_source : d51709994e701fdd63c292df5f723a2d43c4d754
2017-03-03 15:32:11 +11:00
Mark Hammond 9b6693b8ee Bug 1317223 (part 5) - a bookmark repair responder. r=kitcambridge
This is the "repair responder" - it handles a "repairRequest" command sent
by another client and attempts to take the list of IDs that client lists as
missing and upload whatever records are necessary such that the requesting
client would then be likely to find a complete and valid tree on the server.

MozReview-Commit-ID: 4xw19nH6EfL
2017-02-28 15:34:37 +11:00
Zibi Braniecki 4b7b3d4092 Bug 1335877 - Remove resource://services-common/stringbundle.js. r=rnewman
MozReview-Commit-ID: M7V6JS5myy

--HG--
extra : rebase_source : a47d739d3dd67ce563088aaf9fab5421de376cd7
2017-03-02 15:26:53 -08:00
Mark Hammond 8c4e55d022 Bug 1317223 (part 3) - a bookmark repair requestor. r=markh,tcsc
The bookmark repair requestor takes the validation results and possibly
initiates a bookmark repair.

MozReview-Commit-ID: 7rRNbBx8Vo3
2017-03-02 19:21:53 +11:00
Mark Hammond de20e8f357 Bug 1317223 (part 2) - add 'doctor' concept and move bookmark validation logic to it. r=tcsc
This patch defines the concept of a "doctor" for collections. The doctor is
responsible for running all validators and deciding whether or not to initiate
a repair request based on the validation results.

MozReview-Commit-ID: 6NLRE6L0OpA
2017-03-02 17:14:31 +11:00
Mark Hammond fdeace22db Bug 1317223 (part 1) - a collection_repair module (without any repairers) and integration with the clients engine. r=rnewman
This creates a collection_repair module, somewhat analogous to the existing
collection_validator module. This defines the public interface to request a
new repair and respond to a remote repair request, and also includes changes
to clients.js to call this public interface.

MozReview-Commit-ID: 9JPpRrLgFoR
2017-03-02 16:14:51 +11:00
Carsten "Tomcat" Book 4a4777d1aa merge mozilla-inbound to mozilla-central a=merge 2017-03-02 14:02:48 +01:00
Mark Banner e43ef8d772 Bug 1343519 - Bump the version number for eslint-plugin-mozilla for the changes. r=bustage-fix-for-developers a=tomcat
MozReview-Commit-ID: EIykbh2t5mv
2017-03-02 00:26:00 +01:00
Mark Banner 23b7396105 Bug 1343519 - Change the ESLint browser-window environment to determine most of the scripts for globals by parsing global-scripts.inc. r=mossop
MozReview-Commit-ID: 6rxN3ORgItH

--HG--
extra : rebase_source : 100ddf6c09f229baa2334d11211c6fb28d643c3b
2017-03-01 21:44:45 +00:00
Mark Banner fb13a772a1 Bug 1343519 - Change the ESLint rule 'import-test-globals' to be an environment (mozilla/simpletest) to better describe the purpose of it. r=mossop
MozReview-Commit-ID: DbrsnUVrAas

--HG--
rename : tools/lint/eslint/eslint-plugin-mozilla/lib/rules/import-test-globals.js => tools/lint/eslint/eslint-plugin-mozilla/lib/environments/simpletest.js
extra : rebase_source : 97d0537c347999159c82d4757b265f580ec981eb
2017-03-01 21:34:24 +00:00
Mark Banner 09889d3184 Bug 1343519 - Change the ESLint rule 'import-browserjs-globals' to be an environment (mozilla/browser-window) to better describe the purpose of it. r=mossop
MozReview-Commit-ID: FTDV8BcMGeF

--HG--
rename : tools/lint/eslint/eslint-plugin-mozilla/lib/rules/import-browserjs-globals.js => tools/lint/eslint/eslint-plugin-mozilla/lib/environments/browser-window.js
extra : rebase_source : f0e89f2ce3cfdf343213f66a007f74a80a785c19
2017-03-01 21:29:52 +00:00
Mark Banner c23e14f565 Bug 1343519 - Change some function calls from using 'this' to 'context' in the eslint-plugin-mozilla code so that it works correctly when timing rule lengths. r=mossop
MozReview-Commit-ID: Dzjnhtu9bml

--HG--
extra : rebase_source : 16746dab5a46fd447329ca381ef44fc854695af0
2017-03-01 21:05:01 +00:00
Thinker K.F. Li 56974b9768 Bug 1342774 - Fix the deadlock caused by TaskTracer. r=cervantes 2017-03-01 00:57:00 -05:00
Nicholas Nethercote 085c9b47e4 Bug 1328378 (part 6) - Eliminate SyncProfile. r=mstange.
It's now a very thin wrapper around ThreadInfo, and so can be removed.

The patch also has the bonus of setting mIsMainThread correctly for the
ThreadInfos that used to be SyncProfiles (i.e. the ones created in
profiler_get_backtrace()). As far as I can tell this has only one very minor
effect, because that field is only used for those objects to determine how
ThreadResponsiveness::Update() dispatches its runnables.

--HG--
extra : rebase_source : 39318dba51316dc473321d6e4215e5b950a4d41d
2017-02-27 12:56:42 +11:00
Nicholas Nethercote ec3c7ad3a1 Bug 1328378 (part 5) - Simplify ProfileBuffer handling. r=mstange.
Currently ThreadInfo objects all share gBuffer, while SyncProfile objects each
get their own ProfileBuffer.

This patch removes ThreadInfo::mBuffer to reduce this difference, taking us a
step towards eliminating SyncProfile.

To support this, the patch:

- passes in a buffer as an additional argument in a bunch of places where the
  buffer used to be obtained from a ThreadInfo;

- adds an mBuffer field to ProfilerBacktrace;

- changes ThreadInfo::SetProfile() to SetHasProfile();

- removes ThreadInfo::{addTag,StoredMarker,bufferGeneration}(), all of which
  just redirected to ThreadInfo anyway;

- changes ProfileBuffer so it's no longer refcounted, which is unnecessary now
  that gBuffer and ProfilerBacktrace::mBuffer don't have multiple references,
  which makes their lifetimes obvious.

The patch also removes some ThreadInfo& args in functions in platform.cpp, in
places where that ThreadInfo is available within the accompanying TickSampler*
arg.

--HG--
extra : rebase_source : 7e6cb370866d3f3fd657c6aa66d3c3eb3d83a4b1
2017-02-27 12:34:59 +11:00
André Bargull f5150ddf41 Bug 1340146 - Part 2: Process js/src/shell JavaScript files as self-hosted in eslint plugin. r=evilpie 2017-02-27 09:55:21 -08:00
Julian Seward f7c6560850 Bug 1342102 - Use the same threading structure in platform-linux-android.cpp as for the -macos and -win32 versions. r=n.nethercote.
The MacOS and Windows profiler cores have a threading structure where one
thread ("sampler thread") collects information from a thread to be profiled
("samplee thread") by suspending it, getting its register state, unwinding its
stack, and then resuming it.  This requires kernel-level primitives to perform
the suspend, get-registers and resume steps.

The Linux/Android core is different, because none of those three primitives
exist.  Until now, data collection has been done by sending a SIGPROF to the
samplee, and collecting all relevant data within the signal handler.  This has
a number of disadvantages:

(1) Current work to rationalise/clean up the threading structure of the
    profiler is complicated by the need to reason about/verify two different
    schemes.

    In particular, the Tick call in the Windows and MacOS implementations will
    produce its output on the sampler thread.  In the Linux implementation
    that is produced on the sampled threads.

(2) Dynamic verification results (primarily, absence of data races and
    deadlocks) established for the Linux implementation are less likely to
    carry over to the other two implementations, because the threading
    structures are different.

(3) It causes a lot of duplicated code in platform-*.cpp.  For example
    SamplerThread::Run() in the -win32.cpp and -macos.cpp files are very
    similar.  Ideally all three could be merged into a single file with the
    identical logic commoned up.

(4) Running lots of code -- the entire contents of Tick -- in a signal handler
    isn't considered good practice.  POSIX severely restricts the set of
    functions we can safely call from within a signal handler.

This commit changes the Linux implementation by using semaphores to implement
the suspend and resume primitives, and moves the bulk of the data collection
work to the sampler thread.  By doing this, it causes the Linux implementation
to have the same threading structure as the other two.

--HG--
extra : rebase_source : 675b6ef76915d164ed263b831dddd6ce0c0e97f3
2017-03-01 14:57:34 +01:00
Mark Banner 9500176490 Bug 1346167 - Make the eslint-plugin-mozilla environments more flexible for when they are used outside of mozilla-central. r=mossop
For now, we return virtually no globals for browser-window/places-overlay/simpletest as they aren't able to load the m-c files. Later we may want to find a way of enabling this to work for outside repositories.

MozReview-Commit-ID: 8SFVuQuEqfL

--HG--
extra : rebase_source : ff773796d14ef27b47f25b0b8503ae3f093bfb9e
2017-03-10 11:44:35 +00:00
Julian Seward cd94503136 Bug 1344258 - Remove integer mod from loop in ProfileBuffer::FindLastSampleOfThread. r=n.nethercote.
--HG--
extra : rebase_source : 7a47f3f96393032e5455337dd8dbecc3f87e263f
2017-03-06 16:24:18 +01:00
Nicholas Nethercote 51df94092b Bug 1342306 (part 2) - Avoid profiler_time() calls deep in profiler streaming code. r=mstange.
Because profiler_time() is going to need the global lock when I add it, and the
lock will already be held when streaming is happening, so it'll cause the
thread to deadlock itself.

Unfortunately this requires adding an |aStartTime| parameter to a lot of
functions, but this is the least worst way I can think of handling it.

This also removes the need for one of the profiler_time() functions, which the
patch removes.
2017-02-27 13:52:58 +11:00
Nicholas Nethercote 742c5d02aa Bug 1342306 (part 1) - Introduce SamplerThread class in platform-linux-android.cpp. r=jseward.
This makes it more like platform-{macos,win32}.cpp, and will make it easier to
introduce locking around all the globals in platform.cpp.

The following things were moved into the new class.

- Types:
  - SigHandlerCoordinator

- Functions:
  - SigProfHandler()
  - SigprofSender() as Run()

- Variables:
  - gOldSigprofHandler as mOldSigprofHandler
  - gSigprofSenderThread as mThread
  - gIntervalMicro as mIntervalMicro
  - gSigHandlerCoordinator as sSigHandlerCoordinator

sInstance is the singleton instance. PlatformStart() and PlatformStop() now
just delegate to StartSampler/StopSampler.

The patch also does the following tidy-ups.

Linux:
- gWasPaused is now cleared in the parent and child processes after forking.
- LUL: inlined and removed gLUL_initialization_routine().
- LUL: now only calling EnabledUnwinding() and doing the unit tests on the
  first call to profiler_start(), instead of all of them.

Mac:
- Removed a useless call to pthread_self() -- mThread is already set by the
  earlier call to pthread_create().
- Removed some low-value checking involving kNoThread.

Mac + Win:
- Renamed SamplerThread::mInstance as sInstance, because it's static.
- Merged SamplerThread::Start() with the constructor.
- Tweaked how mInterval/mIntervalMicro is initialized, so it can become const.

All platforms:
- Converted NULL to nullptr throughout.
- A few other very minor clean-ups, e.g. formatting.

--HG--
extra : rebase_source : 4d10be873c4a7544f450e6a3b3d86c5d5b2fb603
2017-03-03 15:52:35 +11:00
Nicholas Nethercote 54ff9e9a14 Bug 1328378 (part 4) - Remove sample_obj. r=mstange.
It's silly indirection.

--HG--
extra : rebase_source : 6eb2f7c13d689db57e604f871372e98d06fea5a1
2017-02-27 12:32:55 +11:00
Nicholas Nethercote c1b1bc70df Bug 1328378 (part 3) - Remove unnecessary locking in profiler_get_backtrace(). r=mstange.
There's no need to lock when calling Tick() on a local TickSample that uses a
fresh SyncProfile with its own fresh ProfileBuffer -- none of that data can
be touched by another thread.

--HG--
extra : rebase_source : aaabef89e8481758b566e6dd01e4bb61a5855b1a
2017-02-27 12:32:18 +11:00
Nicholas Nethercote 8c0fd1de93 Bug 1328378 (part 2) - Remove BeginUnwind() and EndUnwind(). r=mstange.
Both of these functions are now trivial and identical in both ThreadInfo and
SyncProfile. This patch inlines and removes them.

--HG--
extra : rebase_source : 15fb7c1d4df9fbc80d8e671761b4aa1508845cac
2017-02-27 12:31:44 +11:00
Nicholas Nethercote 97a8ad79df Bug 1328378 (part 1) - Remove SyncProfile::mOwnerState. r=mstange.
It appears to be a remnant of a time when SyncProfile lifetimes were more
complex. Nowadays they are simple.

- profiler_get_backtrace() constructs a SyncProfile called |profile|.
  |profile|'s mOwnerState is REFERENCED.

- profiler_get_backtrace() then calls BeginUnwind() and EndUnwind() on
  |profile|. After the EndUnwind(), |profile->mOwnerState| is always OWNED.

- |profile| then is put into the returned ProfilerBacktrace. That
  ProfilerBacktrace will destroy |profile| in its destructor because
  ShouldDestroy() always returns true because mOwnerState is always OWNED.

The OWNER_DESTROYING and ORPHANED states are never used, and the whole
OwnerState type isn't necessary. This patch removes it and ShouldDestroy().

--HG--
extra : rebase_source : f1828b4a5d6b8f73245e666f457b93a24ca7266e
2017-02-27 12:30:25 +11:00
Wes Kocher dbf209197e Backed out 2 changesets (bug 1340146) for spidermonkey bustage a=backout
Backed out changeset 5556b171034e (bug 1340146)
Backed out changeset c355a0ffcb10 (bug 1340146)

MozReview-Commit-ID: JTVSUcenPdC
2017-02-27 15:28:34 -08:00
André Bargull a8358b9891 Bug 1340146 - Process js/src/shell JavaScript files as self-hosted in eslint plugin. r=evilpie
--HG--
extra : rebase_source : c34e54150dafbab3f6422b1beb0689b9ced87608
2017-02-27 09:55:21 -08:00
Wes Kocher e84fc624ff Merge inbound to central, a=merge
MozReview-Commit-ID: DpCZgRV1csS
2017-02-24 16:46:12 -08:00
Marco Castelluccio d97c0c84f6 Bug 1342349 - Backout mistakenly pushed patch and push the actual fix. r=me 2017-02-24 18:03:48 +00:00
Marco Castelluccio 3f1fdf3508 Bug 1342349 - Fix out-of-bounds access in GetInfoForSelf. r=mstange 2017-02-24 17:42:43 +00:00
Carsten "Tomcat" Book 7256146318 merge mozilla-inbound to mozilla-central a=merge 2017-02-24 11:46:38 +01:00
Julian Seward 36611ba3ae Bug 1341255 - Profiler tidyups: remove StackEntry, rename ProfileEntry to ProfileBufferEntry (part 2: rename ProfileEntry). r=n.nethercote.
--HG--
rename : tools/profiler/core/ProfileEntry.cpp => tools/profiler/core/ProfileBufferEntry.cpp
rename : tools/profiler/core/ProfileEntry.h => tools/profiler/core/ProfileBufferEntry.h
extra : rebase_source : f08a1e4aeab0db27097ed2c52b0eb92d50ef23da
2017-02-23 23:05:23 +01:00
Julian Seward 4cd04ecc8a Bug 1341255 - Profiler tidyups: remove StackEntry, rename ProfileEntry to ProfileBufferEntry (part 1: remove StackEntry). r=n.nethercote.
--HG--
extra : rebase_source : 6418946b1ebeb82abdccdb10a03380a40c00da21
2017-02-23 23:04:13 +01:00
Nicholas Nethercote af10e0c45c Bug 1340928 (part 16) - Clean up profiler env var handling. r=mstange.
This patch does the following.

- Uses "entries" consistently for the name of the value that is obtained from
  MOZ_PROFILER_ENTRIES and is the first argument to profiler_start(). (I.e. not
  "entry" or "entrySize".)

- Removes variables (e.g. PROFILER_HELP) holding env var names and uses the
  names (e.g. "MOZ_PROFILER_HELP") directly. Some of the names are already used
  directly and I think the slight repetition isn't harmful. It's unlikely that
  we'd want to change these names the way we might need to change a numeric
  value, and they're perfectly descriptive.

- Changes the "MOZ_PROFILING_FEATURES" string in the weird Android-only startup
  code to be "MOZ_PROFILER_FEATURES", for consistency.

- Renames gUnwindInterval and gProfileEntries as gEnvVarInterval and
  gEnvVarEntries to make it clearer that they come from environment variables,
  but otherwise are parallel to gInterval and gEntries.

- Puts entries before intervals in most places, to match the profiler_start()
  argument order.

- Changes profiler_usage() so that (a) it always prints, no matter the
  verbosity, (b) it exits at its end, and (c) doesn't double-print "Profiler: "
  at the start of each line.

--HG--
extra : rebase_source : e5a0b1c48e390ada894c746f050f08ff5c241066
2017-02-23 14:26:46 +11:00
Thinker K.F. Li 60b7a61d43 Bug 1329929 - Fix memory leaking of TaskTracer. r=cervantes 2017-02-22 00:26:00 -05:00
Nicholas Nethercote 33da826017 Bug 1340928 (part 15) - Inline and remove ToJSObject(). r=mstange.
It has a single call site.

--HG--
extra : rebase_source : ac17c229cffc6a25014c6060f99892ecbdda74cf
2017-02-22 13:42:14 +11:00
Nicholas Nethercote 354d0d388f Bug 1340928 (part 14) - Factor out code repeated in both ProfileGatherer::Start() methods. r=mstange.
--HG--
extra : rebase_source : 47deafe39aa208654398cb0795831bd273aa3265
2017-02-22 11:46:28 +11:00
Nicholas Nethercote aedaf0a73c Bug 1340928 (part 13) - Merge two ProfileGatherer::Start() variants. r=mstange.
The |nsIFile*| one is only called by the |const nsACString&| one, so this patch
combines them.

--HG--
extra : rebase_source : d8338e88cef4799d95e590c056ab343d5a1c546a
2017-02-22 11:35:43 +11:00
Nicholas Nethercote 348841f745 Bug 1340928 (part 12) - Remove profiler_get_gatherer(). r=mstange.
profiler_get_gatherer() exposes ProfileGatherer to the outside world in a way
that makes future changes difficult.

This patch:

- Removes ProfileGatherer.h from the list of headers exported from the
  profiler.

- Removes nsIProfiler.profileGatherer and nsProfiler::GetProfileGatherer().

- Replaces profiler_get_gatherer() with three new functions that provide
  minimal but sufficient access to ProfileGatherer:
  profiler_will_gather_OOP_profile(), profiler_gathered_OOP_profile(), and
  profiler_OOP_exit_profile().

  These functions provide access to the ProfileGatherer in a similar fashion to
  the pre-existing functions profiler_get_profile_jsobject_async() and
  profiler_save_profile_to_file_async()

This significantly reduces the size of the profiler's API surface.

--HG--
rename : tools/profiler/public/ProfileGatherer.h => tools/profiler/gecko/ProfileGatherer.h
extra : rebase_source : d8e06a1133d4098c3a214858d3ff2c4bdcd9f1f2
2017-02-22 10:19:53 +11:00
Nicholas Nethercote 883fc3f925 Bug 1340928 (part 9) - Remove MOZ_PROFILER_STACK_SCAN env var. r=mstange.
It's used to set gUnwindStackScan, which is never used.

--HG--
extra : rebase_source : 3993df4cba27eb7eec39a40125df9a3190fe25a6
2017-02-21 13:53:19 +11:00
Nicholas Nethercote d60b476a02 Bug 1340928 (part 8) - Pass gStartTime to DuplicateLastSample(). r=mstange.
This removes the one use of gStartTime outside of platform*.cpp, which lets us
restrict its visibility to just that compilation unit.

--HG--
extra : rebase_source : bf7207572cba5c1a31b544ea73e783ecd559978a
2017-02-21 10:18:51 +11:00
Nicholas Nethercote 45a8d3ea6a Bug 1340928 (part 7) - Factor out gIsActive handling in platform-*.cpp. r=mstange.
PlatformStart() and PlatformStop() are currently responsible for setting and
clearing gIsActive, but it's better if we do it in profiler_{start,stop}().

The patch also does the following.

- Adds some missing emacs/vim modelines.

- Makes Platform{Start,Stop}() crash if they have failures. I'm not at all
  confident that ignoring the errors as is currently done will result in
  sensible behaviour, so brittleness is better.

--HG--
extra : rebase_source : b9ab8437f5b92f6a8993ba7677ecb74a321ce219
2017-02-16 15:08:07 +11:00
Wes Kocher 29443ed98c Merge m-c to inbound, a=merge
MozReview-Commit-ID: HDHJC8X9xWG
2017-02-22 15:06:46 -08:00
Nicholas Nethercote 5c520e77db Bug 1340928 (part 6) - Clean up profiler code relating to env vars. r=mstange.
This patch mostly does formatting fixes.

It also removes some declarations from platform.h that are no longer necessary
now that platform-linux-android.cpp is in the same compilation unit as
platform.cpp (due to it being #include-d directly); this required reordering
some things.

--HG--
extra : rebase_source : d07ef71455885fe8f1414d87c261ca054989a6a8
2017-02-16 13:59:35 +11:00
Nicholas Nethercote 8c6f56c330 Bug 1340928 (part 5) - Pass the interval to PlatformStart(). r=mstange.
This avoids the need for platform-linux-android.cpp to read gInterval off the
main thread in an awkward spot. It also makes platform-linux-android.cpp
more like platform-{win32,macos}.cpp.

--HG--
extra : rebase_source : c1c76a382d6373f9fd2e3f89a1e1f8fef9072257
2017-02-15 14:44:12 +11:00
Nicholas Nethercote 598cac65d4 Bug 1340928 (part 4) - Remove redundant PlatformStop() call in profiler_stop(). r=mstange.
There is another PlatformStop() call earlier in the function, and gIsActive is
always false by the time we reach the removed call, so it's dead code.

--HG--
extra : rebase_source : 3b358b6bef47d394d6d6bc76d1153ea38968919e
2017-02-15 14:44:12 +11:00
Nicholas Nethercote a84399b3b5 Bug 1340928 (part 3) - Remove Sampler from ProfileGatherer. r=mstange.
It's only being used in a boolean fashion, so this patch replaces it with a
boolean.

--HG--
extra : rebase_source : 91152dff81107070fa49b3984e1b6759e0cd6d20
2017-02-15 14:44:12 +11:00
Nicholas Nethercote fba65fb101 Bug 1340928 (part 2) - Don't use ThreadInfo to pass Linux memory measurements. r=mstange.
This change means that all the relevant code is now within
platform-linux-android.cpp, which is nice.

--HG--
extra : rebase_source : 886a31005fdb67fae65e6f4209796973f1391244
2017-02-15 14:44:09 +11:00
Nicholas Nethercote 505f2bfb24 Bug 1340928 (part 1) - Two small platform-linux-android.cpp tweaks. r=mstange.
- Don't bother checking gSampler in ProfilerSignalHandler. It is equivalent
  to checking gIsActive and we do that at the top of the loop in
  SignalSender(). There is no point repeatedly checking the same condition in
  the middle of that loop; that just opens up the possibility of partially
  complete samples where some threads are missing.

- Clear gCurrentThreadInfo in SignalSender() instead of in
  ProfilerSignalHandler(). The effect is much the same, but this change means
  gCurrentThreadInfo is both set and cleared in SignalSender(), i.e. on a
  single thread, removing any need for Atomic<>.

--HG--
extra : rebase_source : 645d321de4cad6fdb32383b6f1d0c7cbe54308fc
2017-02-15 14:44:07 +11:00
Carsten "Tomcat" Book 73835fd06d Merge mozilla-central to autoland 2017-02-24 11:54:01 +01:00
Mark Banner c1b9e3db78 Bug 1341029 - Add more 'globals' for browserjs equivalent imports, and for test imports. r=mossop
MozReview-Commit-ID: Iy0rSOivsGQ

--HG--
extra : rebase_source : ba1f7583624d0b28591a6c7b54ec218bdbd0a40a
2017-02-08 09:41:30 +00:00
Sylvestre Ledru f3f518368c Bug 1340878 - Update the list of thirdparty codes in ThirdPartyPaths.txt r=mystor
MozReview-Commit-ID: 4a5ZPhirtPY

--HG--
extra : rebase_source : 068acca11c3a9e69c55ac06b392287c51caf5dd2
2017-02-19 14:21:25 +01:00
Nicholas Nethercote aee449d9c2 Bug 1339695 (part 11) - Remove the profiler's OS class. r=mstange.
We don't need OS now that the platform-*.cpp files are in the same compilation
unit as platform.cpp.

The patch removes the sleep functions because they are unnecessary indirection.

OS::Startup() is necessary, but the patch renames it PlatformInit() to match
Platform{Start,Stop}() and profiler_init(), from which it is called.
2017-02-20 09:07:37 +11:00
Nicholas Nethercote 4b44b699f4 Bug 1339695 (part 10) - Rename SPS_* macros as GP_*. r=jseward.
This removes the final mentions of the old "SPS" name.

--HG--
extra : rebase_source : 1bb36686d21ff8376326d35416b497f58e03fcde
2017-02-18 00:57:03 +11:00
Nicholas Nethercote 6562cdd851 Bug 1339695 (part 9) - Rename the platform-* files. r=mstange.
Specifically:

- platform-linux.cc -> platform-linux-android.cpp
- platform-macos.cc -> platform-macos.cpp
- platform-win32.cc -> platform-win32.cpp

Adding "android" to the first one is the most important part, because it makes
things clearer. The .cc to .cpp change is less important but I might as well do
it while I'm in here.

--HG--
rename : tools/profiler/core/platform-linux.cc => tools/profiler/core/platform-linux-android.cpp
rename : tools/profiler/core/platform-macos.cc => tools/profiler/core/platform-macos.cpp
rename : tools/profiler/core/platform-win32.cc => tools/profiler/core/platform-win32.cpp
extra : rebase_source : 371f91c4cd95e88e1723e192e68f16ba66965c8f
2017-02-18 00:56:24 +11:00
Nicholas Nethercote cafb84d8e8 Bug 1339695 (part 8) - Clean up platform detection throughout the profiler. r=mstange.
Currently we use the SPS_* macros in some places, but also use other ones like
__arm__ and ANDROID and XP_{WIN,MAC,LINUX}. This patch makes the profiler
consistently use the SPS_* macros and removes the V8_HOST_ARCH_* macros.

The patch also does the following.

- Cleans up some header inclusions, e.g. including pthread.h directly in the
  files that use it, and removing some unneeded android/log.h inclusions.

- Removes an unused branch in SetSampleContext() -- we don't support ARM on
  anything other than Android, and glibc 2.3 is ancient.

- Doesn't use SPS_* in PseudoStack.h because that would require exporting
  PlatformMacros.h, which doesn't seem worthwhile.

Some things that aid the understanding of this patch.

- XP_LINUX and LINUX are both defined for Linux *and* Android.

- x86/Android is the only supported platform that doesn't define
  HAVE_NATIVE_UNWIND.

- Every platform that defines USE_LUL_STACKWALK also defines
  HAVE_NATIVE_UNWIND.

--HG--
extra : rebase_source : 561b708f9434cabd9c0e00d4f4bfdd53f7008670
2017-02-18 00:56:21 +11:00
Nicholas Nethercote 5449b7be2c Bug 1339695 (part 7) - Remove ENABLE_LEAF_DATA. r=mstange.
It's defined if any of XP_{WIN,MAC,LINUX} are defined and the latter includes
Android as well. So it's defined on all the OSes the profiler supports.

--HG--
extra : rebase_source : 1fa9c1fb573a99375b477a048c0b4575ac1eeca0
2017-02-18 00:55:10 +11:00
Mathieu Leplatre 8e621b659c Bug 1224528 - Load initial JSON files for blocklist r=mgoodwin
MozReview-Commit-ID: D53xoTa0PZu

--HG--
extra : rebase_source : a4aa143c627df0f70c15fd3589cde7a49e30d80d
2016-12-11 14:37:22 -10:00
Marco Castelluccio 3aec408e65 Bug 1330833 - Add the new "modules" (DLLs) ping type. r=Dexter,mstange,jorendorff, data-review=bsmedberg 2017-02-18 14:17:30 +00:00
Nicholas Nethercote e3efc284a6 Bug 1340327 - Set bools earlier in profiler_start(). r=mstange.
They must be set before the call to MaybeSetProfiler(), which checks
gProfileThreads, and before the gTaskTracer check.

This patch fixes the failure of some threads (e.g. Compositor) to be profiled,
as well as allowing TaskTracer to start up again!
2017-02-18 10:16:47 +11:00