pkgsrc-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[pkgsrc/trunk]: pkgsrc/www/firefox The aggregate allocator for JSScripts did ...
details: https://anonhg.NetBSD.org/pkgsrc/rev/dcb1cc4b268c
branches: trunk
changeset: 398107:dcb1cc4b268c
user: martin <martin%pkgsrc.org@localhost>
date: Sun Aug 23 23:56:19 2009 +0000
description:
The aggregate allocator for JSScripts did not care about alignment at all -
make it deal properly at least on 64 bit archs (natural alignment seems
to fit for all substructures for 32bit archs)
diffstat:
www/firefox/distinfo | 3 +-
www/firefox/patches/patch-na | 121 +++++++++++++++++++++++++++++++++++++++++++
2 files changed, 123 insertions(+), 1 deletions(-)
diffs (142 lines):
diff -r 29532cfbd729 -r dcb1cc4b268c www/firefox/distinfo
--- a/www/firefox/distinfo Sun Aug 23 23:12:52 2009 +0000
+++ b/www/firefox/distinfo Sun Aug 23 23:56:19 2009 +0000
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.88 2009/08/05 02:43:47 tnn Exp $
+$NetBSD: distinfo,v 1.89 2009/08/23 23:56:19 martin Exp $
SHA1 (firefox-3.5.2-source.tar.bz2) = 6439923ff9d316297926ebe193bac3ac1a41b494
RMD160 (firefox-3.5.2-source.tar.bz2) = d5e0b5f0e8b19b216394584ccabf37d776b89a39
@@ -38,6 +38,7 @@
SHA1 (patch-mm) = faabab8816522bd9a74c2e6e65b2ae3d791affe0
SHA1 (patch-mn) = 17641f46ecf1019f3cc02583a22baa9f9a327d1f
SHA1 (patch-mp) = 33128f10b6146419bcebd85f7e6e7fa72e770be1
+SHA1 (patch-na) = 3f1a8919965cdc46359c2c7a4bce47f3feaf5778
SHA1 (patch-xa) = ae5ed1f0fb9a0fd45242a94739853b199ed7da72
SHA1 (patch-xb) = c09bd676d21bef02e04c68c2362e32f408ea9201
SHA1 (patch-xc) = 6e1d6b21d7ded744b082173ea6f35b45999fa965
diff -r 29532cfbd729 -r dcb1cc4b268c www/firefox/patches/patch-na
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/www/firefox/patches/patch-na Sun Aug 23 23:56:19 2009 +0000
@@ -0,0 +1,121 @@
+$NetBSD: patch-na,v 1.1 2009/08/23 23:56:19 martin Exp $
+
+# not yet reported upstream
+
+--- js/src/jsscript.cpp.orig 2009-08-24 01:32:14.000000000 +0200
++++ js/src/jsscript.cpp 2009-08-24 01:36:20.000000000 +0200
+@@ -1370,19 +1370,49 @@ js_NewScript(JSContext *cx, uint32 lengt
+ size_t size, vectorSize;
+ JSScript *script;
+ uint8 *cursor;
++#ifdef _LP64
++#define LP64_ALIGN(V) if ((V) & 7) (V) = (((V)|7) + 1)
++#define LP64_ALIGNP(P) if ((uintptr_t)(P) & 7) (P) = (uint8*)(((uintptr_t)(P)|7) + 1)
++#else
++#define LP64_ALIGN(V)
++#define LP64_ALIGNP(V)
++#endif
+
+- size = sizeof(JSScript) +
+- sizeof(JSAtom *) * natoms +
+- length * sizeof(jsbytecode) +
+- nsrcnotes * sizeof(jssrcnote);
+- if (nobjects != 0)
+- size += sizeof(JSObjectArray) + nobjects * sizeof(JSObject *);
+- if (nupvars != 0)
+- size += sizeof(JSUpvarArray) + nupvars * sizeof(uint32);
+- if (nregexps != 0)
+- size += sizeof(JSObjectArray) + nregexps * sizeof(JSObject *);
+- if (ntrynotes != 0)
+- size += sizeof(JSTryNoteArray) + ntrynotes * sizeof(JSTryNote);
++ size = sizeof(JSScript);
++ if (nobjects != 0) {
++ LP64_ALIGN(size);
++ size += sizeof(JSObjectArray);
++ }
++ if (nupvars != 0) {
++ LP64_ALIGN(size);
++ size += sizeof(JSUpvarArray);
++ }
++ if (nregexps != 0) {
++ LP64_ALIGN(size);
++ size += sizeof(JSObjectArray);
++ }
++ if (ntrynotes != 0) {
++ LP64_ALIGN(size);
++ size += sizeof(JSTryNoteArray);
++ }
++ if (natoms != 0) {
++ LP64_ALIGN(size);
++ size += sizeof(JSAtom *) * natoms;
++ }
++ if (nobjects != 0) {
++ LP64_ALIGN(size);
++ size += nobjects * sizeof(JSObject *);
++ }
++ if (nupvars != 0) {
++ size += nupvars * sizeof(uint32);
++ }
++ if (nregexps != 0) {
++ LP64_ALIGN(size);
++ size += nregexps * sizeof(JSObject *);
++ }
++ size += length * sizeof(jsbytecode) +
++ nsrcnotes * sizeof(jssrcnote) +
++ ntrynotes * sizeof(JSTryNote);
+
+ script = (JSScript *) JS_malloc(cx, size);
+ if (!script)
+@@ -1393,23 +1423,28 @@ js_NewScript(JSContext *cx, uint32 lengt
+
+ cursor = (uint8 *)script + sizeof(JSScript);
+ if (nobjects != 0) {
++ LP64_ALIGNP(cursor);
+ script->objectsOffset = (uint8)(cursor - (uint8 *)script);
+ cursor += sizeof(JSObjectArray);
+ }
+ if (nupvars != 0) {
++ LP64_ALIGNP(cursor);
+ script->upvarsOffset = (uint8)(cursor - (uint8 *)script);
+ cursor += sizeof(JSUpvarArray);
+ }
+ if (nregexps != 0) {
++ LP64_ALIGNP(cursor);
+ script->regexpsOffset = (uint8)(cursor - (uint8 *)script);
+ cursor += sizeof(JSObjectArray);
+ }
+ if (ntrynotes != 0) {
++ LP64_ALIGNP(cursor);
+ script->trynotesOffset = (uint8)(cursor - (uint8 *)script);
+ cursor += sizeof(JSTryNoteArray);
+ }
+
+ if (natoms != 0) {
++ LP64_ALIGNP(cursor);
+ script->atomMap.length = natoms;
+ script->atomMap.vector = (JSAtom **)cursor;
+ vectorSize = natoms * sizeof(script->atomMap.vector[0]);
+@@ -1423,6 +1458,7 @@ js_NewScript(JSContext *cx, uint32 lengt
+ }
+
+ if (nobjects != 0) {
++ LP64_ALIGNP(cursor);
+ JS_SCRIPT_OBJECTS(script)->length = nobjects;
+ JS_SCRIPT_OBJECTS(script)->vector = (JSObject **)cursor;
+ vectorSize = nobjects * sizeof(JS_SCRIPT_OBJECTS(script)->vector[0]);
+@@ -1431,6 +1467,7 @@ js_NewScript(JSContext *cx, uint32 lengt
+ }
+
+ if (nupvars != 0) {
++ LP64_ALIGNP(cursor);
+ JS_SCRIPT_UPVARS(script)->length = nupvars;
+ JS_SCRIPT_UPVARS(script)->vector = (uint32 *)cursor;
+ vectorSize = nupvars * sizeof(JS_SCRIPT_UPVARS(script)->vector[0]);
+@@ -1439,6 +1476,7 @@ js_NewScript(JSContext *cx, uint32 lengt
+ }
+
+ if (nregexps != 0) {
++ LP64_ALIGNP(cursor);
+ JS_SCRIPT_REGEXPS(script)->length = nregexps;
+ JS_SCRIPT_REGEXPS(script)->vector = (JSObject **)cursor;
+ vectorSize = nregexps * sizeof(JS_SCRIPT_REGEXPS(script)->vector[0]);
Home |
Main Index |
Thread Index |
Old Index