aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Beich <jbeich@FreeBSD.org>2017-06-14 14:03:32 +0000
committerJan Beich <jbeich@FreeBSD.org>2017-06-14 14:03:32 +0000
commitfe79ef5194ee0474d0609e6cf7d81f4e243c2765 (patch)
treece39b2dd7438bf90a07b22eb37893e07a27cc2d2
parent382b1425b5e58a656e5bfca0329b78fbb006006c (diff)
downloadports-fe79ef5194ee0474d0609e6cf7d81f4e243c2765.tar.gz
ports-fe79ef5194ee0474d0609e6cf7d81f4e243c2765.zip
MFH: r443567
www/firefox: fix some JIT warnings on aarch64 Approved by: ports-secteam (feld)
Notes
Notes: svn path=/branches/2017Q2/; revision=443572
-rw-r--r--www/firefox/files/patch-bug1356709170
-rw-r--r--www/firefox/files/patch-bug135787443
-rw-r--r--www/firefox/files/patch-bug136032149
3 files changed, 262 insertions, 0 deletions
diff --git a/www/firefox/files/patch-bug1356709 b/www/firefox/files/patch-bug1356709
new file mode 100644
index 000000000000..b795836a4ad4
--- /dev/null
+++ b/www/firefox/files/patch-bug1356709
@@ -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();
diff --git a/www/firefox/files/patch-bug1357874 b/www/firefox/files/patch-bug1357874
new file mode 100644
index 000000000000..a4c69d2571dd
--- /dev/null
+++ b/www/firefox/files/patch-bug1357874
@@ -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>
+
diff --git a/www/firefox/files/patch-bug1360321 b/www/firefox/files/patch-bug1360321
new file mode 100644
index 000000000000..b9989ef7c099
--- /dev/null
+++ b/www/firefox/files/patch-bug1360321
@@ -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,