Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 14 Jun 2017 12:55: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: r443567 - head/www/firefox/files
Message-ID:  <201706141255.v5ECtTFS078358@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jbeich
Date: Wed Jun 14 12:55:29 2017
New Revision: 443567
URL: https://svnweb.freebsd.org/changeset/ports/443567

Log:
  www/firefox: fix some JIT warnings on aarch64
  
  MFH:		2017Q2

Added:
  head/www/firefox/files/patch-bug1356709   (contents, props changed)
  head/www/firefox/files/patch-bug1357874   (contents, props changed)
  head/www/firefox/files/patch-bug1360321   (contents, props changed)

Added: head/www/firefox/files/patch-bug1356709
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/firefox/files/patch-bug1356709	Wed Jun 14 12:55:29 2017	(r443567)
@@ -0,0 +1,170 @@
+commit acc36099bfc1
+Author: Steve Fink <sfink@mozilla.com>
+Date:   Mon Apr 17 21:04:08 2017 -0700
+
+    Bug 1356709 - Fix uses of uninitialized values in arm64 code, r=sstangl
+    
+    --HG--
+    extra : rebase_source : 2f9a59c88f21dd467fbc4232e2f6b20850fd53ed
+    extra : histedit_source : b5110806cf04a3ca056ea89709bcc707368a2e57
+---
+ js/src/jit/arm64/MacroAssembler-arm64.cpp   |  4 +++-
+ js/src/jit/arm64/vixl/Debugger-vixl.cpp     | 10 ++++++----
+ js/src/jit/arm64/vixl/Decoder-vixl.cpp      | 12 ++++++------
+ js/src/jit/arm64/vixl/Instrument-vixl.cpp   |  4 +++-
+ js/src/jit/arm64/vixl/MozSimulator-vixl.cpp |  8 ++++++--
+ 5 files changed, 24 insertions(+), 14 deletions(-)
+
+diff --git js/src/jit/arm64/MacroAssembler-arm64.cpp js/src/jit/arm64/MacroAssembler-arm64.cpp
+index 013fefd85e9b..f1704c622cb6 100644
+--- js/src/jit/arm64/MacroAssembler-arm64.cpp
++++ js/src/jit/arm64/MacroAssembler-arm64.cpp
+@@ -682,7 +682,9 @@ MacroAssembler::callWithABIPre(uint32_t* stackAdjust, bool callFromWasm)
+     *stackAdjust = stackForCall;
+     reserveStack(*stackAdjust);
+     {
+-        moveResolver_.resolve();
++        enoughMemory_ &= moveResolver_.resolve();
++        if (!enoughMemory_)
++            return;
+         MoveEmitter emitter(*this);
+         emitter.emit(moveResolver_);
+         emitter.finish();
+diff --git js/src/jit/arm64/vixl/Debugger-vixl.cpp js/src/jit/arm64/vixl/Debugger-vixl.cpp
+index 85097ed5a086..2f4966fbef15 100644
+--- js/src/jit/arm64/vixl/Debugger-vixl.cpp
++++ js/src/jit/arm64/vixl/Debugger-vixl.cpp
+@@ -30,6 +30,7 @@
+ 
+ #include "jit/arm64/vixl/Debugger-vixl.h"
+ 
++#include "mozilla/Unused.h"
+ #include "mozilla/Vector.h"
+ 
+ #include "jsalloc.h"
+@@ -1109,6 +1110,7 @@ bool DebugCommand::Match(const char* name, const char** aliases) {
+ 
+ 
+ DebugCommand* DebugCommand::Parse(char* line) {
++  using mozilla::Unused;
+   TokenVector args;
+ 
+   for (char* chunk = strtok(line, " \t");
+@@ -1120,15 +1122,15 @@ DebugCommand* DebugCommand::Parse(char* line) {
+       Token* format = FormatToken::Tokenize(dot + 1);
+       if (format != NULL) {
+         *dot = '\0';
+-        args.append(Token::Tokenize(chunk));
+-        args.append(format);
++        Unused << args.append(Token::Tokenize(chunk));
++        Unused << args.append(format);
+       } else {
+         // Error while parsing the format, push the UnknownToken so an error
+         // can be accurately reported.
+-        args.append(Token::Tokenize(chunk));
++        Unused << args.append(Token::Tokenize(chunk));
+       }
+     } else {
+-      args.append(Token::Tokenize(chunk));
++      Unused << args.append(Token::Tokenize(chunk));
+     }
+   }
+ 
+diff --git js/src/jit/arm64/vixl/Decoder-vixl.cpp js/src/jit/arm64/vixl/Decoder-vixl.cpp
+index 5865689ae6fa..c74f71a11b24 100644
+--- js/src/jit/arm64/vixl/Decoder-vixl.cpp
++++ js/src/jit/arm64/vixl/Decoder-vixl.cpp
+@@ -112,12 +112,12 @@ void Decoder::DecodeInstruction(const Instruction *instr) {
+ }
+ 
+ void Decoder::AppendVisitor(DecoderVisitor* new_visitor) {
+-  visitors_.append(new_visitor);
++  MOZ_ALWAYS_TRUE(visitors_.append(new_visitor));
+ }
+ 
+ 
+ void Decoder::PrependVisitor(DecoderVisitor* new_visitor) {
+-  visitors_.insert(visitors_.begin(), new_visitor);
++  MOZ_ALWAYS_TRUE(visitors_.insert(visitors_.begin(), new_visitor));
+ }
+ 
+ 
+@@ -125,12 +125,12 @@ void Decoder::InsertVisitorBefore(DecoderVisitor* new_visitor,
+                                   DecoderVisitor* registered_visitor) {
+   for (auto it = visitors_.begin(); it != visitors_.end(); it++) {
+     if (*it == registered_visitor) {
+-      visitors_.insert(it, new_visitor);
++      MOZ_ALWAYS_TRUE(visitors_.insert(it, new_visitor));
+       return;
+     }
+   }
+   // We reached the end of the list without finding registered_visitor.
+-  visitors_.append(new_visitor);
++  MOZ_ALWAYS_TRUE(visitors_.append(new_visitor));
+ }
+ 
+ 
+@@ -139,12 +139,12 @@ void Decoder::InsertVisitorAfter(DecoderVisitor* new_visitor,
+   for (auto it = visitors_.begin(); it != visitors_.end(); it++) {
+     if (*it == registered_visitor) {
+       it++;
+-      visitors_.insert(it, new_visitor);
++      MOZ_ALWAYS_TRUE(visitors_.insert(it, new_visitor));
+       return;
+     }
+   }
+   // We reached the end of the list without finding registered_visitor.
+-  visitors_.append(new_visitor);
++  MOZ_ALWAYS_TRUE(visitors_.append(new_visitor));
+ }
+ 
+ 
+diff --git js/src/jit/arm64/vixl/Instrument-vixl.cpp js/src/jit/arm64/vixl/Instrument-vixl.cpp
+index 7653e0856281..15d143c8ec13 100644
+--- js/src/jit/arm64/vixl/Instrument-vixl.cpp
++++ js/src/jit/arm64/vixl/Instrument-vixl.cpp
+@@ -26,6 +26,8 @@
+ 
+ #include "jit/arm64/vixl/Instrument-vixl.h"
+ 
++#include "mozilla/Unused.h"
++
+ namespace vixl {
+ 
+ Counter::Counter(const char* name, CounterType type)
+@@ -139,7 +141,7 @@ Instrument::Instrument(const char* datafile, uint64_t sample_period)
+   // Construct Counter objects from counter description array.
+   for (int i = 0; i < num_counters; i++) {
+     if (Counter* counter = js_new<Counter>(kCounterList[i].name, kCounterList[i].type))
+-      counters_.append(counter);
++      mozilla::Unused << counters_.append(counter);
+   }
+ 
+   DumpCounterNames();
+diff --git js/src/jit/arm64/vixl/MozSimulator-vixl.cpp js/src/jit/arm64/vixl/MozSimulator-vixl.cpp
+index 0f8acebf9de6..284413bc5875 100644
+--- js/src/jit/arm64/vixl/MozSimulator-vixl.cpp
++++ js/src/jit/arm64/vixl/MozSimulator-vixl.cpp
+@@ -29,6 +29,7 @@
+ #include "jit/arm64/vixl/Debugger-vixl.h"
+ #include "jit/arm64/vixl/Simulator-vixl.h"
+ #include "jit/IonTypes.h"
++#include "js/Utility.h"
+ #include "threading/LockGuard.h"
+ #include "vm/Runtime.h"
+ #include "wasm/WasmCode.h"
+@@ -427,9 +428,12 @@ void Simulator::VisitException(const Instruction* instr) {
+         case kCallRtRedirected:
+           VisitCallRedirection(instr);
+           return;
+-        case kMarkStackPointer:
+-          spStack_.append(xreg(31, Reg31IsStackPointer));
++        case kMarkStackPointer: {
++          js::AutoEnterOOMUnsafeRegion oomUnsafe;
++          if (!spStack_.append(xreg(31, Reg31IsStackPointer)))
++            oomUnsafe.crash("tracking stack for ARM64 simulator");
+           return;
++        }
+         case kCheckStackPointer: {
+           int64_t current = xreg(31, Reg31IsStackPointer);
+           int64_t expected = spStack_.popCopy();

Added: head/www/firefox/files/patch-bug1357874
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/firefox/files/patch-bug1357874	Wed Jun 14 12:55:29 2017	(r443567)
@@ -0,0 +1,43 @@
+commit 50d30e203b35
+Author: Jim Chen <nchen@mozilla.com>
+Date:   Mon May 1 14:46:00 2017 -0400
+
+    Bug 1357874 - Add more AArch64 support to JS code; r=luke
+    
+    * Fix a parentheses warning when compiling testGCAllocator.cpp.
+    
+    * Enable trace logging in TraceLogging.cpp.
+---
+ js/src/jsapi-tests/testGCAllocator.cpp |  2 +-
+ js/src/jsmath.cpp                      |  2 ++
+ js/src/jsnativestack.cpp               | 10 +++++-----
+ js/src/vm/TraceLogging.cpp             |  2 +-
+ js/src/wasm/WasmSignalHandlers.cpp     |  2 ++
+ 5 files changed, 11 insertions(+), 7 deletions(-)
+
+diff --git js/src/jsapi-tests/testGCAllocator.cpp js/src/jsapi-tests/testGCAllocator.cpp
+index 229e56422fdf..ec5407e8cca1 100644
+--- js/src/jsapi-tests/testGCAllocator.cpp
++++ js/src/jsapi-tests/testGCAllocator.cpp
+@@ -315,7 +315,7 @@ mapMemoryAt(void* desired, size_t length)
+ 
+ #if defined(__ia64__) || defined(__aarch64__) || \
+     (defined(__sparc__) && defined(__arch64__) && (defined(__NetBSD__) || defined(__linux__)))
+-    MOZ_RELEASE_ASSERT(0xffff800000000000ULL & (uintptr_t(desired) + length - 1) == 0);
++    MOZ_RELEASE_ASSERT((0xffff800000000000ULL & (uintptr_t(desired) + length - 1)) == 0);
+ #endif
+     void* region = mmap(desired, length, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
+     if (region == MAP_FAILED)
+diff --git js/src/vm/TraceLogging.cpp js/src/vm/TraceLogging.cpp
+index c7bc6a84b2e9..82fdf7c77e8a 100644
+--- js/src/vm/TraceLogging.cpp
++++ js/src/vm/TraceLogging.cpp
+@@ -61,7 +61,7 @@ rdtsc(void)
+     return result;
+ 
+ }
+-#elif defined(__arm__)
++#elif defined(__arm__) || defined(__aarch64__)
+ 
+ #include <sys/time.h>
+ 

Added: head/www/firefox/files/patch-bug1360321
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/firefox/files/patch-bug1360321	Wed Jun 14 12:55:29 2017	(r443567)
@@ -0,0 +1,49 @@
+commit a2dff5ad917b
+Author: Jim Chen <nchen@mozilla.com>
+Date:   Wed May 17 13:06:23 2017 -0400
+
+    Bug 1360321 - 10. Fix opt build warnings in VIXL; r=me
+    
+    Fix an unused variable warning for `visitor` because it's only used in
+    the assertion macro.
+    
+    Fix several no-return-value errors because the compiler cannot assume
+    the VIXL_UNREACHABLE() macro is actually unreachable.
+    
+    r=me for trivial patch.
+    
+    MozReview-Commit-ID: 13IlMyUsXUN
+---
+ js/src/jit/arm64/vixl/Decoder-vixl.h | 2 ++
+ js/src/jit/arm64/vixl/Globals-vixl.h | 2 +-
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git js/src/jit/arm64/vixl/Decoder-vixl.h js/src/jit/arm64/vixl/Decoder-vixl.h
+index 95dd589e8ab0..742c6f954c72 100644
+--- js/src/jit/arm64/vixl/Decoder-vixl.h
++++ js/src/jit/arm64/vixl/Decoder-vixl.h
+@@ -151,9 +151,11 @@ class Decoder {
+ 
+   // Top-level wrappers around the actual decoding function.
+   void Decode(const Instruction* instr) {
++#ifdef DEBUG
+     for (auto visitor : visitors_) {
+       VIXL_ASSERT(visitor->IsConstVisitor());
+     }
++#endif
+     DecodeInstruction(instr);
+   }
+   void Decode(Instruction* instr) {
+diff --git js/src/jit/arm64/vixl/Globals-vixl.h js/src/jit/arm64/vixl/Globals-vixl.h
+index 8a7418eb8c47..39d9c1d3f37d 100644
+--- js/src/jit/arm64/vixl/Globals-vixl.h
++++ js/src/jit/arm64/vixl/Globals-vixl.h
+@@ -76,7 +76,7 @@ const int MBytes = 1024 * KBytes;
+   #define VIXL_ASSERT(condition) ((void) 0)
+   #define VIXL_CHECK(condition) ((void) 0)
+   #define VIXL_UNIMPLEMENTED() ((void) 0)
+-  #define VIXL_UNREACHABLE() ((void) 0)
++  #define VIXL_UNREACHABLE() MOZ_MAKE_COMPILER_ASSUME_IS_UNREACHABLE()
+ #endif
+ // This is not as powerful as template based assertions, but it is simple.
+ // It assumes that the descriptions are unique. If this starts being a problem,



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