Hello community, here is the log from the commit of package xulrunner for openSUSE:12.2 checked in at 2012-07-31 14:05:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:12.2/xulrunner (Old) and /work/SRC/openSUSE:12.2/.xulrunner.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "xulrunner", Maintainer is "gnome-maintainers@suse.de" Changes: -------- --- /work/SRC/openSUSE:12.2/xulrunner/xulrunner.changes 2012-07-30 02:38:14.000000000 +0200 +++ /work/SRC/openSUSE:12.2/.xulrunner.new/xulrunner.changes 2012-07-31 14:19:08.000000000 +0200 @@ -2 +2 @@ -Fri Jun 15 12:40:23 UTC 2012 - wr@rosenauer.org +Sat Jul 14 19:33:44 UTC 2012 - wr@rosenauer.org @@ -4,2 +4,38 @@ -- update to 13.0.1 - * bugfix release +- update to 14.0.1 (bnc#771583) + * MFSA 2012-42/CVE-2012-1949/CVE-2012-1948 + Miscellaneous memory safety hazards + * MFSA 2012-43/CVE-2012-1950 + Incorrect URL displayed in addressbar through drag and drop + * MFSA 2012-44/CVE-2012-1951/CVE-2012-1954/CVE-2012-1953/CVE-2012-1952 + Gecko memory corruption + * MFSA 2012-45/CVE-2012-1955 (bmo#757376) + Spoofing issue with location + * MFSA 2012-46/CVE-2012-1966 (bmo#734076) + XSS through data: URLs + * MFSA 2012-47/CVE-2012-1957 (bmo#750096) + Improper filtering of javascript in HTML feed-view + * MFSA 2012-48/CVE-2012-1958 (bmo#750820) + use-after-free in nsGlobalWindow::PageHidden + * MFSA 2012-49/CVE-2012-1959 (bmo#754044, bmo#737559) + Same-compartment Security Wrappers can be bypassed + * MFSA 2012-50/CVE-2012-1960 (bmo#761014) + Out of bounds read in QCMS + * MFSA 2012-51/CVE-2012-1961 (bmo#761655) + X-Frame-Options header ignored when duplicated + * MFSA 2012-52/CVE-2012-1962 (bmo#764296) + JSDependentString::undepend string conversion results in memory + corruption + * MFSA 2012-53/CVE-2012-1963 (bmo#767778) + Content Security Policy 1.0 implementation errors cause data + leakage + * MFSA 2012-55/CVE-2012-1965 (bmo#758990) + feed: URLs with an innerURI inherit security context of page + * MFSA 2012-56/CVE-2012-1967 (bmo#758344) + Code execution through javascript: URLs +- license change from tri license to MPL-2.0 +- require NSS 3.13.5 +- PPC fixes: + * reenabled mozilla-yarr-pcre.patch to fix build for PPC + * add patches for bmo#750620 and bmo#746112 + * fix xpcshell segfault on ppc +- build plugin-container on every arch Old: ---- l10n-13.0.1.tar.bz2 mozilla-disable-neon-option.patch mozilla-libnotify.patch mozilla-linux3.patch mozilla-nsSound.patch mozilla-revert_621446.patch mozilla-system-nspr.patch xulrunner-13.0.1-source.tar.bz2 New: ---- l10n-14.0.1.tar.bz2 mozilla-ppc.patch xulrunner-14.0.1-source.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xulrunner.spec ++++++ --- /var/tmp/diff_new_pack.5puy4F/_old 2012-07-31 14:23:27.000000000 +0200 +++ /var/tmp/diff_new_pack.5puy4F/_new 2012-07-31 14:23:27.000000000 +0200 @@ -43,15 +43,15 @@ BuildRequires: wireless-tools %endif BuildRequires: mozilla-nspr-devel >= 4.9.0 -BuildRequires: mozilla-nss-devel >= 3.13.4 -Version: 13.0.1 +BuildRequires: mozilla-nss-devel >= 3.13.5 +Version: 14.0.1 Release: 0 -%define releasedate 2012061400 -%define version_internal 13.0.1 -%define apiversion 13 -%define uaweight 1300001 +%define releasedate 2012071300 +%define version_internal 14.0.1 +%define apiversion 14 +%define uaweight 1400001 Summary: Mozilla Runtime Environment -License: MPL-1.1 or GPL-2.0+ or LGPL-2.1+ +License: MPL-2.0 Group: Productivity/Other Url: http://www.mozilla.org/ Provides: gecko @@ -77,14 +77,9 @@ Patch7: mozilla-ntlm-full-path.patch Patch8: mozilla-dump_syms-static.patch Patch9: mozilla-sle11.patch -Patch10: mozilla-linux3.patch -Patch11: mozilla-disable-neon-option.patch -Patch12: mozilla-system-nspr.patch -Patch13: mozilla-revert_621446.patch -Patch14: mozilla-yarr-pcre.patch -Patch15: mozilla-libnotify.patch -Patch16: mozilla-gcc47.patch -Patch17: mozilla-nsSound.patch +Patch11: mozilla-yarr-pcre.patch +Patch12: mozilla-gcc47.patch +Patch13: mozilla-ppc.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build Requires: mozilla-js = %{version} Requires(post): update-alternatives coreutils @@ -94,12 +89,10 @@ %define has_system_nss 1 %define has_system_cairo 0 %define localize 0 -%ifarch ppc ppc64 s390 s390x ia64 %arm +%ifarch ppc ppc64 s390 s390x ia64 %define crashreporter 0 -%define plugincontainer 0 %else %define crashreporter 1 -%define plugincontainer 1 %endif ### configuration end ### %define _use_internal_dependency_generator 0 @@ -166,7 +159,7 @@ Summary: Extra translations for XULRunner Group: System/Localization Requires: %{name} = %{version} -Provides: locale(%{name}:af;ak;as;ast;be;bg;bn_BD;bn_IN;br;bs;csb;cy;el;en_ZA;eo;es_MX;et;eu;fa;fy_NL;ga_IE;gd;gl;gu_IN;he;hi_IN;hr;hy_AM;id;is;kk;km;kn;ku;lg;lij;lt;lv;mai;mk;ml;mn;mr;nn_NO;nso;or;pa_IN;rm;ro;si;sk;sl;son;sq;sr;sw;ta;ta_LK;te;th;tr;uk;vi;zu) +Provides: locale(%{name}:af;ak;as;ast;be;bg;bn_BD;bn_IN;br;bs;csb;cy;el;en_ZA;eo;es_MX;et;eu;fa;ff;fy_NL;ga_IE;gd;gl;gu_IN;he;hi_IN;hr;hy_AM;id;is;kk;km;kn;ku;lg;lij;lt;lv;mai;mk;ml;mr;nn_NO;nso;or;pa_IN;rm;ro;si;sk;sl;son;sq;sr;ta;ta_LK;te;th;tr;uk;vi;zu) Obsoletes: %{name}-translations < %{version}-%{release} %description translations-other @@ -201,14 +194,9 @@ %if %suse_version < 1120 %patch9 -p1 %endif -%patch10 -p1 %patch11 -p1 %patch12 -p1 %patch13 -p1 -#%patch14 -p1 -%patch15 -p1 -%patch16 -p1 -%patch17 -p1 %build # no need to add build time to binaries @@ -289,11 +277,6 @@ ac_add_options --disable-crashreporter EOF %endif -%if ! %plugincontainer -cat << EOF >> $MOZCONFIG -ac_add_options --disable-ipc -EOF -%endif # S/390 %ifarch s390 s390x cat << EOF >> $MOZCONFIG @@ -303,7 +286,17 @@ # ARM %ifarch %arm cat << EOF >> $MOZCONFIG -ac_add_options --disable-neon +%ifarch armv7l +ac_add_options --with-arch=armv7-a +ac_add_options --with-float-abi=hard +ac_add_options --with-fpu=vfpv3-d16 +ac_add_options --with-thumb=yes +%endif +%ifarch armv5tel +ac_add_options --with-arch=armv5te +ac_add_options --with-float-abi=soft +ac_add_options --with-thumb=no +%endif EOF %endif make -f client.mk build @@ -464,15 +457,13 @@ %{_libdir}/xulrunner-%{version_internal}/chrome.manifest %{_libdir}/xulrunner-%{version_internal}/dependentlibs.list %{_libdir}/xulrunner-%{version_internal}/mozilla-xremote-client -%if %plugincontainer %{_libdir}/xulrunner-%{version_internal}/plugin-container -%endif -%{_libdir}/xulrunner-%{version_internal}/run-mozilla.sh %{_libdir}/xulrunner-%{version_internal}/xulrunner %{_libdir}/xulrunner-%{version_internal}/xulrunner-bin %{_libdir}/xulrunner-%{version_internal}/xulrunner-stub %{_libdir}/xulrunner-%{version_internal}/platform.ini %{_libdir}/xulrunner-%{version_internal}/omni.ja +%{_libdir}/xulrunner-%{version_internal}/README.xulrunner # crashreporter files %if %crashreporter %{_libdir}/xulrunner-%{version_internal}/crashreporter @@ -499,7 +490,6 @@ %files devel %defattr(-,root,root) -%{_libdir}/xulrunner-%{version_internal}/xpcshell %{_libdir}/xulrunner-devel-%{version_internal}/ # FIXME symlink dynamic libs below sdk/lib %attr(644,root,root) %{_libdir}/pkgconfig/* ++++++ compare-locales.tar.bz2 ++++++ ++++++ create-tar.sh ++++++ --- /var/tmp/diff_new_pack.5puy4F/_old 2012-07-31 14:23:27.000000000 +0200 +++ /var/tmp/diff_new_pack.5puy4F/_new 2012-07-31 14:23:27.000000000 +0200 @@ -2,8 +2,8 @@ CHANNEL="release" BRANCH="releases/mozilla-$CHANNEL" -RELEASE_TAG="FIREFOX_13_0_1_RELEASE" -VERSION="13.0.1" +RELEASE_TAG="FIREFOX_14_0_1_RELEASE" +VERSION="14.0.1" # mozilla hg clone http://hg.mozilla.org/$BRANCH mozilla ++++++ l10n-13.0.1.tar.bz2 -> l10n-14.0.1.tar.bz2 ++++++ /work/SRC/openSUSE:12.2/xulrunner/l10n-13.0.1.tar.bz2 /work/SRC/openSUSE:12.2/.xulrunner.new/l10n-14.0.1.tar.bz2 differ: char 11, line 1 ++++++ mozilla-gcc47.patch ++++++ --- /var/tmp/diff_new_pack.5puy4F/_old 2012-07-31 14:23:27.000000000 +0200 +++ /var/tmp/diff_new_pack.5puy4F/_new 2012-07-31 14:23:27.000000000 +0200 @@ -1,113 +1,14 @@ # HG changeset patch -# Parent 7bc8f0e5bed8cb2212e27228e628861737256459 -Patch to make Mozilla build with gcc 4.7, including -- Bug 734490 - "no viable overloaded 'PRIxPTR'" when building with Clang or GCC 4.7 (TM: Mozilla14) -- Bug 741348 - Work around crashreporter client build failure with gcc 4.7 (TM: Mozilla15) +# User Mike Hommey <mh+mozilla@glandium.org> +# Date 1336991062 -7200 +# Node ID 234d34706ea1a0e9a9d2c61561c4441590712df0 +# Parent 0f2f145158b595f5242bf0d79b2de413373730c1 +Bug 741348 - Work around crashreporter client build failure with gcc 4.7 -diff --git a/layout/base/tests/TestPoisonArea.cpp b/layout/base/tests/TestPoisonArea.cpp ---- a/layout/base/tests/TestPoisonArea.cpp -+++ b/layout/base/tests/TestPoisonArea.cpp -@@ -392,53 +392,53 @@ ReservePoisonArea() - { - if (sizeof(uintptr_t) == 8) { - // Use the hardware-inaccessible region. - // We have to avoid 64-bit constants and shifts by 32 bits, since this - // code is compiled in 32-bit mode, although it is never executed there. - uintptr_t result = (((uintptr_t(0x7FFFFFFFu) << 31) << 1 | - uintptr_t(0xF0DEAFFFu)) & - ~uintptr_t(PAGESIZE-1)); -- printf("INFO | poison area assumed at 0x%.*"PRIxPTR"\n", SIZxPTR, result); -+ printf("INFO | poison area assumed at 0x%.*" PRIxPTR "\n", SIZxPTR, result); - return result; - } else { - // First see if we can allocate the preferred poison address from the OS. - uintptr_t candidate = (0xF0DEAFFF & ~(PAGESIZE-1)); - void *result = ReserveRegion(candidate, false); - if (result == (void *)candidate) { - // success - inaccessible page allocated -- printf("INFO | poison area allocated at 0x%.*"PRIxPTR -+ printf("INFO | poison area allocated at 0x%.*" PRIxPTR - " (preferred addr)\n", SIZxPTR, (uintptr_t)result); - return candidate; - } - - // That didn't work, so see if the preferred address is within a range - // of permanently inacessible memory. - if (ProbeRegion(candidate)) { - // success - selected page cannot be usable memory - if (result != MAP_FAILED) - ReleaseRegion(result); -- printf("INFO | poison area assumed at 0x%.*"PRIxPTR -+ printf("INFO | poison area assumed at 0x%.*" PRIxPTR - " (preferred addr)\n", SIZxPTR, candidate); - return candidate; - } - - // The preferred address is already in use. Did the OS give us a - // consolation prize? - if (result != MAP_FAILED) { -- printf("INFO | poison area allocated at 0x%.*"PRIxPTR -+ printf("INFO | poison area allocated at 0x%.*" PRIxPTR - " (consolation prize)\n", SIZxPTR, (uintptr_t)result); - return (uintptr_t)result; - } - - // It didn't, so try to allocate again, without any constraint on - // the address. - result = ReserveRegion(0, false); - if (result != MAP_FAILED) { -- printf("INFO | poison area allocated at 0x%.*"PRIxPTR -+ printf("INFO | poison area allocated at 0x%.*" PRIxPTR - " (fallback)\n", SIZxPTR, (uintptr_t)result); - return (uintptr_t)result; - } - - printf("ERROR | no usable poison area found\n"); - return 0; - } - } -@@ -450,17 +450,17 @@ static uintptr_t - ReservePositiveControl() - { - - void *result = ReserveRegion(0, false); - if (result == MAP_FAILED) { - printf("ERROR | allocating positive control | %s\n", LastErrMsg()); - return 0; - } -- printf("INFO | positive control allocated at 0x%.*"PRIxPTR"\n", -+ printf("INFO | positive control allocated at 0x%.*" PRIxPTR "\n", - SIZxPTR, (uintptr_t)result); - return (uintptr_t)result; - } - - /* The "negative control" area confirms that our probe logic does detect a - * page that is readable, writable, or executable. - */ - static uintptr_t -@@ -481,17 +481,17 @@ ReserveNegativeControl() - // Now mark it executable as well as readable and writable. - // (mmap(PROT_EXEC) may fail when applied to anonymous memory.) - - if (MakeRegionExecutable(result)) { - printf("ERROR | making negative control executable | %s\n", LastErrMsg()); - return 0; - } - -- printf("INFO | negative control allocated at 0x%.*"PRIxPTR"\n", -+ printf("INFO | negative control allocated at 0x%.*" PRIxPTR "\n", - SIZxPTR, (uintptr_t)result); - return (uintptr_t)result; - } - - static void - JumpTo(uintptr_t opaddr) - { - #ifdef __ia64 diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/Makefile.in b/toolkit/crashreporter/google-breakpad/src/common/linux/Makefile.in --- a/toolkit/crashreporter/google-breakpad/src/common/linux/Makefile.in +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/Makefile.in -@@ -61,8 +61,11 @@ HOST_CPPSRCS = \ +@@ -65,8 +65,11 @@ HOST_CPPSRCS = \ file_id.cc \ guid_creator.cc \ $(NULL) ++++++ mozilla-pkgconfig.patch ++++++ --- /var/tmp/diff_new_pack.5puy4F/_old 2012-07-31 14:23:27.000000000 +0200 +++ /var/tmp/diff_new_pack.5puy4F/_new 2012-07-31 14:23:27.000000000 +0200 @@ -14,7 +14,7 @@ # Add pkg-config files to the install:: target +# the apilibdir always ends with 1.9 as every patch update will provide a link -+apilibdir = $(dir $(installdir))xulrunner-13 ++apilibdir = $(dir $(installdir))xulrunner-14 + pkg_config_files = \ libxul.pc \ ++++++ mozilla-ppc.patch ++++++ # HG changeset patch # Parent 67e6f1e1d06ca3d54cea1d26877c2a68f0c096e5 # User Wolfgang Rosenauer <wr@rosenauer.org> Bug 746112 - RegExp hang on ppc64 in execute. Bug 750620 - Make double-conversion portable to exotic architectures. TM: mozilla15 diff --git a/js/src/yarr/YarrInterpreter.h b/js/src/yarr/YarrInterpreter.h --- a/js/src/yarr/YarrInterpreter.h +++ b/js/src/yarr/YarrInterpreter.h @@ -162,17 +162,17 @@ struct ByteTerm { , m_invert(invert) { atom.characterClass = characterClass; atom.quantityType = QuantifierFixedCount; atom.quantityCount = 1; inputPosition = inputPos; } - ByteTerm(Type type, unsigned subpatternId, ByteDisjunction* parenthesesInfo, bool capture, int inputPos) + ByteTerm(Type type, unsigned subpatternId, ByteDisjunction* parenthesesInfo, bool capture, int inputPos) __attribute__((noinline)) : type(type) , m_capture(capture) , m_invert(false) { atom.subpatternId = subpatternId; atom.parenthesesDisjunction = parenthesesInfo; atom.quantityType = QuantifierFixedCount; atom.quantityCount = 1; @@ -183,17 +183,17 @@ struct ByteTerm { : type(type) , m_capture(false) , m_invert(invert) { atom.quantityType = QuantifierFixedCount; atom.quantityCount = 1; } - ByteTerm(Type type, unsigned subpatternId, bool capture, bool invert, int inputPos) + ByteTerm(Type type, unsigned subpatternId, bool capture, bool invert, int inputPos) __attribute__((noinline)) : type(type) , m_capture(capture) , m_invert(invert) { atom.subpatternId = subpatternId; atom.quantityType = QuantifierFixedCount; atom.quantityCount = 1; inputPosition = inputPos; diff --git a/js/src/yarr/YarrPattern.h b/js/src/yarr/YarrPattern.h --- a/js/src/yarr/YarrPattern.h +++ b/js/src/yarr/YarrPattern.h @@ -166,17 +166,17 @@ struct PatternTerm { , m_capture(false) , m_invert(invert) { characterClass = charClass; quantityType = QuantifierFixedCount; quantityCount = 1; } - PatternTerm(Type type, unsigned subpatternId, PatternDisjunction* disjunction, bool capture = false, bool invert = false) + PatternTerm(Type type, unsigned subpatternId, PatternDisjunction* disjunction, bool capture = false, bool invert = false) __attribute__((noinline)) : type(type) , m_capture(capture) , m_invert(invert) { parentheses.disjunction = disjunction; parentheses.subpatternId = subpatternId; parentheses.isCopy = false; parentheses.isTerminal = false; diff --git a/memory/jemalloc/jemalloc.c b/memory/jemalloc/jemalloc.c --- a/memory/jemalloc/jemalloc.c +++ b/memory/jemalloc/jemalloc.c @@ -1086,17 +1086,19 @@ struct arena_s { static unsigned ncpus; #endif /* * When MALLOC_STATIC_SIZES is defined most of the parameters * controlling the malloc behavior are defined as compile-time constants * for best performance and cannot be altered at runtime. */ +#if !(defined(__powerpc__)) #define MALLOC_STATIC_SIZES 1 +#endif #ifdef MALLOC_STATIC_SIZES /* * VM page size. It must divide the runtime CPU page size or the code * will abort. */ #define pagesize_2pow ((size_t) 12) diff --git a/mfbt/double-conversion/utils.h b/mfbt/double-conversion/utils.h --- a/mfbt/double-conversion/utils.h +++ b/mfbt/double-conversion/utils.h @@ -49,17 +49,18 @@ // evaluate: 89255.0/1e22. If the floating-point stack is 64 bits wide then // the result is equal to 89255e-22. // The best way to test this, is to create a division-function and to compare // the output of the division with the expected result. (Inlining must be // disabled.) // On Linux,x86 89255e-22 != Div_double(89255.0/1e22) #if defined(_M_X64) || defined(__x86_64__) || \ defined(__ARMEL__) || \ - defined(_MIPS_ARCH_MIPS32R2) + defined(_MIPS_ARCH_MIPS32R2) || \ + defined(__powerpc__) || defined(__powerpc64__) #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 #elif defined(_M_IX86) || defined(__i386__) #if defined(_WIN32) // Windows uses a 64bit wide floating point stack. #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 #else #undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS #endif // _WIN32 ++++++ mozilla-prefer_plugin_pref.patch ++++++ --- /var/tmp/diff_new_pack.5puy4F/_old 2012-07-31 14:23:27.000000000 +0200 +++ /var/tmp/diff_new_pack.5puy4F/_new 2012-07-31 14:23:27.000000000 +0200 @@ -4,7 +4,7 @@ diff --git a/dom/plugins/base/nsPluginHost.cpp b/dom/plugins/base/nsPluginHost.cpp --- a/dom/plugins/base/nsPluginHost.cpp +++ b/dom/plugins/base/nsPluginHost.cpp -@@ -1580,17 +1580,48 @@ nsPluginHost::FindPluginForType(const ch +@@ -1561,17 +1561,45 @@ nsPluginHost::FindPluginForType(const ch bool aCheckEnabled) { if (!aMimeType) { @@ -13,18 +13,15 @@ LoadPlugins(); -+ nsresult res; -+ nsCOMPtr<nsIPrefBranch> prefB (do_QueryInterface(mPrefService)); -+ + char *preferredPluginPath = NULL; + nsCAutoString mimetypePrefString ("modules.plugins.mimetype."); + mimetypePrefString.Append(aMimeType); + const char *mimetypePrefChar = mimetypePrefString.get(); -+ res = prefB->GetCharPref(mimetypePrefChar, &preferredPluginPath); -+ -+ if(!NS_SUCCEEDED(res)) preferredPluginPath = NULL; ++ nsAdoptingCString pluginPath = Preferences::GetCString(mimetypePrefChar); ++ preferredPluginPath = (char*) pluginPath.get(); + nsPluginTag *plugin = mPlugins; ++ + if(preferredPluginPath) { + while (nsnull != plugin) { + if (0 == PL_strcasecmp(plugin->mFileName.get(), preferredPluginPath) || ++++++ mozilla-yarr-pcre.patch ++++++ --- /var/tmp/diff_new_pack.5puy4F/_old 2012-07-31 14:23:27.000000000 +0200 +++ /var/tmp/diff_new_pack.5puy4F/_new 2012-07-31 14:23:27.000000000 +0200 @@ -1,15 +1,21 @@ +# HG changeset patch +# Parent 831eeca7b7cfa9ae2458d9efafe168027259965f +# User Landry Breuil <landry@openbsd.org> +Bug 691898 - Use YARR regexp interpreter instead of PCRE on platforms where YARR JIT is not supported r=dmandelin +PCRE doesn't build anyway. + diff --git a/js/src/Makefile.in b/js/src/Makefile.in --- a/js/src/Makefile.in +++ b/js/src/Makefile.in -@@ -332,30 +332,33 @@ CPPSRCS += checks.cc \ - platform.cc \ - utils.cc \ - $(NONE) - +@@ -315,30 +315,33 @@ ifeq (mips, $(findstring mips,$(TARGET_C + CPPSRCS += TrampolineMIPS.cpp + endif # - # END enclude sources for V8 dtoa + # END enclude sources for the method JIT ############################################# + endif + -# For architectures without YARR JIT, PCRE is faster than the YARR -# interpreter (bug 684559). - @@ -70,7 +76,7 @@ diff --git a/js/src/vm/RegExpObject-inl.h b/js/src/vm/RegExpObject-inl.h --- a/js/src/vm/RegExpObject-inl.h +++ b/js/src/vm/RegExpObject-inl.h -@@ -132,16 +132,17 @@ RegExpObject::setMultiline(bool enabled) +@@ -132,26 +132,28 @@ RegExpObject::setMultiline(bool enabled) } inline void @@ -88,10 +94,21 @@ return cx->methodJitEnabled; #else return true; + #endif + } ++#endif + + inline bool + RegExpToShared(JSContext *cx, JSObject &obj, RegExpGuard *g) + { + JS_ASSERT(ObjectClassIs(obj, ESClass_RegExp, cx)); + if (obj.isRegExp()) + return obj.asRegExp().getShared(cx, g); + return Proxy::regexp_toShared(cx, &obj, g); diff --git a/js/src/vm/RegExpObject.cpp b/js/src/vm/RegExpObject.cpp --- a/js/src/vm/RegExpObject.cpp +++ b/js/src/vm/RegExpObject.cpp -@@ -162,17 +162,16 @@ MatchPairs::checkAgainst(size_t inputLen +@@ -163,17 +163,16 @@ MatchPairs::checkAgainst(size_t inputLen continue; JS_ASSERT(size_t(p.limit) <= inputLength); } @@ -109,7 +126,7 @@ JS_NOT_REACHED("Called reportYarrError with value for no error"); return; #define COMPILE_EMSG(__code, __msg) \ -@@ -194,52 +193,16 @@ RegExpCode::reportYarrError(JSContext *c +@@ -195,73 +194,36 @@ RegExpCode::reportYarrError(JSContext *c COMPILE_EMSG(QuantifierTooLarge, JSMSG_BAD_QUANTIFIER); COMPILE_EMSG(EscapeUnterminated, JSMSG_TRAILING_SLASH); #undef COMPILE_EMSG @@ -157,16 +174,100 @@ bool RegExpCode::compile(JSContext *cx, JSLinearString &pattern, unsigned *parenCount, RegExpFlag flags) { - #if ENABLE_YARR_JIT +-#if ENABLE_YARR_JIT /* Parse the pattern. */ ErrorCode yarrError; YarrPattern yarrPattern(pattern, bool(flags & IgnoreCaseFlag), bool(flags & MultilineFlag), &yarrError); + if (yarrError) { + reportYarrError(cx, NULL, yarrError); + return false; + } + *parenCount = yarrPattern.m_numSubpatterns; + + /* + * The YARR JIT compiler attempts to compile the parsed pattern. If + * it cannot, it informs us via |codeBlock.isFallBack()|, in which + * case we have to bytecode compile it. + */ + +-#ifdef JS_METHODJIT ++#if ENABLE_YARR_JIT && defined(JS_METHODJIT) + if (isJITRuntimeEnabled(cx) && !yarrPattern.m_containsBackreferences) { + JSC::ExecutableAllocator *execAlloc = cx->runtime->getExecutableAllocator(cx); + if (!execAlloc) { + js_ReportOutOfMemory(cx); + return false; + } + + JSGlobalData globalData(execAlloc); +@@ -272,58 +234,41 @@ RegExpCode::compile(JSContext *cx, JSLin + #endif + + WTF::BumpPointerAllocator *bumpAlloc = cx->runtime->getBumpPointerAllocator(cx); + if (!bumpAlloc) { + js_ReportOutOfMemory(cx); + return false; + } + ++#if ENABLE_YARR_JIT + codeBlock.setFallBack(true); ++#endif + byteCode = byteCompile(yarrPattern, bumpAlloc).get(); + return true; +-#else /* !defined(ENABLE_YARR_JIT) */ +- int error = 0; +- compiled = jsRegExpCompile(pattern.chars(), pattern.length(), +- ignoreCase() ? JSRegExpIgnoreCase : JSRegExpDoNotIgnoreCase, +- multiline() ? JSRegExpMultiline : JSRegExpSingleLine, +- parenCount, &error); +- if (error) { +- reportPCREError(cx, error); +- return false; +- } +- return true; +-#endif + } + + RegExpRunStatus + RegExpCode::execute(JSContext *cx, const jschar *chars, size_t length, size_t start, + int *output, size_t outputCount) + { + int result; + #if ENABLE_YARR_JIT + (void) cx; /* Unused. */ + if (codeBlock.isFallBack()) + result = JSC::Yarr::interpret(byteCode, chars, start, length, output); + else + result = JSC::Yarr::execute(codeBlock, chars, start, length, output); + #else +- result = jsRegExpExecute(cx, compiled, chars, length, start, output, outputCount); ++ result = JSC::Yarr::interpret(byteCode, chars, start, length, output); + #endif + + if (result == -1) + return RegExpRunStatus_Success_NotFound; + +-#if !ENABLE_YARR_JIT +- if (result < 0) { +- reportPCREError(cx, result); +- return RegExpRunStatus_Error; +- } +-#endif +- + JS_ASSERT(result >= 0); + return RegExpRunStatus_Success; + } + + /* RegExpObject */ + + static void + regexp_trace(JSTracer *trc, JSObject *obj) diff --git a/js/src/vm/RegExpObject.h b/js/src/vm/RegExpObject.h --- a/js/src/vm/RegExpObject.h +++ b/js/src/vm/RegExpObject.h -@@ -46,20 +46,18 @@ - #include <stddef.h> +@@ -47,20 +47,18 @@ + #include "jscntxt.h" #include "jsobj.h" #include "js/TemplateLib.h" @@ -187,6 +288,91 @@ * * RegExpObject - The JS-visible object whose .[[Class]] equals "RegExp" * +@@ -108,78 +106,61 @@ class RegExpObjectBuilder + + JSObject * + CloneRegExpObject(JSContext *cx, JSObject *obj, JSObject *proto); + + namespace detail { + + class RegExpCode + { +-#if ENABLE_YARR_JIT + typedef JSC::Yarr::BytecodePattern BytecodePattern; + typedef JSC::Yarr::ErrorCode ErrorCode; ++ typedef JSC::Yarr::YarrPattern YarrPattern; ++#if ENABLE_YARR_JIT + typedef JSC::Yarr::JSGlobalData JSGlobalData; + typedef JSC::Yarr::YarrCodeBlock YarrCodeBlock; +- typedef JSC::Yarr::YarrPattern YarrPattern; + + /* Note: Native code is valid only if |codeBlock.isFallBack() == false|. */ + YarrCodeBlock codeBlock; ++#endif + BytecodePattern *byteCode; +-#else +- JSRegExp *compiled; +-#endif + + public: + RegExpCode() + : + #if ENABLE_YARR_JIT + codeBlock(), ++#endif + byteCode(NULL) +-#else +- compiled(NULL) +-#endif + { } + + ~RegExpCode() { + #if ENABLE_YARR_JIT + codeBlock.release(); ++#endif + if (byteCode) + Foreground::delete_<BytecodePattern>(byteCode); +-#else +- if (compiled) +- jsRegExpFree(compiled); +-#endif + } + + static bool checkSyntax(JSContext *cx, TokenStream *tokenStream, JSLinearString *source) { +-#if ENABLE_YARR_JIT + ErrorCode error = JSC::Yarr::checkSyntax(*source); + if (error == JSC::Yarr::NoError) + return true; + + reportYarrError(cx, tokenStream, error); + return false; +-#else +-# error "Syntax checking not implemented for !ENABLE_YARR_JIT" +-#endif + } + + #if ENABLE_YARR_JIT + static inline bool isJITRuntimeEnabled(JSContext *cx); ++#endif + static void reportYarrError(JSContext *cx, TokenStream *ts, JSC::Yarr::ErrorCode error); +-#else +- static void reportPCREError(JSContext *cx, int error); +-#endif + + static size_t getOutputSize(size_t pairCount) { +-#if ENABLE_YARR_JIT + return pairCount * 2; +-#else +- return pairCount * 3; /* Should be x2, but PCRE has... needs. */ +-#endif + } + + bool compile(JSContext *cx, JSLinearString &pattern, unsigned *parenCount, RegExpFlag flags); + + + RegExpRunStatus + execute(JSContext *cx, const jschar *chars, size_t length, size_t start, + int *output, size_t outputCount); diff --git a/js/src/yarr/wtfbridge.h b/js/src/yarr/wtfbridge.h --- a/js/src/yarr/wtfbridge.h +++ b/js/src/yarr/wtfbridge.h ++++++ source-stamp.txt ++++++ --- /var/tmp/diff_new_pack.5puy4F/_old 2012-07-31 14:23:27.000000000 +0200 +++ /var/tmp/diff_new_pack.5puy4F/_new 2012-07-31 14:23:27.000000000 +0200 @@ -1,2 +1,2 @@ -REV=2b643ea8edf9 +REV=e5728a4e106c REPO=http://hg.mozilla.org/releases/mozilla-release ++++++ xulrunner-13.0.1-source.tar.bz2 -> xulrunner-14.0.1-source.tar.bz2 ++++++ /work/SRC/openSUSE:12.2/xulrunner/xulrunner-13.0.1-source.tar.bz2 /work/SRC/openSUSE:12.2/.xulrunner.new/xulrunner-14.0.1-source.tar.bz2 differ: char 11, line 1 -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@hilbert.suse.de