Browse Source

latest stuff

Frank-Rainer Grahl 10 months ago
parent
commit
c75183d221
31 changed files with 1342 additions and 446 deletions
  1. 123 0
      frg/mozilla-release/work-js/1333140-2no1-59a1.patch
  2. 8 8
      frg/mozilla-release/work-js/1346211-2-63a1.patch
  3. 399 0
      frg/mozilla-release/work-js/1450182-61a1.patch
  4. 0 0
      frg/mozilla-release/work-js/1464266-62a1.patch
  5. 10 17
      frg/mozilla-release/work-js/1464869-09-62a1.patch
  6. 2 1
      frg/mozilla-release/work-js/1465770-1-62a1.patch
  7. 2 1
      frg/mozilla-release/work-js/1465770-2-62a1.patch
  8. 308 0
      frg/mozilla-release/work-js/1473003-1-63a1.patch
  9. 3 3
      frg/mozilla-release/work-js/1488463-64a1.patch
  10. 15 16
      frg/mozilla-release/work-js/1494752-604.patch
  11. 13 13
      frg/mozilla-release/work-js/1539780-70a1.patch
  12. 7 7
      frg/mozilla-release/work-js/1590907-5-72a1.patch
  13. 3 3
      frg/mozilla-release/work-js/1619475-1-75a1.patch
  14. 45 0
      frg/mozilla-release/work-js/1670130-83a1.patch
  15. 37 0
      frg/mozilla-release/work-js/1716613-92a1.patch
  16. 2 2
      frg/mozilla-release/work-js/TOP-1566143-3-optchain-74a1-25313.patch
  17. 28 0
      frg/mozilla-release/work-js/TOP-NOBUG-PLASTER-25319.patch
  18. 20 21
      frg/mozilla-release/work-js/TOP-NOBUG-REGEXP-04-1539690-68a1-25318.patch
  19. 7 7
      frg/mozilla-release/work-js/TOP-NOBUG-REGEXP-09-1627356-77a1-25318.patch
  20. 2 2
      frg/mozilla-release/work-js/TOP-NOBUG-REGEXP-10-1627838-77a1-25318.patch
  21. 2 2
      frg/mozilla-release/work-js/TOP-NOBUG-REGEXP-12-1628835-77a1-25318.patch
  22. 42 39
      frg/mozilla-release/work-js/TOP-NOBUG-REGEXP-37-1642493-79a1-25318.patch
  23. 6 6
      frg/mozilla-release/work-js/TOP-NOBUG-REGEXP-42-1643171-79a1-25318.patch
  24. 2 2
      frg/mozilla-release/work-js/TOP-NOBUG-optchain-baselinejit-25313.patch
  25. 2 2
      frg/mozilla-release/work-js/TOP-NOBUG-skiptests-25312.patch
  26. 28 0
      frg/mozilla-release/work-js/fixit.patch
  27. 1 1
      frg/mozilla-release/work-js/mozilla-central-push_420689.patch
  28. 0 36
      frg/mozilla-release/work-js/mozilla-central-push_420936.patch
  29. 0 40
      frg/mozilla-release/work-js/mozilla-central-push_420937.patch
  30. 1 1
      frg/mozilla-release/work-js/mozilla-central-push_421578.patch
  31. 224 216
      frg/mozilla-release/work-js/series

+ 123 - 0
frg/mozilla-release/work-js/1333140-2no1-59a1.patch

@@ -0,0 +1,123 @@
+# HG changeset patch
+# User Tim Taubert <ttaubert@mozilla.com>
+# Date 1512047188 -3600
+# Node ID fc91ce7557173426c0f705133411300c57bc4307
+# Parent  c081853a30c7b333e1cfde7e3be9faa93dce5b0b
+Bug 1333140 - Remove WEBCRYPTO_METHOD_SECURE histogram r=keeler
+
+diff --git a/dom/base/SubtleCrypto.cpp b/dom/base/SubtleCrypto.cpp
+--- a/dom/base/SubtleCrypto.cpp
++++ b/dom/base/SubtleCrypto.cpp
+@@ -4,62 +4,47 @@
+  * License, v. 2.0. If a copy of the MPL was not distributed with this
+  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+ 
+ #include "mozilla/dom/SubtleCrypto.h"
+ 
+ #include "mozilla/dom/Promise.h"
+ #include "mozilla/dom/SubtleCryptoBinding.h"
+ #include "mozilla/dom/WebCryptoTask.h"
+-#include "mozilla/Telemetry.h"
+ 
+ namespace mozilla {
+ namespace dom {
+ 
+ NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(SubtleCrypto, mParent)
+ NS_IMPL_CYCLE_COLLECTING_ADDREF(SubtleCrypto)
+ NS_IMPL_CYCLE_COLLECTING_RELEASE(SubtleCrypto)
+ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(SubtleCrypto)
+   NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
+   NS_INTERFACE_MAP_ENTRY(nsISupports)
+ NS_INTERFACE_MAP_END
+ 
+ 
+ 
+ SubtleCrypto::SubtleCrypto(nsIGlobalObject* aParent)
+   : mParent(aParent)
+-  , mRecordedTelemetry(false)
+ {
+ }
+ 
+ JSObject*
+ SubtleCrypto::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
+ {
+   return SubtleCryptoBinding::Wrap(aCx, this, aGivenProto);
+ }
+ 
+-void
+-SubtleCrypto::RecordTelemetryOnce() {
+-  if (mRecordedTelemetry) {
+-    return;
+-  }
+-
+-  mRecordedTelemetry = true;
+-  JSObject* global = mParent->GetGlobalJSObject();
+-  bool isSecure = JS_GetIsSecureContext(js::GetObjectCompartment(global));
+-  Telemetry::Accumulate(Telemetry::WEBCRYPTO_METHOD_SECURE, isSecure);
+-}
+-
+ #define SUBTLECRYPTO_METHOD_BODY(Operation, aRv, ...)                   \
+   MOZ_ASSERT(mParent);                                                  \
+   RefPtr<Promise> p = Promise::Create(mParent, aRv);                    \
+   if (aRv.Failed()) {                                                   \
+     return nullptr;                                                     \
+   }                                                                     \
+-  RecordTelemetryOnce();                                                \
+   RefPtr<WebCryptoTask> task =                                          \
+     WebCryptoTask::Create ## Operation ## Task(__VA_ARGS__);            \
+   if (!task) {                                                          \
+     aRv.Throw(NS_ERROR_OUT_OF_MEMORY);                                  \
+     return nullptr;                                                     \
+   }                                                                     \
+   task->DispatchWithPromise(p);                                         \
+   return p.forget();
+diff --git a/dom/base/SubtleCrypto.h b/dom/base/SubtleCrypto.h
+--- a/dom/base/SubtleCrypto.h
++++ b/dom/base/SubtleCrypto.h
+@@ -114,18 +114,15 @@ public:
+                                       CryptoKey& unwrappingKey,
+                                       const ObjectOrString& unwrapAlgorithm,
+                                       const ObjectOrString& unwrappedKeyAlgorithm,
+                                       bool extractable,
+                                       const Sequence<nsString>& keyUsages,
+                                       ErrorResult& aRv);
+ 
+ private:
+-  void RecordTelemetryOnce();
+-
+   nsCOMPtr<nsIGlobalObject> mParent;
+-  bool mRecordedTelemetry;
+ };
+ 
+ } // namespace dom
+ } // namespace mozilla
+ 
+ #endif // mozilla_dom_SubtleCrypto_h
+diff --git a/toolkit/components/telemetry/Histograms.json b/toolkit/components/telemetry/Histograms.json
+--- a/toolkit/components/telemetry/Histograms.json
++++ b/toolkit/components/telemetry/Histograms.json
+@@ -7729,24 +7729,16 @@
+   },
+   "WEBCRYPTO_METHOD": {
+     "record_in_processes": ["main", "content"],
+     "expires_in_version": "never",
+     "kind": "enumerated",
+     "n_values": 20,
+     "description": "Methods invoked under window.crypto.subtle (0=encrypt, 1=decrypt, 2=sign, 3=verify, 4=digest, 5=generateKey, 6=deriveKey, 7=deriveBits, 8=importKey, 9=exportKey, 10=wrapKey, 11=unwrapKey)"
+   },
+-  "WEBCRYPTO_METHOD_SECURE": {
+-    "alert_emails": ["seceng-telemetry@mozilla.com"],
+-    "record_in_processes": ["main", "content"],
+-    "expires_in_version": "60",
+-    "kind": "boolean",
+-    "bug_numbers": [1333140],
+-    "description": "Whether a method invoked under window.crypto.subtle is in a secure context"
+-  },
+   "WEBCRYPTO_ALG": {
+     "record_in_processes": ["main", "content"],
+     "expires_in_version": "never",
+     "kind": "enumerated",
+     "n_values": 30,
+     "description": "Algorithms used with WebCrypto (see table in WebCryptoTask.cpp)"
+   },
+   "MASTER_PASSWORD_ENABLED": {

+ 8 - 8
frg/mozilla-release/work-js/1346211-2-63a1.patch

@@ -2,7 +2,7 @@
 # User Andre Bargull <andre.bargull@gmail.com>
 # User Andre Bargull <andre.bargull@gmail.com>
 # Date 1534435998 25200
 # Date 1534435998 25200
 # Node ID 62d58886e8d759f52c871a82dbe4d9c2a266c0c7
 # Node ID 62d58886e8d759f52c871a82dbe4d9c2a266c0c7
-# Parent  ee404fa5814ca9ab666c72cbf750457df3e93a62
+# Parent  08bbd610e70b69e299d19ee786a967029802dac7
 Bug 1346211 - Part 2: Split JS::ResetTimeZone into an external and internal implementation. r=Waldo
 Bug 1346211 - Part 2: Split JS::ResetTimeZone into an external and internal implementation. r=Waldo
 
 
 diff --git a/js/public/Date.h b/js/public/Date.h
 diff --git a/js/public/Date.h b/js/public/Date.h
@@ -399,10 +399,10 @@ diff --git a/js/src/vm/JSCompartment.cpp b/js/src/vm/JSCompartment.cpp
  #include "gc/GC-inl.h"
  #include "gc/GC-inl.h"
  #include "gc/Marking-inl.h"
  #include "gc/Marking-inl.h"
  #include "vm/JSAtom-inl.h"
  #include "vm/JSAtom-inl.h"
-@@ -133,17 +134,17 @@ Realm::init(JSContext* maybecx)
-      * maybecx is null when called to create the atoms realm from
-      * JSRuntime::init().
-      *
+@@ -126,17 +127,17 @@ Realm::init(JSContext* cx)
+         return false;
+ 
+     /*
       * As a hack, we clear our timezone cache every time we create a new realm.
       * As a hack, we clear our timezone cache every time we create a new realm.
       * This ensures that the cache is always relatively fresh, but shouldn't
       * This ensures that the cache is always relatively fresh, but shouldn't
       * interfere with benchmarks that create tons of date objects (unless they
       * interfere with benchmarks that create tons of date objects (unless they
@@ -411,13 +411,13 @@ diff --git a/js/src/vm/JSCompartment.cpp b/js/src/vm/JSCompartment.cpp
 -    JS::ResetTimeZone();
 -    JS::ResetTimeZone();
 +    js::ResetTimeZoneInternal(ResetTimeZoneMode::DontResetIfOffsetUnchanged);
 +    js::ResetTimeZoneInternal(ResetTimeZoneMode::DontResetIfOffsetUnchanged);
  
  
-     if (!objects_.init(maybecx))
+     if (!objects_.init(cx))
          return false;
          return false;
  
  
      if (!savedStacks_.init() ||
      if (!savedStacks_.init() ||
          !varNames_.init())
          !varNames_.init())
      {
      {
-         if (maybecx)
+         ReportOutOfMemory(cx);
 diff --git a/js/src/vm/Runtime.cpp b/js/src/vm/Runtime.cpp
 diff --git a/js/src/vm/Runtime.cpp b/js/src/vm/Runtime.cpp
 --- a/js/src/vm/Runtime.cpp
 --- a/js/src/vm/Runtime.cpp
 +++ b/js/src/vm/Runtime.cpp
 +++ b/js/src/vm/Runtime.cpp
@@ -439,7 +439,7 @@ diff --git a/js/src/vm/Runtime.cpp b/js/src/vm/Runtime.cpp
  #include "vm/TraceLoggingGraph.h"
  #include "vm/TraceLoggingGraph.h"
  
  
  #include "gc/GC-inl.h"
  #include "gc/GC-inl.h"
-@@ -245,17 +246,17 @@ JSRuntime::init(JSContext* cx, uint32_t 
+@@ -227,17 +228,17 @@ JSRuntime::init(JSContext* cx, uint32_t 
          return false;
          return false;
  
  
      /* The garbage collector depends on everything before this point being initialized. */
      /* The garbage collector depends on everything before this point being initialized. */

+ 399 - 0
frg/mozilla-release/work-js/1450182-61a1.patch

@@ -0,0 +1,399 @@
+# HG changeset patch
+# User Boris Zbarsky <bzbarsky@mit.edu>
+# Date 1522870339 14400
+# Node ID 1c00083d6616fea01fe250e74ccc0ea38eb5ca82
+# Parent  e26fb6884ad7205a7869a552e6523570c2911c20
+Bug 1450182.  Remove the EventListenerWasAdded/Removed hooks from DOMEventTargetHelper.  r=smaug
+
+MozReview-Commit-ID: GWnAvK61hVT
+
+diff --git a/dom/bindings/Codegen.py b/dom/bindings/Codegen.py
+--- a/dom/bindings/Codegen.py
++++ b/dom/bindings/Codegen.py
+@@ -15530,36 +15530,27 @@ class CGJSImplMember(CGNativeMember):
+ 
+ 
+ class CGJSImplMethod(CGJSImplMember):
+     """
+     Class for generating code for the methods for a JS-implemented WebIDL
+     interface.
+     """
+     def __init__(self, descriptor, method, signature, isConstructor, breakAfter=True):
+-        virtual = False
+-        override = False
+-        if (method.identifier.name == "eventListenerWasAdded" or
+-            method.identifier.name == "eventListenerWasRemoved"):
+-            virtual = True
+-            override = True
+-
+         self.signature = signature
+         self.descriptor = descriptor
+         self.isConstructor = isConstructor
+         CGJSImplMember.__init__(self, descriptor, method,
+                                 CGSpecializedMethod.makeNativeName(descriptor,
+                                                                    method),
+                                 signature,
+                                 descriptor.getExtendedAttributes(method),
+                                 breakAfter=breakAfter,
+                                 variadicIsSequence=True,
+-                                passJSBitsAsNeeded=False,
+-                                virtual=virtual,
+-                                override=override)
++                                passJSBitsAsNeeded=False)
+ 
+     def getArgs(self, returnType, argList):
+         if self.isConstructor:
+             # Skip the JSCompartment bits for constructors; it's handled
+             # manually in getImpl.  But we do need our aGivenProto argument.  We
+             # allow it to be omitted if the default proto is desired.
+             return (CGNativeMember.getArgs(self, returnType, argList) +
+                     [Argument("JS::Handle<JSObject*>", "aGivenProto", "nullptr")])
+@@ -15769,16 +15760,25 @@ class CGJSImplClass(CGBindingImplClass):
+               RefPtr<${jsImplName}> mImpl;
+               nsCOMPtr<nsIGlobalObject> mParent;
+ 
+             """,
+             isupportsDecl=isupportsDecl,
+             ccDecl=ccDecl,
+             jsImplName=jsImplName(descriptor.name))
+ 
++        if descriptor.interface.getExtendedAttribute("WantsEventListenerHooks"):
++            # No need to do too much sanity checking here; the
++            # generated code will fail to compile if the methods we
++            # try to overrid aren't on a superclass.
++            self.methodDecls.extend(
++                self.getEventHookMethod(parentClass, "EventListenerAdded"))
++            self.methodDecls.extend(
++                self.getEventHookMethod(parentClass, "EventListenerRemoved"))
++
+         if descriptor.interface.hasChildInterfaces():
+             decorators = ""
+             # We need a protected virtual destructor our subclasses can use
+             destructor = ClassDestructor(virtual=True, visibility="protected")
+         else:
+             decorators = "final"
+             destructor = ClassDestructor(virtual=False, visibility="private")
+ 
+@@ -15897,16 +15897,32 @@ class CGJSImplClass(CGBindingImplClass):
+             JS::Rooted<JSObject*> arg(cx, &args[1].toObject());
+             RefPtr<${implName}> impl = new ${implName}(arg, globalHolder);
+             MOZ_ASSERT(js::IsObjectInContextCompartment(arg, cx));
+             return GetOrCreateDOMReflector(cx, impl, args.rval());
+             """,
+             ifaceName=self.descriptor.interface.identifier.name,
+             implName=self.descriptor.name)
+ 
++    def getEventHookMethod(self, parentClass, methodName):
++        body = fill(
++            """
++            ${parentClass}::${methodName}(aType);
++            mImpl->${methodName}(Substring(nsDependentAtomString(aType), 2), IgnoreErrors());
++            """,
++            parentClass=parentClass,
++            methodName=methodName)
++        return [ClassMethod(methodName,
++                            "void",
++                            [Argument("nsIAtom*", "aType")],
++                            virtual=True,
++                            override=True,
++                            body=body),
++                ClassUsingDeclaration(parentClass, methodName)]
++
+ 
+ def isJSImplementedDescriptor(descriptorProvider):
+     return (isinstance(descriptorProvider, Descriptor) and
+             descriptorProvider.interface.isJSImplemented())
+ 
+ 
+ class CGCallback(CGClass):
+     def __init__(self, idlObject, descriptorProvider, baseName, methods,
+@@ -16209,16 +16225,26 @@ class CGCallbackInterface(CGCallback):
+ 
+         idlist = [descriptor.binaryNameFor(m.identifier.name)
+                   for m in iface.members
+                   if m.isAttr() or m.isMethod()]
+         if needInitId:
+             idlist.append("__init")
+         if needOnGetId:
+             idlist.append("__onget")
++
++        if (iface.isJSImplemented() and
++            iface.getExtendedAttribute("WantsEventListenerHooks")):
++            methods.append(CGJSImplEventHookOperation(descriptor,
++                                                      "eventListenerAdded"))
++            methods.append(CGJSImplEventHookOperation(descriptor,
++                                                      "eventListenerRemoved"))
++            idlist.append("eventListenerAdded")
++            idlist.append("eventListenerRemoved")
++
+         if len(idlist) != 0:
+             methods.append(initIdsClassMethod(idlist,
+                                               iface.identifier.name + "Atoms"))
+         CGCallback.__init__(self, iface, descriptor, "CallbackInterface",
+                             methods, getters=getters, setters=setters)
+ 
+ 
+ class FakeMember():
+@@ -16754,16 +16780,37 @@ class CGJSImplOnGetOperation(CallbackOpe
+             descriptor,
+             singleOperation=False,
+             rethrowContentException=True,
+             spiderMonkeyInterfacesAreStructs=True)
+ 
+     def getPrettyName(self):
+         return "__onget"
+ 
++class CGJSImplEventHookOperation(CallbackOperationBase):
++    """
++    Codegen the hooks on a JS impl for adding/removing event listeners.
++    """
++    def __init__(self, descriptor, name):
++        self.name = name
++
++        CallbackOperationBase.__init__(
++            self,
++            (BuiltinTypes[IDLBuiltinType.Types.void],
++             [FakeArgument(BuiltinTypes[IDLBuiltinType.Types.domstring],
++                           None,
++                           "aType")]),
++            name, MakeNativeName(name),
++            descriptor,
++            singleOperation=False,
++            rethrowContentException=False,
++            spiderMonkeyInterfacesAreStructs=True)
++
++    def getPrettyName(self):
++        return self.name
+ 
+ def getMaplikeOrSetlikeErrorReturn(helperImpl):
+     """
+     Generate return values based on whether a maplike or setlike generated
+     method is an interface method (which returns bool) or a helper function
+     (which uses ErrorResult).
+     """
+     if helperImpl:
+@@ -17356,16 +17403,20 @@ class GlobalGenRoots():
+             if d.interface.isJSImplemented() and d.interface.ctor():
+                 # We'll have an __init() method.
+                 members.append(FakeMember('__init'))
+             if (d.interface.isJSImplemented() and
+                 d.interface.maplikeOrSetlikeOrIterable and
+                 d.interface.maplikeOrSetlikeOrIterable.isMaplike()):
+                 # We'll have an __onget() method.
+                 members.append(FakeMember('__onget'))
++            if (d.interface.isJSImplemented() and
++                d.interface.getExtendedAttribute("WantsEventListenerHooks")):
++                members.append(FakeMember('eventListenerAdded'))
++                members.append(FakeMember('eventListenerRemoved'))
+             if len(members) == 0:
+                 continue
+ 
+             structs.append(buildAtomCacheStructure(d.interface,
+                                                    lambda x: d.binaryNameFor(x),
+                                                    members))
+ 
+         structs.sort()
+diff --git a/dom/bindings/parser/WebIDL.py b/dom/bindings/parser/WebIDL.py
+--- a/dom/bindings/parser/WebIDL.py
++++ b/dom/bindings/parser/WebIDL.py
+@@ -1734,16 +1734,17 @@ class IDLInterface(IDLInterfaceOrNamespa
+             elif (identifier == "NeedResolve" or
+                   identifier == "OverrideBuiltins" or
+                   identifier == "ChromeOnly" or
+                   identifier == "Unforgeable" or
+                   identifier == "LegacyEventInit" or
+                   identifier == "ProbablyShortLivingWrapper" or
+                   identifier == "LegacyUnenumerableNamedProperties" or
+                   identifier == "RunConstructorInCallerCompartment" or
++                  identifier == "WantsEventListenerHooks" or
+                   identifier == "NonOrdinaryGetPrototypeOf"):
+                 # Known extended attributes that do not take values
+                 if not attr.noArguments():
+                     raise WebIDLError("[%s] must take no arguments" % identifier,
+                                       [attr.location])
+             elif identifier == "Exposed":
+                 convertExposedAttrToGlobalNameSet(attr,
+                                                   self._exposureGlobalNames)
+diff --git a/dom/events/DOMEventTargetHelper.cpp b/dom/events/DOMEventTargetHelper.cpp
+--- a/dom/events/DOMEventTargetHelper.cpp
++++ b/dom/events/DOMEventTargetHelper.cpp
+@@ -382,40 +382,34 @@ DOMEventTargetHelper::WantsUntrusted(boo
+   // We can let listeners on workers to always handle all the events.
+   *aRetVal = (doc && !nsContentUtils::IsChromeDoc(doc)) || !NS_IsMainThread();
+   return rv;
+ }
+ 
+ void
+ DOMEventTargetHelper::EventListenerAdded(nsIAtom* aType)
+ {
+-  EventListenerWasAdded(Substring(nsDependentAtomString(aType), 2),
+-                        IgnoreErrors());
+   MaybeUpdateKeepAlive();
+ }
+ 
+ void
+ DOMEventTargetHelper::EventListenerAdded(const nsAString& aType)
+ {
+-  EventListenerWasAdded(aType, IgnoreErrors());
+   MaybeUpdateKeepAlive();
+ }
+ 
+ void
+ DOMEventTargetHelper::EventListenerRemoved(nsIAtom* aType)
+ {
+-  EventListenerWasRemoved(Substring(nsDependentAtomString(aType), 2),
+-                          IgnoreErrors());
+   MaybeUpdateKeepAlive();
+ }
+ 
+ void
+ DOMEventTargetHelper::EventListenerRemoved(const nsAString& aType)
+ {
+-  EventListenerWasRemoved(aType, IgnoreErrors());
+   MaybeUpdateKeepAlive();
+ }
+ 
+ void
+ DOMEventTargetHelper::KeepAliveIfHasListenersFor(const nsAString& aType)
+ {
+   mKeepingAliveTypes.mStrings.AppendElement(aType);
+   MaybeUpdateKeepAlive();
+diff --git a/dom/events/DOMEventTargetHelper.h b/dom/events/DOMEventTargetHelper.h
+--- a/dom/events/DOMEventTargetHelper.h
++++ b/dom/events/DOMEventTargetHelper.h
+@@ -160,23 +160,16 @@ public:
+   bool HasOrHasHadOwner() { return mHasOrHasHadOwnerWindow; }
+ 
+   virtual void EventListenerAdded(nsIAtom* aType) override;
+   virtual void EventListenerAdded(const nsAString& aType) override;
+ 
+   virtual void EventListenerRemoved(nsIAtom* aType) override;
+   virtual void EventListenerRemoved(const nsAString& aType) override;
+ 
+-  virtual void EventListenerWasAdded(const nsAString& aType,
+-                                     ErrorResult& aRv,
+-                                     JSCompartment* aCompartment = nullptr) {}
+-  virtual void EventListenerWasRemoved(const nsAString& aType,
+-                                       ErrorResult& aRv,
+-                                       JSCompartment* aCompartment = nullptr) {}
+-
+   // Dispatch a trusted, non-cancellable and non-bubbling event to |this|.
+   nsresult DispatchTrustedEvent(const nsAString& aEventName);
+ protected:
+   virtual ~DOMEventTargetHelper();
+ 
+   nsresult WantsUntrusted(bool* aRetVal);
+ 
+   void MaybeUpdateKeepAlive();
+diff --git a/dom/events/EventTarget.h b/dom/events/EventTarget.h
+--- a/dom/events/EventTarget.h
++++ b/dom/events/EventTarget.h
+@@ -71,20 +71,29 @@ public:
+     nsCOMPtr<nsIAtom> type = NS_Atomize(aType);
+     return GetEventHandler(type, EmptyString());
+   }
+ 
+   // Note, this takes the type in onfoo form!
+   void SetEventHandler(const nsAString& aType, EventHandlerNonNull* aHandler,
+                        ErrorResult& rv);
+ 
+-  // Note, for an event 'foo' aType will be 'onfoo'.
++  // The nsIAtom version of EventListenerAdded is called on the main
++  // thread.  The string version is called on workers.
++  //
++  // For an event 'foo' aType will be 'onfoo' when it's an atom and
++  // 'foo' when it's a string..
+   virtual void EventListenerAdded(nsIAtom* aType) {}
+   virtual void EventListenerAdded(const nsAString& aType) {}
+ 
++  // The nsIAtom version of EventListenerRemoved is called on the main
++  // thread.  The string version is called on workers.
++  //
++  // For an event 'foo' aType will be 'onfoo' when it's an atom and
++  // 'foo' when it's a string..
+   virtual void EventListenerRemoved(nsIAtom* aType) {}
+   virtual void EventListenerRemoved(const nsAString& aType) {}
+ 
+   // Returns an outer window that corresponds to the inner window this event
+   // target is associated with.  Will return null if the inner window is not the
+   // current inner or if there is no window around at all.
+   virtual nsPIDOMWindowOuter* GetOwnerGlobalForBindings() = 0;
+ 
+diff --git a/dom/webidl/AddonManager.webidl b/dom/webidl/AddonManager.webidl
+--- a/dom/webidl/AddonManager.webidl
++++ b/dom/webidl/AddonManager.webidl
+@@ -52,17 +52,18 @@ dictionary addonInstallOptions {
+   // checksum of the downloaded XPI before installing.  If is omitted or if
+   // it is null or empty string, no checksum verification is performed.
+   DOMString? hash = null;
+ };
+ 
+ [HeaderFile="mozilla/AddonManagerWebAPI.h",
+  Func="mozilla::AddonManagerWebAPI::IsAPIEnabled",
+  NavigatorProperty="mozAddonManager",
+- JSImplementation="@mozilla.org/addon-web-api/manager;1"]
++ JSImplementation="@mozilla.org/addon-web-api/manager;1",
++ WantsEventListenerHooks]
+ interface AddonManager : EventTarget {
+   /**
+    * Gets information about an add-on
+    *
+    * @param  id
+    *         The ID of the add-on to test for.
+    * @return A promise. It will resolve to an Addon if the add-on is installed.
+    */
+@@ -74,21 +75,15 @@ interface AddonManager : EventTarget {
+    * @param options
+    *        Only one supported option: 'url', the URL of the addon to install.
+    * @return A promise that resolves to an instance of AddonInstall.
+    */
+   Promise<AddonInstall> createInstall(optional addonInstallOptions options);
+ 
+   // Indicator to content whether permissions prompts are enabled
+   readonly attribute boolean permissionPromptsEnabled;
+-
+-  /* Hooks for managing event listeners */
+-  [ChromeOnly]
+-  void eventListenerWasAdded(DOMString type);
+-  [ChromeOnly]
+-  void eventListenerWasRemoved(DOMString type);
+ };
+ 
+ [ChromeOnly,Exposed=System,HeaderFile="mozilla/AddonManagerWebAPI.h"]
+ interface AddonManagerPermissions {
+   static boolean isHostPermitted(DOMString host);
+ };
+ 
+diff --git a/toolkit/mozapps/extensions/amWebAPI.js b/toolkit/mozapps/extensions/amWebAPI.js
+--- a/toolkit/mozapps/extensions/amWebAPI.js
++++ b/toolkit/mozapps/extensions/amWebAPI.js
+@@ -238,27 +238,27 @@ class WebAPI extends APIObject {
+       return this.window.AddonInstall._create(this.window, install);
+     });
+   }
+ 
+   get permissionPromptsEnabled() {
+     return WEBEXT_PERMISSION_PROMPTS;
+   }
+ 
+-  eventListenerWasAdded(type) {
++  eventListenerAdded(type) {
+     if (this.listenerCount == 0) {
+       this.broker.setAddonListener(data => {
+         let event = new this.window.AddonEvent(data.event, data);
+         this.__DOM_IMPL__.dispatchEvent(event);
+       });
+     }
+     this.listenerCount++;
+   }
+ 
+-  eventListenerWasRemoved(type) {
++  eventListenerRemoved(type) {
+     this.listenerCount--;
+     if (this.listenerCount == 0) {
+       this.broker.setAddonListener(null);
+     }
+   }
+ 
+   QueryInterface(iid) {
+     if (iid.equals(WebAPI.classID) || iid.equals(Ci.nsISupports)

+ 0 - 0
frg/mozilla-release/work-js/mozilla-central-push_420625.patch → frg/mozilla-release/work-js/1464266-62a1.patch


+ 10 - 17
frg/mozilla-release/work-js/1464869-09-62a1.patch

@@ -2,7 +2,7 @@
 # User Sylvestre Ledru <sledru@mozilla.com>
 # User Sylvestre Ledru <sledru@mozilla.com>
 # Date 1528283054 -7200
 # Date 1528283054 -7200
 # Node ID fd9de8dd00a40f86c3e82ce2c1ec4b182c38be08
 # Node ID fd9de8dd00a40f86c3e82ce2c1ec4b182c38be08
-# Parent  5d3c42004a108aa7b22adc587ac2cd21a9cc13ae
+# Parent  2f93ed599685ff28db68e72426e3fda9b98e1631
 Bug 1464869 - Fix flake8/pep8 issue by hand in js/ r=jorendorff
 Bug 1464869 - Fix flake8/pep8 issue by hand in js/ r=jorendorff
 
 
 MozReview-Commit-ID: 7cbfMkdykXn
 MozReview-Commit-ID: 7cbfMkdykXn
@@ -1823,7 +1823,7 @@ diff --git a/js/src/tests/lib/jittests.py b/js/src/tests/lib/jittests.py
          t = JitTest(self.path)
          t = JitTest(self.path)
          t.jitflags = self.jitflags[:]
          t.jitflags = self.jitflags[:]
          t.slow = self.slow
          t.slow = self.slow
-@@ -741,17 +754,17 @@ def run_tests_remote(tests, num_tests, p
+@@ -743,17 +756,17 @@ def run_tests_remote(tests, num_tests, p
      return ok
      return ok
  
  
  def platform_might_be_android():
  def platform_might_be_android():
@@ -1939,17 +1939,9 @@ diff --git a/js/src/tests/lib/progressbar.py b/js/src/tests/lib/progressbar.py
 diff --git a/js/src/tests/lib/results.py b/js/src/tests/lib/results.py
 diff --git a/js/src/tests/lib/results.py b/js/src/tests/lib/results.py
 --- a/js/src/tests/lib/results.py
 --- a/js/src/tests/lib/results.py
 +++ b/js/src/tests/lib/results.py
 +++ b/js/src/tests/lib/results.py
-@@ -7,24 +7,25 @@ from progressbar import NullProgressBar,
- from structuredlog import TestLogger
- 
- # subprocess.list2cmdline does not properly escape for sh-like shells
- def escape_cmdline(args):
-     return ' '.join([pipes.quote(a) for a in args])
- 
- class TestOutput:
+@@ -14,18 +14,18 @@ class TestOutput:
      """Output from a test run."""
      """Output from a test run."""
--    def __init__(self, test, cmd, out, err, rc, dt, timed_out):
-+    def __init__(self, test, cmd, out, err, rc, dt, timed_out, extra=None):
+     def __init__(self, test, cmd, out, err, rc, dt, timed_out, extra=None):
          self.test = test   # Test
          self.test = test   # Test
          self.cmd = cmd     # str:   command line of test
          self.cmd = cmd     # str:   command line of test
          self.out = out     # str:   stdout
          self.out = out     # str:   stdout
@@ -1957,6 +1949,7 @@ diff --git a/js/src/tests/lib/results.py b/js/src/tests/lib/results.py
          self.rc = rc       # int:   return code
          self.rc = rc       # int:   return code
          self.dt = dt       # float: run time
          self.dt = dt       # float: run time
 -        self.timed_out = timed_out # bool: did the test time out
 -        self.timed_out = timed_out # bool: did the test time out
+-        self.extra = extra # includes the pid on some platforms
 +        self.timed_out = timed_out  # bool: did the test time out
 +        self.timed_out = timed_out  # bool: did the test time out
 +        self.extra = extra  # includes the pid on some platforms
 +        self.extra = extra  # includes the pid on some platforms
  
  
@@ -1967,7 +1960,7 @@ diff --git a/js/src/tests/lib/results.py b/js/src/tests/lib/results.py
          for line in lines:
          for line in lines:
              # Skip the asm.js compilation success message.
              # Skip the asm.js compilation success message.
              if "Successfully compiled asm.js code" not in line:
              if "Successfully compiled asm.js code" not in line:
-@@ -84,17 +85,17 @@ class TestResult:
+@@ -85,17 +85,17 @@ class TestResult:
                      expected_rcs.append(int(m.group(1)))
                      expected_rcs.append(int(m.group(1)))
  
  
          if test.error is not None:
          if test.error is not None:
@@ -1986,7 +1979,7 @@ diff --git a/js/src/tests/lib/results.py b/js/src/tests/lib/results.py
              if (rc or passes > 0) and failures == 0:
              if (rc or passes > 0) and failures == 0:
                  result = cls.PASS
                  result = cls.PASS
              else:
              else:
-@@ -207,17 +208,20 @@ class ResultsSink:
+@@ -208,17 +208,20 @@ class ResultsSink:
                          tup = (sub_ok, result.test.expect, result.test.random)
                          tup = (sub_ok, result.test.expect, result.test.random)
                          label = self.LABELS[tup][0]
                          label = self.LABELS[tup][0]
                          if label == 'TEST-UNEXPECTED-PASS':
                          if label == 'TEST-UNEXPECTED-PASS':
@@ -1995,7 +1988,7 @@ diff --git a/js/src/tests/lib/results.py b/js/src/tests/lib/results.py
                              label, result.test, time=output.dt,
                              label, result.test, time=output.dt,
                              message=msg)
                              message=msg)
                  tup = (result.result, result.test.expect, result.test.random)
                  tup = (result.result, result.test.expect, result.test.random)
--                self.print_automation_result(self.LABELS[tup][0], result.test, time=output.dt)
+-                self.print_automation_result(self.LABELS[tup][0], result.test, time=output.dt, extra=getattr(output, 'extra', None))
 +                self.print_automation_result(self.LABELS[tup][0],
 +                self.print_automation_result(self.LABELS[tup][0],
 +                                             result.test,
 +                                             result.test,
 +                                             time=output.dt,
 +                                             time=output.dt,
@@ -2008,7 +2001,7 @@ diff --git a/js/src/tests/lib/results.py b/js/src/tests/lib/results.py
                  self.pb.message("{} - {}".format(singular(dev_label),
                  self.pb.message("{} - {}".format(singular(dev_label),
                                                   output.test.path))
                                                   output.test.path))
  
  
-@@ -304,17 +308,17 @@ class ResultsSink:
+@@ -305,17 +308,17 @@ class ResultsSink:
              result += " | " + message
              result += " | " + message
          if skip:
          if skip:
              result += ' | (SKIP)'
              result += ' | (SKIP)'
@@ -2017,7 +2010,7 @@ diff --git a/js/src/tests/lib/results.py b/js/src/tests/lib/results.py
          result += ' [{:.1f} s]'.format(time)
          result += ' [{:.1f} s]'.format(time)
          print(result)
          print(result)
  
  
--        details = { 'extra': {} }
+-        details = { 'extra': extra.copy() if extra else {} }
 +        details = {'extra': extra.copy() if extra else {}}
 +        details = {'extra': extra.copy() if extra else {}}
          if self.options.shell_args:
          if self.options.shell_args:
              details['extra']['shell_args'] = self.options.shell_args
              details['extra']['shell_args'] = self.options.shell_args

+ 2 - 1
frg/mozilla-release/work-js/1465770-1-62a1.patch

@@ -1,8 +1,9 @@
 # HG changeset patch
 # HG changeset patch
 # User qiaopengcheng <qiaopengcheng-hf@loongson.cn>
 # User qiaopengcheng <qiaopengcheng-hf@loongson.cn>
 # Date 1527805980 14400
 # Date 1527805980 14400
+#      Thu May 31 18:33:00 2018 -0400
 # Node ID ca30bde6447ee796c14d0777a1a1fcd64fab690f
 # Node ID ca30bde6447ee796c14d0777a1a1fcd64fab690f
-# Parent  44bdd4b8d36a3878367cb8e6c27be0d427212153
+# Parent  ddcbbad1f728161e18911d3af93a9495733c6f00
 Bug 1465770 - mips64: convertDoubleToInt32 cp1_fcsr error. r=dragan.mladjenovic
 Bug 1465770 - mips64: convertDoubleToInt32 cp1_fcsr error. r=dragan.mladjenovic
 
 
 diff --git a/js/src/jit/mips64/MacroAssembler-mips64.cpp b/js/src/jit/mips64/MacroAssembler-mips64.cpp
 diff --git a/js/src/jit/mips64/MacroAssembler-mips64.cpp b/js/src/jit/mips64/MacroAssembler-mips64.cpp

+ 2 - 1
frg/mozilla-release/work-js/1465770-2-62a1.patch

@@ -1,8 +1,9 @@
 # HG changeset patch
 # HG changeset patch
 # User qiaopengcheng <qiaopengcheng-hf@loongson.cn>
 # User qiaopengcheng <qiaopengcheng-hf@loongson.cn>
 # Date 1527836280 14400
 # Date 1527836280 14400
+#      Fri Jun 01 02:58:00 2018 -0400
 # Node ID af6951f3fd418e6f363eaca1fb286658c627e57f
 # Node ID af6951f3fd418e6f363eaca1fb286658c627e57f
-# Parent  f2f3c847205b8bf5051accbc8258054a67996d10
+# Parent  ca30bde6447ee796c14d0777a1a1fcd64fab690f
 Bug 1465770 - mips32: convertDoubleToInt32 cp1_fcsr error. r=dragan.mladjenovic
 Bug 1465770 - mips32: convertDoubleToInt32 cp1_fcsr error. r=dragan.mladjenovic
 
 
 diff --git a/js/src/jit/mips32/MacroAssembler-mips32.cpp b/js/src/jit/mips32/MacroAssembler-mips32.cpp
 diff --git a/js/src/jit/mips32/MacroAssembler-mips32.cpp b/js/src/jit/mips32/MacroAssembler-mips32.cpp

+ 308 - 0
frg/mozilla-release/work-js/1473003-1-63a1.patch

@@ -0,0 +1,308 @@
+# HG changeset patch
+# User Andre Bargull <andre.bargull@gmail.com>
+# Date 1530724434 25200
+# Node ID d7a5d9b4dc85305a50b397bd77a27948b8d3d822
+# Parent  3b2bd3e7514ab33dd9d013623bd337555384bf47
+Bug 1473003 - Part 1: Remove const_casts by moving the constness requirement to the callee. r=jandem
+
+diff --git a/js/src/builtin/DataViewObject.h b/js/src/builtin/DataViewObject.h
+--- a/js/src/builtin/DataViewObject.h
++++ b/js/src/builtin/DataViewObject.h
+@@ -56,43 +56,42 @@ class DataViewObject : public NativeObje
+ 
+     static DataViewObject*
+     create(JSContext* cx, uint32_t byteOffset, uint32_t byteLength,
+            Handle<ArrayBufferObjectMaybeShared*> arrayBuffer, HandleObject proto);
+ 
+   public:
+     static const Class class_;
+ 
+-    static Value byteOffsetValue(DataViewObject* view) {
++    static Value byteOffsetValue(const DataViewObject* view) {
+         Value v = view->getFixedSlot(TypedArrayObject::BYTEOFFSET_SLOT);
+         MOZ_ASSERT(v.toInt32() >= 0);
+         return v;
+     }
+ 
+-    static Value byteLengthValue(DataViewObject* view) {
++    static Value byteLengthValue(const DataViewObject* view) {
+         Value v = view->getFixedSlot(TypedArrayObject::LENGTH_SLOT);
+         MOZ_ASSERT(v.toInt32() >= 0);
+         return v;
+     }
+ 
+-    static Value bufferValue(DataViewObject* view) {
++    static Value bufferValue(const DataViewObject* view) {
+         return view->getFixedSlot(TypedArrayObject::BUFFER_SLOT);
+     }
+ 
+     uint32_t byteOffset() const {
+-        return byteOffsetValue(const_cast<DataViewObject*>(this)).toInt32();
++        return byteOffsetValue(this).toInt32();
+     }
+ 
+     uint32_t byteLength() const {
+-        return byteLengthValue(const_cast<DataViewObject*>(this)).toInt32();
++        return byteLengthValue(this).toInt32();
+     }
+ 
+     ArrayBufferObjectMaybeShared& arrayBufferEither() const {
+-        return bufferValue(
+-            const_cast<DataViewObject*>(this)).toObject().as<ArrayBufferObjectMaybeShared>();
++        return bufferValue(this).toObject().as<ArrayBufferObjectMaybeShared>();
+     }
+ 
+     SharedMem<void*> dataPointerEither() const {
+         void *p = getPrivate();
+         if (isSharedMemory())
+             return SharedMem<void*>::shared(p);
+         return SharedMem<void*>::unshared(p);
+     }
+diff --git a/js/src/vm/ProxyObject.cpp b/js/src/vm/ProxyObject.cpp
+--- a/js/src/vm/ProxyObject.cpp
++++ b/js/src/vm/ProxyObject.cpp
+@@ -115,17 +115,17 @@ ProxyObject::New(JSContext* cx, const Ba
+ 
+   return proxy;
+ }
+ 
+ gc::AllocKind
+ ProxyObject::allocKindForTenure() const
+ {
+     MOZ_ASSERT(usingInlineValueArray());
+-    Value priv = const_cast<ProxyObject*>(this)->private_();
++    Value priv = private_();
+     return GetProxyGCObjectKind(getClass(), data.handler, priv);
+ }
+ 
+ void
+ ProxyObject::setCrossCompartmentPrivate(const Value& priv)
+ {
+     setPrivate(priv);
+ }
+diff --git a/js/src/vm/ProxyObject.h b/js/src/vm/ProxyObject.h
+--- a/js/src/vm/ProxyObject.h
++++ b/js/src/vm/ProxyObject.h
+@@ -54,29 +54,29 @@ class ProxyObject : public ShapedObject
+     bool usingInlineValueArray() const {
+         return data.values() == inlineDataStart();
+     }
+     void setInlineValueArray() {
+         data.reservedSlots = &reinterpret_cast<detail::ProxyValueArray*>(inlineDataStart())->reservedSlots;
+     }
+     MOZ_MUST_USE bool initExternalValueArrayAfterSwap(JSContext* cx, const Vector<Value>& values);
+ 
+-    const Value& private_() {
++    const Value& private_() const {
+         return GetProxyPrivate(this);
+     }
+ 
+     void setCrossCompartmentPrivate(const Value& priv);
+     void setSameCompartmentPrivate(const Value& priv);
+ 
+     JSObject* target() const {
+-        return const_cast<ProxyObject*>(this)->private_().toObjectOrNull();
++        return private_().toObjectOrNull();
+     }
+ 
+     const BaseProxyHandler* handler() const {
+-        return GetProxyHandler(const_cast<ProxyObject*>(this));
++        return GetProxyHandler(this);
+     }
+ 
+     void setHandler(const BaseProxyHandler* handler) {
+         SetProxyHandler(this, handler);
+     }
+ 
+     static size_t offsetOfReservedSlots() {
+         return offsetof(ProxyObject, data.reservedSlots);
+@@ -84,17 +84,17 @@ class ProxyObject : public ShapedObject
+     static size_t offsetOfHandler() {
+         return offsetof(ProxyObject, data.handler);
+     }
+ 
+     size_t numReservedSlots() const {
+         return JSCLASS_RESERVED_SLOTS(getClass());
+     }
+     const Value& reservedSlot(size_t n) const {
+-        return GetProxyReservedSlot(const_cast<ProxyObject*>(this), n);
++        return GetProxyReservedSlot(this, n);
+     }
+ 
+     void setReservedSlot(size_t n, const Value& extra) {
+         SetProxyReservedSlot(this, n, extra);
+     }
+ 
+     gc::AllocKind allocKindForTenure() const;
+ 
+@@ -146,17 +146,17 @@ bool IsDerivedProxyObject(const JSObject
+ template<>
+ inline bool
+ JSObject::is<js::ProxyObject>() const
+ {
+     // Note: this method is implemented in terms of the IsProxy() friend API
+     // functions to ensure the implementations are tied together.
+     // Note 2: this specialization isn't used for subclasses of ProxyObject
+     // which must supply their own implementation.
+-    return js::IsProxy(const_cast<JSObject*>(this));
++    return js::IsProxy(this);
+ }
+ 
+ inline bool
+ js::IsDerivedProxyObject(const JSObject* obj, const js::BaseProxyHandler* handler) {
+     return obj->is<js::ProxyObject>() && obj->as<js::ProxyObject>().handler() == handler;
+ }
+ 
+ #endif /* vm_ProxyObject_h */
+diff --git a/js/src/vm/TypedArrayObject.h b/js/src/vm/TypedArrayObject.h
+--- a/js/src/vm/TypedArrayObject.h
++++ b/js/src/vm/TypedArrayObject.h
+@@ -111,48 +111,48 @@ class TypedArrayObject : public NativeOb
+     static const uint32_t INLINE_BUFFER_LIMIT =
+         (NativeObject::MAX_FIXED_SLOTS - FIXED_DATA_START) * sizeof(Value);
+ 
+     static inline gc::AllocKind AllocKindForLazyBuffer(size_t nbytes);
+ 
+     inline Scalar::Type type() const;
+     inline size_t bytesPerElement() const;
+ 
+-    static Value bufferValue(TypedArrayObject* tarr) {
++    static Value bufferValue(const TypedArrayObject* tarr) {
+         return tarr->getFixedSlot(BUFFER_SLOT);
+     }
+-    static Value byteOffsetValue(TypedArrayObject* tarr) {
++    static Value byteOffsetValue(const TypedArrayObject* tarr) {
+         Value v = tarr->getFixedSlot(BYTEOFFSET_SLOT);
+         MOZ_ASSERT(v.toInt32() >= 0);
+         return v;
+     }
+-    static Value byteLengthValue(TypedArrayObject* tarr) {
++    static Value byteLengthValue(const TypedArrayObject* tarr) {
+         return Int32Value(tarr->getFixedSlot(LENGTH_SLOT).toInt32() * tarr->bytesPerElement());
+     }
+-    static Value lengthValue(TypedArrayObject* tarr) {
++    static Value lengthValue(const TypedArrayObject* tarr) {
+         return tarr->getFixedSlot(LENGTH_SLOT);
+     }
+ 
+     static bool
+     ensureHasBuffer(JSContext* cx, Handle<TypedArrayObject*> tarray);
+ 
+     bool hasBuffer() const {
+-        return bufferValue(const_cast<TypedArrayObject*>(this)).isObject();
++        return bufferValue(this).isObject();
+     }
+     JSObject* bufferObject() const {
+-        return bufferValue(const_cast<TypedArrayObject*>(this)).toObjectOrNull();
++        return bufferValue(this).toObjectOrNull();
+     }
+     uint32_t byteOffset() const {
+-        return byteOffsetValue(const_cast<TypedArrayObject*>(this)).toInt32();
++        return byteOffsetValue(this).toInt32();
+     }
+     uint32_t byteLength() const {
+-        return byteLengthValue(const_cast<TypedArrayObject*>(this)).toInt32();
++        return byteLengthValue(this).toInt32();
+     }
+     uint32_t length() const {
+-        return lengthValue(const_cast<TypedArrayObject*>(this)).toInt32();
++        return lengthValue(this).toInt32();
+     }
+ 
+     bool hasInlineElements() const;
+     void setInlineElements();
+     uint8_t* elementsRaw() const {
+         return *(uint8_t **)((((char *)this) + js::TypedArrayObject::dataOffset()));
+     }
+     uint8_t* elements() const {
+@@ -187,30 +187,30 @@ class TypedArrayObject : public NativeOb
+      * typed arrays created with an existing ArrayBuffer.
+      */
+     static const uint32_t SINGLETON_BYTE_LENGTH = 1024 * 1024 * 10;
+ 
+     static bool isOriginalLengthGetter(Native native);
+ 
+     ArrayBufferObject* bufferUnshared() const {
+         MOZ_ASSERT(!isSharedMemory());
+-        JSObject* obj = bufferValue(const_cast<TypedArrayObject*>(this)).toObjectOrNull();
++        JSObject* obj = bufferValue(this).toObjectOrNull();
+         if (!obj)
+             return nullptr;
+         return &obj->as<ArrayBufferObject>();
+     }
+     SharedArrayBufferObject* bufferShared() const {
+         MOZ_ASSERT(isSharedMemory());
+-        JSObject* obj = bufferValue(const_cast<TypedArrayObject*>(this)).toObjectOrNull();
++        JSObject* obj = bufferValue(this).toObjectOrNull();
+         if (!obj)
+             return nullptr;
+         return &obj->as<SharedArrayBufferObject>();
+     }
+     ArrayBufferObjectMaybeShared* bufferEither() const {
+-        JSObject* obj = bufferValue(const_cast<TypedArrayObject*>(this)).toObjectOrNull();
++        JSObject* obj = bufferValue(this).toObjectOrNull();
+         if (!obj)
+             return nullptr;
+         if (isSharedMemory())
+             return &obj->as<SharedArrayBufferObject>();
+         return &obj->as<ArrayBufferObject>();
+     }
+ 
+     SharedMem<void*> viewDataShared() const {
+@@ -259,29 +259,29 @@ class TypedArrayObject : public NativeOb
+ 
+   public:
+     static void trace(JSTracer* trc, JSObject* obj);
+     static void finalize(FreeOp* fop, JSObject* obj);
+     static size_t objectMoved(JSObject* obj, JSObject* old);
+ 
+     /* Initialization bits */
+ 
+-    template<Value ValueGetter(TypedArrayObject* tarr)>
++    template<Value ValueGetter(const TypedArrayObject* tarr)>
+     static bool
+     GetterImpl(JSContext* cx, const CallArgs& args)
+     {
+         MOZ_ASSERT(is(args.thisv()));
+         args.rval().set(ValueGetter(&args.thisv().toObject().as<TypedArrayObject>()));
+         return true;
+     }
+ 
+     // ValueGetter is a function that takes an unwrapped typed array object and
+     // returns a Value. Given such a function, Getter<> is a native that
+     // retrieves a given Value, probably from a slot on the object.
+-    template<Value ValueGetter(TypedArrayObject* tarr)>
++    template<Value ValueGetter(const TypedArrayObject* tarr)>
+     static bool
+     Getter(JSContext* cx, unsigned argc, Value* vp)
+     {
+         CallArgs args = CallArgsFromVp(argc, vp);
+         return CallNonGenericMethod<is, GetterImpl<ValueGetter>>(cx, args);
+     }
+ 
+     static const JSFunctionSpec protoFunctions[];
+diff --git a/js/src/vm/WrapperObject.h b/js/src/vm/WrapperObject.h
+--- a/js/src/vm/WrapperObject.h
++++ b/js/src/vm/WrapperObject.h
+@@ -28,19 +28,19 @@ class CrossCompartmentWrapperObject : pu
+ };
+ 
+ } // namespace js
+ 
+ template<>
+ inline bool
+ JSObject::is<js::WrapperObject>() const
+ {
+-    return js::IsWrapper(const_cast<JSObject*>(this));
++    return js::IsWrapper(this);
+ }
+ 
+ template<>
+ inline bool
+ JSObject::is<js::CrossCompartmentWrapperObject>() const
+ {
+-    return js::IsCrossCompartmentWrapper(const_cast<JSObject*>(this));
++    return js::IsCrossCompartmentWrapper(this);
+ }
+ 
+ #endif /* vm_WrapperObject_h */

+ 3 - 3
frg/mozilla-release/work-js/1488463-64a1.patch

@@ -2,13 +2,13 @@
 # User Jon Coppeard <jcoppeard@mozilla.com>
 # User Jon Coppeard <jcoppeard@mozilla.com>
 # Date 1536143136 -3600
 # Date 1536143136 -3600
 # Node ID ccd4dbac66cde136db3b188a962fbef0606b0db6
 # Node ID ccd4dbac66cde136db3b188a962fbef0606b0db6
-# Parent  6a873e824d95de110223a37631d7a790cb92cb20
+# Parent  e73ade04b5fd59b6b72db828b0ef63bd13da107a
 Bug 1488463 - Handle OOM in RegExpShared::compile() r=nbp
 Bug 1488463 - Handle OOM in RegExpShared::compile() r=nbp
 
 
 diff --git a/js/src/vm/RegExpObject.cpp b/js/src/vm/RegExpObject.cpp
 diff --git a/js/src/vm/RegExpObject.cpp b/js/src/vm/RegExpObject.cpp
 --- a/js/src/vm/RegExpObject.cpp
 --- a/js/src/vm/RegExpObject.cpp
 +++ b/js/src/vm/RegExpObject.cpp
 +++ b/js/src/vm/RegExpObject.cpp
-@@ -1056,18 +1056,20 @@ RegExpShared::compile(JSContext* cx, Mut
+@@ -1035,18 +1035,20 @@ RegExpShared::compile(JSContext* cx, Mut
  
  
      RegExpCompilation& compilation = re->compilation(mode, input->hasLatin1Chars());
      RegExpCompilation& compilation = re->compilation(mode, input->hasLatin1Chars());
      if (code.jitCode) {
      if (code.jitCode) {
@@ -17,7 +17,7 @@ diff --git a/js/src/vm/RegExpObject.cpp b/js/src/vm/RegExpObject.cpp
          // compilation.jitCode (to ensure no purging happens between adding the
          // compilation.jitCode (to ensure no purging happens between adding the
          // tables and setting the JIT code).
          // tables and setting the JIT code).
          for (size_t i = 0; i < tables.length(); i++) {
          for (size_t i = 0; i < tables.length(); i++) {
--            if (!re->addTable(Move(tables[i])))
+-            if (!re->addTable(std::move(tables[i])))
 +            if (!re->addTable(std::move(tables[i]))) {
 +            if (!re->addTable(std::move(tables[i]))) {
 +                ReportOutOfMemory(cx);
 +                ReportOutOfMemory(cx);
                  return false;
                  return false;

+ 15 - 16
frg/mozilla-release/work-js/1494752-604.patch

@@ -3,7 +3,7 @@
 # Date 1541688097 18000
 # Date 1541688097 18000
 #      Thu Nov 08 09:41:37 2018 -0500
 #      Thu Nov 08 09:41:37 2018 -0500
 # Node ID c264774b89130cd7759c40977835e2a0d32fd684
 # Node ID c264774b89130cd7759c40977835e2a0d32fd684
-# Parent  a3b0f0d6bb98118889fbbab28e7ea4fe59259f4e
+# Parent  5a2315ce078da620fd3ca026b7590c3522773fb0
 Bug 1494752. r=jonco, a=RyanVM
 Bug 1494752. r=jonco, a=RyanVM
 
 
 diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp
 diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp
@@ -28,7 +28,7 @@ diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp
  #include <new>
  #include <new>
  
  
  #include "jsapi.h"
  #include "jsapi.h"
-@@ -48,21 +50,23 @@
+@@ -48,20 +50,22 @@
  #include "frontend/ParseNode-inl.h"
  #include "frontend/ParseNode-inl.h"
  #include "vm/EnvironmentObject-inl.h"
  #include "vm/EnvironmentObject-inl.h"
  #include "vm/JSAtom-inl.h"
  #include "vm/JSAtom-inl.h"
@@ -40,7 +40,6 @@ diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp
 +using mozilla::AssertedCast;
 +using mozilla::AssertedCast;
 +using mozilla::Forward;
 +using mozilla::Forward;
  using mozilla::Maybe;
  using mozilla::Maybe;
- using mozilla::Move;
  using mozilla::Nothing;
  using mozilla::Nothing;
 -using mozilla::PodCopy;
 -using mozilla::PodCopy;
  using mozilla::PodZero;
  using mozilla::PodZero;
@@ -53,7 +52,7 @@ diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp
  namespace frontend {
  namespace frontend {
  
  
  using DeclaredNamePtr = ParseContext::Scope::DeclaredNamePtr;
  using DeclaredNamePtr = ParseContext::Scope::DeclaredNamePtr;
-@@ -1772,24 +1776,67 @@ NewEmptyBindingData(JSContext* cx, LifoA
+@@ -1771,24 +1775,67 @@ NewEmptyBindingData(JSContext* cx, LifoA
      using Data = typename Scope::Data;
      using Data = typename Scope::Data;
      size_t allocSize = SizeOfData<typename Scope::Data>(numBindings);
      size_t allocSize = SizeOfData<typename Scope::Data>(numBindings);
      auto* bindings = alloc.allocInSize<Data>(allocSize, numBindings);
      auto* bindings = alloc.allocInSize<Data>(allocSize, numBindings);
@@ -129,7 +128,7 @@ diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp
  
  
      BindingNameVector funs(context);
      BindingNameVector funs(context);
      BindingNameVector vars(context);
      BindingNameVector vars(context);
-@@ -1826,31 +1873,21 @@ NewGlobalScopeData(JSContext* context, P
+@@ -1825,31 +1872,21 @@ NewGlobalScopeData(JSContext* context, P
      uint32_t numBindings = funs.length() + vars.length() + lets.length() + consts.length();
      uint32_t numBindings = funs.length() + vars.length() + lets.length() + consts.length();
  
  
      if (numBindings > 0) {
      if (numBindings > 0) {
@@ -166,7 +165,7 @@ diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp
  Maybe<GlobalScope::Data*>
  Maybe<GlobalScope::Data*>
  ParserBase::newGlobalScopeData(ParseContext::Scope& scope)
  ParserBase::newGlobalScopeData(ParseContext::Scope& scope)
  {
  {
-@@ -1896,31 +1933,21 @@ NewModuleScopeData(JSContext* context, P
+@@ -1895,31 +1932,21 @@ NewModuleScopeData(JSContext* context, P
      uint32_t numBindings = imports.length() + vars.length() + lets.length() + consts.length();
      uint32_t numBindings = imports.length() + vars.length() + lets.length() + consts.length();
  
  
      if (numBindings > 0) {
      if (numBindings > 0) {
@@ -203,7 +202,7 @@ diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp
  Maybe<ModuleScope::Data*>
  Maybe<ModuleScope::Data*>
  ParserBase::newModuleScopeData(ParseContext::Scope& scope)
  ParserBase::newModuleScopeData(ParseContext::Scope& scope)
  {
  {
-@@ -1950,27 +1977,21 @@ NewEvalScopeData(JSContext* context, Par
+@@ -1949,27 +1976,21 @@ NewEvalScopeData(JSContext* context, Par
      EvalScope::Data* bindings = nullptr;
      EvalScope::Data* bindings = nullptr;
      uint32_t numBindings = funs.length() + vars.length();
      uint32_t numBindings = funs.length() + vars.length();
  
  
@@ -234,7 +233,7 @@ diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp
  Maybe<EvalScope::Data*>
  Maybe<EvalScope::Data*>
  ParserBase::newEvalScopeData(ParseContext::Scope& scope)
  ParserBase::newEvalScopeData(ParseContext::Scope& scope)
  {
  {
-@@ -2048,28 +2069,20 @@ NewFunctionScopeData(JSContext* context,
+@@ -2047,28 +2068,20 @@ NewFunctionScopeData(JSContext* context,
      uint32_t numBindings = positionalFormals.length() + formals.length() + vars.length();
      uint32_t numBindings = positionalFormals.length() + formals.length() + vars.length();
  
  
      if (numBindings > 0) {
      if (numBindings > 0) {
@@ -267,7 +266,7 @@ diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp
  Maybe<FunctionScope::Data*>
  Maybe<FunctionScope::Data*>
  ParserBase::newFunctionScopeData(ParseContext::Scope& scope, bool hasParameterExprs)
  ParserBase::newFunctionScopeData(ParseContext::Scope& scope, bool hasParameterExprs)
  {
  {
-@@ -2094,23 +2107,17 @@ NewVarScopeData(JSContext* context, Pars
+@@ -2093,23 +2106,17 @@ NewVarScopeData(JSContext* context, Pars
      VarScope::Data* bindings = nullptr;
      VarScope::Data* bindings = nullptr;
      uint32_t numBindings = vars.length();
      uint32_t numBindings = vars.length();
  
  
@@ -292,7 +291,7 @@ diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp
  Maybe<VarScope::Data*>
  Maybe<VarScope::Data*>
  ParserBase::newVarScopeData(ParseContext::Scope& scope)
  ParserBase::newVarScopeData(ParseContext::Scope& scope)
  {
  {
-@@ -2149,25 +2156,19 @@ NewLexicalScopeData(JSContext* context, 
+@@ -2148,25 +2155,19 @@ NewLexicalScopeData(JSContext* context, 
      uint32_t numBindings = lets.length() + consts.length();
      uint32_t numBindings = lets.length() + consts.length();
  
  
      if (numBindings > 0) {
      if (numBindings > 0) {
@@ -324,7 +323,7 @@ diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp
 diff --git a/js/src/vm/Scope.cpp b/js/src/vm/Scope.cpp
 diff --git a/js/src/vm/Scope.cpp b/js/src/vm/Scope.cpp
 --- a/js/src/vm/Scope.cpp
 --- a/js/src/vm/Scope.cpp
 +++ b/js/src/vm/Scope.cpp
 +++ b/js/src/vm/Scope.cpp
-@@ -205,48 +205,49 @@ NewEmptyScopeData(JSContext* cx, uint32_
+@@ -204,48 +204,49 @@ NewEmptyScopeData(JSContext* cx, uint32_
          ReportOutOfMemory(cx);
          ReportOutOfMemory(cx);
      auto data = reinterpret_cast<typename ConcreteScope::Data*>(bytes);
      auto data = reinterpret_cast<typename ConcreteScope::Data*>(bytes);
      if (data)
      if (data)
@@ -377,7 +376,7 @@ diff --git a/js/src/vm/Scope.cpp b/js/src/vm/Scope.cpp
  static void
  static void
  DeleteScopeData(ConcreteScopeData* data)
  DeleteScopeData(ConcreteScopeData* data)
  {
  {
-@@ -270,28 +271,32 @@ Scope::XDRSizedBindingNames(XDRState<mod
+@@ -269,28 +270,32 @@ Scope::XDRSizedBindingNames(XDRState<mod
      MOZ_TRY(xdr->codeUint32(&length));
      MOZ_TRY(xdr->codeUint32(&length));
  
  
      if (mode == XDR_ENCODE) {
      if (mode == XDR_ENCODE) {
@@ -413,7 +412,7 @@ diff --git a/js/src/vm/Scope.cpp b/js/src/vm/Scope.cpp
  /* static */ Scope*
  /* static */ Scope*
  Scope::create(JSContext* cx, ScopeKind kind, HandleScope enclosing, HandleShape envShape)
  Scope::create(JSContext* cx, ScopeKind kind, HandleScope enclosing, HandleShape envShape)
  {
  {
-@@ -1223,16 +1228,31 @@ GenerateWasmName(JSContext* cx, const ch
+@@ -1222,16 +1227,31 @@ GenerateWasmName(JSContext* cx, const ch
      if (!sb.append(prefix))
      if (!sb.append(prefix))
          return nullptr;
          return nullptr;
      if (!NumberValueToStringBuffer(cx, Int32Value(index), sb))
      if (!NumberValueToStringBuffer(cx, Int32Value(index), sb))
@@ -445,7 +444,7 @@ diff --git a/js/src/vm/Scope.cpp b/js/src/vm/Scope.cpp
      Rooted<WasmInstanceScope*> wasmInstanceScope(cx);
      Rooted<WasmInstanceScope*> wasmInstanceScope(cx);
  
  
      {
      {
-@@ -1243,38 +1263,38 @@ WasmInstanceScope::create(JSContext* cx,
+@@ -1242,38 +1262,38 @@ WasmInstanceScope::create(JSContext* cx,
          size_t globalsStart = namesCount;
          size_t globalsStart = namesCount;
          size_t globalsCount = instance->instance().metadata().globals.length();
          size_t globalsCount = instance->instance().metadata().globals.length();
          namesCount += globalsCount;
          namesCount += globalsCount;
@@ -496,7 +495,7 @@ diff --git a/js/src/vm/Scope.cpp b/js/src/vm/Scope.cpp
              return nullptr;
              return nullptr;
  
  
          wasmInstanceScope = &scope->as<WasmInstanceScope>();
          wasmInstanceScope = &scope->as<WasmInstanceScope>();
-@@ -1311,25 +1331,27 @@ WasmFunctionScope::create(JSContext* cx,
+@@ -1310,25 +1330,27 @@ WasmFunctionScope::create(JSContext* cx,
      if (!instance->instance().debug().debugGetLocalTypes(funcIndex, &locals, &argsLength))
      if (!instance->instance().debug().debugGetLocalTypes(funcIndex, &locals, &argsLength))
          return nullptr;
          return nullptr;
      uint32_t namesCount = locals.length();
      uint32_t namesCount = locals.length();
@@ -530,5 +529,5 @@ diff --git a/js/src/vm/Scope.cpp b/js/src/vm/Scope.cpp
          return nullptr;
          return nullptr;
  
  
      wasmFunctionScope = &scope->as<WasmFunctionScope>();
      wasmFunctionScope = &scope->as<WasmFunctionScope>();
-     wasmFunctionScope->initData(Move(data.get()));
+     wasmFunctionScope->initData(std::move(data.get()));
  
  

+ 13 - 13
frg/mozilla-release/work-js/1539780-70a1.patch

@@ -2,7 +2,7 @@
 # User Andre Bargull <andre.bargull@gmail.com>
 # User Andre Bargull <andre.bargull@gmail.com>
 # Date 1565379799 0
 # Date 1565379799 0
 # Node ID 5967a3947ad0eeeecd97099e50655765259db28a
 # Node ID 5967a3947ad0eeeecd97099e50655765259db28a
-# Parent  0d6fcad8439d44fa2f4d04086cf8eda815b1c5ef
+# Parent  831c21bad2d5a6b30d7f7efc02b7982715ccdb8a
 Bug 1539780: Remove "--with-intl-api=build" build config option. r=jwalden
 Bug 1539780: Remove "--with-intl-api=build" build config option. r=jwalden
 
 
 There are about the same number of occurrences of "ENABLE_INTL_API" and "EXPOSE_INTL_API"
 There are about the same number of occurrences of "ENABLE_INTL_API" and "EXPOSE_INTL_API"
@@ -397,7 +397,7 @@ diff --git a/js/src/builtin/String.h b/js/src/builtin/String.h
 diff --git a/js/src/builtin/String.js b/js/src/builtin/String.js
 diff --git a/js/src/builtin/String.js b/js/src/builtin/String.js
 --- a/js/src/builtin/String.js
 --- a/js/src/builtin/String.js
 +++ b/js/src/builtin/String.js
 +++ b/js/src/builtin/String.js
-@@ -860,17 +860,17 @@ function String_static_raw(callSite/*, .
+@@ -862,17 +862,17 @@ function String_static_raw(callSite/*, .
   */
   */
  function String_static_localeCompare(str1, str2) {
  function String_static_localeCompare(str1, str2) {
      WarnDeprecatedStringMethod(STRING_GENERICS_LOCALE_COMPARE, "localeCompare");
      WarnDeprecatedStringMethod(STRING_GENERICS_LOCALE_COMPARE, "localeCompare");
@@ -416,7 +416,7 @@ diff --git a/js/src/builtin/String.js b/js/src/builtin/String.js
  }
  }
  
  
  // ES6 draft 2014-04-27 B.2.3.3
  // ES6 draft 2014-04-27 B.2.3.3
-@@ -1062,40 +1062,40 @@ function String_static_trimRight(string)
+@@ -1064,40 +1064,40 @@ function String_static_trimRight(string)
      return callFunction(std_String_trimEnd, string);
      return callFunction(std_String_trimEnd, string);
  }
  }
  
  
@@ -463,7 +463,7 @@ diff --git a/js/src/builtin/String.js b/js/src/builtin/String.js
 diff --git a/js/src/builtin/TestingFunctions.cpp b/js/src/builtin/TestingFunctions.cpp
 diff --git a/js/src/builtin/TestingFunctions.cpp b/js/src/builtin/TestingFunctions.cpp
 --- a/js/src/builtin/TestingFunctions.cpp
 --- a/js/src/builtin/TestingFunctions.cpp
 +++ b/js/src/builtin/TestingFunctions.cpp
 +++ b/js/src/builtin/TestingFunctions.cpp
-@@ -260,17 +260,17 @@ GetBuildConfiguration(JSContext* cx, uns
+@@ -259,17 +259,17 @@ GetBuildConfiguration(JSContext* cx, uns
  #ifdef ENABLE_BINARYDATA
  #ifdef ENABLE_BINARYDATA
      value = BooleanValue(true);
      value = BooleanValue(true);
  #else
  #else
@@ -526,7 +526,7 @@ diff --git a/js/src/builtin/TypedArray.js b/js/src/builtin/TypedArray.js
 diff --git a/js/src/jsapi.h b/js/src/jsapi.h
 diff --git a/js/src/jsapi.h b/js/src/jsapi.h
 --- a/js/src/jsapi.h
 --- a/js/src/jsapi.h
 +++ b/js/src/jsapi.h
 +++ b/js/src/jsapi.h
-@@ -4908,19 +4908,19 @@ JS_GetDefaultLocale(JSContext* cx);
+@@ -4902,19 +4902,19 @@ JS_GetDefaultLocale(JSContext* cx);
   */
   */
  extern JS_PUBLIC_API(void)
  extern JS_PUBLIC_API(void)
  JS_ResetDefaultLocale(JSRuntime* rt);
  JS_ResetDefaultLocale(JSRuntime* rt);
@@ -741,7 +741,7 @@ diff --git a/js/src/jsnum.h b/js/src/jsnum.h
 diff --git a/js/src/vm/Initialization.cpp b/js/src/vm/Initialization.cpp
 diff --git a/js/src/vm/Initialization.cpp b/js/src/vm/Initialization.cpp
 --- a/js/src/vm/Initialization.cpp
 --- a/js/src/vm/Initialization.cpp
 +++ b/js/src/vm/Initialization.cpp
 +++ b/js/src/vm/Initialization.cpp
-@@ -114,22 +114,22 @@ JS::detail::InitWithFailureDiagnostic(bo
+@@ -117,22 +117,22 @@ JS::detail::InitWithFailureDiagnostic(bo
      RETURN_IF_FAIL(js::jit::InitializeIon());
      RETURN_IF_FAIL(js::jit::InitializeIon());
  
  
      RETURN_IF_FAIL(js::InitDateTimeState());
      RETURN_IF_FAIL(js::InitDateTimeState());
@@ -766,7 +766,7 @@ diff --git a/js/src/vm/Initialization.cpp b/js/src/vm/Initialization.cpp
  #ifdef JS_SIMULATOR
  #ifdef JS_SIMULATOR
      RETURN_IF_FAIL(js::jit::SimulatorProcess::initialize());
      RETURN_IF_FAIL(js::jit::SimulatorProcess::initialize());
  #endif
  #endif
-@@ -182,19 +182,19 @@ JS_ShutDown(void)
+@@ -187,19 +187,19 @@ JS_ShutDown(void)
      // PRMJ_Now subsystem.  (For reinitialization to be permitted, we'd need to
      // PRMJ_Now subsystem.  (For reinitialization to be permitted, we'd need to
      // "reset" the called-once status -- doable, but more trouble than it's
      // "reset" the called-once status -- doable, but more trouble than it's
      // worth now.)  Initializing that subsystem from JS_Init eliminates the
      // worth now.)  Initializing that subsystem from JS_Init eliminates the
@@ -788,7 +788,7 @@ diff --git a/js/src/vm/Initialization.cpp b/js/src/vm/Initialization.cpp
      js::FinishDateTimeState();
      js::FinishDateTimeState();
  
  
      if (!JSRuntime::hasLiveRuntimes()) {
      if (!JSRuntime::hasLiveRuntimes()) {
-@@ -209,16 +209,16 @@ JS_ShutDown(void)
+@@ -214,16 +214,16 @@ JS_ShutDown(void)
  
  
  JS_PUBLIC_API(bool)
  JS_PUBLIC_API(bool)
  JS_SetICUMemoryFunctions(JS_ICUAllocFn allocFn, JS_ICUReallocFn reallocFn, JS_ICUFreeFn freeFn)
  JS_SetICUMemoryFunctions(JS_ICUAllocFn allocFn, JS_ICUReallocFn reallocFn, JS_ICUFreeFn freeFn)
@@ -847,7 +847,7 @@ diff --git a/js/src/vm/Runtime.cpp b/js/src/vm/Runtime.cpp
      allowContentJS_(true),
      allowContentJS_(true),
      atoms_(nullptr),
      atoms_(nullptr),
      atomsAddedWhileSweeping_(nullptr),
      atomsAddedWhileSweeping_(nullptr),
-@@ -327,17 +327,17 @@ JSRuntime::destroyRuntime()
+@@ -309,17 +309,17 @@ JSRuntime::destroyRuntime()
      MOZ_ASSERT(!hasHelperThreadZones());
      MOZ_ASSERT(!hasHelperThreadZones());
  
  
      /*
      /*
@@ -862,11 +862,11 @@ diff --git a/js/src/vm/Runtime.cpp b/js/src/vm/Runtime.cpp
  #endif
  #endif
  
  
      gc.finish();
      gc.finish();
-     atomsRealm_ = nullptr;
  
  
      js_delete(defaultFreeOp_.ref());
      js_delete(defaultFreeOp_.ref());
  
  
-@@ -565,17 +565,17 @@ JSRuntime::resetDefaultLocale()
+     js_free(defaultLocale);
+@@ -546,17 +546,17 @@ JSRuntime::resetDefaultLocale()
  const char*
  const char*
  JSRuntime::getDefaultLocale()
  JSRuntime::getDefaultLocale()
  {
  {
@@ -888,7 +888,7 @@ diff --git a/js/src/vm/Runtime.cpp b/js/src/vm/Runtime.cpp
 diff --git a/js/src/vm/Runtime.h b/js/src/vm/Runtime.h
 diff --git a/js/src/vm/Runtime.h b/js/src/vm/Runtime.h
 --- a/js/src/vm/Runtime.h
 --- a/js/src/vm/Runtime.h
 +++ b/js/src/vm/Runtime.h
 +++ b/js/src/vm/Runtime.h
-@@ -642,17 +642,17 @@ struct JSRuntime : public js::MallocProv
+@@ -647,17 +647,17 @@ struct JSRuntime : public js::MallocProv
      js::WriteOnceData<js::FreeOp*> defaultFreeOp_;
      js::WriteOnceData<js::FreeOp*> defaultFreeOp_;
  
  
    public:
    public:
@@ -910,7 +910,7 @@ diff --git a/js/src/vm/Runtime.h b/js/src/vm/Runtime.h
 diff --git a/js/src/vm/SelfHosting.cpp b/js/src/vm/SelfHosting.cpp
 diff --git a/js/src/vm/SelfHosting.cpp b/js/src/vm/SelfHosting.cpp
 --- a/js/src/vm/SelfHosting.cpp
 --- a/js/src/vm/SelfHosting.cpp
 +++ b/js/src/vm/SelfHosting.cpp
 +++ b/js/src/vm/SelfHosting.cpp
-@@ -2375,17 +2375,17 @@ static const JSFunctionSpec intrinsic_fu
+@@ -2398,17 +2398,17 @@ static const JSFunctionSpec intrinsic_fu
      JS_INLINABLE_FN("std_String_toLowerCase",    str_toLowerCase,              0,0, StringToLowerCase),
      JS_INLINABLE_FN("std_String_toLowerCase",    str_toLowerCase,              0,0, StringToLowerCase),
      JS_INLINABLE_FN("std_String_toUpperCase",    str_toUpperCase,              0,0, StringToUpperCase),
      JS_INLINABLE_FN("std_String_toUpperCase",    str_toUpperCase,              0,0, StringToUpperCase),
  
  

+ 7 - 7
frg/mozilla-release/work-js/1590907-5-72a1.patch

@@ -2,7 +2,7 @@
 # User Philip Chimento <philip.chimento@gmail.com>
 # User Philip Chimento <philip.chimento@gmail.com>
 # Date 1574753135 0
 # Date 1574753135 0
 # Node ID bfdd5f34f2f4a11b84742400bb3130192c89d4fb
 # Node ID bfdd5f34f2f4a11b84742400bb3130192c89d4fb
-# Parent  5627e3543d9292076fb2c53fcae8205ebd6fbc49
+# Parent  04d286e61ecd393ce7bf5b0985e19b45f9fb3b30
 Bug 1590907 - Make ENABLE_INTL_API and ENABLE_TYPED_OBJECTS into js-config macros. r=sfink,firefox-build-system-reviewers,mshal
 Bug 1590907 - Make ENABLE_INTL_API and ENABLE_TYPED_OBJECTS into js-config macros. r=sfink,firefox-build-system-reviewers,mshal
 
 
 Whether ENABLE_INTL_API and ENABLE_TYPED_OBJECTS are defined, affects
 Whether ENABLE_INTL_API and ENABLE_TYPED_OBJECTS are defined, affects
@@ -578,7 +578,7 @@ diff --git a/js/src/builtin/String.js b/js/src/builtin/String.js
 diff --git a/js/src/builtin/TestingFunctions.cpp b/js/src/builtin/TestingFunctions.cpp
 diff --git a/js/src/builtin/TestingFunctions.cpp b/js/src/builtin/TestingFunctions.cpp
 --- a/js/src/builtin/TestingFunctions.cpp
 --- a/js/src/builtin/TestingFunctions.cpp
 +++ b/js/src/builtin/TestingFunctions.cpp
 +++ b/js/src/builtin/TestingFunctions.cpp
-@@ -260,17 +260,17 @@ GetBuildConfiguration(JSContext* cx, uns
+@@ -259,17 +259,17 @@ GetBuildConfiguration(JSContext* cx, uns
  #ifdef ENABLE_BINARYDATA
  #ifdef ENABLE_BINARYDATA
      value = BooleanValue(true);
      value = BooleanValue(true);
  #else
  #else
@@ -799,7 +799,7 @@ new file mode 100644
 diff --git a/js/src/jsapi.h b/js/src/jsapi.h
 diff --git a/js/src/jsapi.h b/js/src/jsapi.h
 --- a/js/src/jsapi.h
 --- a/js/src/jsapi.h
 +++ b/js/src/jsapi.h
 +++ b/js/src/jsapi.h
-@@ -4908,19 +4908,19 @@ JS_GetDefaultLocale(JSContext* cx);
+@@ -4902,19 +4902,19 @@ JS_GetDefaultLocale(JSContext* cx);
   */
   */
  extern JS_PUBLIC_API(void)
  extern JS_PUBLIC_API(void)
  JS_ResetDefaultLocale(JSRuntime* rt);
  JS_ResetDefaultLocale(JSRuntime* rt);
@@ -1637,7 +1637,7 @@ diff --git a/js/src/vm/Runtime.cpp b/js/src/vm/Runtime.cpp
      allowContentJS_(true),
      allowContentJS_(true),
      atoms_(nullptr),
      atoms_(nullptr),
      atomsAddedWhileSweeping_(nullptr),
      atomsAddedWhileSweeping_(nullptr),
-@@ -327,17 +327,17 @@ JSRuntime::destroyRuntime()
+@@ -309,17 +309,17 @@ JSRuntime::destroyRuntime()
      MOZ_ASSERT(!hasHelperThreadZones());
      MOZ_ASSERT(!hasHelperThreadZones());
  
  
      /*
      /*
@@ -1652,11 +1652,11 @@ diff --git a/js/src/vm/Runtime.cpp b/js/src/vm/Runtime.cpp
  #endif
  #endif
  
  
      gc.finish();
      gc.finish();
-     atomsRealm_ = nullptr;
  
  
      js_delete(defaultFreeOp_.ref());
      js_delete(defaultFreeOp_.ref());
  
  
-@@ -565,17 +565,17 @@ JSRuntime::resetDefaultLocale()
+     js_free(defaultLocale);
+@@ -546,17 +546,17 @@ JSRuntime::resetDefaultLocale()
  const char*
  const char*
  JSRuntime::getDefaultLocale()
  JSRuntime::getDefaultLocale()
  {
  {
@@ -1678,7 +1678,7 @@ diff --git a/js/src/vm/Runtime.cpp b/js/src/vm/Runtime.cpp
 diff --git a/js/src/vm/Runtime.h b/js/src/vm/Runtime.h
 diff --git a/js/src/vm/Runtime.h b/js/src/vm/Runtime.h
 --- a/js/src/vm/Runtime.h
 --- a/js/src/vm/Runtime.h
 +++ b/js/src/vm/Runtime.h
 +++ b/js/src/vm/Runtime.h
-@@ -642,17 +642,17 @@ struct JSRuntime : public js::MallocProv
+@@ -647,17 +647,17 @@ struct JSRuntime : public js::MallocProv
      js::WriteOnceData<js::FreeOp*> defaultFreeOp_;
      js::WriteOnceData<js::FreeOp*> defaultFreeOp_;
  
  
    public:
    public:

+ 3 - 3
frg/mozilla-release/work-js/1619475-1-75a1.patch

@@ -2,7 +2,7 @@
 # User Steve Fink <sfink@mozilla.com>
 # User Steve Fink <sfink@mozilla.com>
 # Date 1583518058 0
 # Date 1583518058 0
 # Node ID c753faaef709238ccb8ce33e9f4830a4acb8f6b7
 # Node ID c753faaef709238ccb8ce33e9f4830a4acb8f6b7
-# Parent  a0199c06b271e564c9deb64503ea76d2cdc2cf53
+# Parent  7319881f6e05a562a88edb94d9c8adc3e7fb9436
 Bug 1619475 - partial Python 3 compatibility for jit-tests and jstests r=arai
 Bug 1619475 - partial Python 3 compatibility for jit-tests and jstests r=arai
 
 
 This fixes all of the jit-test problems I encountered, and fixes all but the wpt portion of jstests. This is unnecessary, but it also ports jstests from optparse to argparse (because optparse is deprecated, because I like argparse better, and because it happened to fix the minor compatibility issue I ran into even though it has a trivial fix on its own.)
 This fixes all of the jit-test problems I encountered, and fixes all but the wpt portion of jstests. This is unnecessary, but it also ports jstests from optparse to argparse (because optparse is deprecated, because I like argparse better, and because it happened to fix the minor compatibility issue I ran into even though it has a trivial fix on its own.)
@@ -517,12 +517,12 @@ diff --git a/js/src/tests/lib/tasks_unix.py b/js/src/tests/lib/tasks_unix.py
 +                b''.join(ended.err).decode(errors='replace'),
 +                b''.join(ended.err).decode(errors='replace'),
                  returncode,
                  returncode,
                  (datetime.now() - ended.start).total_seconds(),
                  (datetime.now() - ended.start).total_seconds(),
-                 timed_out(ended, timeout)))
+                 timed_out(ended, timeout),
+                 {'pid': ended.pid}))
      return tasks, finished
      return tasks, finished
  
  
  def kill_undead(tasks, timeout):
  def kill_undead(tasks, timeout):
      """
      """
-     Signal all children that are over the given timeout. Use SIGABRT first to
 diff --git a/js/src/tests/lib/tasks_win.py b/js/src/tests/lib/tasks_win.py
 diff --git a/js/src/tests/lib/tasks_win.py b/js/src/tests/lib/tasks_win.py
 --- a/js/src/tests/lib/tasks_win.py
 --- a/js/src/tests/lib/tasks_win.py
 +++ b/js/src/tests/lib/tasks_win.py
 +++ b/js/src/tests/lib/tasks_win.py

+ 45 - 0
frg/mozilla-release/work-js/1670130-83a1.patch

@@ -0,0 +1,45 @@
+# HG changeset patch
+# User Ricky Stewart <rstewart@mozilla.com>
+# Date 1602273092 0
+# Node ID ec24a434f5eaa10c6230a4bff6caa334f9103eae
+# Parent  bf336b289ea04a51bdc7d32e0c6b5b1756d5f424
+Bug 1670130 - Fix contract of `_execute_child()` in `ProcessHandlerMixin` under Python 3.9 on Windows r=firefox-build-system-reviewers,mhentges
+
+This updates the signature to match the actual signature which in 3.9 gained 4 additional arguments: `gid`, `gids`, `uid`, and `umask` (see [the source](https://github.com/python/cpython/blob/3.9/Lib/subprocess.py#L1330)).
+
+Differential Revision: https://phabricator.services.mozilla.com/D93121
+
+diff --git a/testing/mozbase/mozprocess/mozprocess/processhandler.py b/testing/mozbase/mozprocess/mozprocess/processhandler.py
+--- a/testing/mozbase/mozprocess/mozprocess/processhandler.py
++++ b/testing/mozbase/mozprocess/mozprocess/processhandler.py
+@@ -260,17 +260,29 @@ class ProcessHandlerMixin(object):
+             self._cleanup()
+             return self.returncode
+ 
+         """ Private Members of Process class """
+ 
+         if isWin:
+             # Redefine the execute child so that we can track process groups
+             def _execute_child(self, *args_tuple):
+-                if six.PY3:
++                # workaround for bug 1670130
++                if sys.hexversion >= 0x03090000:  # after 3.9.0
++                    (args, executable, preexec_fn, close_fds,
++                     pass_fds, cwd, env,
++                     startupinfo, creationflags, shell,
++                     p2cread, p2cwrite,
++                     c2pread, c2pwrite,
++                     errread, errwrite,
++                     restore_signals,
++                     gid, gids, uid,
++                     umask,
++                     start_new_session) = args_tuple
++                elif six.PY3:
+                     (args, executable, preexec_fn, close_fds,
+                      pass_fds, cwd, env,
+                      startupinfo, creationflags, shell,
+                      p2cread, p2cwrite,
+                      c2pread, c2pwrite,
+                      errread, errwrite,
+                      restore_signals, start_new_session) = args_tuple
+                 # workaround for bug 950894

+ 37 - 0
frg/mozilla-release/work-js/1716613-92a1.patch

@@ -0,0 +1,37 @@
+# HG changeset patch
+# User Mitchell Hentges <mhentges@mozilla.com>
+# Date 1627065947 0
+# Node ID 49ccf31999f61b522900aa8ae0d6518fc75d9545
+# Parent  a440103017806b6e0f3b22755e8bc8a0f0889bad
+Bug 1716613: Fix "'Process' has no attribute '_job'" r=ahal
+
+`self._job` is conditionally set. However, when it's not set, then
+`if self._job is None` raises an exception.
+
+Rather than having to check for `hasattr(self, "_job")`, defaulting
+`self._job` to `None` seems more elegant and resolves the issue.
+
+Differential Revision: https://phabricator.services.mozilla.com/D120754
+
+diff --git a/testing/mozbase/mozprocess/mozprocess/processhandler.py b/testing/mozbase/mozprocess/mozprocess/processhandler.py
+--- a/testing/mozbase/mozprocess/mozprocess/processhandler.py
++++ b/testing/mozbase/mozprocess/mozprocess/processhandler.py
+@@ -101,16 +101,18 @@ class ProcessHandlerMixin(object):
+                      universal_newlines=False,
+                      startupinfo=None,
+                      creationflags=0,
+                      ignore_children=False,
+                      encoding='utf-8'):
+ 
+             # Parameter for whether or not we should attempt to track child processes
+             self._ignore_children = ignore_children
++            self._job = None
++            self._io_port = None
+ 
+             if not self._ignore_children and not isWin:
+                 # Set the process group id for linux systems
+                 # Sets process group id to the pid of the parent process
+                 # NOTE: This prevents you from using preexec_fn and managing
+                 #       child processes, TODO: Ideally, find a way around this
+                 def setpgidfn():
+                     os.setpgid(0, 0)

+ 2 - 2
frg/mozilla-release/work-js/TOP-1566143-3-optchain-74a1-25313.patch

@@ -70,7 +70,7 @@ diff --git a/js/src/frontend/BytecodeEmitter.cpp b/js/src/frontend/BytecodeEmitt
 +        if (!bce_->emit1(JSOP_NOT))
 +        if (!bce_->emit1(JSOP_NOT))
 +            return false;
 +            return false;
 +
 +
-+        if (!ifEmitter.emitIf())
++        if (!ifEmitter.emitThen())
 +            return false;
 +            return false;
 +
 +
 +        if (!bce_->emitJump(JSOP_GOTO, &jumpShortCircuit_))
 +        if (!bce_->emitJump(JSOP_GOTO, &jumpShortCircuit_))
@@ -95,7 +95,7 @@ diff --git a/js/src/frontend/BytecodeEmitter.cpp b/js/src/frontend/BytecodeEmitt
 +        if (!bce_->emit1(JSOP_NOT))
 +        if (!bce_->emit1(JSOP_NOT))
 +            return false;
 +            return false;
 +
 +
-+        if (!ifEmitter.emitIf())
++        if (!ifEmitter.emitThen())
 +            return false;
 +            return false;
 +
 +
 +        if (!bce_->emit1(JSOP_POP))
 +        if (!bce_->emit1(JSOP_POP))

+ 28 - 0
frg/mozilla-release/work-js/TOP-NOBUG-PLASTER-25319.patch

@@ -0,0 +1,28 @@
+# HG changeset patch
+# User Frank-Rainer Grahl <frgrahl@gmx.net>
+# Date 1702940964 -3600
+# Parent  44813fa2c1023dfb4912fbb16f35cc6556959d01
+No bug - Do not require Bug 1468406 part 4 nonCCWRealm. r=me a=me
+
+diff --git a/js/src/vm/ObjectGroup.cpp b/js/src/vm/ObjectGroup.cpp
+--- a/js/src/vm/ObjectGroup.cpp
++++ b/js/src/vm/ObjectGroup.cpp
+@@ -317,17 +317,17 @@ JSObject::makeLazyGroup(JSContext* cx, H
+ 
+     if (obj->isNative() && obj->as<NativeObject>().isIndexed())
+         initialFlags |= OBJECT_FLAG_SPARSE_INDEXES;
+ 
+     if (obj->is<ArrayObject>() && obj->as<ArrayObject>().length() > INT32_MAX)
+         initialFlags |= OBJECT_FLAG_LENGTH_OVERFLOW;
+ 
+     Rooted<TaggedProto> proto(cx, obj->taggedProto());
+-    ObjectGroup* group = ObjectGroupRealm::makeGroup(cx, obj->nonCCWRealm(), obj->getClass(),
++    ObjectGroup* group = ObjectGroupRealm::makeGroup(cx, obj->realm(), obj->getClass(),
+                                                      proto, initialFlags);
+     if (!group)
+         return nullptr;
+ 
+     AutoEnterAnalysis enter(cx);
+ 
+     /* Fill in the type according to the state of this object. */
+ 

+ 20 - 21
frg/mozilla-release/work-js/TOP-NOBUG-REGEXP-04-1539690-68a1-25318.patch

@@ -1,13 +1,13 @@
 # HG changeset patch
 # HG changeset patch
 # User Dmitry Butskoy <buc@buc.me>
 # User Dmitry Butskoy <buc@buc.me>
 # Date 1690629350 -7200
 # Date 1690629350 -7200
-# Parent  fe924be919831487613948589e22ad7748c96cb3
+# Parent  961705c3600135d1067fc54a2548868993a93861
 No Bug - Import new regexp V8 engine. r=frg a=frg
 No Bug - Import new regexp V8 engine. r=frg a=frg
 
 
 diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp
 diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp
 --- a/dom/base/nsContentUtils.cpp
 --- a/dom/base/nsContentUtils.cpp
 +++ b/dom/base/nsContentUtils.cpp
 +++ b/dom/base/nsContentUtils.cpp
-@@ -7364,17 +7364,17 @@ nsContentUtils::IsPatternMatching(nsAStr
+@@ -7363,17 +7363,17 @@ nsContentUtils::IsPatternMatching(nsAStr
  
  
    // The pattern has to match the entire value.
    // The pattern has to match the entire value.
    aPattern.InsertLiteral(u"^(?:", 0);
    aPattern.InsertLiteral(u"^(?:", 0);
@@ -554,14 +554,14 @@ diff --git a/js/src/builtin/TestingFunctions.cpp b/js/src/builtin/TestingFunctio
  #include "js/Vector.h"
  #include "js/Vector.h"
  #include "js/Wrapper.h"
  #include "js/Wrapper.h"
  #include "util/StringBuffer.h"
  #include "util/StringBuffer.h"
-@@ -73,16 +74,19 @@
+@@ -72,16 +73,19 @@
+ #include "vm/NativeObject-inl.h"
  #include "vm/StringType-inl.h"
  #include "vm/StringType-inl.h"
  
  
  using namespace js;
  using namespace js;
  
  
  using mozilla::ArrayLength;
  using mozilla::ArrayLength;
  using mozilla::Maybe;
  using mozilla::Maybe;
- using mozilla::Move;
  
  
 +using JS::RegExpFlag;
 +using JS::RegExpFlag;
 +using JS::RegExpFlags;
 +using JS::RegExpFlags;
@@ -574,7 +574,7 @@ diff --git a/js/src/builtin/TestingFunctions.cpp b/js/src/builtin/TestingFunctio
  // OOM conditions.
  // OOM conditions.
  static mozilla::Atomic<bool> disableOOMFunctions(false);
  static mozilla::Atomic<bool> disableOOMFunctions(false);
  
  
-@@ -4797,17 +4801,17 @@ ParseRegExp(JSContext* cx, unsigned argc
+@@ -4796,17 +4800,17 @@ ParseRegExp(JSContext* cx, unsigned argc
          return false;
          return false;
      }
      }
  
  
@@ -593,7 +593,7 @@ diff --git a/js/src/builtin/TestingFunctions.cpp b/js/src/builtin/TestingFunctio
          RootedString flagStr(cx, args[1].toString());
          RootedString flagStr(cx, args[1].toString());
          if (!ParseRegExpFlags(cx, flagStr, &flags))
          if (!ParseRegExpFlags(cx, flagStr, &flags))
              return false;
              return false;
-@@ -4826,21 +4830,17 @@ ParseRegExp(JSContext* cx, unsigned argc
+@@ -4825,21 +4829,17 @@ ParseRegExp(JSContext* cx, unsigned argc
      if (!pattern)
      if (!pattern)
          return false;
          return false;
  
  
@@ -637,9 +637,9 @@ diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp
  #include "vm/RegExpObject.h"
  #include "vm/RegExpObject.h"
  #include "vm/StringType.h"
  #include "vm/StringType.h"
  #include "wasm/AsmJS.h"
  #include "wasm/AsmJS.h"
-@@ -60,16 +61,17 @@ using mozilla::Forward;
+@@ -59,16 +60,17 @@ using mozilla::AssertedCast;
+ using mozilla::Forward;
  using mozilla::Maybe;
  using mozilla::Maybe;
- using mozilla::Move;
  using mozilla::Nothing;
  using mozilla::Nothing;
  using mozilla::PodZero;
  using mozilla::PodZero;
  using mozilla::PointerRangeSize;
  using mozilla::PointerRangeSize;
@@ -655,7 +655,7 @@ diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp
  using AddDeclaredNamePtr = ParseContext::Scope::AddDeclaredNamePtr;
  using AddDeclaredNamePtr = ParseContext::Scope::AddDeclaredNamePtr;
  using BindingIter = ParseContext::Scope::BindingIter;
  using BindingIter = ParseContext::Scope::BindingIter;
  using UsedNamePtr = UsedNameTracker::UsedNameMap::Ptr;
  using UsedNamePtr = UsedNameTracker::UsedNameMap::Ptr;
-@@ -9369,17 +9371,17 @@ Parser<FullParseHandler, CharT>::newRegE
+@@ -9368,17 +9370,17 @@ Parser<FullParseHandler, CharT>::newRegE
      MOZ_ASSERT(!options().selfHostingMode);
      MOZ_ASSERT(!options().selfHostingMode);
  
  
      static_assert(mozilla::IsSame<CharT, char16_t>::value,
      static_assert(mozilla::IsSame<CharT, char16_t>::value,
@@ -674,7 +674,7 @@ diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp
  
  
      return handler.newRegExp(reobj, pos(), *this);
      return handler.newRegExp(reobj, pos(), *this);
  }
  }
-@@ -9391,20 +9393,20 @@ Parser<SyntaxParseHandler, CharT>::newRe
+@@ -9390,20 +9392,20 @@ Parser<SyntaxParseHandler, CharT>::newRe
      MOZ_ASSERT(!options().selfHostingMode);
      MOZ_ASSERT(!options().selfHostingMode);
  
  
      static_assert(mozilla::IsSame<CharT, char16_t>::value,
      static_assert(mozilla::IsSame<CharT, char16_t>::value,
@@ -903,7 +903,7 @@ diff --git a/js/src/frontend/TokenStream.h b/js/src/frontend/TokenStream.h
 diff --git a/js/src/irregexp/RegExpParser.cpp b/js/src/irregexp/RegExpParser.cpp
 diff --git a/js/src/irregexp/RegExpParser.cpp b/js/src/irregexp/RegExpParser.cpp
 --- a/js/src/irregexp/RegExpParser.cpp
 --- a/js/src/irregexp/RegExpParser.cpp
 +++ b/js/src/irregexp/RegExpParser.cpp
 +++ b/js/src/irregexp/RegExpParser.cpp
-@@ -31,25 +31,29 @@
+@@ -31,24 +31,28 @@
  #include "irregexp/RegExpParser.h"
  #include "irregexp/RegExpParser.h"
  
  
  #include "mozilla/ArrayUtils.h"
  #include "mozilla/ArrayUtils.h"
@@ -919,7 +919,6 @@ diff --git a/js/src/irregexp/RegExpParser.cpp b/js/src/irregexp/RegExpParser.cpp
  using namespace js;
  using namespace js;
  using namespace js::irregexp;
  using namespace js::irregexp;
  
  
- using mozilla::Move;
  using mozilla::PointerRangeSize;
  using mozilla::PointerRangeSize;
  
  
 +using JS::RegExpFlag;
 +using JS::RegExpFlag;
@@ -933,7 +932,7 @@ diff --git a/js/src/irregexp/RegExpParser.cpp b/js/src/irregexp/RegExpParser.cpp
      pending_empty_(false),
      pending_empty_(false),
      characters_(nullptr)
      characters_(nullptr)
  #ifdef DEBUG
  #ifdef DEBUG
-@@ -230,33 +234,35 @@ RegExpBuilder::AddQuantifierToAtom(int m
+@@ -229,33 +233,35 @@ RegExpBuilder::AddQuantifierToAtom(int m
  #ifdef DEBUG
  #ifdef DEBUG
      last_added_ = ADD_TERM;
      last_added_ = ADD_TERM;
  #endif
  #endif
@@ -977,7 +976,7 @@ diff --git a/js/src/irregexp/RegExpParser.cpp b/js/src/irregexp/RegExpParser.cpp
  }
  }
  
  
  template <typename CharT>
  template <typename CharT>
-@@ -1942,24 +1948,27 @@ RegExpParser<CharT>::ParseDisjunction()
+@@ -1941,24 +1947,27 @@ RegExpParser<CharT>::ParseDisjunction()
      }
      }
  }
  }
  
  
@@ -1010,7 +1009,7 @@ diff --git a/js/src/irregexp/RegExpParser.cpp b/js/src/irregexp/RegExpParser.cpp
              chars += 2;
              chars += 2;
              length -= 2;
              length -= 2;
          }
          }
-@@ -1970,48 +1979,59 @@ ParsePattern(frontend::TokenStreamAnyCha
+@@ -1969,48 +1978,59 @@ ParsePattern(frontend::TokenStreamAnyCha
          // are sure this will not affect how the RegExp is parsed.
          // are sure this will not affect how the RegExp is parsed.
          if (length >= 3 && !HasRegExpMetaChars(chars, length - 2) &&
          if (length >= 3 && !HasRegExpMetaChars(chars, length - 2) &&
              chars[length - 2] == '.' && chars[length - 1] == '*')
              chars[length - 2] == '.' && chars[length - 1] == '*')
@@ -1668,7 +1667,7 @@ diff --git a/js/src/vm/RegExpObject.cpp b/js/src/vm/RegExpObject.cpp
      JitCodeTables tables;
      JitCodeTables tables;
      irregexp::RegExpCode code = irregexp::CompilePattern(cx, re, &data, input,
      irregexp::RegExpCode code = irregexp::CompilePattern(cx, re, &data, input,
                                                           false /* global() */,
                                                           false /* global() */,
-@@ -1307,17 +1313,17 @@ RegExpRealm::sweep()
+@@ -1308,17 +1314,17 @@ RegExpRealm::sweep()
      if (optimizableRegExpInstanceShape_ &&
      if (optimizableRegExpInstanceShape_ &&
          IsAboutToBeFinalized(&optimizableRegExpInstanceShape_))
          IsAboutToBeFinalized(&optimizableRegExpInstanceShape_))
      {
      {
@@ -1687,7 +1686,7 @@ diff --git a/js/src/vm/RegExpObject.cpp b/js/src/vm/RegExpObject.cpp
      auto shared = Allocate<RegExpShared>(cx);
      auto shared = Allocate<RegExpShared>(cx);
      if (!shared)
      if (!shared)
          return nullptr;
          return nullptr;
-@@ -1330,17 +1336,17 @@ RegExpZone::get(JSContext* cx, HandleAto
+@@ -1331,17 +1337,17 @@ RegExpZone::get(JSContext* cx, HandleAto
      }
      }
  
  
      return shared;
      return shared;
@@ -1706,7 +1705,7 @@ diff --git a/js/src/vm/RegExpObject.cpp b/js/src/vm/RegExpObject.cpp
  
  
  size_t
  size_t
  RegExpZone::sizeOfExcludingThis(mozilla::MallocSizeOf mallocSizeOf)
  RegExpZone::sizeOfExcludingThis(mozilla::MallocSizeOf mallocSizeOf)
-@@ -1374,58 +1380,57 @@ js::CloneRegExpObject(JSContext* cx, Han
+@@ -1375,58 +1381,57 @@ js::CloneRegExpObject(JSContext* cx, Han
      clone->initAndZeroLastIndex(shared->getSource(), shared->getFlags(), cx);
      clone->initAndZeroLastIndex(shared->getSource(), shared->getFlags(), cx);
      clone->setShared(*shared);
      clone->setShared(*shared);
  
  
@@ -1776,7 +1775,7 @@ diff --git a/js/src/vm/RegExpObject.cpp b/js/src/vm/RegExpObject.cpp
      size_t len = linear->length();
      size_t len = linear->length();
  
  
      bool ok;
      bool ok;
-@@ -1453,28 +1458,28 @@ js::ParseRegExpFlags(JSContext* cx, JSSt
+@@ -1454,28 +1459,28 @@ js::ParseRegExpFlags(JSContext* cx, JSSt
  
  
  template<XDRMode mode>
  template<XDRMode mode>
  XDRResult
  XDRResult
@@ -1809,7 +1808,7 @@ diff --git a/js/src/vm/RegExpObject.cpp b/js/src/vm/RegExpObject.cpp
      }
      }
      return Ok();
      return Ok();
  }
  }
-@@ -1508,36 +1513,36 @@ JS::ubi::Concrete<RegExpShared>::size(mo
+@@ -1509,36 +1514,36 @@ JS::ubi::Concrete<RegExpShared>::size(mo
      return js::gc::Arena::thingSize(gc::AllocKind::REGEXP_SHARED) +
      return js::gc::Arena::thingSize(gc::AllocKind::REGEXP_SHARED) +
          get().sizeOfExcludingThis(mallocSizeOf);
          get().sizeOfExcludingThis(mallocSizeOf);
  }
  }
@@ -1850,7 +1849,7 @@ diff --git a/js/src/vm/RegExpObject.cpp b/js/src/vm/RegExpObject.cpp
  {
  {
      AssertHeapIsIdle();
      AssertHeapIsIdle();
      CHECK_REQUEST(cx);
      CHECK_REQUEST(cx);
-@@ -1610,25 +1615,25 @@ JS::ObjectIsRegExp(JSContext* cx, Handle
+@@ -1611,25 +1616,25 @@ JS::ObjectIsRegExp(JSContext* cx, Handle
      ESClass cls;
      ESClass cls;
      if (!GetBuiltinClass(cx, obj, &cls))
      if (!GetBuiltinClass(cx, obj, &cls))
          return false;
          return false;

+ 7 - 7
frg/mozilla-release/work-js/TOP-NOBUG-REGEXP-09-1627356-77a1-25318.patch

@@ -1,7 +1,7 @@
 # HG changeset patch
 # HG changeset patch
 # User Dmitry Butskoy <buc@buc.me>
 # User Dmitry Butskoy <buc@buc.me>
 # Date 1690629743 -7200
 # Date 1690629743 -7200
-# Parent  fdc34458689cdb6b287f1f940855c6cb895cdea5
+# Parent  2752e2891abdbe1a8c6deddf4e2fce8784d6c306
 No Bug - Import new regexp V8 engine. r=frg a=frg
 No Bug - Import new regexp V8 engine. r=frg a=frg
 
 
 hawkeye116477 <hawkeye116477@gmail.com>
 hawkeye116477 <hawkeye116477@gmail.com>
@@ -204,7 +204,7 @@ diff --git a/js/src/builtin/RegExp.cpp b/js/src/builtin/RegExp.cpp
 diff --git a/js/src/builtin/TestingFunctions.cpp b/js/src/builtin/TestingFunctions.cpp
 diff --git a/js/src/builtin/TestingFunctions.cpp b/js/src/builtin/TestingFunctions.cpp
 --- a/js/src/builtin/TestingFunctions.cpp
 --- a/js/src/builtin/TestingFunctions.cpp
 +++ b/js/src/builtin/TestingFunctions.cpp
 +++ b/js/src/builtin/TestingFunctions.cpp
-@@ -4860,38 +4860,29 @@ DisRegExp(JSContext* cx, unsigned argc, 
+@@ -4862,38 +4862,29 @@ DisRegExp(JSContext* cx, unsigned argc, 
  
  
      if (!args[0].isObject() || !args[0].toObject().is<RegExpObject>()) {
      if (!args[0].isObject() || !args[0].toObject().is<RegExpObject>()) {
          ReportUsageErrorASCII(cx, callee, "First argument must be a RegExp");
          ReportUsageErrorASCII(cx, callee, "First argument must be a RegExp");
@@ -248,7 +248,7 @@ diff --git a/js/src/builtin/TestingFunctions.cpp b/js/src/builtin/TestingFunctio
  #endif  // DEBUG && !JS_NEW_REGEXP
  #endif  // DEBUG && !JS_NEW_REGEXP
  
  
  static bool
  static bool
-@@ -5972,17 +5963,17 @@ gc::ZealModeHelpText),
+@@ -5974,17 +5965,17 @@ gc::ZealModeHelpText),
  
  
  static const JSFunctionSpecWithHelp FuzzingUnsafeTestingFunctions[] = {
  static const JSFunctionSpecWithHelp FuzzingUnsafeTestingFunctions[] = {
  #if defined(DEBUG) && !defined(JS_NEW_REGEXP)
  #if defined(DEBUG) && !defined(JS_NEW_REGEXP)
@@ -481,7 +481,7 @@ diff --git a/js/src/jit/CodeGenerator.cpp b/js/src/jit/CodeGenerator.cpp
  static void
  static void
  CopyStringChars(MacroAssembler& masm, Register to, Register from, Register len,
  CopyStringChars(MacroAssembler& masm, Register to, Register from, Register len,
                  Register byteOpScratch, size_t fromWidth, size_t toWidth);
                  Register byteOpScratch, size_t fromWidth, size_t toWidth);
-@@ -1965,23 +1939,27 @@ JitCompartment::generateRegExpMatcherStu
+@@ -1965,23 +1939,27 @@ JitRealm::generateRegExpMatcherStub(JSCo
  
  
      // The template object should have enough space for the maximum number of
      // The template object should have enough space for the maximum number of
      // pairs this stub can handle.
      // pairs this stub can handle.
@@ -510,7 +510,7 @@ diff --git a/js/src/jit/CodeGenerator.cpp b/js/src/jit/CodeGenerator.cpp
      Register object = temp1;
      Register object = temp1;
      Label matchResultFallback, matchResultJoin;
      Label matchResultFallback, matchResultJoin;
      TemplateObject templateObj(templateObject);
      TemplateObject templateObj(templateObject);
-@@ -2274,24 +2252,27 @@ JitCompartment::generateRegExpSearcherSt
+@@ -2274,24 +2252,27 @@ JitRealm::generateRegExpSearcherStub(JSC
      regs.take(lastIndex);
      regs.take(lastIndex);
  
  
      Register temp1 = regs.takeAny();
      Register temp1 = regs.takeAny();
@@ -540,7 +540,7 @@ diff --git a/js/src/jit/CodeGenerator.cpp b/js/src/jit/CodeGenerator.cpp
      Address stringIndexAddress(masm.getStackPointer(),
      Address stringIndexAddress(masm.getStackPointer(),
                                 pairsVectorStartOffset + offsetof(MatchPair, start));
                                 pairsVectorStartOffset + offsetof(MatchPair, start));
      Address stringLimitAddress(masm.getStackPointer(),
      Address stringLimitAddress(masm.getStackPointer(),
-@@ -2428,42 +2409,50 @@ JitCompartment::generateRegExpTesterStub
+@@ -2428,42 +2409,50 @@ JitRealm::generateRegExpTesterStub(JSCon
      regs.take(input);
      regs.take(input);
      regs.take(regexp);
      regs.take(regexp);
      regs.take(lastIndex);
      regs.take(lastIndex);
@@ -1062,7 +1062,7 @@ diff --git a/js/src/vm/RegExpShared.h b/js/src/vm/RegExpShared.h
  
  
      // Register a table with this RegExpShared, and take ownership.
      // Register a table with this RegExpShared, and take ownership.
      bool addTable(JitCodeTable table) {
      bool addTable(JitCodeTable table) {
-         return tables.append(Move(table));
+         return tables.append(std::move(table));
      }
      }
  
  
      /* Accessors */
      /* Accessors */

+ 2 - 2
frg/mozilla-release/work-js/TOP-NOBUG-REGEXP-10-1627838-77a1-25318.patch

@@ -1,7 +1,7 @@
 # HG changeset patch
 # HG changeset patch
 # User Dmitry Butskoy <buc@buc.me>
 # User Dmitry Butskoy <buc@buc.me>
 # Date 1690629756 -7200
 # Date 1690629756 -7200
-# Parent  acbdac69b9fb93c12fe2fa9316ef680f2126805d
+# Parent  eb9fde5268b50729c94797c19ab5cda7e17757df
 No Bug - Import new regexp V8 engine. r=frg a=frg
 No Bug - Import new regexp V8 engine. r=frg a=frg
 
 
 hawkeye116477 <hawkeye116477@gmail.com>
 hawkeye116477 <hawkeye116477@gmail.com>
@@ -475,7 +475,7 @@ diff --git a/js/src/vm/RegExpShared.h b/js/src/vm/RegExpShared.h
  
  
      // Register a table with this RegExpShared, and take ownership.
      // Register a table with this RegExpShared, and take ownership.
      bool addTable(JitCodeTable table) {
      bool addTable(JitCodeTable table) {
-         return tables.append(Move(table));
+         return tables.append(std::move(table));
      }
      }
  
  
      /* Accessors */
      /* Accessors */

+ 2 - 2
frg/mozilla-release/work-js/TOP-NOBUG-REGEXP-12-1628835-77a1-25318.patch

@@ -1,7 +1,7 @@
 # HG changeset patch
 # HG changeset patch
 # User Dmitry Butskoy <buc@buc.me>
 # User Dmitry Butskoy <buc@buc.me>
 # Date 1690629791 -7200
 # Date 1690629791 -7200
-# Parent  a8400f82cd56c8ca1fec0518071a2d9070e6b7ca
+# Parent  dfeb77067591aa9dc6a0e7e854012f9ee88ea333
 No Bug - Import new regexp V8 engine. r=frg a=frg
 No Bug - Import new regexp V8 engine. r=frg a=frg
 
 
 diff --git a/js/src/jit/CodeGenerator.cpp b/js/src/jit/CodeGenerator.cpp
 diff --git a/js/src/jit/CodeGenerator.cpp b/js/src/jit/CodeGenerator.cpp
@@ -605,7 +605,7 @@ diff --git a/js/src/vm/RegExpShared.h b/js/src/vm/RegExpShared.h
  
  
      // Register a table with this RegExpShared, and take ownership.
      // Register a table with this RegExpShared, and take ownership.
      bool addTable(JitCodeTable table) {
      bool addTable(JitCodeTable table) {
-         return tables.append(Move(table));
+         return tables.append(std::move(table));
      }
      }
  
  
      /* Accessors */
      /* Accessors */

+ 42 - 39
frg/mozilla-release/work-js/TOP-NOBUG-REGEXP-37-1642493-79a1-25318.patch

@@ -1,7 +1,7 @@
 # HG changeset patch
 # HG changeset patch
 # User Dmitry Butskoy <buc@buc.me>
 # User Dmitry Butskoy <buc@buc.me>
 # Date 1690631112 -7200
 # Date 1690631112 -7200
-# Parent  758ee1095a6877b70e430e3c9eb3315569693534
+# Parent  c41361ce071a64bfdbb31f7a29a7546d0986f039
 No Bug - Import new regexp V8 engine. r=frg a=frg
 No Bug - Import new regexp V8 engine. r=frg a=frg
 
 
 diff --git a/.clang-format-ignore b/.clang-format-ignore
 diff --git a/.clang-format-ignore b/.clang-format-ignore
@@ -228,7 +228,7 @@ diff --git a/js/src/builtin/TestingFunctions.cpp b/js/src/builtin/TestingFunctio
  #include "js/HashTable.h"
  #include "js/HashTable.h"
  #include "js/RegExpFlags.h"
  #include "js/RegExpFlags.h"
  #include "js/StructuredClone.h"
  #include "js/StructuredClone.h"
-@@ -4529,370 +4524,16 @@ GetModuleEnvironmentValue(JSContext* cx,
+@@ -4528,370 +4523,16 @@ GetModuleEnvironmentValue(JSContext* cx,
      if (args.rval().isMagic(JS_UNINITIALIZED_LEXICAL)) {
      if (args.rval().isMagic(JS_UNINITIALIZED_LEXICAL)) {
          ReportRuntimeLexicalError(cx, JSMSG_UNINITIALIZED_LEXICAL, id);
          ReportRuntimeLexicalError(cx, JSMSG_UNINITIALIZED_LEXICAL, id);
          return false;
          return false;
@@ -599,7 +599,7 @@ diff --git a/js/src/builtin/TestingFunctions.cpp b/js/src/builtin/TestingFunctio
  
  
      if (args.length() != 0) {
      if (args.length() != 0) {
          ReportUsageErrorASCII(cx, callee, "Wrong number of arguments");
          ReportUsageErrorASCII(cx, callee, "Wrong number of arguments");
-@@ -5960,26 +5601,16 @@ gc::ZealModeHelpText),
+@@ -5959,26 +5600,16 @@ gc::ZealModeHelpText),
  "    baselineCompile();  for (var i=0; i<1; i++) {} ...\n"
  "    baselineCompile();  for (var i=0; i<1; i++) {} ...\n"
  "  The interpreter will enter the new jitcode at the loop header unless\n"
  "  The interpreter will enter the new jitcode at the loop header unless\n"
  "  baselineCompile returned a string or threw an error.\n"),
  "  baselineCompile returned a string or threw an error.\n"),
@@ -654,7 +654,7 @@ diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp
  #include "vm/RegExpObject.h"
  #include "vm/RegExpObject.h"
  #include "vm/StringType.h"
  #include "vm/StringType.h"
  #include "wasm/AsmJS.h"
  #include "wasm/AsmJS.h"
-@@ -9401,24 +9396,19 @@ Parser<SyntaxParseHandler, CharT>::newRe
+@@ -9400,24 +9395,19 @@ Parser<SyntaxParseHandler, CharT>::newRe
                    "code below will need changing for UTF-8 handling");
                    "code below will need changing for UTF-8 handling");
  
  
      // Only check the regexp's syntax, but don't create a regexp object.
      // Only check the regexp's syntax, but don't create a regexp object.
@@ -1662,7 +1662,7 @@ deleted file mode 100644
 -    // Transfer ownership of |table| to the |tables| Vector.
 -    // Transfer ownership of |table| to the |tables| Vector.
 -    {
 -    {
 -        AutoEnterOOMUnsafeRegion oomUnsafe;
 -        AutoEnterOOMUnsafeRegion oomUnsafe;
--        if (!tables.append(Move(table)))
+-        if (!tables.append(std::move(table)))
 -            oomUnsafe.crash("RegExp table append");
 -            oomUnsafe.crash("RegExp table append");
 -    }
 -    }
 -}
 -}
@@ -5227,7 +5227,7 @@ deleted file mode 100644
 -        }
 -        }
 -    }
 -    }
 -
 -
--    alternatives_ = Move(new_alternatives);
+-    alternatives_ = std::move(new_alternatives);
 -    return this;
 -    return this;
 -}
 -}
 -
 -
@@ -6706,7 +6706,7 @@ deleted file mode 100644
 -    jit::Label cont, again;
 -    jit::Label cont, again;
 -    masm->Bind(&again);
 -    masm->Bind(&again);
 -    masm->LoadCurrentCharacter(max_lookahead, &cont, true);
 -    masm->LoadCurrentCharacter(max_lookahead, &cont, true);
--    masm->CheckBitInTable(Move(boolean_skip_table), &cont);
+-    masm->CheckBitInTable(std::move(boolean_skip_table), &cont);
 -    masm->AdvanceCurrentPosition(skip_distance);
 -    masm->AdvanceCurrentPosition(skip_distance);
 -    masm->JumpOrBacktrack(&again);
 -    masm->JumpOrBacktrack(&again);
 -    masm->Bind(&cont);
 -    masm->Bind(&cont);
@@ -7504,7 +7504,7 @@ deleted file mode 100644
 -    for (int i = 0; i < kSize; i++)
 -    for (int i = 0; i < kSize; i++)
 -        ba[i] = templ[i];
 -        ba[i] = templ[i];
 -
 -
--    masm->CheckBitInTable(Move(ba), on_bit_set);
+-    masm->CheckBitInTable(std::move(ba), on_bit_set);
 -    if (on_bit_clear != fall_through)
 -    if (on_bit_clear != fall_through)
 -        masm->JumpOrBacktrack(on_bit_clear);
 -        masm->JumpOrBacktrack(on_bit_clear);
 -}
 -}
@@ -9455,7 +9455,7 @@ deleted file mode 100644
 -    T& operator[](size_t index) { return vector_[index]; }
 -    T& operator[](size_t index) { return vector_[index]; }
 -    const T& operator[](size_t index) const { return vector_[index]; }
 -    const T& operator[](size_t index) const { return vector_[index]; }
 -
 -
--    InfallibleVector& operator=(InfallibleVector&& rhs) { vector_ = Move(rhs.vector_); return *this; }
+-    InfallibleVector& operator=(InfallibleVector&& rhs) { vector_ = std::move(rhs.vector_); return *this; }
 -};
 -};
 -
 -
 -class CharacterRange;
 -class CharacterRange;
@@ -12264,7 +12264,7 @@ diff --git a/js/src/irregexp/RegExpParser.cpp b/js/src/irregexp/RegExpParser.cpp
 deleted file mode 100644
 deleted file mode 100644
 --- a/js/src/irregexp/RegExpParser.cpp
 --- a/js/src/irregexp/RegExpParser.cpp
 +++ /dev/null
 +++ /dev/null
-@@ -1,2048 +0,0 @@
+@@ -1,2047 +0,0 @@
 -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 - * vim: set ts=8 sts=4 et sw=4 tw=99: */
 - * vim: set ts=8 sts=4 et sw=4 tw=99: */
 -
 -
@@ -12310,7 +12310,6 @@ deleted file mode 100644
 -using namespace js;
 -using namespace js;
 -using namespace js::irregexp;
 -using namespace js::irregexp;
 -
 -
--using mozilla::Move;
 -using mozilla::PointerRangeSize;
 -using mozilla::PointerRangeSize;
 -
 -
 -using JS::RegExpFlag;
 -using JS::RegExpFlag;
@@ -12580,7 +12579,7 @@ deleted file mode 100644
 -    va_list args;
 -    va_list args;
 -    va_start(args, errorNumber);
 -    va_start(args, errorNumber);
 -
 -
--    ReportCompileError(ts.context(), Move(err), nullptr, JSREPORT_ERROR, errorNumber, args);
+-    ReportCompileError(ts.context(), std::move(err), nullptr, JSREPORT_ERROR, errorNumber, args);
 -
 -
 -    va_end(args);
 -    va_end(args);
 -}
 -}
@@ -41942,7 +41941,7 @@ diff --git a/js/src/vm/JSContext.cpp b/js/src/vm/JSContext.cpp
      return true;
      return true;
  }
  }
  
  
-@@ -1341,19 +1332,17 @@ JSContext::~JSContext()
+@@ -1343,19 +1334,17 @@ JSContext::~JSContext()
      js::jit::Simulator::Destroy(simulator_);
      js::jit::Simulator::Destroy(simulator_);
  #endif
  #endif
  
  
@@ -41991,7 +41990,7 @@ diff --git a/js/src/vm/JSContext.h b/js/src/vm/JSContext.h
  struct DtoaState;
  struct DtoaState;
  
  
  namespace js {
  namespace js {
-@@ -346,23 +344,18 @@ struct JSContext : public JS::RootingCon
+@@ -353,23 +351,18 @@ struct JSContext : public JS::RootingCon
      mozilla::GenericErrorResult<JS::Error&> alreadyReportedError();
      mozilla::GenericErrorResult<JS::Error&> alreadyReportedError();
  
  
      /*
      /*
@@ -42783,7 +42782,7 @@ diff --git a/js/src/vm/RegExpObject.cpp b/js/src/vm/RegExpObject.cpp
                            size_t start,
                            size_t start,
                            VectorMatchPairs* matches)
                            VectorMatchPairs* matches)
  {
  {
-@@ -1533,37 +936,35 @@ RegExpRealm::createMatchResultTemplateOb
+@@ -1534,37 +937,35 @@ RegExpRealm::createMatchResultTemplateOb
  
  
      /* Set dummy input property */
      /* Set dummy input property */
      RootedValue inputVal(cx, StringValue(cx->runtime()->emptyString));
      RootedValue inputVal(cx, StringValue(cx->runtime()->emptyString));
@@ -42822,7 +42821,7 @@ diff --git a/js/src/vm/RegExpObject.cpp b/js/src/vm/RegExpObject.cpp
      AddTypePropertyId(cx, templateObject, JSID_VOID, TypeSet::UndefinedType());
      AddTypePropertyId(cx, templateObject, JSID_VOID, TypeSet::UndefinedType());
  
  
      matchResultTemplateObject_.set(templateObject);
      matchResultTemplateObject_.set(templateObject);
-@@ -1934,23 +1335,18 @@ JS_PUBLIC_API(bool) JS::CheckRegExpSynta
+@@ -1935,23 +1336,18 @@ JS_PUBLIC_API(bool) JS::CheckRegExpSynta
                                           MutableHandleValue error) {
                                           MutableHandleValue error) {
    AssertHeapIsIdle();
    AssertHeapIsIdle();
    CHECK_REQUEST(cx);
    CHECK_REQUEST(cx);
@@ -42964,10 +42963,10 @@ diff --git a/js/src/vm/RegExpShared.h b/js/src/vm/RegExpShared.h
      static int CompilationIndex(bool latin1) { return latin1 ? 0 : 1; }
      static int CompilationIndex(bool latin1) { return latin1 ? 0 : 1; }
  
  
      // Tables referenced by JIT code.
      // Tables referenced by JIT code.
-@@ -200,73 +184,57 @@ class RegExpShared : public gc::TenuredC
+@@ -200,73 +184,62 @@ class RegExpShared : public gc::TenuredC
      // Register a table with this RegExpShared, and take ownership.
      // Register a table with this RegExpShared, and take ownership.
      bool addTable(JitCodeTable table) {
      bool addTable(JitCodeTable table) {
-         return tables.append(Move(table));
+         return tables.append(std::move(table));
      }
      }
  
  
      /* Accessors */
      /* Accessors */
@@ -42989,21 +42988,19 @@ diff --git a/js/src/vm/RegExpShared.h b/js/src/vm/RegExpShared.h
 -  void useAtomMatch(HandleAtom pattern);
 -  void useAtomMatch(HandleAtom pattern);
 +    // Use simple string matching for this regexp.
 +    // Use simple string matching for this regexp.
 +    void useAtomMatch(HandleAtom pattern);
 +    void useAtomMatch(HandleAtom pattern);
-+
-+    // Use the regular expression engine for this regexp.
-+    void useRegExpMatch(size_t parenCount);
  
  
 -  // Use the regular expression engine for this regexp.
 -  // Use the regular expression engine for this regexp.
 -  void useRegExpMatch(size_t parenCount);
 -  void useRegExpMatch(size_t parenCount);
-+    static bool initializeNamedCaptures(JSContext* cx,
-+                                        HandleRegExpShared re,
-+                                        HandleNativeObject namedCaptures);
-+    PlainObject* getGroupsTemplate() { return groupsTemplate_; }
++    // Use the regular expression engine for this regexp.
++    void useRegExpMatch(size_t parenCount);
  
  
 -  static bool initializeNamedCaptures(JSContext* cx, HandleRegExpShared re,
 -  static bool initializeNamedCaptures(JSContext* cx, HandleRegExpShared re,
 -                                      HandleNativeObject namedCaptures);
 -                                      HandleNativeObject namedCaptures);
 -  PlainObject* getGroupsTemplate() { return groupsTemplate_; }
 -  PlainObject* getGroupsTemplate() { return groupsTemplate_; }
--
++    static bool initializeNamedCaptures(JSContext* cx, HandleRegExpShared re,
++                                        HandleNativeObject namedCaptures);
++    PlainObject* getGroupsTemplate() { return groupsTemplate_; }
+ 
 -  void tierUpTick();
 -  void tierUpTick();
 -  bool markedForTierUp(JSContext* cx) const;
 -  bool markedForTierUp(JSContext* cx) const;
 +    void tierUpTick();
 +    void tierUpTick();
@@ -43025,14 +43022,21 @@ diff --git a/js/src/vm/RegExpShared.h b/js/src/vm/RegExpShared.h
 -  void updateMaxRegisters(uint32_t numRegisters) {
 -  void updateMaxRegisters(uint32_t numRegisters) {
 -    maxRegisters_ = std::max(maxRegisters_, numRegisters);
 -    maxRegisters_ = std::max(maxRegisters_, numRegisters);
 -  }
 -  }
-+    void setByteCode(ByteCode* code, bool latin1) { compilation(latin1).byteCode = code; }
-+    ByteCode* getByteCode(bool latin1) const { return compilation(latin1).byteCode; }
-+    void setJitCode(jit::JitCode* code, bool latin1) { compilation(latin1).jitCode = code; }
-+    jit::JitCode* getJitCode(bool latin1) const { return compilation(latin1).jitCode; }
++    void setByteCode(ByteCode* code, bool latin1) {
++      compilation(latin1).byteCode = code;
++    }
++    ByteCode* getByteCode(bool latin1) const {
++      return compilation(latin1).byteCode;
++    }
++    void setJitCode(jit::JitCode* code, bool latin1) {
++      compilation(latin1).jitCode = code;
++    }
++    jit::JitCode* getJitCode(bool latin1) const {
++      return compilation(latin1).jitCode;
++    }
 +    uint32_t getMaxRegisters() const { return maxRegisters_; }
 +    uint32_t getMaxRegisters() const { return maxRegisters_; }
-+    void updateMaxRegisters(uint32_t numRegisters)
-+    {
-+        maxRegisters_ = std::max(maxRegisters_, numRegisters);
++    void updateMaxRegisters(uint32_t numRegisters) {
++      maxRegisters_ = std::max(maxRegisters_, numRegisters);
 +    }
 +    }
  
  
 -  uint32_t numNamedCaptures() const { return numNamedCaptures_; }
 -  uint32_t numNamedCaptures() const { return numNamedCaptures_; }
@@ -43044,11 +43048,10 @@ diff --git a/js/src/vm/RegExpShared.h b/js/src/vm/RegExpShared.h
 -
 -
 -#endif
 -#endif
 +    uint32_t numNamedCaptures() const { return numNamedCaptures_; }
 +    uint32_t numNamedCaptures() const { return numNamedCaptures_; }
-+    int32_t getNamedCaptureIndex(uint32_t idx) const
-+    {
-+        MOZ_ASSERT(idx < numNamedCaptures());
-+        MOZ_ASSERT(namedCaptureIndices_);
-+        return namedCaptureIndices_[idx];
++    int32_t getNamedCaptureIndex(uint32_t idx) const {
++      MOZ_ASSERT(idx < numNamedCaptures());
++      MOZ_ASSERT(namedCaptureIndices_);
++      return namedCaptureIndices_[idx];
 +    }
 +    }
  
  
      JSAtom* getSource() const           { return source; }
      JSAtom* getSource() const           { return source; }
@@ -43067,7 +43070,7 @@ diff --git a/js/src/vm/RegExpShared.h b/js/src/vm/RegExpShared.h
      bool multiline() const              { return flags.multiline(); }
      bool multiline() const              { return flags.multiline(); }
      bool dotAll() const                 { return flags.dotAll(); }
      bool dotAll() const                 { return flags.dotAll(); }
      bool unicode() const                { return flags.unicode(); }
      bool unicode() const                { return flags.unicode(); }
-@@ -295,21 +263,20 @@ class RegExpShared : public gc::TenuredC
+@@ -295,21 +268,20 @@ class RegExpShared : public gc::TenuredC
      }
      }
  
  
      static size_t offsetOfJitCode(bool latin1)
      static size_t offsetOfJitCode(bool latin1)

+ 6 - 6
frg/mozilla-release/work-js/TOP-NOBUG-REGEXP-42-1643171-79a1-25318.patch

@@ -1,7 +1,7 @@
 # HG changeset patch
 # HG changeset patch
 # User Dmitry Butskoy <buc@buc.me>
 # User Dmitry Butskoy <buc@buc.me>
 # Date 1690631408 -7200
 # Date 1690631408 -7200
-# Parent  807f865dc4779e1d45145fe0afc89858b4bbb66c
+# Parent  af0d6ebaeab8e20aa58c9ea4426d23fd439288ea
 No Bug - Import new regexp V8 engine. r=frg a=frg
 No Bug - Import new regexp V8 engine. r=frg a=frg
 
 
 diff --git a/js/src/irregexp/RegExpAPI.cpp b/js/src/irregexp/RegExpAPI.cpp
 diff --git a/js/src/irregexp/RegExpAPI.cpp b/js/src/irregexp/RegExpAPI.cpp
@@ -254,9 +254,9 @@ diff --git a/js/src/vm/JSContext.cpp b/js/src/vm/JSContext.cpp
 +         irregexp::IsolateSizeOfIncludingThis(isolate, mallocSizeOf);
 +         irregexp::IsolateSizeOfIncludingThis(isolate, mallocSizeOf);
  }
  }
  
  
- void
- JSContext::trace(JSTracer* trc)
+ #ifdef DEBUG
+ bool
+ JSContext::inAtomsZone() const
  {
  {
-     cycleDetectorVector().trace(trc);
-     geckoProfiler().trace(trc);
- 
+     return zone_->isAtomsZone();
+ }

+ 2 - 2
frg/mozilla-release/work-js/TOP-NOBUG-optchain-baselinejit-25313.patch

@@ -111,7 +111,7 @@ diff --git a/js/src/frontend/BytecodeEmitter.cpp b/js/src/frontend/BytecodeEmitt
          if (!bce_->emit1(JSOP_NOT))
          if (!bce_->emit1(JSOP_NOT))
              return false;
              return false;
  
  
-         if (!ifEmitter.emitIf())
+         if (!ifEmitter.emitThen())
              return false;
              return false;
  
  
 -        if (!bce_->emitJump(JSOP_GOTO, &jumpShortCircuit_))
 -        if (!bce_->emitJump(JSOP_GOTO, &jumpShortCircuit_))
@@ -142,7 +142,7 @@ diff --git a/js/src/frontend/BytecodeEmitter.cpp b/js/src/frontend/BytecodeEmitt
          if (!bce_->emit1(JSOP_NOT))
          if (!bce_->emit1(JSOP_NOT))
              return false;
              return false;
  
  
-         if (!ifEmitter.emitIf())
+         if (!ifEmitter.emitThen())
              return false;
              return false;
  
  
 +        // Perform ShortCircuiting code for Call and break
 +        // Perform ShortCircuiting code for Call and break

+ 2 - 2
frg/mozilla-release/work-js/TOP-NOBUG-skiptests-25312.patch

@@ -1,7 +1,7 @@
 # HG changeset patch
 # HG changeset patch
 # User Frank-Rainer Grahl <frgrahl@gmx.net>
 # User Frank-Rainer Grahl <frgrahl@gmx.net>
 # Date 1645725479 -3600
 # Date 1645725479 -3600
-# Parent  4969ecf13b666af960c3ac5d7f1c47e5e8634b3a
+# Parent  d8c78353f86e6546ecd013ea6919fc5d20dffab9
 No Bug - Skip failing tests for now. r=me a=me
 No Bug - Skip failing tests for now. r=me a=me
 
 
 diff --git a/js/xpconnect/tests/mochitest/mochitest.ini b/js/xpconnect/tests/mochitest/mochitest.ini
 diff --git a/js/xpconnect/tests/mochitest/mochitest.ini b/js/xpconnect/tests/mochitest/mochitest.ini
@@ -9,7 +9,7 @@ diff --git a/js/xpconnect/tests/mochitest/mochitest.ini b/js/xpconnect/tests/moc
 +++ b/js/xpconnect/tests/mochitest/mochitest.ini
 +++ b/js/xpconnect/tests/mochitest/mochitest.ini
 @@ -101,8 +101,9 @@ support-files =
 @@ -101,8 +101,9 @@ support-files =
  [test_getWebIDLCaller.html]
  [test_getWebIDLCaller.html]
- skip-if = (debug == false || os == "android")
+ skip-if = (debug == false)
  [test_nac.xhtml]
  [test_nac.xhtml]
  [test_nukeContentWindow.html]
  [test_nukeContentWindow.html]
  [test_sameOriginPolicy.html]
  [test_sameOriginPolicy.html]

+ 28 - 0
frg/mozilla-release/work-js/fixit.patch

@@ -0,0 +1,28 @@
+# HG changeset patch
+# User Frank-Rainer Grahl <frgrahl@gmx.net>
+# Date 1702930426 -3600
+# Parent  69ac27c69fc6b15b4b9840d1df166f784a1357c3
+fix patch
+
+diff --git a/js/xpconnect/src/XPCJSRuntime.cpp b/js/xpconnect/src/XPCJSRuntime.cpp
+--- a/js/xpconnect/src/XPCJSRuntime.cpp
++++ b/js/xpconnect/src/XPCJSRuntime.cpp
+@@ -2247,17 +2247,17 @@ class XPCJSRuntimeStats : public JS::Run
+         xpc::ZoneStatsExtras* extras = new xpc::ZoneStatsExtras;
+         extras->pathPrefix.AssignLiteral("explicit/js-non-window/zones/");
+ 
+         // Get some global in this zone.
+         Rooted<Realm*> realm(cx, js::GetAnyRealmInZone(zone));
+         if (realm) {
+             RootedObject global(cx, JS::GetRealmGlobalOrNull(realm));
+             if (global) {
+-                RefPtr<nsGlobalWindowInner> window;
++                RefPtr<nsGlobalWindow> window;
+                 if (NS_SUCCEEDED(UNWRAP_OBJECT(Window, global, window))) {
+                     // The global is a |window| object.  Use the path prefix that
+                     // we should have already created for it.
+                     if (mTopWindowPaths->Get(window->WindowID(),
+                                              &extras->pathPrefix))
+                         extras->pathPrefix.AppendLiteral("/js-");
+                 }
+             }

+ 1 - 1
frg/mozilla-release/work-js/mozilla-central-push_420689.patch

@@ -3009,7 +3009,7 @@ diff --git a/js/xpconnect/src/XPCJSRuntime.cpp b/js/xpconnect/src/XPCJSRuntime.c
 +        if (realm) {
 +        if (realm) {
 +            RootedObject global(cx, JS::GetRealmGlobalOrNull(realm));
 +            RootedObject global(cx, JS::GetRealmGlobalOrNull(realm));
 +            if (global) {
 +            if (global) {
-+                RefPtr<nsGlobalWindowInner> window;
++                RefPtr<nsGlobalWindow> window;
 +                if (NS_SUCCEEDED(UNWRAP_OBJECT(Window, global, window))) {
 +                if (NS_SUCCEEDED(UNWRAP_OBJECT(Window, global, window))) {
 +                    // The global is a |window| object.  Use the path prefix that
 +                    // The global is a |window| object.  Use the path prefix that
 +                    // we should have already created for it.
 +                    // we should have already created for it.

+ 0 - 36
frg/mozilla-release/work-js/mozilla-central-push_420936.patch

@@ -1,36 +0,0 @@
-# HG changeset patch
-# User qiaopengcheng <qiaopengcheng-hf@loongson.cn>
-# Date 1527805980 14400
-#      Thu May 31 18:33:00 2018 -0400
-# Node ID ca30bde6447ee796c14d0777a1a1fcd64fab690f
-# Parent  ddcbbad1f728161e18911d3af93a9495733c6f00
-Bug 1465770 - mips64: convertDoubleToInt32 cp1_fcsr error. r=dragan.mladjenovic
-
-diff --git a/js/src/jit/mips64/MacroAssembler-mips64.cpp b/js/src/jit/mips64/MacroAssembler-mips64.cpp
---- a/js/src/jit/mips64/MacroAssembler-mips64.cpp
-+++ b/js/src/jit/mips64/MacroAssembler-mips64.cpp
-@@ -107,21 +107,22 @@ MacroAssemblerMIPS64Compat::convertDoubl
-                                                  Label* fail, bool negativeZeroCheck)
- {
-     if (negativeZeroCheck) {
-         moveFromDouble(src, dest);
-         ma_drol(dest, dest, Imm32(1));
-         ma_b(dest, Imm32(1), fail, Assembler::Equal);
-     }
- 
--    // Truncate double to int ; if result is inexact fail
-+    // Truncate double to int ; if result is inexact or invalid fail.
-     as_truncwd(ScratchFloat32Reg, src);
-     as_cfc1(ScratchRegister, Assembler::FCSR);
-     moveFromFloat32(ScratchFloat32Reg, dest);
--    ma_ext(ScratchRegister, ScratchRegister, Assembler::CauseI, 1);
-+    ma_ext(ScratchRegister, ScratchRegister, Assembler::CauseI, 6);
-+    as_andi(ScratchRegister, ScratchRegister, 0x11);//masking for Inexact and Invalid flag.
-     ma_b(ScratchRegister, Imm32(0), fail, Assembler::NotEqual);
- }
- 
- // Checks whether a float32 is representable as a 32-bit integer. If so, the
- // integer is written to the output register. Otherwise, a bailout is taken to
- // the given snapshot. This function overwrites the scratch float register.
- void
- MacroAssemblerMIPS64Compat::convertFloat32ToInt32(FloatRegister src, Register dest,

+ 0 - 40
frg/mozilla-release/work-js/mozilla-central-push_420937.patch

@@ -1,40 +0,0 @@
-# HG changeset patch
-# User qiaopengcheng <qiaopengcheng-hf@loongson.cn>
-# Date 1527836280 14400
-#      Fri Jun 01 02:58:00 2018 -0400
-# Node ID af6951f3fd418e6f363eaca1fb286658c627e57f
-# Parent  ca30bde6447ee796c14d0777a1a1fcd64fab690f
-Bug 1465770 - mips32: convertDoubleToInt32 cp1_fcsr error. r=dragan.mladjenovic
-
-diff --git a/js/src/jit/mips32/MacroAssembler-mips32.cpp b/js/src/jit/mips32/MacroAssembler-mips32.cpp
---- a/js/src/jit/mips32/MacroAssembler-mips32.cpp
-+++ b/js/src/jit/mips32/MacroAssembler-mips32.cpp
-@@ -127,21 +127,26 @@ MacroAssemblerMIPSCompat::convertDoubleT
-     if (negativeZeroCheck) {
-         moveFromDoubleHi(src, dest);
-         moveFromDoubleLo(src, SecondScratchReg);
-         ma_xor(dest, Imm32(INT32_MIN));
-         ma_or(dest, SecondScratchReg);
-         ma_b(dest, Imm32(0), fail, Assembler::Equal);
-     }
- 
--    // Truncate double to int ; if result is inexact fail
-+    // Truncate double to int ; if result is inexact or invalid fail.
-     as_truncwd(ScratchFloat32Reg, src);
-     as_cfc1(ScratchRegister, Assembler::FCSR);
-     moveFromFloat32(ScratchFloat32Reg, dest);
--    ma_ext(ScratchRegister, ScratchRegister, Assembler::CauseI, 1);
-+    ma_ext(ScratchRegister, ScratchRegister, Assembler::CauseI, 6);
-+    // Here adding the masking andi instruction just for a precaution.
-+    // For the instruction of trunc.*.*, the Floating Point Exceptions can be
-+    // only Inexact, Invalid Operation, Unimplemented Operation.
-+    // Leaving it maybe is also ok.
-+    as_andi(ScratchRegister, ScratchRegister, 0x11);
-     ma_b(ScratchRegister, Imm32(0), fail, Assembler::NotEqual);
- }
- 
- // Checks whether a float32 is representable as a 32-bit integer. If so, the
- // integer is written to the output register. Otherwise, a bailout is taken to
- // the given snapshot. This function overwrites the scratch float register.
- void
- MacroAssemblerMIPSCompat::convertFloat32ToInt32(FloatRegister src, Register dest,

+ 1 - 1
frg/mozilla-release/work-js/mozilla-central-push_421578.patch

@@ -235,7 +235,7 @@ diff --git a/js/xpconnect/src/XPCJSRuntime.cpp b/js/xpconnect/src/XPCJSRuntime.c
          bool needZone = true;
          bool needZone = true;
          RootedObject global(cx, JS::GetRealmGlobalOrNull(realm));
          RootedObject global(cx, JS::GetRealmGlobalOrNull(realm));
          if (global) {
          if (global) {
-             RefPtr<nsGlobalWindowInner> window;
+             RefPtr<nsGlobalWindow> window;
              if (NS_SUCCEEDED(UNWRAP_OBJECT(Window, global, window))) {
              if (NS_SUCCEEDED(UNWRAP_OBJECT(Window, global, window))) {
 @@ -2223,20 +2222,22 @@ class XPCJSRuntimeStats : public JS::Run
 @@ -2223,20 +2222,22 @@ class XPCJSRuntimeStats : public JS::Run
                  extras->jsPathPrefix.AssignLiteral("explicit/js-non-window/zones/");
                  extras->jsPathPrefix.AssignLiteral("explicit/js-non-window/zones/");

+ 224 - 216
frg/mozilla-release/work-js/series

@@ -3923,7 +3923,7 @@ NOBUG-20231031-formattingfixes-253.patch
 1464134-7-62a1.patch
 1464134-7-62a1.patch
 1464134-8-62a1.patch
 1464134-8-62a1.patch
 1465396-62a1.patch
 1465396-62a1.patch
-mozilla-central-push_420625.patch
+1464266-62a1.patch
 mozilla-central-push_420626.patch
 mozilla-central-push_420626.patch
 mozilla-central-push_420632.patch
 mozilla-central-push_420632.patch
 mozilla-central-push_420633.patch
 mozilla-central-push_420633.patch
@@ -3958,8 +3958,8 @@ mozilla-central-push_420928.patch
 mozilla-central-push_420929.patch
 mozilla-central-push_420929.patch
 mozilla-central-push_420932.patch
 mozilla-central-push_420932.patch
 mozilla-central-push_420933.patch
 mozilla-central-push_420933.patch
-mozilla-central-push_420936.patch
-mozilla-central-push_420937.patch
+1465770-1-62a1.patch
+1465770-2-62a1.patch
 1466168-PARTIAL-js-62a1.patch
 1466168-PARTIAL-js-62a1.patch
 mozilla-central-push_420974.patch
 mozilla-central-push_420974.patch
 mozilla-central-push_420975.patch
 mozilla-central-push_420975.patch
@@ -3971,217 +3971,7 @@ mozilla-central-push_420988.patch
 mozilla-central-push_420990.patch
 mozilla-central-push_420990.patch
 mozilla-central-push_420991.patch
 mozilla-central-push_420991.patch
 mozilla-central-push_420992.patch
 mozilla-central-push_420992.patch
-I-am-here.patch
-aaaaaaaaaaaaaaaaaaaaaaa
-mozilla-central-push_421046.patch
-mozilla-central-push_421047.patch
-mozilla-central-push_421048.patch
-mozilla-central-push_421049.patch
-mozilla-central-push_421051.patch
-mozilla-central-push_421052.patch
-mozilla-central-push_421053.patch
-mozilla-central-push_421054.patch
-mozilla-central-push_421066.patch
-mozilla-central-push_421127.patch
-mozilla-central-push_421165.patch
-mozilla-central-push_421166.patch
-mozilla-central-push_421167.patch
-mozilla-central-push_421168.patch
-mozilla-central-push_421179.patch
-mozilla-central-push_421200.patch
-mozilla-central-push_421291.patch
-mozilla-central-push_421379.patch
-mozilla-central-push_421382.patch
-mozilla-central-push_421411.patch
-mozilla-central-push_421516.patch
-mozilla-central-push_421533.patch
-mozilla-central-push_421547.patch
-mozilla-central-push_421548.patch
-mozilla-central-push_421577.patch
-mozilla-central-push_421578.patch
-mozilla-central-push_421579.patch
-mozilla-central-push_421580.patch
-mozilla-central-push_421582.patch
-mozilla-central-push_421583.patch
-mozilla-central-push_421585.patch
-mozilla-central-push_421586.patch
-mozilla-central-push_421587.patch
-mozilla-central-push_421588.patch
-mozilla-central-push_421589.patch
-mozilla-central-push_421590.patch
-mozilla-central-push_421593.patch
-mozilla-central-push_421681.patch
-mozilla-central-push_421691.patch
-mozilla-central-push_421776.patch
-mozilla-central-push_421777.patch
-mozilla-central-push_421779.patch
-mozilla-central-push_421780.patch
-mozilla-central-push_421781.patch
-mozilla-central-push_421795.patch
-mozilla-central-push_421796.patch
-mozilla-central-push_421797.patch
-mozilla-central-push_421799.patch
-mozilla-central-push_421800.patch
-mozilla-central-push_421801.patch
-mozilla-central-push_421802.patch
-mozilla-central-push_421809.patch
-mozilla-central-push_421810.patch
-mozilla-central-push_421811.patch
-mozilla-central-push_421824.patch
-mozilla-central-push_421860.patch
-mozilla-central-push_421898.patch
-mozilla-central-push_421908.patch
-mozilla-central-push_421909.patch
-mozilla-central-push_421912.patch
-mozilla-central-push_421919.patch
-mozilla-central-push_421920.patch
-mozilla-central-push_421921.patch
-mozilla-central-push_421922.patch
-mozilla-central-push_421923.patch
-mozilla-central-push_421924.patch
-mozilla-central-push_421925.patch
-mozilla-central-push_421927.patch
-mozilla-central-push_421928.patch
-mozilla-central-push_421929.patch
-mozilla-central-push_422011.patch
-mozilla-central-push_422012.patch
-mozilla-central-push_422013.patch
-mozilla-central-push_422014.patch
-mozilla-central-push_422015.patch
-mozilla-central-push_422043.patch
-mozilla-central-push_422046.patch
-mozilla-central-push_422049.patch
-mozilla-central-push_422050.patch
-mozilla-central-push_422052.patch
-mozilla-central-push_422053.patch
-mozilla-central-push_422054.patch
-mozilla-central-push_422055.patch
-mozilla-central-push_422056.patch
-mozilla-central-push_422291.patch
-mozilla-central-push_422298.patch
-mozilla-central-push_422313.patch
-mozilla-central-push_422372.patch
-mozilla-central-push_422398.patch
-mozilla-central-push_422399.patch
-mozilla-central-push_422427.patch
-mozilla-central-push_422484.patch
-mozilla-central-push_422485.patch
-mozilla-central-push_422488.patch
-mozilla-central-push_422489.patch
-mozilla-central-push_422490.patch
-mozilla-central-push_422502.patch
-mozilla-central-push_422503.patch
-mozilla-central-push_422504.patch
-mozilla-central-push_422505.patch
-mozilla-central-push_422506.patch
-mozilla-central-push_422507.patch
-mozilla-central-push_422508.patch
-mozilla-central-push_422509.patch
-mozilla-central-push_422510.patch
-mozilla-central-push_422511.patch
-mozilla-central-push_422512.patch
-mozilla-central-push_422513.patch
-mozilla-central-push_422514.patch
-mozilla-central-push_422515.patch
-mozilla-central-push_422516.patch
-mozilla-central-push_422517.patch
-mozilla-central-push_422551.patch
-mozilla-central-push_422552.patch
-mozilla-central-push_422553.patch
-mozilla-central-push_422554.patch
-mozilla-central-push_422555.patch
-mozilla-central-push_422556.patch
-mozilla-central-push_422557.patch
-mozilla-central-push_422558.patch
-mozilla-central-push_422613.patch
-mozilla-central-push_422635.patch
-mozilla-central-push_422644.patch
-mozilla-central-push_422645.patch
-mozilla-central-push_422648.patch
-mozilla-central-push_422656.patch
-mozilla-central-push_422766.patch
-mozilla-central-push_422771.patch
-mozilla-central-push_422772.patch
-mozilla-central-push_422774.patch
-mozilla-central-push_422799.patch
-mozilla-central-push_422800.patch
-mozilla-central-push_422801.patch
-mozilla-central-push_422802.patch
-mozilla-central-push_422803.patch
-mozilla-central-push_422819.patch
-mozilla-central-push_422885.patch
-mozilla-central-push_422903.patch
-mozilla-central-push_422904.patch
-mozilla-central-push_422905.patch
-mozilla-central-push_422913.patch
-mozilla-central-push_422914.patch
-mozilla-central-push_422915.patch
-mozilla-central-push_422916.patch
-mozilla-central-push_422917.patch
-mozilla-central-push_422918.patch
-mozilla-central-push_422919.patch
-mozilla-central-push_422969.patch
-mozilla-central-push_422970.patch
-mozilla-central-push_422976.patch
-mozilla-central-push_423054.patch
-mozilla-central-push_423129.patch
-mozilla-central-push_423130.patch
-mozilla-central-push_423131.patch
-mozilla-central-push_423135.patch
-mozilla-central-push_423155.patch
-mozilla-central-push_423157.patch
-mozilla-central-push_423158.patch
-mozilla-central-push_423159.patch
-mozilla-central-push_423160.patch
-mozilla-central-push_423175.patch
-mozilla-central-push_423178.patch
-mozilla-central-push_423179.patch
-mozilla-central-push_423198.patch
-mozilla-central-push_423199.patch
-mozilla-central-push_423200.patch
-mozilla-central-push_423218.patch
-mozilla-central-push_423250.patch
-mozilla-central-push_423251.patch
-mozilla-central-push_423252.patch
-mozilla-central-push_423253.patch
-mozilla-central-push_423254.patch
-mozilla-central-push_423255.patch
-mozilla-central-push_423256.patch
-mozilla-central-push_423257.patch
-mozilla-central-push_423265.patch
-mozilla-central-push_423270.patch
-mozilla-central-push_423286.patch
-mozilla-central-push_423303.patch
-mozilla-central-push_423353.patch
-mozilla-central-push_423354.patch
-mozilla-central-push_423355.patch
-mozilla-central-push_423356.patch
-mozilla-central-push_423357.patch
-mozilla-central-push_423358.patch
-mozilla-central-push_423359.patch
-mozilla-central-push_423362.patch
-mozilla-central-push_423363.patch
-mozilla-central-push_423364.patch
-mozilla-central-push_423384.patch
-mozilla-central-push_423385.patch
-mozilla-central-push_423401.patch
-mozilla-central-push_423433.patch
-mozilla-central-push_423434.patch
-mozilla-central-push_423435.patch
-mozilla-central-push_423436.patch
-mozilla-central-push_423440.patch
-bbbbbbbbbbbbbbbbbbbbbbbbbb
-1465695
-1461305
-1466363
-1478503
-1463371
-1494752 check 604 patch
-1532851
-1449033
-1485698
-1466487
-cccccccccccccccccccccccccccc
+taken-out-stuff-comes-here.patch
 1454868-62a1.patch
 1454868-62a1.patch
 1464082-62a1.patch
 1464082-62a1.patch
 1465274-62a1.patch
 1465274-62a1.patch
@@ -4203,8 +3993,6 @@ cccccccccccccccccccccccccccc
 1459274-62a1.patch
 1459274-62a1.patch
 1464680-62a1.patch
 1464680-62a1.patch
 1463581-2-62a1.patch
 1463581-2-62a1.patch
-1465770-1-62a1.patch
-1465770-2-62a1.patch
 1466066-62a1.patch
 1466066-62a1.patch
 1237182-13-62a1.patch
 1237182-13-62a1.patch
 1237182-14-62a1.patch
 1237182-14-62a1.patch
@@ -6845,6 +6633,9 @@ NOBUG-removemobilethemes-25318.patch
 1837261-2-version-beta-mr-25318.patch
 1837261-2-version-beta-mr-25318.patch
 1861842-version-release-mr-25318.patch
 1861842-version-release-mr-25318.patch
 1861843-1-version-prebeta-mr-25319.patch
 1861843-1-version-prebeta-mr-25319.patch
+1670130-83a1.patch
+1716613-92a1.patch
+
 PPPPPPP-check_stdcxx-warn.patch
 PPPPPPP-check_stdcxx-warn.patch
 PPPPPPP-NOBUG-PLASTER-getrandom.patch
 PPPPPPP-NOBUG-PLASTER-getrandom.patch
 PPPPPPP-NSSgetentropy.patch
 PPPPPPP-NSSgetentropy.patch
@@ -6932,7 +6723,10 @@ TOP-1859635-NSS3901-11506.patch
 TOP-NOBUG-PLASTER-fix-strip-25319.patch
 TOP-NOBUG-PLASTER-fix-strip-25319.patch
 TOP-1707096-91a1.patch
 TOP-1707096-91a1.patch
 TOP-NOBUG-fixcompile-25319.patch
 TOP-NOBUG-fixcompile-25319.patch
+1333140-2no1-59a1.patch
+1450182-61a1.patch
 1470250-1-63a1.patch
 1470250-1-63a1.patch
+TOP-NOBUG-PLASTER-25319.patch
 
 
 
 
 
 
@@ -6984,11 +6778,225 @@ TOP-NOBUG-REGEXP-43-1691184-88a1-25318.patch
 TOP-NOBUG-REGEXP-44-irregexp-25318.patch
 TOP-NOBUG-REGEXP-44-irregexp-25318.patch
 TOP-NOBUG-REGEXP-45-final-25318.patch
 TOP-NOBUG-REGEXP-45-final-25318.patch
 TOP-NOBUG-REGEXP-46-fixes-25318.patch
 TOP-NOBUG-REGEXP-46-fixes-25318.patch
+fixit.patch
 
 
 bumm-compile-error
 bumm-compile-error
 L-1462261-1-62a1.patch
 L-1462261-1-62a1.patch
 L-1462261-2-62a1.patch
 L-1462261-2-62a1.patch
+1473003-1-63a1.patch
 the-taken-out-stuff-start.patch
 the-taken-out-stuff-start.patch
+I-am-here.patch
+aaaaaaaaaaaaaaaaaaaaaaa
+mozilla-central-push_421046.patch
+mozilla-central-push_421047.patch
+mozilla-central-push_421048.patch
+mozilla-central-push_421049.patch
+mozilla-central-push_421051.patch
+mozilla-central-push_421052.patch
+mozilla-central-push_421053.patch
+mozilla-central-push_421054.patch
+mozilla-central-push_421066.patch
+mozilla-central-push_421127.patch
+mozilla-central-push_421165.patch
+mozilla-central-push_421166.patch
+mozilla-central-push_421167.patch
+mozilla-central-push_421168.patch
+mozilla-central-push_421179.patch
+mozilla-central-push_421200.patch
+mozilla-central-push_421291.patch
+mozilla-central-push_421379.patch
+mozilla-central-push_421382.patch
+mozilla-central-push_421411.patch
+mozilla-central-push_421516.patch
+mozilla-central-push_421533.patch
+mozilla-central-push_421547.patch
+mozilla-central-push_421548.patch
+mozilla-central-push_421577.patch
+mozilla-central-push_421578.patch
+mozilla-central-push_421579.patch
+mozilla-central-push_421580.patch
+mozilla-central-push_421582.patch
+mozilla-central-push_421583.patch
+mozilla-central-push_421585.patch
+mozilla-central-push_421586.patch
+mozilla-central-push_421587.patch
+mozilla-central-push_421588.patch
+mozilla-central-push_421589.patch
+mozilla-central-push_421590.patch
+mozilla-central-push_421593.patch
+mozilla-central-push_421681.patch
+mozilla-central-push_421691.patch
+mozilla-central-push_421776.patch
+mozilla-central-push_421777.patch
+mozilla-central-push_421779.patch
+mozilla-central-push_421780.patch
+mozilla-central-push_421781.patch
+mozilla-central-push_421795.patch
+mozilla-central-push_421796.patch
+mozilla-central-push_421797.patch
+mozilla-central-push_421799.patch
+mozilla-central-push_421800.patch
+mozilla-central-push_421801.patch
+mozilla-central-push_421802.patch
+mozilla-central-push_421809.patch
+mozilla-central-push_421810.patch
+mozilla-central-push_421811.patch
+mozilla-central-push_421824.patch
+mozilla-central-push_421860.patch
+mozilla-central-push_421898.patch
+mozilla-central-push_421908.patch
+mozilla-central-push_421909.patch
+mozilla-central-push_421912.patch
+mozilla-central-push_421919.patch
+mozilla-central-push_421920.patch
+mozilla-central-push_421921.patch
+mozilla-central-push_421922.patch
+mozilla-central-push_421923.patch
+mozilla-central-push_421924.patch
+mozilla-central-push_421925.patch
+mozilla-central-push_421927.patch
+mozilla-central-push_421928.patch
+mozilla-central-push_421929.patch
+mozilla-central-push_422011.patch
+mozilla-central-push_422012.patch
+mozilla-central-push_422013.patch
+mozilla-central-push_422014.patch
+mozilla-central-push_422015.patch
+mozilla-central-push_422043.patch
+mozilla-central-push_422046.patch
+mozilla-central-push_422049.patch
+mozilla-central-push_422050.patch
+mozilla-central-push_422052.patch
+mozilla-central-push_422053.patch
+mozilla-central-push_422054.patch
+mozilla-central-push_422055.patch
+mozilla-central-push_422056.patch
+mozilla-central-push_422291.patch
+mozilla-central-push_422298.patch
+mozilla-central-push_422313.patch
+mozilla-central-push_422372.patch
+mozilla-central-push_422398.patch
+mozilla-central-push_422399.patch
+mozilla-central-push_422427.patch
+mozilla-central-push_422484.patch
+mozilla-central-push_422485.patch
+mozilla-central-push_422488.patch
+mozilla-central-push_422489.patch
+mozilla-central-push_422490.patch
+mozilla-central-push_422502.patch
+mozilla-central-push_422503.patch
+mozilla-central-push_422504.patch
+mozilla-central-push_422505.patch
+mozilla-central-push_422506.patch
+mozilla-central-push_422507.patch
+mozilla-central-push_422508.patch
+mozilla-central-push_422509.patch
+mozilla-central-push_422510.patch
+mozilla-central-push_422511.patch
+mozilla-central-push_422512.patch
+mozilla-central-push_422513.patch
+mozilla-central-push_422514.patch
+mozilla-central-push_422515.patch
+mozilla-central-push_422516.patch
+mozilla-central-push_422517.patch
+mozilla-central-push_422551.patch
+mozilla-central-push_422552.patch
+mozilla-central-push_422553.patch
+mozilla-central-push_422554.patch
+mozilla-central-push_422555.patch
+mozilla-central-push_422556.patch
+mozilla-central-push_422557.patch
+mozilla-central-push_422558.patch
+mozilla-central-push_422613.patch
+mozilla-central-push_422635.patch
+mozilla-central-push_422644.patch
+mozilla-central-push_422645.patch
+mozilla-central-push_422648.patch
+mozilla-central-push_422656.patch
+mozilla-central-push_422766.patch
+mozilla-central-push_422771.patch
+mozilla-central-push_422772.patch
+mozilla-central-push_422774.patch
+mozilla-central-push_422799.patch
+mozilla-central-push_422800.patch
+mozilla-central-push_422801.patch
+mozilla-central-push_422802.patch
+mozilla-central-push_422803.patch
+mozilla-central-push_422819.patch
+mozilla-central-push_422885.patch
+mozilla-central-push_422903.patch
+mozilla-central-push_422904.patch
+mozilla-central-push_422905.patch
+mozilla-central-push_422913.patch
+mozilla-central-push_422914.patch
+mozilla-central-push_422915.patch
+mozilla-central-push_422916.patch
+mozilla-central-push_422917.patch
+mozilla-central-push_422918.patch
+mozilla-central-push_422919.patch
+mozilla-central-push_422969.patch
+mozilla-central-push_422970.patch
+mozilla-central-push_422976.patch
+mozilla-central-push_423054.patch
+mozilla-central-push_423129.patch
+mozilla-central-push_423130.patch
+mozilla-central-push_423131.patch
+mozilla-central-push_423135.patch
+mozilla-central-push_423155.patch
+mozilla-central-push_423157.patch
+mozilla-central-push_423158.patch
+mozilla-central-push_423159.patch
+mozilla-central-push_423160.patch
+mozilla-central-push_423175.patch
+mozilla-central-push_423178.patch
+mozilla-central-push_423179.patch
+mozilla-central-push_423198.patch
+mozilla-central-push_423199.patch
+mozilla-central-push_423200.patch
+mozilla-central-push_423218.patch
+mozilla-central-push_423250.patch
+mozilla-central-push_423251.patch
+mozilla-central-push_423252.patch
+mozilla-central-push_423253.patch
+mozilla-central-push_423254.patch
+mozilla-central-push_423255.patch
+mozilla-central-push_423256.patch
+mozilla-central-push_423257.patch
+mozilla-central-push_423265.patch
+mozilla-central-push_423270.patch
+mozilla-central-push_423286.patch
+mozilla-central-push_423303.patch
+mozilla-central-push_423353.patch
+mozilla-central-push_423354.patch
+mozilla-central-push_423355.patch
+mozilla-central-push_423356.patch
+mozilla-central-push_423357.patch
+mozilla-central-push_423358.patch
+mozilla-central-push_423359.patch
+mozilla-central-push_423362.patch
+mozilla-central-push_423363.patch
+mozilla-central-push_423364.patch
+mozilla-central-push_423384.patch
+mozilla-central-push_423385.patch
+mozilla-central-push_423401.patch
+mozilla-central-push_423433.patch
+mozilla-central-push_423434.patch
+mozilla-central-push_423435.patch
+mozilla-central-push_423436.patch
+mozilla-central-push_423440.patch
+bbbbbbbbbbbbbbbbbbbbbbbbbb
+1465695
+1461305
+1466363
+1478503
+1463371
+1494752 check 604 patch
+1532851
+1449033
+1485698
+1466487
+cccccccccccccccccccccccccccc
+
 the-taken-out-stuff-end.patch
 the-taken-out-stuff-end.patch