summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaúl Porcel <armin76@gentoo.org>2013-01-06 16:50:16 +0000
committerRaúl Porcel <armin76@gentoo.org>2013-01-06 16:50:16 +0000
commit2132743d60785b6f053b1b4def32d9fcd0fc3ece (patch)
tree00793626a0fe662c714cf9c243a28ed28936a0e2 /dev-lang/spidermonkey
parentfix bug# from last comment (diff)
downloadhistorical-2132743d60785b6f053b1b4def32d9fcd0fc3ece.tar.gz
historical-2132743d60785b6f053b1b4def32d9fcd0fc3ece.tar.bz2
historical-2132743d60785b6f053b1b4def32d9fcd0fc3ece.zip
Add patches for ia64, mark stable, bug #441934
Package-Manager: portage-2.1.11.38/cvs/Linux ia64 Manifest-Sign-Key: 0xF6AD3240
Diffstat (limited to 'dev-lang/spidermonkey')
-rw-r--r--dev-lang/spidermonkey/ChangeLog7
-rw-r--r--dev-lang/spidermonkey/Manifest16
-rw-r--r--dev-lang/spidermonkey/files/spidermonkey-1.8.5-ia64-fix.patch53
-rw-r--r--dev-lang/spidermonkey/files/spidermonkey-1.8.5-ia64-static-strings.patch381
-rw-r--r--dev-lang/spidermonkey/spidermonkey-1.8.5-r4.ebuild7
5 files changed, 459 insertions, 5 deletions
diff --git a/dev-lang/spidermonkey/ChangeLog b/dev-lang/spidermonkey/ChangeLog
index 54cc2477807b..a91668702352 100644
--- a/dev-lang/spidermonkey/ChangeLog
+++ b/dev-lang/spidermonkey/ChangeLog
@@ -1,6 +1,11 @@
# ChangeLog for dev-lang/spidermonkey
# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-lang/spidermonkey/ChangeLog,v 1.99 2013/01/01 11:41:30 ago Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/spidermonkey/ChangeLog,v 1.100 2013/01/06 16:50:09 armin76 Exp $
+
+ 06 Jan 2013; Raúl Porcel <armin76@gentoo.org> spidermonkey-1.8.5-r4.ebuild,
+ +files/spidermonkey-1.8.5-ia64-fix.patch,
+ +files/spidermonkey-1.8.5-ia64-static-strings.patch:
+ Add patches for ia64, mark stable, bug #441934
01 Jan 2013; Agostino Sarubbo <ago@gentoo.org> spidermonkey-1.8.5-r4.ebuild:
Add ~ia64, wrt bug #449220
diff --git a/dev-lang/spidermonkey/Manifest b/dev-lang/spidermonkey/Manifest
index e903bb6353bf..7858447cef01 100644
--- a/dev-lang/spidermonkey/Manifest
+++ b/dev-lang/spidermonkey/Manifest
@@ -1,3 +1,6 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA256
+
AUX spidermonkey-1.5-build.patch 3457 SHA256 04a2b3b1b85825f463c6eb703d32e66747e2a8cca81b0026b958862eb1248fdb SHA512 d4ebb63c9ce2a2e84a0a2b32abb8f4316d53bd71a2c6de37f1a48b26514d583b4c573302dcb15f39b4f57878d01dfc4ff9f9d70e9d1abd54f4ce535124c1147e WHIRLPOOL d35da32872cb68f2bf5b86c20691c7212bdff843a9bfcd8fb385e62c7bc55b9248a00edd3654ac2c1e50f57e413c9dd4c4cfcb57b5a59c1cef343f6c202eb6f9
AUX spidermonkey-1.6-header.patch 270 SHA256 e81acd7ba025214b2ecfa5918a1652e4590eaca39307c4e8d9f5d949d315373e SHA512 f52861ad88b6624fc7e2cd7b9174f53cf0bebf339704932f36ca1d5bd6b133f6e28333fa5d10841c72ccfaccf0f7daa63a1385e2ff6ab8d0192bf70bd437479a WHIRLPOOL d076e64a52adfb9ff55aa7c6191c4a1c29c6917661a15a5cfcc0717960e63403b5557f9e28263cc19c20f3ee4e97c88f87b40b6d786ca3705dd4b2893a0f9c7d
AUX spidermonkey-1.7.0-ldflags.patch 1076 SHA256 7dcc26496a6413652ff32ce1b1eb04c7ef526658d41a243f1ce0e44598cd809b SHA512 649dccce8206cf99e09715a0e8e7fc0db3bdff4269ab82898476d2e70fda73c420f80f915eadabf17a8bcee529e692bd195dd6df3ac58020e8dd97a91d19a847 WHIRLPOOL 270ea3c19981a597cc8cf9984f5ac358e91fb6ab3fe0ff753cbd933868177e5629b088ae7588b9b630f37ac1cc1381f6e28591e3b47e03bec39627ef332cdcb4
@@ -6,6 +9,8 @@ AUX spidermonkey-1.8.5-arm_respect_cflags-2.patch 3618 SHA256 076e5397d761919bc6
AUX spidermonkey-1.8.5-arm_respect_cflags-3.patch 3474 SHA256 2f0a33c7d70e98c231619cf28de151e6961f7fd163a9b02588c75bb3740f6380 SHA512 55726ddffe88c025eac331918b5f12223ccf47a2a2f3f6bb020fd6fc027e558dee811b80d2328dc631daf7d372b10c51004ee4a4ca87e8c1aa2e68f562bf1244 WHIRLPOOL b8a1738080680670cdaa5e4a9d603137c34dd0468448e7c51d6a7ae0d41ce69a74ac2e880d5db7d38171f979d564bd78a8e64fae419d5119558e5eb71a0a5792
AUX spidermonkey-1.8.5-fix-install-symlinks.patch 484 SHA256 4c66d490b6ff22086252ad871242d6d87de2e3fec59b91099864c7881cffd823 SHA512 738f59260900e2dee42a3a8347c5afa09cc99e0e7f267c7af80b29a115818c61dce6912d5ff98c1bbcaea816c4d8579383eb7f6a848ba5d4b9275ec6baa2f01d WHIRLPOOL 210390d31e93c7a96fb61951b93221dbd34a1572476dbbf91e0ae3bcfd06d10194205411c49c47ea7d8fa6f898d0c96366c5b6fd3927d12d787524b674d85b81
AUX spidermonkey-1.8.5-fix-ppc64.patch 1669 SHA256 ffae38a7e5db0895e10be924e1bd084e57640c7a184cd8f1b1a90e9533202470 SHA512 0352665ae138e15aabc8b40561ac6d5328b7a1c497f9591ebe57ffacb05a0ba52c677b8174829c5328cb79ea271b519287bfb99bd418efefc3409d18a198b7d9 WHIRLPOOL 699b3d0a75d660fba0a6095b19db84504238b2c3f9f0bcddf1d6628c8a51a70301c2a3eb54712c2e7719ca5bd4184562d64fac22760e870e453ea2feb5456870
+AUX spidermonkey-1.8.5-ia64-fix.patch 2097 SHA256 1e98852a3d3a07eebc12ec22531dd7358a6f76f4303ebac436bedda6726eefe2 SHA512 ad23dd6d561c404b935a8acd844732e1cbccda10e26880f9c074e1af272a02bbe6f0465e5bc50405dd5fd77dda5d94ba68486642911b61adfed599174fc771b2 WHIRLPOOL fcc3e50e33d93fc075a53e04efb18e1683e105e5374d832d8334dc930ad916098ace1cc4d910cd67a7893b5efe19da2dabca41ce5bd6e5d71206797ca34987f7
+AUX spidermonkey-1.8.5-ia64-static-strings.patch 11766 SHA256 3d409d04bee33335c9a4620829356bbfd41e65c4c00910931f02624578a62d3a SHA512 205bc24c466ac17811100693888ec86b4189e786be459298d7f4e7b967870d25f8f93738fab5e5ab43ca2cc3e55cd9814e818558f9e16fdb2bfe7ac6ebf738b5 WHIRLPOOL 655c1997fc30b06f9e80e38ce5ca643fac3f0d6211f460a00799c75014c7d56b048e4217bea87159ea589fcbd6d568e105fc33e8a1e8c5ff5bd8d7589cfa406d
AUX spidermonkey-1.8.5-perf_event-check.patch 694 SHA256 c24f4c5b445e4ac20a35e0baf11649b1697d0d0c10e08406d07f9e3d311f8135 SHA512 d974135f6f6897529d482d7ac7ba79031471ed677c646462dd919a36313d05e3720c394afa9b143a7c1f681d5612fc8011faaebc5ba54712790d878d6002fa73 WHIRLPOOL 511e9904f32c4be3c4d73dd760a4c68159e101a4963d895a1b891dd6317a1713c83f95f12cea4de7f80224e8a0f15e0cd490c1eaa3c193e07c7733b5941039cc
AUX spidermonkey-1.8.5-symbol-versions.patch 1011 SHA256 41bda93bc2309621ece16c2b659a25e94785b8d2a0ca6c983b32f5c50d266ab7 SHA512 8e8f8ea70d87441be070ef5c199ad9589cf4ebedb2ea5bff972aec3c819f3aef517f7dcb1ffac1508dcfcac07cbf2d4bfb8b2b29f1f2c487410de1484e9aa95f WHIRLPOOL e0b0fc506e71a4b4961b2aadd26f86b4499687cba98c56b5e4861ef4acc0e11849af234febc0a2ed2aee603748df87ce8fd0a83484757af1b697d09c65bf8945
AUX spidermonkey-1.8.7-filter_desc.patch 922 SHA256 7a3832a0a47f90b89a240b44ac580fff8740344c1d3eee0624973cb251043c46 SHA512 f4b2f3b8b48b0418ab2572dcedc927c4e415979b2dff0f89614cab8b6c6b33e8d0ecf0d298ecdd5c125e936db98028261a59b6f4917384e060999e07ff7b92be WHIRLPOOL 186c2f2ba04170005a5af7cce773ef92925015a1e4541f40d2d44641b9dda5048a2b3d8953755860e866893043ae666360c8a7b594eda77858851c937d5ca8c0
@@ -28,9 +33,16 @@ EBUILD spidermonkey-1.8.2.15.ebuild 1907 SHA256 e03a07403e86e8a20c7efefc59dc5e84
EBUILD spidermonkey-1.8.5-r1.ebuild 3393 SHA256 07eac4dd3ed4a5c572d0510d3df05c639a09bd6a25fa46b951bc77e6e4fee920 SHA512 355ab294eb9a46f5f2fdd55c49d0c63b6bd8e3dc52b50182ff02232d048f98585f1aa47a8913cc164eb690affaee07ee1c9c969c3ef62784294b4ff6b450fb79 WHIRLPOOL 85e89e3dbd7dfd6db559e6ab1639cefa5e656b071aa6da3f26f317b4b66487853e8a2c5bab58a0145d668759ea50502be8cc37a318e9aab5894a80be9603be6f
EBUILD spidermonkey-1.8.5-r2.ebuild 3726 SHA256 6d8743f9bc8e61d9d622192555f82e3f341e78f45b1f797e65fde2431398dd35 SHA512 f190ab4b3870fa0d998ee41c54df16876317a9c9df62a9c3b3ca184383c4bcee09d1770ae1ece32982695fc255d2a4b7d782dc11f4c02d036dceec7e1fde7e17 WHIRLPOOL d77df7a577daa2886e9dc92ecddf20fdf689e1f49aedc466fd71329daacd5ba71c0d1473e81c42794f482f973bbef2df96a6adf3550357b8705c4105fd93f88c
EBUILD spidermonkey-1.8.5-r3.ebuild 3820 SHA256 0bb0fd48912006c7478148ad82ea7fff9ad3128ae6cdf5e4ae5e1718ab071db5 SHA512 782a49ef74b99410d189e580e60e8e12ecc0e48f78fa0351ed1ae06d038681442e4653ab638688a3a740c5bd8e4583cdf2075d6a53d6813a0db46a86dce743ad WHIRLPOOL 6d9468378a0410207e77e152d5038cdf731a42880e1a359d687f6a4f040299e370c9d4eceab80a0284b82b367eff42541436a5eeb04245b4ba0ca4aed751c040
-EBUILD spidermonkey-1.8.5-r4.ebuild 3875 SHA256 e78945672737b47edb53955b79aedd40eebc5eef622ccb48928e7f5db668c3ae SHA512 466d254f9fc557b3483ff047c7db86040dc66c13948d725e587da69455af7e8ab8fac6abe78c5b3d888cb35fc543d26137237825de54035edf509f13cfb547d4 WHIRLPOOL c62f30e223f6a4ba67edb3791012aae1ba61f2efe7a72c38f0d70e5cdd7d7ffdcdbaf55b9e777f2cb903cda9d0d4d197256062876b56fad3370e47861d408206
+EBUILD spidermonkey-1.8.5-r4.ebuild 4037 SHA256 29978e44a2d06bf3f666bfdeaf111104b21476ddd4e76776d6c4dc4b09cd74f9 SHA512 cdb21fff7f74532f0a754f8bf29aac0acb4c3034e45ae615e263b550e49798c0c370c686975008e50aefbc81b3b7617f078f6a84db8b09dc5f66bfd1c05f0b5e WHIRLPOOL 5d8ff9ea2db459275dfaf76ad088f29ea8337083032831c10ebfcc2eafb7e07cf43c14e0adb04ebb4d5eb02fefdc775cb9bf519f61ffda2129727d1c470c7171
EBUILD spidermonkey-1.8.7-r2.ebuild 3953 SHA256 0064ff0cd89005d9fda0e42a34bab38cf08576f3005ab9f76cb415c2af1b250d SHA512 60e073e2baf4c285036bc699d0b2046cee736250bae8e163dd931738bdcc4fd37b7fdf5e74cf294a12ea4bb171617a9fff7b72c717703c1497b8dba80f775c31 WHIRLPOOL b421c800f4f4aece6ce8f0101177a5b006204af5022ea28d8e021add646db10375bf3308367951147b2433ccf53f85edc6bd2e22306ff31a2be830872630519f
EBUILD spidermonkey-1.8.7-r3.ebuild 4002 SHA256 f50355febb9db9f88f8b773993defc7314b242cb50693e1c958ab2b86533b791 SHA512 6cc438c83862184be262f0526abf41d126bb5f0d87f4ef90bede3b1f3eed8417ed73a4134922b6e58f08a7c85c7e1dfb7c40e2832e2d1bf4a53329c4bcf2c49b WHIRLPOOL 81b308a3ca7698aecf0f89e5206308b5f52492a94bb5ef5370cf0921f53348285085f891fd7ed004124942ecfe7a46cc90243367f6a1ab4939a83dad1be1a1dc
EBUILD spidermonkey-1.8.7.ebuild 3607 SHA256 a60de62a9845cc56b0fb289ac8ffee9c31d8a6bfb9b7f68aaf37aacf849e8d70 SHA512 62cbf45fa4461057d2d3d8369cb2b8a4e29f68d225d518b89aa37e904e65dc1a79c1587d40e7c40c7f647368fc754f985c31b0a628d0a8bb976aec54bc06a88c WHIRLPOOL 579de256e755939c93d0f7ff8c26edfdd7f85e4fff2af14cb4f9d5e022a1bae2b5aa6b93eec5d6b190c3b0edaae23f804c8e342bb25e7a9f0cc3e0aa348067c2
-MISC ChangeLog 16001 SHA256 4a21314260fd36c772d4a2c20f5727c26afc8007955895c21fa64b5d612a2a10 SHA512 77612138ff3dfbb9b75494b4e230567a75c673032893ef4328c14caeb94fb8e519232b4a63e1509fd51f466349d37ee09d1287fda8556ae7ee0614080e7e7fc9 WHIRLPOOL 658c992dfb1e162331e378bb15e6e1005c3a142d2eb85eaa5365510e74dcdaa43cbb5d92848cacff298d08d44e5674a859ec6f09558045b273784d1cce7345f6
+MISC ChangeLog 16234 SHA256 181c00a8f9763cd10c00840f6c22cef5aa478feef2fcafe1d9cc99d8fb73d957 SHA512 b63fbae0f6c79f91161e5d6a03dd70fb927fdfb3148687cd763f7699aafcce384f801ee4a8d011663dc0d088b2da9e729e0c8a225c5f1b31c3067fe6994c5a4c WHIRLPOOL 51aa081d9b0354be5b07b8545ad706953493c9bd9d70cc5ebdd3fdde5e626e7cf51e93466d24ebd4b1aef125ceb654f71a6a56f17933fc62271da4121aa6eb7e
MISC metadata.xml 337 SHA256 198d1a23238f7b069df2def08e41451d40c225f8a93a2005ed83166f8fae7d35 SHA512 8f7d13e732629734cdcf5db9b8d4279820517c68b80f3ab840f1dfa6117d38eae70feb6894f1f51e76b33cfc058a39a3ecb6ec3fa33199c7a1bc64bc1897bf89 WHIRLPOOL 8ea694f3e700dc58c787f1c9c91621ed83cf06785172045bd4d2d436fb8e7153ea2631db9e7113a59d765fc67fa32aba5275809cad1d96ed2154fc65da0c803d
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.0.19 (GNU/Linux)
+
+iEYEAREIAAYFAlDpq0IACgkQuQc30/atMkAVnwCfV/J1pDTpC+XdlanpXbhDbonL
+mNoAoJF5NcfQkPSF30u+qk17FJ7ffI8w
+=1U5f
+-----END PGP SIGNATURE-----
diff --git a/dev-lang/spidermonkey/files/spidermonkey-1.8.5-ia64-fix.patch b/dev-lang/spidermonkey/files/spidermonkey-1.8.5-ia64-fix.patch
new file mode 100644
index 000000000000..bebe5587180f
--- /dev/null
+++ b/dev-lang/spidermonkey/files/spidermonkey-1.8.5-ia64-fix.patch
@@ -0,0 +1,53 @@
+https://bugzilla.mozilla.org/show_bug.cgi?id=589735
+
+--- a/js/src/jsgcchunk.cpp 2011-03-31 21:08:36.000000000 +0200
++++ b/js/src/jsgcchunk.cpp 2012-11-02 10:36:08.324453878 +0100
+@@ -318,15 +318,48 @@
+ static void *
+ MapPages(void *addr, size_t size)
+ {
++#if defined(__ia64__)
++ /*
++ * The JS engine assumes that all allocated pointers have their high 17 bits clear,
++ * which ia64's mmap doesn't support directly. However, we can emulate it by passing
++ * mmap an "addr" parameter with those bits clear. The mmap will return that address,
++ * or the nearest available memory above that address, providing a near-guarantee
++ * that those bits are clear. If they are not, we return NULL below to indicate
++ * out-of-memory.
++ *
++ * The addr is chosen as 0x0000070000000000, which still allows about 120TB of virtual
++ * address space.
++ *
++ * See Bug 589735 for more information.
++ */
++#endif
++
+ /*
+ * We don't use MAP_FIXED here, because it can cause the *replacement*
+ * of existing mappings, and we only want to create new mappings.
+ */
++#if defined(__ia64__)
++ void *p = mmap(addr ? addr : (void*)0x0000070000000000,
++ size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON,
++ -1, 0);
++#else
+ void *p = mmap(addr, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON,
+ -1, 0);
++#endif
+ if (p == MAP_FAILED)
+ return NULL;
++#if defined(__ia64__)
++ /*
++ * If the caller requested a specific memory location, verify that's what mmap returned.
++ * Otherwise: If the allocated memory doesn't have its upper 17 bits clear, consider it
++ * as out of memory.
++ */
++ if (addr && p != addr
++ || !addr && ((long long)p & 0xffff800000000000)) {
++#else
++ /* If the caller requested a specific memory location, verify that's what mmap returned. */
+ if (addr && p != addr) {
++#endif
+ /* We succeeded in mapping memory, but not in the right place. */
+ JS_ALWAYS_TRUE(munmap(p, size) == 0);
+ return NULL;
diff --git a/dev-lang/spidermonkey/files/spidermonkey-1.8.5-ia64-static-strings.patch b/dev-lang/spidermonkey/files/spidermonkey-1.8.5-ia64-static-strings.patch
new file mode 100644
index 000000000000..5cfed32ae68e
--- /dev/null
+++ b/dev-lang/spidermonkey/files/spidermonkey-1.8.5-ia64-static-strings.patch
@@ -0,0 +1,381 @@
+https://bugzilla.mozilla.org/show_bug.cgi?id=589735
+
+--- a/js/src/jsatom.cpp 2011-03-31 21:08:36.000000000 +0200
++++ b/js/src/jsatom.cpp 2012-11-02 10:43:16.970562590 +0100
+@@ -603,11 +603,13 @@
+ JSString str, *str2;
+ JSAtomState *state;
+
++#ifdef JS_HAS_STATIC_STRINGS
+ if (length == 1) {
+ jschar c = *chars;
+ if (c < UNIT_STRING_LIMIT)
+ return STRING_TO_ATOM(JSString::unitString(c));
+ }
++#endif
+
+ str.initFlatNotTerminated((jschar *)chars, length);
+ state = &cx->runtime->atomState;
+--- a/js/src/jsiter.cpp 2011-03-31 21:08:36.000000000 +0200
++++ b/js/src/jsiter.cpp 2012-11-02 10:43:16.974562590 +0100
+@@ -1002,9 +1002,12 @@
+
+ JSString *str;
+ jsint i;
++#ifdef JS_HAS_STATIC_STRINGS
+ if (rval->isInt32() && (jsuint(i = rval->toInt32()) < INT_STRING_LIMIT)) {
+ str = JSString::intString(i);
+- } else {
++ } else
++#endif
++ {
+ str = js_ValueToString(cx, *rval);
+ if (!str)
+ return false;
+--- a/js/src/jsnum.cpp 2011-03-31 21:08:36.000000000 +0200
++++ b/js/src/jsnum.cpp 2012-11-02 10:43:16.982562589 +0100
+@@ -605,8 +605,10 @@
+ {
+ uint32 ui;
+ if (si >= 0) {
++#ifdef JS_HAS_STATIC_STRINGS
+ if (si < INT_STRING_LIMIT)
+ return JSString::intString(si);
++#endif
+ ui = si;
+ } else {
+ ui = uint32(-si);
+@@ -1169,6 +1171,7 @@
+
+ int32_t i;
+ if (JSDOUBLE_IS_INT32(d, &i)) {
++#ifdef JS_HAS_STATIC_STRINGS
+ if (base == 10 && jsuint(i) < INT_STRING_LIMIT)
+ return JSString::intString(i);
+ if (jsuint(i) < jsuint(base)) {
+@@ -1176,6 +1179,7 @@
+ return JSString::intString(i);
+ return JSString::unitString(jschar('a' + i - 10));
+ }
++#endif
+
+ if (JSString *str = c->dtoaCache.lookup(base, d))
+ return str;
+--- a/js/src/jsstr.cpp 2011-03-31 21:08:36.000000000 +0200
++++ b/js/src/jsstr.cpp 2012-11-02 10:43:16.990562588 +0100
+@@ -3121,6 +3121,8 @@
+ JS_FS_END
+ };
+
++#ifdef JS_HAS_STATIC_STRINGS
++
+ /*
+ * Set up some tools to make it easier to generate large tables. After constant
+ * folding, for each n, Rn(0) is the comma-separated list R(0), R(1), ..., R(2^n-1).
+@@ -3291,6 +3293,8 @@
+ #undef R3
+ #undef R7
+
++#endif /* defined(JS_HAS_STATIC_STRINGS) */
++
+ JSBool
+ js_String(JSContext *cx, uintN argc, Value *vp)
+ {
+@@ -3331,6 +3335,7 @@
+ uint16_t code;
+ if (!ValueToUint16(cx, argv[0], &code))
+ return JS_FALSE;
++#ifdef JS_HAS_STATIC_STRINGS
+ if (code < UNIT_STRING_LIMIT) {
+ str = JSString::unitString(code);
+ if (!str)
+@@ -3338,6 +3343,7 @@
+ vp->setString(str);
+ return JS_TRUE;
+ }
++#endif
+ argv[0].setInt32(code);
+ }
+ chars = (jschar *) cx->malloc((argc + 1) * sizeof(jschar));
+@@ -3367,8 +3373,10 @@
+ {
+ JS_ASSERT(JS_ON_TRACE(cx));
+ jschar c = (jschar)i;
++#ifdef JS_HAS_STATIC_STRINGS
+ if (c < UNIT_STRING_LIMIT)
+ return JSString::unitString(c);
++#endif
+ return js_NewStringCopyN(cx, &c, 1);
+ }
+ #endif
+--- a/js/src/jsstr.h 2011-03-31 21:08:36.000000000 +0200
++++ b/js/src/jsstr.h 2012-11-02 10:43:16.998562587 +0100
+@@ -57,6 +57,15 @@
+ #include "jsvalue.h"
+ #include "jscell.h"
+
++#if !defined(__ia64__)
++/*
++ * Don't use static strings on ia64 since the compiler may put the static
++ * memory out of the acceptable 47-bit jsval pointer range.
++ */
++# define JS_HAS_STATIC_STRINGS
++#endif
++
++#ifdef JS_HAS_STATIC_STRINGS
+ enum {
+ UNIT_STRING_LIMIT = 256U,
+ SMALL_CHAR_LIMIT = 128U, /* Bigger chars cannot be in a length-2 string. */
+@@ -64,6 +73,7 @@
+ INT_STRING_LIMIT = 256U,
+ NUM_HUNDRED_STRINGS = 156U
+ };
++#endif
+
+ extern jschar *
+ js_GetDependentStringChars(JSString *str);
+@@ -380,10 +390,15 @@
+ typedef uint8 SmallChar;
+
+ static inline bool fitsInSmallChar(jschar c) {
++#ifdef JS_HAS_STATIC_STRINGS
+ return c < SMALL_CHAR_LIMIT && toSmallChar[c] != INVALID_SMALL_CHAR;
++#else
++ return false;
++#endif
+ }
+
+ static inline bool isUnitString(void *ptr) {
++#ifdef JS_HAS_STATIC_STRINGS
+ jsuword delta = reinterpret_cast<jsuword>(ptr) -
+ reinterpret_cast<jsuword>(unitStringTable);
+ if (delta >= UNIT_STRING_LIMIT * sizeof(JSString))
+@@ -392,9 +407,13 @@
+ /* If ptr points inside the static array, it must be well-aligned. */
+ JS_ASSERT(delta % sizeof(JSString) == 0);
+ return true;
++#else
++ return false;
++#endif
+ }
+
+ static inline bool isLength2String(void *ptr) {
++#ifdef JS_HAS_STATIC_STRINGS
+ jsuword delta = reinterpret_cast<jsuword>(ptr) -
+ reinterpret_cast<jsuword>(length2StringTable);
+ if (delta >= NUM_SMALL_CHARS * NUM_SMALL_CHARS * sizeof(JSString))
+@@ -403,9 +422,13 @@
+ /* If ptr points inside the static array, it must be well-aligned. */
+ JS_ASSERT(delta % sizeof(JSString) == 0);
+ return true;
++#else
++ return false;
++#endif
+ }
+
+ static inline bool isHundredString(void *ptr) {
++#ifdef JS_HAS_STATIC_STRINGS
+ jsuword delta = reinterpret_cast<jsuword>(ptr) -
+ reinterpret_cast<jsuword>(hundredStringTable);
+ if (delta >= NUM_HUNDRED_STRINGS * sizeof(JSString))
+@@ -414,6 +437,9 @@
+ /* If ptr points inside the static array, it must be well-aligned. */
+ JS_ASSERT(delta % sizeof(JSString) == 0);
+ return true;
++#else
++ return false;
++#endif
+ }
+
+ static inline bool isStatic(void *ptr) {
+@@ -424,6 +450,7 @@
+ #pragma align 8 (__1cIJSStringPunitStringTable_, __1cIJSStringSlength2StringTable_, __1cIJSStringShundredStringTable_)
+ #endif
+
++#ifdef JS_HAS_STATIC_STRINGS
+ static const SmallChar INVALID_SMALL_CHAR = -1;
+
+ static const jschar fromSmallChar[];
+@@ -436,6 +463,7 @@
+ * strings, we keep a table to map from integer to the correct string.
+ */
+ static const JSString *const intStringTable[];
++#endif
+
+ static JSFlatString *unitString(jschar c);
+ static JSLinearString *getUnitString(JSContext *cx, JSString *str, size_t index);
+--- a/js/src/jsstrinlines.h 2011-03-31 21:08:36.000000000 +0200
++++ b/js/src/jsstrinlines.h 2012-11-02 10:43:17.010562586 +0100
+@@ -215,52 +215,75 @@
+ inline JSFlatString *
+ JSString::unitString(jschar c)
+ {
++#ifdef JS_HAS_STATIC_STRINGS
+ JS_ASSERT(c < UNIT_STRING_LIMIT);
+ return const_cast<JSString *>(&unitStringTable[c])->assertIsFlat();
++#else
++ JS_NOT_REACHED("no static strings");
++ return NULL;
++#endif
+ }
+
+ inline JSLinearString *
+ JSString::getUnitString(JSContext *cx, JSString *str, size_t index)
+ {
+ JS_ASSERT(index < str->length());
++#ifdef JS_HAS_STATIC_STRINGS
+ const jschar *chars = str->getChars(cx);
+ if (!chars)
+ return NULL;
+ jschar c = chars[index];
+ if (c < UNIT_STRING_LIMIT)
+ return unitString(c);
++#endif
+ return js_NewDependentString(cx, str, index, 1);
+ }
+
+ inline JSFlatString *
+ JSString::length2String(jschar c1, jschar c2)
+ {
++#ifdef JS_HAS_STATIC_STRINGS
+ JS_ASSERT(fitsInSmallChar(c1));
+ JS_ASSERT(fitsInSmallChar(c2));
+ return const_cast<JSString *> (
+ &length2StringTable[(((size_t)toSmallChar[c1]) << 6) + toSmallChar[c2]]
+ )->assertIsFlat();
++#else
++ JS_NOT_REACHED("no static strings");
++ return NULL;
++#endif
+ }
+
+ inline JSFlatString *
+ JSString::length2String(uint32 i)
+ {
++#ifdef JS_HAS_STATIC_STRINGS
+ JS_ASSERT(i < 100);
+ return length2String('0' + i / 10, '0' + i % 10);
++#else
++ JS_NOT_REACHED("no static strings");
++ return NULL;
++#endif
+ }
+
+ inline JSFlatString *
+ JSString::intString(jsint i)
+ {
++#ifdef JS_HAS_STATIC_STRINGS
+ jsuint u = jsuint(i);
+ JS_ASSERT(u < INT_STRING_LIMIT);
+ return const_cast<JSString *>(JSString::intStringTable[u])->assertIsFlat();
++#else
++ JS_NOT_REACHED("no static strings");
++ return NULL;
++#endif
+ }
+
+ /* Get a static atomized string for chars if possible. */
+ inline JSFlatString *
+ JSString::lookupStaticString(const jschar *chars, size_t length)
+ {
++#ifdef JS_HAS_STATIC_STRINGS
+ if (length == 1) {
+ if (chars[0] < UNIT_STRING_LIMIT)
+ return unitString(chars[0]);
+@@ -290,6 +313,7 @@
+ return intString(i);
+ }
+ }
++#endif
+
+ return NULL;
+ }
+--- a/js/src/jstracer.cpp 2011-03-31 21:08:36.000000000 +0200
++++ b/js/src/jstracer.cpp 2012-11-02 10:43:17.022562584 +0100
+@@ -11505,6 +11505,7 @@
+ }
+ if (vp[1].isString()) {
+ JSString *str = vp[1].toString();
++#ifdef JS_HAS_STATIC_STRINGS
+ if (native == js_str_charAt) {
+ jsdouble i = vp[2].toNumber();
+ if (JSDOUBLE_IS_NaN(i))
+@@ -11518,7 +11519,9 @@
+ set(&vp[0], char_ins);
+ pendingSpecializedNative = IGNORE_NATIVE_CALL_COMPLETE_CALLBACK;
+ return RECORD_CONTINUE;
+- } else if (native == js_str_charCodeAt) {
++ } else
++#endif
++ if (native == js_str_charCodeAt) {
+ jsdouble i = vp[2].toNumber();
+ if (JSDOUBLE_IS_NaN(i))
+ i = 0;
+@@ -12967,6 +12970,7 @@
+ JS_STATIC_ASSERT(sizeof(JSString) == 16 || sizeof(JSString) == 32);
+
+
++#ifdef JS_HAS_STATIC_STRINGS
+ JS_REQUIRES_STACK LIns*
+ TraceRecorder::getUnitString(LIns* str_ins, LIns* idx_ins)
+ {
+@@ -13010,6 +13014,7 @@
+ }
+ return RECORD_CONTINUE;
+ }
++#endif
+
+ // Typed array tracing depends on EXPANDED_LOADSTORE and F2I
+ #if NJ_EXPANDED_LOADSTORE_SUPPORTED && NJ_F2I_SUPPORTED
+@@ -13044,6 +13049,7 @@
+ LIns* obj_ins = get(&lval);
+ LIns* idx_ins = get(&idx);
+
++#ifdef JS_HAS_STATIC_STRINGS
+ // Special case for array-like access of strings.
+ if (lval.isString() && hasInt32Repr(idx)) {
+ if (call)
+@@ -13056,6 +13062,7 @@
+ set(&lval, char_ins);
+ return ARECORD_CONTINUE;
+ }
++#endif
+
+ if (lval.isPrimitive())
+ RETURN_STOP_A("JSOP_GETLEM on a primitive");
+--- a/js/src/jstracer.h 2011-03-31 21:08:36.000000000 +0200
++++ b/js/src/jstracer.h 2012-11-02 10:43:17.034562582 +0100
+@@ -1394,10 +1394,12 @@
+ JS_REQUIRES_STACK RecordingStatus getCharCodeAt(JSString *str,
+ nanojit::LIns* str_ins, nanojit::LIns* idx_ins,
+ nanojit::LIns** out_ins);
++#ifdef JS_HAS_STATIC_STRINGS
+ JS_REQUIRES_STACK nanojit::LIns* getUnitString(nanojit::LIns* str_ins, nanojit::LIns* idx_ins);
+ JS_REQUIRES_STACK RecordingStatus getCharAt(JSString *str,
+ nanojit::LIns* str_ins, nanojit::LIns* idx_ins,
+ JSOp mode, nanojit::LIns** out_ins);
++#endif
+
+ JS_REQUIRES_STACK RecordingStatus initOrSetPropertyByName(nanojit::LIns* obj_ins,
+ Value* idvalp, Value* rvalp,
+--- a/js/src/tracejit/Writer.cpp 2011-03-31 21:08:36.000000000 +0200
++++ b/js/src/tracejit/Writer.cpp 2012-11-02 10:43:17.038562582 +0100
+@@ -246,7 +246,9 @@
+ // ins = andq ins_oprnd1, ins_oprnd2
+ ret = true;
+ #endif
+- } else if (ins->isop(LIR_addp) &&
++ }
++#ifdef JS_HAS_STATIC_STRINGS
++ else if (ins->isop(LIR_addp) &&
+ ((ins->oprnd1()->isImmP() &&
+ (void *)ins->oprnd1()->immP() == JSString::unitStringTable) ||
+ (ins->oprnd2()->isImmP() &&
+@@ -258,6 +260,7 @@
+ // ins = addp JSString::unitStringTable, ...
+ ret = true;
+ }
++#endif
+
+ return ret;
+ }
diff --git a/dev-lang/spidermonkey/spidermonkey-1.8.5-r4.ebuild b/dev-lang/spidermonkey/spidermonkey-1.8.5-r4.ebuild
index 27f7be047a1c..f5832c2971ee 100644
--- a/dev-lang/spidermonkey/spidermonkey-1.8.5-r4.ebuild
+++ b/dev-lang/spidermonkey/spidermonkey-1.8.5-r4.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-lang/spidermonkey/spidermonkey-1.8.5-r4.ebuild,v 1.2 2013/01/01 11:41:30 ago Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-lang/spidermonkey/spidermonkey-1.8.5-r4.ebuild,v 1.3 2013/01/06 16:50:09 armin76 Exp $
EAPI="5"
WANT_AUTOCONF="2.1"
@@ -16,7 +16,7 @@ SRC_URI="https://ftp.mozilla.org/pub/mozilla.org/js/${TARBALL_P}.tar.gz"
LICENSE="NPL-1.1"
SLOT="0/mozjs185"
-KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd"
IUSE="debug minimal static-libs test"
S="${WORKDIR}/${MY_P}"
@@ -50,6 +50,9 @@ src_prepare() {
epatch "${FILESDIR}"/${PN}-1.8.5-perf_event-check.patch
# https://bugs.gentoo.org/show_bug.cgi?id=439260
epatch "${FILESDIR}"/${P}-symbol-versions.patch
+ # https://bugs.gentoo.org/show_bug.cgi?id=441934
+ epatch "${FILESDIR}"/${PN}-1.8.5-ia64-fix.patch
+ epatch "${FILESDIR}"/${PN}-1.8.5-ia64-static-strings.patch
epatch_user