community/js185 to 1.0.0-3.1

This commit is contained in:
Kevin Mihelich 2017-11-22 01:29:27 +00:00
parent f25ea31b27
commit 6700938969
3 changed files with 260 additions and 9 deletions

View file

@ -1,14 +1,15 @@
# $Id: PKGBUILD 183425 2013-04-21 22:11:08Z heftig $
# $Id$
# Maintainer: Ionut Biru <ibiru@archlinux.org>
# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
# - patch to fix mozilla stupidity
# - patch to fix mozilla stupidity
# - patch for AArch64
# - patch for GCC6
# - two patches for AArch64
pkgname=js185
pkgver=1.0.0
pkgrel=3
pkgrel=3.1
pkgdesc="JavaScript interpreter and libraries (legacy)"
arch=(i686 x86_64)
url="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/1.8.5"
@ -18,11 +19,27 @@ makedepends=(python2 zip)
options=(!staticlibs)
source=(http://ftp.mozilla.org/pub/mozilla.org/js/$pkgname-$pkgver.tar.gz
ihatemozilla.patch no-neon.patch
Bug-638056-Avoid-The-cacheFlush-support-is-missing-o.patch)
fix-811665.patch
Bug-638056-Avoid-The-cacheFlush-support-is-missing-o.patch
mozjs185-tag.patch)
md5sums=('a4574365938222adca0a6bd33329cb32'
'9add35f52965e4643b9235307d0d6cc5'
'5d4817fadff71765c9b5d1f7b90f904f'
'31d3273a985b88938e229ded36271286')
'f810f575c855e136fe32302c1167344f'
'31d3273a985b88938e229ded36271286'
'a6a40ac37ab66291c68ceeacc6e73a01')
prepare() {
cd js-1.8.5/js/src
patch -p3 -i "$srcdir/ihatemozilla.patch"
patch -p3 -i "$srcdir/no-neon.patch"
patch -p3 -i "$srcdir/fix-811665.patch"
if [[ $CARCH == "aarch64" ]]; then
patch -p3 -i "$srcdir/Bug-638056-Avoid-The-cacheFlush-support-is-missing-o.patch"
patch -p3 -i "$srcdir/mozjs185-tag.patch"
fi
}
build() {
cd js-1.8.5/js/src
@ -30,10 +47,6 @@ build() {
# _FORTIFY_SOURCE causes configure error
unset CPPFLAGS
patch -p3 -i "$srcdir/ihatemozilla.patch"
patch -p3 -i "$srcdir/no-neon.patch"
[[ $CARCH == "aarch64" ]] && patch -p3 -i "$srcdir/Bug-638056-Avoid-The-cacheFlush-support-is-missing-o.patch"
./configure --prefix=/usr --with-system-nspr \
--enable-threadsafe
make

View file

@ -0,0 +1,153 @@
Description: Fix FTBFS with gcc6
Most fixes are returning NULL instead of false and a narrowing issues.
Author: Tobias Frost <tobi@debian.org>
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=811665
Last-Update: 2016-09-25
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- a/js/src/ctypes/CTypes.cpp
+++ b/js/src/ctypes/CTypes.cpp
@@ -4753,7 +4753,7 @@ NewFunctionInfo(JSContext* cx,
for (JSUint32 i = 0; i < argLength; ++i) {
bool isEllipsis;
if (!IsEllipsis(cx, argTypes[i], &isEllipsis))
- return false;
+ return NULL;
if (isEllipsis) {
fninfo->mIsVariadic = true;
if (i < 1) {
--- a/js/src/jsapi.cpp
+++ b/js/src/jsapi.cpp
@@ -3985,7 +3985,7 @@ JS_Enumerate(JSContext *cx, JSObject *ob
AutoIdVector props(cx);
JSIdArray *ida;
if (!GetPropertyNames(cx, obj, JSITER_OWNONLY, &props) || !VectorToIdArray(cx, props, &ida))
- return false;
+ return NULL;
for (size_t n = 0; n < size_t(ida->length); ++n)
JS_ASSERT(js_CheckForStringIndex(ida->vector[n]) == ida->vector[n]);
return ida;
--- a/js/src/jsfun.cpp
+++ b/js/src/jsfun.cpp
@@ -2051,7 +2051,7 @@ fun_toStringHelper(JSContext *cx, JSObje
JSString *str = JS_DecompileFunction(cx, fun, indent);
if (!str)
- return false;
+ return NULL;
if (!indent)
cx->compartment->toSourceCache.put(fun, str);
@@ -2657,7 +2657,7 @@ LookupInterpretedFunctionPrototype(JSCon
const Shape *shape = funobj->nativeLookup(id);
if (!shape) {
if (!ResolveInterpretedFunctionPrototype(cx, funobj))
- return false;
+ return NULL;
shape = funobj->nativeLookup(id);
}
JS_ASSERT(!shape->configurable());
--- a/js/src/jsiter.cpp
+++ b/js/src/jsiter.cpp
@@ -425,7 +425,7 @@ NewIteratorObject(JSContext *cx, uintN f
*/
JSObject *obj = js_NewGCObject(cx, FINALIZE_OBJECT0);
if (!obj)
- return false;
+ return NULL;
obj->init(cx, &js_IteratorClass, NULL, NULL, NULL, false);
obj->setMap(cx->compartment->emptyEnumeratorShape);
return obj;
--- a/js/src/jsparse.cpp
+++ b/js/src/jsparse.cpp
@@ -3352,7 +3352,7 @@ Parser::functionDef(JSAtom *funAtom, Fun
if (!outertc->inFunction() && bodyLevel && funAtom && !lambda && outertc->compiling()) {
JS_ASSERT(pn->pn_cookie.isFree());
if (!DefineGlobal(pn, outertc->asCodeGenerator(), funAtom))
- return false;
+ return NULL;
}
pn->pn_blockid = outertc->blockid();
--- a/js/src/jsstr.cpp
+++ b/js/src/jsstr.cpp
@@ -1734,7 +1734,7 @@ class RegExpGuard
if (flat) {
patstr = flattenPattern(cx, fm.patstr);
if (!patstr)
- return false;
+ return NULL;
} else {
patstr = fm.patstr;
}
@@ -3408,7 +3408,7 @@ js_InitStringClass(JSContext *cx, JSObje
UndefinedValue(), NULL, NULL,
JSPROP_READONLY | JSPROP_PERMANENT | JSPROP_SHARED, 0, 0,
NULL)) {
- return JS_FALSE;
+ return NULL;
}
return proto;
--- a/js/src/jstypedarray.cpp
+++ b/js/src/jstypedarray.cpp
@@ -1334,7 +1334,7 @@ class TypedArrayTemplate
if (size != 0 && count >= INT32_MAX / size) {
JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL,
JSMSG_NEED_DIET, "size and count");
- return false;
+ return NULL;
}
int32 bytelen = size * count;
@@ -1668,7 +1668,7 @@ TypedArrayConstruct(JSContext *cx, jsint
default:
JS_NOT_REACHED("shouldn't have gotten here");
- return false;
+ return NULL;
}
}
--- a/js/src/jsxml.cpp
+++ b/js/src/jsxml.cpp
@@ -282,7 +282,7 @@ NewXMLNamespace(JSContext *cx, JSLinearS
obj = NewBuiltinClassInstanceXML(cx, &js_NamespaceClass);
if (!obj)
- return JS_FALSE;
+ return NULL;
JS_ASSERT(JSVAL_IS_VOID(obj->getNamePrefixVal()));
JS_ASSERT(JSVAL_IS_VOID(obj->getNameURIVal()));
JS_ASSERT(JSVAL_IS_VOID(obj->getNamespaceDeclared()));
@@ -431,7 +431,7 @@ ConvertQNameToString(JSContext *cx, JSOb
size_t length = str->length();
jschar *chars = (jschar *) cx->malloc((length + 2) * sizeof(jschar));
if (!chars)
- return JS_FALSE;
+ return NULL;
*chars = '@';
const jschar *strChars = str->getChars(cx);
if (!strChars) {
--- a/js/src/methodjit/InvokeHelpers.cpp
+++ b/js/src/methodjit/InvokeHelpers.cpp
@@ -728,7 +728,7 @@ AtSafePoint(JSContext *cx)
{
JSStackFrame *fp = cx->fp();
if (fp->hasImacropc())
- return false;
+ return NULL;
JSScript *script = fp->script();
return script->maybeNativeCodeForPC(fp->isConstructing(), cx->regs->pc);
--- a/js/src/nanojit/NativeX64.cpp
+++ b/js/src/nanojit/NativeX64.cpp
@@ -1899,7 +1899,7 @@ namespace nanojit
}
}
- static const AVMPLUS_ALIGN16(int64_t) negateMask[] = {0x8000000000000000LL,0};
+ static const AVMPLUS_ALIGN16(int64_t) negateMask[] = {(int64_t) 0x8000000000000000ULL,0};
void Assembler::asm_fneg(LIns *ins) {
Register rr, ra;

View file

@ -0,0 +1,85 @@
diff -urN js-1.8.5.orig/js/src/jsval.h js-1.8.5/js/src/jsval.h
--- js-1.8.5.orig/js/src/jsval.h 2016-04-08 08:44:39.417713832 +0000
+++ js-1.8.5/js/src/jsval.h 2016-04-11 06:26:40.807919594 +0000
@@ -66,7 +66,7 @@
#endif
#if JS_BITS_PER_WORD == 64
-# define JSVAL_TAG_SHIFT 47
+# define JSVAL_TAG_SHIFT 48
#endif
/*
@@ -135,7 +135,8 @@
/* Remember to propagate changes to the C defines below. */
JS_ENUM_HEADER(JSValueTag, uint32)
{
- JSVAL_TAG_MAX_DOUBLE = 0x1FFF0,
+ JSVAL_TAG_DUMMY = 0xFFFFFFFF, /* Make sure the enums cannot fit 16-bits. */
+ JSVAL_TAG_MAX_DOUBLE = 0xFFF8,
JSVAL_TAG_INT32 = JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_INT32,
JSVAL_TAG_UNDEFINED = JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_UNDEFINED,
JSVAL_TAG_STRING = JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_STRING,
@@ -196,7 +197,7 @@
#elif JS_BITS_PER_WORD == 64
typedef uint32 JSValueTag;
-#define JSVAL_TAG_MAX_DOUBLE ((uint32)(0x1FFF0))
+#define JSVAL_TAG_MAX_DOUBLE ((uint32)(0xFFF8))
#define JSVAL_TAG_INT32 (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_INT32)
#define JSVAL_TAG_UNDEFINED (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_UNDEFINED)
#define JSVAL_TAG_STRING (uint32)(JSVAL_TAG_MAX_DOUBLE | JSVAL_TYPE_STRING)
@@ -236,8 +237,8 @@
#elif JS_BITS_PER_WORD == 64
-#define JSVAL_PAYLOAD_MASK 0x00007FFFFFFFFFFFLL
-#define JSVAL_TAG_MASK 0xFFFF800000000000LL
+#define JSVAL_PAYLOAD_MASK 0x0000FFFFFFFFFFFFLL
+#define JSVAL_TAG_MASK 0xFFFF000000000000LL
#define JSVAL_TYPE_TO_TAG(type) ((JSValueTag)(JSVAL_TAG_MAX_DOUBLE | (type)))
#define JSVAL_TYPE_TO_SHIFTED_TAG(type) (((uint64)JSVAL_TYPE_TO_TAG(type)) << JSVAL_TAG_SHIFT)
@@ -297,8 +298,8 @@
#if (!defined(_WIN64) && defined(__cplusplus))
/* MSVC does not pack these correctly :-( */
struct {
- uint64 payload47 : 47;
- JSValueTag tag : 17;
+ uint64 payload48 : 48;
+ JSValueTag tag : 16;
} debugView;
#endif
struct {
@@ -339,8 +340,8 @@
{
uint64 asBits;
struct {
- JSValueTag tag : 17;
- uint64 payload47 : 47;
+ JSValueTag tag : 16;
+ uint64 payload48 : 48;
} debugView;
struct {
union {
diff -urN js-1.8.5.orig/js/src/jsvalue.h js-1.8.5/js/src/jsvalue.h
--- js-1.8.5.orig/js/src/jsvalue.h 2016-04-08 08:44:39.417713832 +0000
+++ js-1.8.5/js/src/jsvalue.h 2016-04-11 06:10:21.219479884 +0000
@@ -255,7 +255,7 @@
{
uint64 lbits = lhs.asBits, rbits = rhs.asBits;
return (lbits <= JSVAL_TAG_MAX_DOUBLE && rbits <= JSVAL_TAG_MAX_DOUBLE) ||
- (((lbits ^ rbits) & 0xFFFF800000000000LL) == 0);
+ (((lbits ^ rbits) & 0xFFFF000000000000LL) == 0);
}
static JS_ALWAYS_INLINE jsval_layout
@@ -277,7 +277,7 @@
static JS_ALWAYS_INLINE JSValueType
JSVAL_EXTRACT_NON_DOUBLE_TYPE_IMPL(jsval_layout l)
{
- uint64 type = (l.asBits >> JSVAL_TAG_SHIFT) & 0xF;
+ uint64 type = (l.asBits >> JSVAL_TAG_SHIFT) & 0x7;
JS_ASSERT(type > JSVAL_TYPE_DOUBLE);
return (JSValueType)type;
}