Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 May 2018 23:52:29 +0000 (UTC)
From:      Jan Beich <jbeich@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r470343 - in head/www/waterfox: . files
Message-ID:  <201805182352.w4INqTeI092991@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jbeich
Date: Fri May 18 23:52:29 2018
New Revision: 470343
URL: https://svnweb.freebsd.org/changeset/ports/470343

Log:
  www/waterfox: apply some FF61 fixes

Added:
  head/www/waterfox/files/patch-bug1450448   (contents, props changed)
  head/www/waterfox/files/patch-bug1456524   (contents, props changed)
  head/www/waterfox/files/patch-bug1459162   (contents, props changed)
Modified:
  head/www/waterfox/Makefile   (contents, props changed)

Modified: head/www/waterfox/Makefile
==============================================================================
--- head/www/waterfox/Makefile	Fri May 18 23:52:13 2018	(r470342)
+++ head/www/waterfox/Makefile	Fri May 18 23:52:29 2018	(r470343)
@@ -3,6 +3,7 @@
 PORTNAME=	waterfox
 DISTVERSION=	56.2.0-7
 DISTVERSIONSUFFIX=	-g436898372f858
+PORTREVISION=	1
 CATEGORIES=	www ipv6
 
 MAINTAINER=	jbeich@FreeBSD.org

Added: head/www/waterfox/files/patch-bug1450448
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1450448	Fri May 18 23:52:29 2018	(r470343)
@@ -0,0 +1,40 @@
+commit fbba8d988c94
+Author: Johann Hofmann <jhofmann@mozilla.com>
+Date:   Tue May 15 22:02:33 2018 +0200
+
+    Bug 1450448 - Correctly handle non-initialized appCache in site data preferences. r=Gijs, a=RyanVM
+    
+    MozReview-Commit-ID: IhQGAWNQtR0
+    
+    --HG--
+    extra : rebase_source : c1e902883a977c54ccafd4a1c3042d0a17660996
+    extra : source : 9f41afd3012718d839033663196a746a47065007
+---
+ browser/modules/SiteDataManager.jsm | 14 +++++++++++++-
+ 1 file changed, 13 insertions(+), 1 deletion(-)
+
+diff --git browser/components/preferences/SiteDataManager.jsm browser/components/preferences/SiteDataManager.jsm
+index 118a40ce38fc8..9e08e00c38c5b 100644
+--- browser/components/preferences/SiteDataManager.jsm
++++ browser/components/preferences/SiteDataManager.jsm
+@@ -192,7 +192,19 @@ var SiteDataManager = {
+   },
+ 
+   _updateAppCache() {
+-    let groups = this._appCache.getGroups();
++    let groups;
++    try {
++      groups = this._appCache.getGroups();
++    } catch (e) {
++      // NS_ERROR_NOT_AVAILABLE means that appCache is not initialized,
++      // which probably means the user has disabled it. Otherwise, log an
++      // error. Either way, there's nothing we can do here.
++      if (e.result != Cr.NS_ERROR_NOT_AVAILABLE) {
++        Cu.reportError(e);
++      }
++      return;
++    }
++
+     for (let group of groups) {
+       let cache = this._appCache.getActiveCache(group);
+       if (cache.usage <= 0) {

Added: head/www/waterfox/files/patch-bug1456524
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1456524	Fri May 18 23:52:29 2018	(r470343)
@@ -0,0 +1,122 @@
+commit 7813b28f0e98
+Author: Sean Stangl <sstangl@mozilla.com>
+Date:   Thu May 17 14:06:00 2018 -0400
+
+    Bug 1456524 - Maintain MoveResolver invariants. r=jandem, a=RyanVM
+    
+    The MoveResolver is a persistent data structure that requires
+    state to not leak between borrowers. An early-exit optimization
+    in the case of OOM allows for state to leak, leading to impossible
+    move list inputs, tripping assertions.
+    
+    --HG--
+    extra : rebase_source : 38c5d7afaa4b6394ced3266b90032b8e3bdba351
+---
+ js/src/jit/MacroAssembler.h                 | 5 +++++
+ js/src/jit/MoveResolver.cpp                 | 7 +++++++
+ js/src/jit/MoveResolver.h                   | 3 +++
+ js/src/jit/arm/MacroAssembler-arm.cpp       | 2 +-
+ js/src/jit/mips32/MacroAssembler-mips32.cpp | 2 +-
+ js/src/jit/mips64/MacroAssembler-mips64.cpp | 2 +-
+ 6 files changed, 18 insertions(+), 3 deletions(-)
+
+diff --git js/src/jit/MacroAssembler.h js/src/jit/MacroAssembler.h
+index b2cc464aafcc4..cef8c094b70c5 100644
+--- js/src/jit/MacroAssembler.h
++++ js/src/jit/MacroAssembler.h
+@@ -334,6 +334,11 @@ class MacroAssembler : public MacroAssemblerSpecific
+ 
+   public:
+     MoveResolver& moveResolver() {
++        // As an optimization, the MoveResolver is a persistent data structure
++        // shared between visitors in the CodeGenerator. This assertion
++        // checks that state is not leaking from visitor to visitor
++        // via an unresolved addMove().
++        MOZ_ASSERT(moveResolver_.hasNoPendingMoves());
+         return moveResolver_;
+     }
+ 
+diff --git js/src/jit/MoveResolver.cpp js/src/jit/MoveResolver.cpp
+index bd71d0acea44d..d79af5053b79c 100644
+--- js/src/jit/MoveResolver.cpp
++++ js/src/jit/MoveResolver.cpp
+@@ -7,6 +7,7 @@
+ #include "jit/MoveResolver.h"
+ 
+ #include "mozilla/Attributes.h"
++#include "mozilla/ScopeExit.h"
+ 
+ #include "jit/MacroAssembler.h"
+ #include "jit/RegisterSets.h"
+@@ -178,12 +179,18 @@ SplitIntoUpperHalf(const MoveOperand& move)
+ }
+ #endif
+ 
++// Resolves the pending_ list to a list in orderedMoves_.
+ bool
+ MoveResolver::resolve()
+ {
+     resetState();
+     orderedMoves_.clear();
+ 
++    // Upon return from this function, the pending_ list must be cleared.
++    auto clearPending = mozilla::MakeScopeExit([this]() {
++        pending_.clear();
++    });
++
+ #ifdef JS_CODEGEN_ARM
+     // Some of ARM's double registers alias two of its single registers,
+     // but the algorithm below assumes that every register can participate
+diff --git js/src/jit/MoveResolver.h js/src/jit/MoveResolver.h
+index d9a9415488704..d094ee1307563 100644
+--- js/src/jit/MoveResolver.h
++++ js/src/jit/MoveResolver.h
+@@ -333,6 +333,9 @@ class MoveResolver
+     uint32_t numCycles() const {
+         return numCycles_;
+     }
++    bool hasNoPendingMoves() const {
++        return pending_.empty();
++    }
+     void setAllocator(TempAllocator& alloc) {
+         movePool_.setAllocator(alloc);
+     }
+diff --git js/src/jit/arm/MacroAssembler-arm.cpp js/src/jit/arm/MacroAssembler-arm.cpp
+index a3985f2c24d1f..86e86310cc129 100644
+--- js/src/jit/arm/MacroAssembler-arm.cpp
++++ js/src/jit/arm/MacroAssembler-arm.cpp
+@@ -4593,7 +4593,7 @@ MacroAssembler::callWithABIPre(uint32_t* stackAdjust, bool callFromWasm)
+ 
+     // Position all arguments.
+     {
+-        enoughMemory_ = enoughMemory_ && moveResolver_.resolve();
++        enoughMemory_ &= moveResolver_.resolve();
+         if (!enoughMemory_)
+             return;
+ 
+diff --git js/src/jit/mips32/MacroAssembler-mips32.cpp js/src/jit/mips32/MacroAssembler-mips32.cpp
+index 8f2fec7948b75..ef0a9136f4e39 100644
+--- js/src/jit/mips32/MacroAssembler-mips32.cpp
++++ js/src/jit/mips32/MacroAssembler-mips32.cpp
+@@ -2191,7 +2191,7 @@ MacroAssembler::callWithABIPre(uint32_t* stackAdjust, bool callFromWasm)
+ 
+     // Position all arguments.
+     {
+-        enoughMemory_ = enoughMemory_ && moveResolver_.resolve();
++        enoughMemory_ &= moveResolver_.resolve();
+         if (!enoughMemory_)
+             return;
+ 
+diff --git js/src/jit/mips64/MacroAssembler-mips64.cpp js/src/jit/mips64/MacroAssembler-mips64.cpp
+index c944b0427aaee..8eec6bac047e4 100644
+--- js/src/jit/mips64/MacroAssembler-mips64.cpp
++++ js/src/jit/mips64/MacroAssembler-mips64.cpp
+@@ -2040,7 +2040,7 @@ MacroAssembler::callWithABIPre(uint32_t* stackAdjust, bool callFromWasm)
+ 
+     // Position all arguments.
+     {
+-        enoughMemory_ = enoughMemory_ && moveResolver_.resolve();
++        enoughMemory_ &= moveResolver_.resolve();
+         if (!enoughMemory_)
+             return;
+ 

Added: head/www/waterfox/files/patch-bug1459162
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1459162	Fri May 18 23:52:29 2018	(r470343)
@@ -0,0 +1,71 @@
+commit 7588031f0792
+Author: Jonathan Kew <jkew@mozilla.com>
+Date:   Thu May 17 09:49:58 2018 +0100
+
+    Bug 1459162 - Update dimensions early in ClearTarget. r=lsalzman a=abillings
+---
+ dom/canvas/CanvasRenderingContext2D.cpp | 14 +++++++++-----
+ dom/canvas/CanvasRenderingContext2D.h   |  5 ++++-
+ 2 files changed, 13 insertions(+), 6 deletions(-)
+
+diff --git dom/canvas/CanvasRenderingContext2D.cpp dom/canvas/CanvasRenderingContext2D.cpp
+index 1e057824a4675..4501ffaff2d97 100644
+--- dom/canvas/CanvasRenderingContext2D.cpp
++++ dom/canvas/CanvasRenderingContext2D.cpp
+@@ -1928,8 +1928,6 @@ CanvasRenderingContext2D::GetHeight() const
+ NS_IMETHODIMP
+ CanvasRenderingContext2D::SetDimensions(int32_t aWidth, int32_t aHeight)
+ {
+-  ClearTarget();
+-
+   // Zero sized surfaces can cause problems.
+   mZero = false;
+   if (aHeight == 0) {
+@@ -1940,14 +1938,14 @@ CanvasRenderingContext2D::SetDimensions(int32_t aWidth, int32_t aHeight)
+     aWidth = 1;
+     mZero = true;
+   }
+-  mWidth = aWidth;
+-  mHeight = aHeight;
++
++  ClearTarget(aWidth, aHeight);
+ 
+   return NS_OK;
+ }
+ 
+ void
+-CanvasRenderingContext2D::ClearTarget()
++CanvasRenderingContext2D::ClearTarget(int32_t aWidth, int32_t aHeight)
+ {
+   Reset();
+ 
+@@ -1955,6 +1953,12 @@ CanvasRenderingContext2D::ClearTarget()
+ 
+   SetInitialState();
+ 
++  // Update dimensions only if new (strictly positive) values were passed.
++  if (aWidth > 0 && aHeight > 0) {
++    mWidth = aWidth;
++    mHeight = aHeight;
++  }
++
+   // For vertical writing-mode, unless text-orientation is sideways,
+   // we'll modify the initial value of textBaseline to 'middle'.
+   RefPtr<nsStyleContext> canvasStyle;
+diff --git dom/canvas/CanvasRenderingContext2D.h dom/canvas/CanvasRenderingContext2D.h
+index 6f0f6279e0cf5..c2ed098b053d0 100644
+--- dom/canvas/CanvasRenderingContext2D.h
++++ dom/canvas/CanvasRenderingContext2D.h
+@@ -683,8 +683,11 @@ protected:
+ 
+   /**
+    * Disposes an old target and prepares to lazily create a new target.
++   *
++   * Parameters are the new dimensions to be used, or if either is negative,
++   * existing dimensions will be left unchanged.
+    */
+-  void ClearTarget();
++  void ClearTarget(int32_t aWidth = -1, int32_t aHeight = -1);
+ 
+   /*
+    * Returns the target to the buffer provider. i.e. this will queue a frame for



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201805182352.w4INqTeI092991>