testing/mozjs-38: add gcc6 bad code generation workaround, add -dbg package

This commit is contained in:
William Pitcock 2017-06-06 04:50:06 +00:00
parent a23717b73f
commit abeab1b01b
2 changed files with 128 additions and 4 deletions

View File

@ -1,7 +1,7 @@
# Maintainer: William Pitcock <nenolod@dereferenced.org>
pkgname=mozjs-38
pkgver=38.8.0
pkgrel=2
pkgrel=3
pkgdesc="standalone mozilla javascript engine"
url="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/38"
arch="all"
@ -10,12 +10,13 @@ depends=""
depends_dev="icu-dev nspr-dev libffi-dev readline-dev"
makedepends="$depends_dev python2 perl sed"
install=""
subpackages="$pkgname-dev"
subpackages="$pkgname-dev $pkgname-dbg"
source="https://ftp.mozilla.org/pub/firefox/releases/${pkgver}esr/source/firefox-${pkgver}esr.source.tar.bz2
fix-fortify-system-wrappers.patch
copy-headers.patch
pkg-config-version.patch
icu-add-bracket.patch"
icu-add-bracket.patch
gcc-alignment.patch"
builddir="$srcdir/mozilla-esr38"
_builddir="$builddir/js/src"
options="!check"
@ -47,4 +48,5 @@ sha512sums="fcd2497a60176b8403a1793d1ad0a1c96a0a60217c2d4d7acd0506abf6810892bd51
a4f613ba4e977796fa024824940bbc1d3df549138612bfcdbb643753d54d4d5bfbf601a12f76312a87ecc7ec595ff34ddefb47c2cd1a6e31252c1fa3a263bdae fix-fortify-system-wrappers.patch
22cc4e4595ddbd7ff037ce5f04755de4156d24921fa57161afbaa6494c795e30b6cfc08e8b999dbcce145c231cc6a3322334134e40f251f514b4688598a75f61 copy-headers.patch
f3d87ffa7232e7242c4a1bf2762c2d1d4e190e72bd1c15fe223bce2480769bf577021ca799aab9570e3219144fcd9978e97cf8648f0cb7abe379bcabc9b03c4c pkg-config-version.patch
658df4a957b2e11345dc3caf884d2063b4e492c58f002114d3c8d7b595731cde33d1ad43e02cc2eba4ec0e7a751c3c5bbbf0cacab6ca726f2a1158864b09af8c icu-add-bracket.patch"
658df4a957b2e11345dc3caf884d2063b4e492c58f002114d3c8d7b595731cde33d1ad43e02cc2eba4ec0e7a751c3c5bbbf0cacab6ca726f2a1158864b09af8c icu-add-bracket.patch
fba936027456cc30f3fb17036634a1f572078f4d90b8410b9647b579004b5ca5053ad870d7eeb73f3cf3139832cc2b4949c3c4dc7c0f31b87d4066218a6a5965 gcc-alignment.patch"

View File

@ -0,0 +1,122 @@
--- a/js/src/jit/RegisterSets.h 2017-02-10 17:33:06.210702431 -0800
+++ b/js/src/jit/RegisterSets.h 2017-02-10 17:43:52.877514146 -0800
@@ -7,7 +7,6 @@
#ifndef jit_RegisterSets_h
#define jit_RegisterSets_h
-#include "mozilla/Alignment.h"
#include "mozilla/MathAlgorithms.h"
#include "jit/JitAllocPolicy.h"
@@ -26,8 +25,8 @@
Code code_;
public:
- AnyRegister()
- { }
+ AnyRegister() = default;
+
explicit AnyRegister(Register gpr) {
code_ = gpr.code();
}
@@ -156,7 +155,7 @@
}
#endif
- ValueOperand() {}
+ ValueOperand() = default;
};
// Registers to hold either either a typed or untyped value.
@@ -165,46 +164,25 @@
// Type of value being stored.
MIRType type_;
- // Space to hold either an AnyRegister or a ValueOperand.
union U {
- mozilla::AlignedStorage2<AnyRegister> typed;
- mozilla::AlignedStorage2<ValueOperand> value;
+ AnyRegister typed;
+ ValueOperand value;
} data;
- AnyRegister& dataTyped() {
- MOZ_ASSERT(hasTyped());
- return *data.typed.addr();
- }
- ValueOperand& dataValue() {
- MOZ_ASSERT(hasValue());
- return *data.value.addr();
- }
-
- AnyRegister dataTyped() const {
- MOZ_ASSERT(hasTyped());
- return *data.typed.addr();
- }
- const ValueOperand& dataValue() const {
- MOZ_ASSERT(hasValue());
- return *data.value.addr();
- }
-
public:
- TypedOrValueRegister()
- : type_(MIRType_None)
- {}
+ TypedOrValueRegister() = default;
TypedOrValueRegister(MIRType type, AnyRegister reg)
: type_(type)
{
- dataTyped() = reg;
+ data.typed = reg;
}
MOZ_IMPLICIT TypedOrValueRegister(ValueOperand value)
: type_(MIRType_Value)
{
- dataValue() = value;
+ data.value = value;
}
MIRType type() const {
@@ -220,11 +198,13 @@
}
AnyRegister typedReg() const {
- return dataTyped();
+ MOZ_ASSERT(hasTyped());
+ return data.typed;
}
ValueOperand valueReg() const {
- return dataValue();
+ MOZ_ASSERT(hasValue());
+ return data.value;
}
AnyRegister scratchReg() {
@@ -240,19 +220,18 @@
// Whether a constant value is being stored.
bool constant_;
- // Space to hold either a Value or a TypedOrValueRegister.
union U {
- mozilla::AlignedStorage2<Value> constant;
- mozilla::AlignedStorage2<TypedOrValueRegister> reg;
+ Value constant;
+ TypedOrValueRegister reg;
} data;
Value& dataValue() {
MOZ_ASSERT(constant());
- return *data.constant.addr();
+ return data.constant;
}
TypedOrValueRegister& dataReg() {
MOZ_ASSERT(!constant());
- return *data.reg.addr();
+ return data.reg;
}
public: