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

50 Коммитов

Автор SHA1 Сообщение Дата
André Bargull dca8370c53 Bug 1341265 - Part 11: Optimise Set.prototype.has for objects in CacheIR. r=iain
Inline `Set.prototype.has` in CacheIR when called with objects.

Implementing `MacroAssembler::hashObject()` on 32-bit platforms is difficult,
because it uses 64-bit operations, so we either have to allocate twice as much
registers for `Register64` or alternatively spill the values on the stack. For
now just punt and only support this optimisation on 64-bit platforms.

Differential Revision: https://phabricator.services.mozilla.com/D118977
2021-08-10 09:55:22 +00:00
André Bargull fc13c8d5c1 Bug 1341265 - Part 1: Remove stale fixme comment. r=iain
Bug 775896 has been fixed, so we can remove the fixme comment.

Differential Revision: https://phabricator.services.mozilla.com/D118967
2021-08-10 09:55:18 +00:00
Narcis Beleuzu ca6769529e Backed out 22 changesets (bug 1341265) for bustages on VMFunctions.cpp . CLOSED TREE
Backed out changeset d21b307ccfaf (bug 1341265)
Backed out changeset 182be3b078d9 (bug 1341265)
Backed out changeset 684915d2fc1c (bug 1341265)
Backed out changeset 7b187e896bef (bug 1341265)
Backed out changeset 1f7646c44496 (bug 1341265)
Backed out changeset ed9ca5806dbc (bug 1341265)
Backed out changeset b1db78c1508a (bug 1341265)
Backed out changeset 63d0d4dc2972 (bug 1341265)
Backed out changeset 77d1207af1c0 (bug 1341265)
Backed out changeset d24cb3906dda (bug 1341265)
Backed out changeset 6f1d162738b4 (bug 1341265)
Backed out changeset 186a7d8db816 (bug 1341265)
Backed out changeset e5f6eb92c12c (bug 1341265)
Backed out changeset 46f05b533e75 (bug 1341265)
Backed out changeset 77735582aefb (bug 1341265)
Backed out changeset 3c94f61e57ca (bug 1341265)
Backed out changeset cab9608e9d98 (bug 1341265)
Backed out changeset 08768e69a817 (bug 1341265)
Backed out changeset df7c4fac5dc8 (bug 1341265)
Backed out changeset f1c40722a50e (bug 1341265)
Backed out changeset 2b174465dea5 (bug 1341265)
Backed out changeset 602b65bfb721 (bug 1341265)
2021-08-10 11:27:51 +03:00
André Bargull 867b1e4662 Bug 1341265 - Part 11: Optimise Set.prototype.has for objects in CacheIR. r=iain
Inline `Set.prototype.has` in CacheIR when called with objects.

Implementing `MacroAssembler::hashObject()` on 32-bit platforms is difficult,
because it uses 64-bit operations, so we either have to allocate twice as much
registers for `Register64` or alternatively spill the values on the stack. For
now just punt and only support this optimisation on 64-bit platforms.

Differential Revision: https://phabricator.services.mozilla.com/D118977
2021-08-10 07:45:34 +00:00
André Bargull f506795ec1 Bug 1341265 - Part 1: Remove stale fixme comment. r=iain
Bug 775896 has been fixed, so we can remove the fixme comment.

Differential Revision: https://phabricator.services.mozilla.com/D118967
2021-08-10 07:45:30 +00:00
Butkovits Atila c5ea1e4659 Backed out 21 changesets (bug 1341265) for causing Bug 1724298. CLOSED TREE
Backed out changeset ad0987b840c1 (bug 1341265)
Backed out changeset c3094bf07295 (bug 1341265)
Backed out changeset 199d9708682d (bug 1341265)
Backed out changeset 991572f50cf9 (bug 1341265)
Backed out changeset bf631916de9b (bug 1341265)
Backed out changeset 5d9d8af2f4ac (bug 1341265)
Backed out changeset 720032f06c94 (bug 1341265)
Backed out changeset 85f8b1c24e9d (bug 1341265)
Backed out changeset 13da03ae88a8 (bug 1341265)
Backed out changeset 6716962a06ed (bug 1341265)
Backed out changeset 26787054e0db (bug 1341265)
Backed out changeset 21199bd4965d (bug 1341265)
Backed out changeset bd5e0950f9d9 (bug 1341265)
Backed out changeset 3fa14377770a (bug 1341265)
Backed out changeset 56ec3626f0ba (bug 1341265)
Backed out changeset 09f04c26176c (bug 1341265)
Backed out changeset b861bb6771c7 (bug 1341265)
Backed out changeset 820e01c32bcd (bug 1341265)
Backed out changeset 88e497d213fe (bug 1341265)
Backed out changeset e9272f7d1823 (bug 1341265)
Backed out changeset 33a140c71ff0 (bug 1341265)
2021-08-07 19:07:28 +03:00
André Bargull 58f4af8485 Bug 1341265 - Part 11: Optimise Set.prototype.has for objects in CacheIR. r=iain
Inline `Set.prototype.has` in CacheIR when called with objects.

Implementing `MacroAssembler::hashObject()` on 32-bit platforms is difficult,
because it uses 64-bit operations, so we either have to allocate twice as much
registers for `Register64` or alternatively spill the values on the stack. For
now just punt and only support this optimisation on 64-bit platforms.

Differential Revision: https://phabricator.services.mozilla.com/D118977
2021-08-02 16:38:04 +00:00
André Bargull 93463e429d Bug 1341265 - Part 1: Remove stale fixme comment. r=iain
Bug 775896 has been fixed, so we can remove the fixme comment.

Differential Revision: https://phabricator.services.mozilla.com/D118967
2021-08-02 16:38:00 +00:00
Chris Peterson 7bc752e42b Bug 1571631 - Replace MOZ_MUST_USE with [[nodiscard]] in mfbt. r=sg
Also move MOZ_MUST_USE before function declarations' specifiers and return type. While clang and gcc's __attribute__((warn_unused_result)) can appear before, between, or after function specifiers and return types, the [[nodiscard]] attribute must precede the function specifiers.

Depends on D108344

Differential Revision: https://phabricator.services.mozilla.com/D108345
2021-03-17 03:01:21 +00:00
Chris Fronk dfcd4afc6e Bug 1433142 - Add support for hashing enum values. r=jwalden
Differential Revision: https://phabricator.services.mozilla.com/D70647
2020-05-27 23:44:51 +00:00
André Bargull cae4e1fdbc Bug 1606962: Replace mozilla::EnableIf with std::enable_if. r=froydnj,jgilbert
Differential Revision: https://phabricator.services.mozilla.com/D68401

--HG--
extra : moz-landing-system : lando
2020-03-28 13:35:31 +00:00
André Bargull ebec34a898 Bug 1625138 - Part 16: Replace mozilla::IsIntegral with std::is_integral. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D68371

--HG--
extra : moz-landing-system : lando
2020-03-28 13:57:15 +00:00
Nathan Froyd 5dda12ab15 Bug 1567944 - remove *DISABLE_INTEGRAL_CONSTANT_OVERFLOW_WARNING macros; r=dmajor
We don't support MSVC anymore, clang-cl ignores these pragmas, and
nobody actually used the macros anyway.

Depends on D38887

Differential Revision: https://phabricator.services.mozilla.com/D38888

--HG--
extra : moz-landing-system : lando
2019-07-23 08:02:48 +00:00
Jeff Walden cc8118aa28 Bug 1533636 - Define HashStringUntilZero and HashStringKnownLength template functions for code that wishes to invoke the HashString algorithm on non-pointer iterator types. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D22652

--HG--
extra : rebase_source : 68359815e1edffc8e2489d6cd817adfbdd628818
2019-03-05 10:11:32 -08:00
Sylvestre Ledru 265e672179 Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset

--HG--
extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
2018-11-30 11:46:48 +01:00
Nicholas Nethercote 097b276f5c Bug 1480660 - Remove ConstExprHash{UntilZero,String}(). r=froydnj
They were workarounds for bugs in GCC 4.9, which is no longer supported.

--HG--
extra : rebase_source : b793b4643e1e44199afdb8e8b35f930e02664be8
2018-08-03 14:47:41 +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
Margareta Eliza Balazs dbef13782c Backed out 2 changesets (bug 1451278) for breaking windows pgo builds a=backout
Backed out changeset ac685df07bfc (bug 1451278)
Backed out changeset 5944ccd5060d (bug 1451278)
2018-04-16 21:41:03 +03:00
Nicholas Nethercote e1318b1d03 Bug 1451278 - Remove ConstExpr hash functions. r=froydnj
MozReview-Commit-ID: L6yRyt4DZRR

--HG--
extra : rebase_source : 2d56a50b1a99e66c397165b9b851e23ca66d97a0
2018-04-16 08:37:15 +10:00
Nicholas Nethercote cecefaa849 Bug 1443706 - Introduce ConstExprHashString(const char16_t*). r=jwalden
This is a `constexpr` alternative to HashString(const char16_t*). We can't make
HashString(const char16_t*) itself `constexpr` because HashUntilZero(const T*)
isn't in a form that older compilers (like GCC 4.9) allow to be made
`constexpr`. (The trick to satisfying those compilers is to use recursion
instead of iteration, to get the function into a single `return` statement.)

This requires making a bunch of other functions `constexpr` as well. It also
requires adding MOZ_{PUSH,POP}_DISABLE_INTEGRAL_CONSTANT_OVERFLOW_WARNING
macros to avoid some MSVC weirdness.

The introduction of RotateLeft5() partly undoes one of the patches from bug
1443342, but that's unavoidable.

This change will help with static allocation of static atoms (bug 1411469).

MozReview-Commit-ID: 7r3PnrQXb29
2018-03-08 10:27:14 +11:00
Jeff Walden 52d9907ee0 Bug 1445024 - Implement mozilla::WrappingAdd. r=froydnj
--HG--
extra : rebase_source : 3514c6487305e64ce19060cb05d39bc6eb2fd912
2018-03-06 19:21:58 -08:00
Jeff Walden ba5975180b Bug 1443342 - Opt one HashFunctions.h function out of integer-overflow sanitizing and don't blacklist HashFunctions.h. r=froydnj
--HG--
extra : rebase_source : a33b53362c1f9ce96df22a321990a45a224af9d6
2018-03-01 17:11:33 -08:00
Jeff Walden 75f86d4202 Bug 1443342 - Remove HashFunctions.h's RotateBitsLeft32 and use the general RotateLeft function instead. r=froydnj
--HG--
extra : rebase_source : 88ad42c5757d9f1f0df5590c647a840061523318
2018-03-01 17:05:58 -08:00
Jeff Walden 25a7df6306 Bug 1441657 - Implement mozilla::WrappingMultiply. r=froydnj
--HG--
extra : rebase_source : 57d1796976a25597ee4dda90561d40debc6a9fc9
2018-02-15 17:36:55 -08:00
Ehsan Akhgari 2409266542 Bug 1379290 follow-up: Fix typo, DONTBUILD 2017-07-19 00:26:10 -04:00
Ehsan Akhgari 9ab7e769c8 Bug 1379290 - Improve the hashing of signed 64-bit integers by piggy-backing on the same mechanism as the one we use for hashing pointers; r=glandium 2017-07-19 00:00:19 -04:00
Jason Orendorff 5d60d5ca87 Bug 1312001 - Scramble hash codes securely, to avoid leaking bits of object and symbol addresses.
MozReview-Commit-ID: yR1cIjrlPP

--HG--
extra : rebase_source : 871821e53eee5502cd255d52f02665f6845e3f09
2016-11-30 15:31:56 -06:00
Chris Peterson 8949f73d27 Bug 1277106 - Part 1: Use VS2015's real char16_t instead of aliasing wchar_t. r=Waldo
and remove MOZ_CHAR16_IS_NOT_WCHAR #ifdefs.
2016-07-20 22:01:43 -07:00
Nicholas Nethercote 2511b2c327 Bug 1267550 (part 2) - Rename MOZ_WARN_UNUSED_RESULT as MOZ_MUST_USE. r=froydnj.
It's an annotation that is used a lot, and should be used even more, so a
shorter name is better.

MozReview-Commit-ID: 1VS4Dney4WX

--HG--
extra : rebase_source : b26919c1b0fcb32e5339adeef5be5becae6032cf
2016-04-27 14:16:50 +10:00
Xidorn Quan 8d2175de6e Bug 1119199 - Rewrite HashFunctions with variadic templates. r=waldo
--HG--
extra : source : 0756924a2f04c8201c88530412af2feccafab623
2015-01-13 10:48:10 +11:00
Eric Rahm 646d914437 Bug 1047176 - Part 3: Cast to unsigned char in HashString. r=froydnj
--HG--
extra : rebase_source : c670d0ffb3edb5aee5932660a6be3fd3459033fa
2014-08-04 11:29:33 -07:00
Nicholas Nethercote 9439ff268e Bug 1026319 - Convert the second quarter of MFBT to Gecko style. r=froydnj.
--HG--
extra : rebase_source : 98d2557c7fe4648d79143c654e7e31767fca2e65
2014-06-12 23:34:08 -07:00
Jan de Mooij d3b4e134f1 Bug 1023778 part 3 - Make AtomizeChars and js_NewStringCopyN accept Latin1 chars. r=luke 2014-06-13 20:51:05 +02:00
Ehsan Akhgari 1b83407ce9 Bug 927728 - Part 1: Replace PRUnichar with char16_t; r=roc
This patch was automatically generated by the following script:

#!/bin/bash
# Command to convert PRUnichar to char16_t

function convert() {
echo "Converting $1 to $2..."
find . ! -wholename "*nsprpub*" \
       ! -wholename "*security/nss*" \
       ! -wholename "*modules/libmar*" \
       ! -wholename "*/.hg*" \
       ! -wholename "obj-ff-dbg*" \
       ! -name prtypes.h \
       ! -name Char16.h \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.c" \
         -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 PRUnichar char16_t
2014-01-04 10:02:17 -05:00
Ehsan Akhgari 763b16b0a6 Bug 924012 - Provide a HashString version for char16_t if needed; r=Waldo 2013-10-15 11:54:08 -04:00
Ehsan Akhgari 2824b29025 Bug 895322 - Part 1: Replace the usages of MOZ_STATIC_ASSERT with C++11 static_assert; r=Waldo
This patch was mostly generated by running the following scripts on the codebase, with some
manual changes made afterwards:

# static_assert.sh
#!/bin/bash
# Command to convert an NSPR integer type to the equivalent standard integer type

function convert() {
echo "Converting $1 to $2..."
find . ! -wholename "*nsprpub*" \
       ! -wholename "*security/nss*" \
       ! -wholename "*/.hg*" \
       ! -wholename "obj-ff-dbg*" \
       ! -name nsXPCOMCID.h \
       ! -name prtypes.h \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.cc" \
         -o -iname "*.mm" \) | \
    xargs -n 1 `dirname $0`/assert_replacer.py #sed -i -e "s/\b$1\b/$2/g"
}

convert MOZ_STATIC_ASSERT static_assert
hg rev --no-backup mfbt/Assertions.h \
                   media/webrtc/signaling/src/sipcc/core/includes/ccapi.h \
                   modules/libmar/src/mar_private.h \
                   modules/libmar/src/mar.h


# assert_replacer.py
#!/usr/bin/python

import sys
import re

pattern = re.compile(r"\bMOZ_STATIC_ASSERT\b")

def replaceInPlace(fname):
  print fname
  f = open(fname, "rw+")
  lines = f.readlines()
  for i in range(0, len(lines)):
    while True:
      index = re.search(pattern, lines[i])
      if index != None:
        index = index.start()
        lines[i] = lines[i][0:index] + "static_assert" + lines[i][index+len("MOZ_STATIC_ASSERT"):]
        for j in range(i + 1, len(lines)):
          if lines[j].find("                 ", index) == index:
            lines[j] = lines[j][0:index] + lines[j][index+4:]
          else:
            break
      else:
        break
  f.seek(0, 0)
  f.truncate()
  f.write("".join(lines))
  f.close()

argc = len(sys.argv)
for i in range(1, argc):
  replaceInPlace(sys.argv[i])

--HG--
extra : rebase_source : 4b4a4047d82f2c205b9fad8d56dfc3f1afc0b045
2013-07-18 13:59:53 -04:00
Ehsan Akhgari ef4b479714 Bug 872127 - Part 2: Replace mozilla/StandardInteger.h with stdint.h; r=Waldo,ted 2013-07-30 10:25:31 -04:00
Ms2ger 51f391870b Bug 896341 - Update include guards and modelines in MFBT; r=Waldo 2013-07-24 09:41:39 +02:00
Justin Lebar 532a674922 No bug - Fix typo in comment in mfbt/HashFunctions.h. DONTBUILD 2013-06-14 11:17:01 -07:00
Rafael Ávila de Espíndola 25843bd8a0 Bug 805416 - refactor macros to avoid the need for empty macro arguments. r=Waldo.
--HG--
extra : rebase_source : 86242ff253d464870cdcc321f9b1f6f08460b839
2012-10-30 16:12:22 -04:00
Nicholas Nethercote f32ed5397d Bug 647367 - Sequester jshash.{h,cpp} in js/jsd/ (attempt 2). r=luke.
--HG--
rename : js/src/jshash.cpp => js/jsd/jshash.cpp
rename : js/src/jshash.h => js/jsd/jshash.h
2012-07-18 17:38:10 -07:00
Jeff Walden b2d449c615 Eliminate Assertions.h's dependency on Types.h, for a narrower interface and minimized dependencies. No bug, r=Ms2ger
--HG--
extra : rebase_source : b5c79dc444ef7277f2624ffe2407bca25a1054cd
2012-06-11 16:16:46 -07:00
Ed Morley 5a59a93dac Backout 1c5a8d617bff (bug 765990), 617cb36ead59, b3067d05a76a (bug 760995), 79f9a61a1e43 (bug 426163) for bustage 2012-06-21 10:00:36 +01:00
Jeff Walden eb986aa0c7 Eliminate Assertions.h's dependency on Types.h, for a narrower interface and minimized dependencies. No bug, r=Ms2ger
--HG--
extra : rebase_source : 0d68ef6274ad697bf4ff49038ef19368174dad54
2012-06-11 16:16:46 -07:00
Jeff Walden 986ff95100 Style patrol to make everything conform to mfbt/STYLE. No bug, r=sparky 2012-06-03 20:36:43 -07:00
Jacek Caban d54cd7b4d7 Bug 735704 - RotateLeft32 conflicts with winnt.h macro r=Waldo 2012-03-15 13:43:28 +01:00
Justin Lebar f584e08122 Bug 729940 - Part 1: Add hash function utilities to mfbt. r=waldo
--HG--
extra : rebase_source : 05f5c9f5c1e99e5bca012c57502a965423aeb10e
2012-03-12 18:53:18 -04:00
Justin Lebar 0e41e0eb6e Bug 729952 - Part 3: Add missing #include. r=me 2012-03-02 17:46:09 -05:00
Justin Lebar 0d2f332e8c Bug 729952 - Part 1: Add a better hash function to mfbt. r=waldo 2012-03-02 17:18:21 -05:00