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

178 Коммитов

Автор SHA1 Сообщение Дата
Nick Fitzgerald 42225056cf Bug 1211723 and 1260570 - Share JS source text between JSRuntimes; r=jimb
This commit adds `SharedImmutableStringsCache` which allows for de-duplication
and sharing of immutable strings between threads and JSRuntimes.

Each JSRuntime gets a SharedImmutableStringsCache member, but the accessor
always returns the parent runtime's cache. The caches in child JSRuntime's are
not wasting space, however, as initialization and allocation of the table
happens lazily within SharedImmutableStringsCache.

Furthermore, this commit removes `js::ScriptSource::Parent` and the
`CompressedSourceSet`. They are unnecessary because source text is always shared
via the parent runtime's `SharedImmutableStringsCache` now.
2016-05-06 16:53:45 -07:00
Nicholas Nethercote 5eb5cc7d6c Bug 1132502 (part 1) - Abort if compartmentStats is null during memory reporting. r=jandem.
We have inconclusive evidence that compartmentStats is sometimes nullptr during
memory reporting, which would be bad. This patch makes us abort in that case.
It also changes some pointers to references to make the expected non-nullness
clearer.

--HG--
extra : rebase_source : c49f727450ce065d0e84d7728057c93d35353e91
2016-04-15 12:03:39 +10:00
Nicholas Nethercote 931d190779 Bug 1244841 - Don't measure SharedArrayBuffer objects multiple times. r=lth.
Redoes object element measurement and reporting:

- Adds "non-heap/elements/shared", which reports a (size / refcount)
  measurement. Previously these measurements went into
  "non-heap/elements/mapped" and the full size would be erroneously reported
  for every thread sharing the buffer.

- Renames "non-heap/elements/mapped" as "non-heap/elements/normal".

- Renames "malloc-heap/elements/non-asm.js" as "malloc-heap/elements/normal".

- Leaves "{malloc,non}-heap/elements/asm.js" unchanged.

--HG--
extra : rebase_source : cd1a660000fcb95674b317098be2dfec792b2c8e
2016-02-12 09:18:46 +11:00
Nicholas Nethercote 462eb9a0d4 Bug 1245737 (part 2) - Don't bother measuring DtoaState. r=bhackett.
It's gone from 4,096 bytes per JS thread to 72 bytes per thread. (Also, the
old code only measured the DtoaState for the main thread.)

--HG--
extra : rebase_source : bfe0772b8c760a45ca3665e2c0939b121189520a
2016-02-05 14:50:55 +11:00
Nicholas Nethercote ff840e5f16 Bug 1246855 (part 2) - Measure CompartmentPrivates during memory reporting. r=terrence.
This also expands the coverage to include the hash table elements in the
mWrappedJSMap.
2016-02-10 08:41:38 +11:00
Nicholas Nethercote 3a94c4149a Bug 1245761 (part 2) - Measure JIT compartments. r=jandem.
--HG--
extra : rebase_source : cc6d1c57306405cdaada9ff876256b8eb2dad03f
2016-02-04 17:36:06 +11:00
Michael Wu ed4b205b47 Bug 1212663 - Use doxygen style comments in jsapi, r=Waldo 2015-10-17 13:27:16 -04:00
Shu-yu Guo 76da4d1112 Bug 1202902 - Support non-syntactic extensible lexical scopes. (r=billm) 2015-10-06 14:00:29 -07:00
Terrence Cole fe83447e72 Bug 1196848 - Add Zone::uniqueIds to about:memory reports; r=njn
--HG--
extra : rebase_source : 313662129f131a9249b73232c600f34c92738078
2015-08-26 14:51:43 -07:00
Terrence Cole 4955cf8ac2 Bug 1196925 - Remove the non-existing relocatable store buffer counts from about:memory; r=njn 2015-08-26 14:51:43 -07:00
Terrence Cole ca1d87a88a Backout 15fa4c3a45ec (Bug 1196848) for being on top of a regression.
--HG--
extra : rebase_source : 7783be3966c4f963ad9aadfa9dc145b1b832c143
2015-09-03 09:35:43 -07:00
Terrence Cole 46a19ca98d Backout ff66ba4688c0 (Bug 1196925) for being on top of a regression.
--HG--
extra : rebase_source : 2a97f610801a7157f513ed3a3b52533d724f1c81
2015-09-03 09:35:02 -07:00
Terrence Cole 23db9f8879 Bug 1196925 - Remove the non-existing relocatable store buffer counts from about:memory; r=njn
--HG--
extra : rebase_source : 7b704f68283b7921225e43ec607315f283556817
2015-08-26 14:51:43 -07:00
Terrence Cole 899ec10be3 Bug 1196848 - Add Zone::uniqueIds to about:memory reports; r=njn
--HG--
extra : rebase_source : 0b7173fc4d344f55b5b8c41e010ea65c7048091e
2015-08-26 14:51:43 -07:00
Jeff Walden d878a013d1 Bug 1185739 - Fix self-comparison warnings in MemoryMetrics.h. r=efaust
--HG--
extra : rebase_source : 0efd43d45100d4fe56cd22039c2349635c3d9161
2015-07-20 15:17:25 -07:00
Nicholas Nethercote 915d8780c8 Bug 1181452 - Add memory reporting infrastructure for Servo to SpiderMonkey. r=till.
Basically, this change is all about aggregating SpiderMonkey's fine-grained
measurements into the new set of coarse-grained measurements, called
ServoSizes (which is similar to the existing TabSizes). The change utilizes and
extends the existing macro machinery to do this in a way that has some chance
to maintaining correctness over the long-term despite the fact that this code
is so fiddly.

--HG--
extra : rebase_source : 1dc3d92830902d9e24496dcdc5f1ee8a6fe39fb4
2015-07-07 23:18:44 -07:00
Terrence Cole c01ef51c2d Bug 1167453 - Rename JSGCTraceKind and make it a C++11 enum class; r=jonco
--HG--
extra : rebase_source : 7dbeee0826fa20477ed227c9d336fdfe6de6ffd2
2015-05-22 10:40:24 -07:00
Brian Hackett a7c7f13a97 Bug 1161077 - Allocate unboxed arrays in the nursery, r=terrence. 2015-05-04 16:36:54 -07:00
Jim Blandy fc9d59392a Bug 1062473: Implement JS::ubi::Node::size for JSObjects. r=sfink,terrence
--HG--
extra : rebase_source : cc27cefa89ab9689cbfe7f62635a00c3363f4265
extra : histedit_source : fd7c1ca09c654b27536774d7b722319819dd74e0
2015-04-01 18:04:53 -07:00
Jan de Mooij b8b1677f0f Bug 1144366 - Switch SpiderMonkey and XPConnect style from |T *t| to |T* t|. r=jorendorff 2015-03-28 23:22:11 +01:00
Phil Ringnalda c8a25251c1 Backed out changeset 0c030f97a04f (bug 1144366) for being on top of patches being backed out
CLOSED TREE
2015-03-28 10:39:56 -07:00
Jan de Mooij 8d6d44ecb8 Bug 1144366 - Switch SpiderMonkey and XPConnect style from |T *t| to |T* t|. r=jorendorff 2015-03-28 12:08:37 +01:00
Brian Hackett 533750696e Bug 1143256 - Store object metadata using a weak map, r=luke. 2015-03-25 09:07:51 -07:00
Ryan VanderMeulen 6fa51cb894 Backed out changeset d3c9b899f7d2 (bug 1143256) for frequent browser_perf-refresh.js leaks.
--HG--
extra : rebase_source : d8872879f2e6bec248ac3a5fc8b254be437abea0
2015-03-20 16:07:42 -04:00
Brian Hackett 73cf6b02a1 Bug 1143256 - Store object metadata using a weak map, r=luke. 2015-03-20 06:33:33 -07:00
Terrence Cole bb7d88df07 Bug 1134425 - Part 1: move the allocator interface code out of line; r=jonco
--HG--
extra : rebase_source : cbeb8097a3c55397cc0c0f476deb0011ad496f62
2015-03-04 09:32:02 -08:00
Jon Coppeard 439686762a Bug 1134255 - Add breakdown of allocated and unused GC things by kind in memory reports r=njn
--HG--
extra : rebase_source : aaec1857d252090c2aea9fc8e45a2a82ac492b6c
2015-02-19 11:56:00 +00:00
Brian Hackett 909e578fea Bug 1125930 - Rename TypeObject to ObjectGroup, r=jandem. 2015-02-02 11:20:38 -07:00
Masatoshi Kimura bf312ad056 Bug 1120062 - Part 1: Remove most Nullptr.h includes. r=waldo 2015-01-11 11:34:52 +09:00
Ehsan Akhgari 4354953b4f Bug 1118486 - Part 1: Use `= delete` instead of MOZ_DELETE directly; r=Waldo
Most of this patch (with the exception of dom/bindings/Codegen.py) was
generated by the following bash script:

#!/bin/bash

function convert() {
echo "Converting $1 to $2..."
find . ! -wholename "*nsprpub*" \
       ! -wholename "*security/nss*" \
       ! -wholename "*/.hg*" \
       ! -wholename "*/.git*" \
       ! -wholename "obj-*" \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.cc" \
         -o -iname "*.idl" \
         -o -iname "*.ipdl" \
         -o -iname "*.ipdlh" \
         -o -iname "*.mm" \) | \
    xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}

convert MOZ_DELETE '= delete'
2015-01-08 23:19:05 -05:00
Brian Hackett ca1120a47e Bug 1083600 - Use inline data for small transparent typed objects, r=sfink,nmatsakis. 2014-10-29 11:14:53 -07:00
Brian Hackett 0593b4473d Bug 1061404 - Move ArrayBuffer view list into per compartment tables, r=sfink. 2014-09-17 11:13:17 -07:00
Shu-yu Guo c2475516fe Bug 1056411 - Part 1: Remove DebugFromC and clean up compartment debug mode logic. (r=jimb) 2014-09-08 21:03:31 -07:00
Nicholas Nethercote 0c90379b35 Bug 1023719 - Report notable classes in the JS memory reporter. r=till.
--HG--
extra : rebase_source : 3139b17f6a660f460adb820c390368dc8367069a
2014-04-15 19:43:18 -07:00
Jan de Mooij 6675f63031 Bug 1037886 - Report Latin1 and TwoByte strings separately in about:memory. r=njn 2014-07-16 19:11:50 +02:00
Jason Orendorff 26bdfdcc2f Bug 645416, part 3 - Symbol layout and GC support for allocating them. r=terrence.
Layout: js/src/vm/Symbol.h defines the new class JS::Symbol. JS::Symbol is the
same size as JSString on all platforms, because the allocator does not support
smaller allocations.

Allocation: Since the purpose of symbols is to serve as property keys, they are
always allocated in the atoms compartment.

We take a lock when allocating. This could probably be replaced with a
main-thread-only assertion. However, if atom allocation is not already a
bottleneck, symbol allocation probably never will be.

Symbols are given their own finalize-class in the GC. This means we allocate a
page per zone for symbols, even though they are only ever allocated in the
atoms zone. Terrence thought this could be easily fixed later. It should be; we
never touch the page, but a 32-bit virtual address space does not just have
infinite pages to spare.

A jsapi-test exercises the new symbol allocation code. A few oddities in
jsapi-tests are fixed in passing.

Discussion after review led to some new assertions about minimum object size in
AllocateObject and AllocateNonObject.

--HG--
extra : rebase_source : 45abb651d3b1b493d77a5dd0eb554f96b058c63a
2014-06-23 10:55:51 -05:00
Brian Hackett 3ba0ec8938 Bug 1020012 - Consolidate ScriptSources with the same source, r=luke. 2014-06-21 10:39:04 -07:00
Nicholas Nethercote aaf6fb2124 Bug 1010064 - Allow memory reports to be anonymized. r=bsmedberg.
--HG--
extra : rebase_source : 5eb756b17a97e751deb0f47e909fdb35533cb23b
2014-05-20 23:06:54 -07:00
Brian Hackett 5385dceeca Bug 1024038 - Remove YARR, r=jandem. 2014-06-16 15:37:53 -07:00
Nicholas Nethercote 2207ecfbcd Backout 277bacd9f2f8 (bug 1023719) for causing intermittent crashes.
--HG--
extra : rebase_source : e6c9e54dd2df572da7f8cdf3cd6226a1aeeee883
2014-06-13 06:39:16 -07:00
Nicholas Nethercote feeaf7db9a Bug 1023719 - Report notable classes in the JS memory reporter. r=till.
--HG--
extra : rebase_source : 5a842c36cf7202f6751290da80cefb005fd8db95
2014-04-15 19:43:18 -07:00
Ehsan Akhgari 5b0272c079 Bug 1013663 - Fix some bad implicit conversion constructors in the JS engine; r=jorendorff,jandem 2014-05-25 21:46:24 -04:00
Nick Fitzgerald 9f0fc42c03 Bug 972045 - Add a compact representation for call stacks in SpiderMonkey. r=jimb 2014-04-24 17:25:00 -04:00
Ryan VanderMeulen 8b7b5cc3a2 Backed out changeset ace4dd426349 (bug 972045) for mochitest failures. 2014-04-24 15:10:44 -04:00
Nick Fitzgerald 56f6826f77 Bug 972045 - Add a compact representation for call stacks in SpiderMonkey. r=jimb 2014-04-24 10:04:00 -04:00
Shian-Yow Wu 0eb9c68561 Bug 945152 - Part 2: Report mapped array buffer statistics for about:memory. r=njn 2014-04-16 19:26:41 +08:00
Terrence Cole d2700b6596 Bug 989035 - Track malloced slots attached to the nursery. r=njn 2014-03-27 22:52:02 -04:00
Terrence Cole 0988607fd4 Bug 957723 - Decommit unused portions of the nursery; r=jonco 2014-01-08 13:43:55 -08:00
Terrence Cole afd6da80fd Backout ed7130b21a68 (Bug 957723) for SM(r) orange on a CLOSED TREE. 2014-03-17 11:42:57 -07:00
Terrence Cole 16c2295e94 Bug 957723 - Decommit unused portions of the nursery; r=jonco
--HG--
extra : rebase_source : b4e5a0b55d1817d3fc312b4aed2abb4e5273b145
2014-01-08 13:43:55 -08:00