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

2234 Коммитов

Автор SHA1 Сообщение Дата
Matthew Gaudet 068e37e2c7 Bug 1480524 - [Part 2] Remove Ion NewObject stub, and remove limitation on template object dynamic slots for fast path r=jandem
--HG--
extra : rebase_source : f3c1c11c947fcad58853c082f53695e006b06146
extra : source : 24b2d7570e3968245c160485d55a917a2db9a327
2018-08-07 10:12:59 -04:00
André Bargull f1e256e606 Bug 813836: Optimize comparisons of single-element strings. r=jandem 2018-08-10 08:56:47 -07:00
Nicholas Nethercote b9e071e2e8 Bug 1481998 - Make mozilla::Hash{Map,Set}'s entry storage allocation lazy. r=luke,sfink
Entry storage allocation now occurs on the first lookupForAdd()/put()/putNew().
This removes the need for init() and initialized(), and matches how
PLDHashTable/nsTHashtable work. It also removes the need for init() functions
in a lot of types that are built on top of mozilla::Hash{Map,Set}.

Pros:

- No need for init() calls and subsequent checks.

- No memory allocated for empty tables, which are not that uncommon.

Cons:

- An extra branch in lookup() and lookupForAdd(), but not in put()/putNew(),
  because the existing checkOverloaded() can handle it.

Specifics:

- Construction now can take a length parameter.

- init() is removed. Explicit length-setting, when necessary, now occurs in the
  constructors.

- initialized() is removed.

- capacity() now returns zero when the entry storage is absent.

- lookupForAdd() is no longer `const`, because it can instantiate the storage,
  which requires modifications.

- lookupForAdd() can now return an invalid AddPtr in two cases:

  - old: hashing failure (due to OOM in the hasher)

  - new: OOM while instantiating entry storage

  The existing failure handling paths for the old case work for the new case.

- clear(), finish(), and clearAndShrink() are replaced by clear(), compact(),
  and reserve(). The old compactIfUnderloaded() is also removed.

- Capacity computation code is now in its own functions, bestCapacity() and
  hashShift(). setTableSizeLog2() is removed.

- uint32_t is used throughout for capacities, instead of size_t, for
  consistency with other similar values.

- changeTableSize() now takes a capacity instead of a deltaLog2, and it can now
  handle !mTable.

Measurements:

- Total source code size is reduced by over 900 lines. Also, lots of existing
  lines got shorter (i.e. two checks were reduced to one).

- Executable size barely changed, down by 2 KiB on Linux64. The extra branches
  are compensated for by the lack of init() calls.

- Speed changed negligibly. The instruction count for Bench_Cpp_MozHash
  increased from 2.84 billion to 2.89 billion but any execution time change was
  well below noise.
2018-08-10 18:00:29 +10:00
Boris Zbarsky 4af64d8709 Bug 1479793. Throw when someone tries to define an accessor property with an integer name on a DOM proxy with an indexed setter. r=qdot,jorendorff
Differential Revision: https://phabricator.services.mozilla.com/D2571

--HG--
extra : moz-landing-system : lando
2018-08-10 17:04:58 +00:00
Ted Campbell 3d03b347e6 Bug 1479900 - Part 2: Refactor GC relocation to use a reserved flag. r=sfink
This refactors gc::Cell derived types to start with a uintptr_t-sized
field with the low bits reserved for the GC and uses these bits for
relocation mechanism.

- JSString now stores flags in a uintptr_t. On 32-bit platforms, a
  second field is used to hold length.
- Redefine JSString flag bit positions to avoid cell reserved bits.
- Forwarded Cells are now indicated by a reserved flag instead of a
  magic invalid-pointer-like value.
- gc::RelocationOverlay now extends gc::Cell
- Update js::Symbol, js::Scope and js::BigInt fields to be compatible.

MozReview-Commit-ID: Cs5OavbHmqK
2018-08-08 18:16:43 -04:00
Ted Campbell c8528d6865 Bug 1479900 - Part 1: Use accessor methods for JSString::flags/length. r=sfink
Add accessor methods so that underlying storage strategy can be changed
later. This patch should not change current behaviour.

MozReview-Commit-ID: IRA53TQShe6
2018-08-08 18:16:42 -04:00
Jon Coppeard 9d6255073d Bug 1481196 - Compile module scripts to a JSScript like we do for classic scripts r=jandem r=baku 2018-08-08 10:40:03 +01:00
Nicholas Nethercote d9eb003725 Bug 1481138 - Remove the add() variant in HashTable and GCHashTable that uses a default value. r=luke
Because (a) it's kinda weird, and (b) only used in a single test, where it can
be easily replaced with a vanilla add().

MozReview-Commit-ID: L4RoxFb7yGG

--HG--
extra : rebase_source : 515a5ede5d417686907345ad9069c6a41669dd17
2018-08-06 09:10:05 +10:00
Nicholas Nethercote e39fda4c40 Bug 1480668 - Remove js::CStringHashPolicy. r=luke
It's identical to mozilla::CStringHasher.

Also fix a comment at the top of HashTable.h about CStringHasher.

--HG--
extra : rebase_source : 92176c4f6ea8041f309764b4ce0271a494853a7b
2018-08-06 07:55:50 +10:00
Lars T Hansen 37d3b18077 Bug 1480012 - Generalize JS shell mailbox to Wasm memories and modules. r=luke
In the old days we could only share a SharedArrayBuffer, but now we
can also share WasmMemory and WasmModule objects.  Rename the shell's
get/setSharedArrayBuffer as get/setSharedObject and generalize them to
handle the new types.

Leave the old names in place as aliases of the new names.

We rename /some/ uses of get/setSharedArrayBuffer in existing test
cases, but leave uses in test262 alone; we need to upstream those more
carefully.

--HG--
extra : rebase_source : 5ca04306a739249a70fc4aa8734b08e16d62f7d4
extra : source : fcd471c23cf3c1374541df766fd5aea0628fb2a5
2018-08-01 13:21:06 +02:00
Narcis Beleuzu 4684ccf98e Merge inbound to mozilla-central. a=merge 2018-08-03 01:28:14 +03:00
Markus Stange 8a19b9e4c6 Bug 1476793 - Teach HelperThread how to push/pop profiler label frames, and use this capability to push an IDLE frame when the thread is idle. r=njn,sfink
MozReview-Commit-ID: 6HIWrA27X87

--HG--
extra : rebase_source : cdf4e2e8a15eea8910e3aad8a78d55463e9ce4da
2018-08-02 13:49:48 -04:00
Tooru Fujisawa 6d85c982d8 Bug 1317481 - Optimize away Generator/Promise handling for await in the topmost JS frame with already resolved/rejected Promise. r=anba,smaug 2018-08-02 16:11:57 +09:00
Nicholas Nethercote 93bbf0be8b Bug 1478879 - Remove Range/Enum use in devtools/. r=sfink
--HG--
extra : rebase_source : 6ebdd04529e347cc47235355e952f6d59b796383
2018-07-31 10:31:00 +10:00
Nicholas Nethercote 6141e31ef4 Bug 1479954 - Rename Hash{Set,Map}::sizeOf{In,Ex}cludingThis(). r=luke
In PLDHashTable the equivalent functions have a "Shallow" prefix, which makes
it clear that they don't measure things hanging off the table. This patch makes
mozilla::Hash{Set,Map} do likewise.

MozReview-Commit-ID: 3kwCJynhW7d

--HG--
extra : rebase_source : 9c03d11f376a9fd4cfd5cfcdc0c446c00633b210
2018-08-01 09:57:52 +10:00
Jon Coppeard 1cf260e716 Bug 1475228 - Add JSMallocAllocPolicy to let gecko allocate data structures using the JS heap r=jandem 2018-07-17 14:30:23 +01:00
Nicholas Nethercote b85493f609 Bug 1477626 - Move js::Hash{Set,Map} into MFBT. r=Waldo
The main change is that the patch copies js/public/HashTable.h to
mfbt/HashTable.h, and then changes it as follows.

- Changes `js` namespaces to `mozilla` (and removes some now-unnecessary
  `mozilla::` qualifiers).

- Changes the default AllocPolicy from the SpiderMonkey-specific
  `TempAllocPolicy` to the generic `MallocAllocPolicy`.

- Adds `#include "AllocPolicy.h"` (like mfbt/Vector.h).

- Changes `JS_DEBUG` use to `DEBUG`.

- Minor comment updates, as necessary.

js/public/HashTable.h is now tiny, holding just a few renamings of things from
the `mozilla` namespace into the `js` namespace to minimize churn elsewhere.
(Those renamings keep `TempAllocPolicy` as the default AllocPolicy for
js::Hash{Set,Map}.)

Also, various template specializations had to be moved from the `js` namespace
to the `mozilla` namespace to avoid compile errors.

MozReview-Commit-ID: GS9Qn9YeYDA

--HG--
rename : js/public/HashTable.h => mfbt/HashTable.h
2018-07-26 20:15:49 +10:00
Nicholas Nethercote faa9066821 Bug 1477626 - Remove use of JS_BIT in js/src/HashTable.h. r=Waldo
MozReview-Commit-ID: DRba0Z0Olo0

--HG--
extra : rebase_source : a9b48c986cd09c37039bd81e054f129afce48171
2018-07-26 20:12:55 +10:00
Nicholas Nethercote 0f205a7ce0 Bug 1477626 - Move ScrambleHashCode() from js/src/Utility.h to mfbt/HashFunctions.h. r=Waldo
And use it in PLDHashTable.cpp.

MozReview-Commit-ID: BqwEkE0p5AG

--HG--
extra : rebase_source : bd9118e24b82add6ad1fdcb067a5f25b25e90201
2018-07-26 18:52:47 +10:00
Nicholas Nethercote 25a1140207 Bug 1477626 - Introduce mozilla::HashNumber and use it in various places. r=Waldo
Currently we have three ways of representing hash values.

- uint32_t: used in HashFunctions.h.

- PLDHashNumber: defined in PLDHashTable.{h,cpp}.

- js::HashNumber: defined in js/public/Utility.h.

Functions that create hash values with functions from HashFunctions.h use a mix
of these three types. It's a bit of a mess.

This patch introduces mozilla::HashNumber, and redefines PLDHashNumber and
js::HashNumber as synonyms. It also changes HashFunctions.h to use
mozilla::HashNumber throughout instead of uint32_t.

This leaves plenty of places that still use uint32_t that should use
mozilla::HashNumber or one of its synonyms, but I didn't want to tackle that
now.

The patch also:

- Does similar things for the constants defining the number of bits in each
  hash number type.

- Moves js::HashNumber from Utility.h to HashTable.h, which is a better spot
  for it. (This required changing the signature of ScrambleHashCode(); that's
  ok, it'll get moved by the next patch anyway.)

MozReview-Commit-ID: EdoWlCm7OUC

--HG--
extra : rebase_source : 5b92c0c3560eb56850cd8832f8ee514d25e3c16f
2018-07-26 18:52:46 +10:00
Nicholas Nethercote e683e03e60 Bug 1477626 - Use `uint32_t` instead of `unsigned` in HashTable.h. r=Waldo
Because it's more precise, and gives us more consistency.

MozReview-Commit-ID: BLYXYSHgZ7v

--HG--
extra : rebase_source : 527379499a7f2868e032982d7967005df6599bf1
2018-07-26 18:52:46 +10:00
Nicholas Nethercote 049d8130b0 Bug 1477626 - Replace some bespoke code with a call to CeilingLog2(). r=Waldo
After all, bug 543034 was fixed 9 years ago.

MozReview-Commit-ID: HDPO3gGuQMx

--HG--
extra : rebase_source : 6a1410c30e63f2ea5a4f918ba932b814d50c34dd
2018-07-26 18:52:46 +10:00
Boris Zbarsky 27c2e2863d Bug 1347999. Annotate xpidl methods/attributes that can be implemented in script as JS_HAZ_CAN_RUN_SCRIPT. r=froydnj 2018-07-30 11:51:44 -04:00
Andreea Pavel 840f785b1e Backed out 8 changesets (bug 1475228) for wpt failures e.g. html/semantics/scripting-1/the-script-element/execution-timing/088.html on a CLOSED TREE
Backed out changeset b2d18ea619ec (bug 1475228)
Backed out changeset 45d3ffe3308e (bug 1475228)
Backed out changeset 02b27f8441be (bug 1475228)
Backed out changeset b82c2cf4b3f1 (bug 1475228)
Backed out changeset 2bc8f24dc3fc (bug 1475228)
Backed out changeset 6104ea971587 (bug 1475228)
Backed out changeset 7c83633262db (bug 1475228)
Backed out changeset 34fb24d52f08 (bug 1475228)
2018-07-30 16:49:02 +03:00
Jon Coppeard f7f35250d8 Bug 1475228 - Add JSMallocAllocPolicy to let gecko allocate data structures using the JS heap r=jandem 2018-07-17 14:30:23 +01:00
Kristen Wright 927abec5f2 Bug 1476141 - JS::ubi::Nodes represent DOM structure in more detail r=KrisWright
Added a new CoarseType that refers to DOM nodes. Updated the trees to represent the CoarseType. Created a new type of count in the heap snapshot that sorts the data by a more descriptive type name. Created the descriptive in JS::ubi::Base.

--HG--
extra : histedit_source : be24efa4d2ccb85e82046d7cf7d2c3a1e13b1fd7
2018-07-16 14:42:07 -07:00
Jon Coppeard 1af3359cea Bug 1477761 - Fix sketchy timestamp computation for unlimited slice budget r=sfink 2018-07-26 17:23:18 +01:00
Benjamin Bouvier 962d9c7182 Bug 1416723: Remove SIMD.js support; r=luke, r=nbp
--HG--
extra : rebase_source : d0af6d791d53015f9da0b70ebeda640a4ad5952a
2018-07-24 15:15:01 +02:00
shindli 9319e91d10 Backed out 2 changesets (bug 1416723) for failures in dom/serviceworkers/test/test_serviceworker_interfaces.html on a CLOSED TREE
Backed out changeset b2242216d11b (bug 1416723)
Backed out changeset bfaf82051dfd (bug 1416723)
2018-07-26 14:23:43 +03:00
Benjamin Bouvier c33c3f309f Bug 1416723: Remove SIMD.js support; r=luke, r=nbp
--HG--
extra : rebase_source : 486095f8e51318b104b7348330a7df6377a15302
extra : histedit_source : 5415a1ce4bd366464612bd4751093588d30aa562
2018-07-24 15:15:01 +02:00
Kristen Wright 82fd1509ba Bug 1474383 - JSRuntime hook to construct ubi::Nodes specialized for nsINode instances. r=sfink,jimb,bz
Created a runtime hook to handle DOM nodes. Specialized ubi::Concrete for nsINode-inheriting objects. Displayed outgoing nsISupports* edges on reflector JSObjects. Generated outgoing child edges from nsINodes by examining their children. Updated the UbiNodeCensus to ignore zone checks if there is no zone to be found in a node.

--HG--
extra : rebase_source : 319dccb3277a39e51a79588eac9c8f2b4ff97c2f
2018-07-06 16:52:42 -07:00
Brian Hackett e77cc309c4 Bug 1477566 - Avoid recording events in SliceBudget::UnlimitedDeadline, r=sfink.
--HG--
extra : rebase_source : 463699491f3475ae928a6d700302ad2a9014b57d
2018-07-23 21:57:20 +00:00
Csoregi Natalia f7a71fcb6d Backed out changeset ec8c33de4e10 (bug 1474383) for build bustage. CLOSED TREE 2018-07-24 19:32:06 +03:00
Kristen Wright 657d16c582 Bug 1474383 - JSRuntime hook to construct ubi::Nodes specialized for nsINode instances r=jimb
Created a runtime hook to handle DOM nodes. Specialized ubi::Concrete for nsINode-inheriting objects. Displayed outgoing nsISupports* edges on reflector JSObjects. Generated outgoing child edges from nsINodes by examining their children. Updated the UbiNodeCensus to ignore zone checks if there is no zone to be found in a node.
2018-07-06 16:52:42 -07:00
Brian Hackett 019a5b20c2 Bug 1465470 Part 6 - Avoid recording various JS atomics, r=jandem.
--HG--
extra : rebase_source : 6a01f4e7c76b889ae6d39cd242c063fce3182f53
2018-07-21 14:37:45 +00:00
Brian Hackett 0709a8aee5 Bug 1207696 Part 4e - Don't record various JS atomics, r=jandem.
--HG--
extra : rebase_source : 7ced4108600a1182efafea06f1651a5ec7e06940
2018-07-21 14:24:16 +00:00
Brian Hackett f6b8e6f81c Bug 1309552 - Specify buffer size when freeing data in AllocPolicy, r=waldo.
--HG--
extra : rebase_source : f4e2d9f8831cf41c19d592ce252e87161f32250b
2018-07-20 23:58:34 +00:00
Kristen Wright c5a7b6643f Bug 1477381 - JS::ubi::TracerConcrete<Referent>::edges as a public method. r=erahm
--HG--
extra : amend_source : 5f3b27c27dbeecce604c3421c644b62fb2ff8744
extra : histedit_source : 3f2b7cc862ad1959b106bf71533b85a23d26ad98
2018-07-20 12:57:44 -07:00
Margareta Eliza Balazs ad89a11136 Backed out 7 changesets (bug 1475228) for causing Spidermonkey rust failures on Linux x64 debug
Backed out changeset e91802969fb7 (bug 1475228)
Backed out changeset 623af73419eb (bug 1475228)
Backed out changeset bf96bd78dc11 (bug 1475228)
Backed out changeset 104817d51d1b (bug 1475228)
Backed out changeset d3829c85f650 (bug 1475228)
Backed out changeset 74d10b32b3ea (bug 1475228)
Backed out changeset dde64fbe2f0d (bug 1475228)
2018-07-17 17:57:55 +03:00
Jon Coppeard 5ae8832ca2 Bug 1475228 - Add JSMallocAllocPolicy to let gecko allocate data structures using the JS heap r=jandem 2018-07-17 14:30:23 +01:00
Jon Coppeard 1965758811 Bug 1476012 - Remove dependency of Principals.h on StructuredClone.h r=sfink 2018-07-17 13:08:55 +01:00
Andrea Marchesini ceea0172b0 Bug 1473587 - CSP Violation events should have the correct sample for inline contexts, r=jorendorff, r=ckerschb 2018-07-16 17:58:04 +02:00
Andreea Pavel b0e30af17e Merge mozilla-inbound to mozilla-central. a=merge 2018-07-13 00:51:26 +03:00
Matt Howell 638dfe2577 Bug 1052582 Part 2 - Create and use a separate malloc arena for ArrayBuffer contents. r=sfink
MozReview-Commit-ID: 7IlFvr3hoA8

--HG--
extra : rebase_source : 862a259389e7085f4b5c6cb2b27d3f72627e36b3
2018-05-23 14:57:42 -07:00
Matt Howell 76ff0a0612 Bug 1052582 Part 1 - Support an arena parameter for js_pod_malloc and friends. r=sfink
This patch adds new functions taking the arena parameter rather than overloading
existing functions, because there are already overloads of calloc that take
two size_t parameters (which arena_id_t is an alias for), so it couldn't have
been done that way, and malloc and realloc needed to be consistent with calloc.

MozReview-Commit-ID: 1MUXoCUgJWO

--HG--
extra : rebase_source : 16261ba4e802efa0bc65878d490ae9b62aa35797
2018-06-29 13:06:14 -07:00
Kristen Wright 19310fa39a Bug 1466979 - Separate JS::ubi::EdgeVectorTracer and JS::ubi::SimpleEdgeRange into UbiNodeUtils.h r=jimb
Separated SimpleEdgeRange into the new UbiNodeUtils.h, updated build files, changed SimpleEdgeRange::init to SimpleEdgeRange::addTracerEdges, created bool addEdge to add new edges to the vector.
2018-05-31 14:13:00 -07:00
Wander Lairson Costa a6edc697ce Bug 1473818: Fix global constructors count regression r=jonco
Bug 1465505 moved from PRJ_Now to mozilla::TimeStamp. As a side effect,
it introduced a few extra global constructors calls.

This patch fixes it.

MozReview-Commit-ID: 9VX83JZIyds

--HG--
extra : rebase_source : 01a22a8eea3ab224dbaa1a93d2a73ebb9ab6b6ea
2018-07-06 18:28:08 -03:00
Matthew Gaudet 5d0bf9c261 Bug 1469044: [Part 2] Remove remainder of MathCache r=jandem
--HG--
extra : rebase_source : 587d69130f2c6d50ca8e14bd0ccaf7a4f58285e8
2018-07-09 16:52:16 -04:00
Jan de Mooij 4da897f207 Bug 1468752 part 2 - Define Wrapper::wrapperHandler in Wrapper.h. r=bz
IsCrossCompartmentWrapper calls IsWrapper and then had an out-of-line call to Wrapper::wrapperHandler, but that's just loading the proxy handler and we already did that in IsWrapper. Having Wrapper::wrapperHandler in the header file means the compiler can compile IsCrossCompartmentWrapper much better.
2018-07-06 12:53:38 +02:00
Jan de Mooij 0e1a7bcb9f Bug 1468752 part 1 - Define js::IsCrossCompartmentWrapper in Wrapper.h. r=bz
js::UninlinedIsCrossCompartmentWrapper is used for some DEBUG asserts to avoid #include cycles.
2018-07-06 12:52:03 +02:00