gnu: mozjs: Cleanup to only keep the last version.
* gnu/packages/gnuzilla.scm (mozjs): Preserve only the metadata and otherwise update fields to use those of mozjs-78. [arguments]: Use gexps. [phases]: Delete trailing #t. [native-inputs]: Use new style. (mozjs-38, mozjs-52, mozjs-60, mozjs-78): Delete variables. * gnu/packages/patches/mozjs17-aarch64-support.patch * gnu/packages/patches/mozjs24-aarch64-support.patch * gnu/packages/patches/mozjs38-pkg-config-version.patch * gnu/packages/patches/mozjs38-shell-version.patch * gnu/packages/patches/mozjs38-tracelogger.patch * gnu/packages/patches/mozjs38-version-detection.patch * gnu/packages/patches/mozjs60-riscv64-support.patch: Delete patches. * gnu/local.mk (dist_patch_DATA): De-register them. * gnu/packages/games.scm (0ad): Adjust accordingly. * gnu/packages/gnome.scm (gjs): Likewise. * gnu/packages/polkit.scm (polkit-mozjs): Likewise.
This commit is contained in:
parent
425783b5dc
commit
5e25a69e6e
@ -1509,13 +1509,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/monero-use-system-miniupnpc.patch \
|
||||
%D%/packages/patches/mono-mdoc-timestamping.patch \
|
||||
%D%/packages/patches/mosaicatcher-unbundle-htslib.patch \
|
||||
%D%/packages/patches/mozjs17-aarch64-support.patch \
|
||||
%D%/packages/patches/mozjs24-aarch64-support.patch \
|
||||
%D%/packages/patches/mozjs38-pkg-config-version.patch \
|
||||
%D%/packages/patches/mozjs38-shell-version.patch \
|
||||
%D%/packages/patches/mozjs38-tracelogger.patch \
|
||||
%D%/packages/patches/mozjs38-version-detection.patch \
|
||||
%D%/packages/patches/mozjs60-riscv64-support.patch \
|
||||
%D%/packages/patches/mrrescue-support-love-11.patch \
|
||||
%D%/packages/patches/mtools-mformat-uninitialized.patch \
|
||||
%D%/packages/patches/mumps-build-parallelism.patch \
|
||||
|
@ -6690,7 +6690,7 @@ fight against their plot and save his fellow rabbits from slavery.")
|
||||
libxcursor
|
||||
libxml2
|
||||
miniupnpc
|
||||
mozjs-78
|
||||
mozjs
|
||||
openal
|
||||
sdl2
|
||||
wxwidgets
|
||||
|
@ -7203,7 +7203,7 @@ configuration program to choose applications starting on login.")
|
||||
("xvfb" ,xorg-server-for-tests)))
|
||||
(propagated-inputs
|
||||
;; These are all in the Requires.private field of gjs-1.0.pc.
|
||||
(list cairo gobject-introspection mozjs-78))
|
||||
(list cairo gobject-introspection mozjs))
|
||||
(inputs
|
||||
(list gtk+ readline))
|
||||
(synopsis "Javascript bindings for GNOME")
|
||||
|
@ -96,356 +96,6 @@
|
||||
(define-public mozjs
|
||||
(package
|
||||
(name "mozjs")
|
||||
(version "17.0.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://ftp.mozilla.org/pub/mozilla.org/js/"
|
||||
name version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1fig2wf4f10v43mqx67y68z6h77sy900d1w0pz9qarrqx57rc7ij"))
|
||||
(patches (search-patches "mozjs17-aarch64-support.patch"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
;; Fix incompatibility with Perl 5.22+.
|
||||
'(begin
|
||||
(substitute* '("js/src/config/milestone.pl")
|
||||
(("defined\\(@TEMPLATE_FILE)") "@TEMPLATE_FILE"))
|
||||
#t))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("perl" ,perl)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python-2)))
|
||||
(propagated-inputs
|
||||
(list nspr)) ; in the Requires.private field of mozjs-17.0.pc
|
||||
(inputs
|
||||
(list zlib))
|
||||
(arguments
|
||||
`(;; XXX: parallel build fails, lacking:
|
||||
;; mkdir -p "system_wrapper_js/"
|
||||
#:parallel-build? #f
|
||||
#:make-flags '("CXXFLAGS=-fpermissive")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'delete-timedout-test
|
||||
;; This test times out on slower hardware.
|
||||
(lambda _
|
||||
(delete-file "js/src/jit-test/tests/basic/bug698584.js")
|
||||
#t))
|
||||
(add-before 'configure 'chdir
|
||||
(lambda _
|
||||
(chdir "js/src")
|
||||
#t))
|
||||
(replace 'configure
|
||||
;; configure fails if it is followed by SHELL and CONFIG_SHELL
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(setenv "SHELL" (which "sh"))
|
||||
(setenv "CONFIG_SHELL" (which "sh"))
|
||||
(invoke "./configure" (string-append "--prefix=" out)
|
||||
,@(if (string=? "aarch64-linux"
|
||||
(%current-system))
|
||||
'("--host=aarch64-unknown-linux-gnu")
|
||||
'()))))))))
|
||||
(home-page
|
||||
"https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey")
|
||||
(synopsis "Mozilla javascript engine")
|
||||
(description "SpiderMonkey is Mozilla's JavaScript engine written
|
||||
in C/C++.")
|
||||
(license license:mpl2.0))) ; and others for some files
|
||||
|
||||
(define-public mozjs-24
|
||||
(package (inherit mozjs)
|
||||
(name "mozjs")
|
||||
(version "24.2.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://ftp.mozilla.org/pub/mozilla.org/js/"
|
||||
name "-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1n1phk8r3l8icqrrap4czplnylawa0ddc2cc4cgdz46x3lrkybz6"))
|
||||
(modules '((guix build utils)))
|
||||
(patches (search-patches "mozjs24-aarch64-support.patch"))
|
||||
(snippet
|
||||
;; Fix incompatibility with Perl 5.22+.
|
||||
'(begin
|
||||
(substitute* '("js/src/config/milestone.pl")
|
||||
(("defined\\(@TEMPLATE_FILE)") "@TEMPLATE_FILE"))
|
||||
#t))))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments mozjs)
|
||||
((#:phases phases)
|
||||
`(modify-phases ,phases
|
||||
(replace 'configure
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
;; configure fails if it is followed by SHELL and CONFIG_SHELL
|
||||
(setenv "SHELL" (which "sh"))
|
||||
(setenv "CONFIG_SHELL" (which "sh"))
|
||||
(invoke "./configure"
|
||||
(string-append "--prefix=" out)
|
||||
"--with-system-nspr"
|
||||
"--enable-system-ffi"
|
||||
"--enable-threadsafe"
|
||||
,@(if (string=? "aarch64-linux"
|
||||
(%current-system))
|
||||
'("--host=aarch64-unknown-linux-gnu")
|
||||
'())))))))))
|
||||
(inputs
|
||||
(list libffi zlib))))
|
||||
|
||||
(define-public mozjs-38
|
||||
(package
|
||||
(inherit mozjs)
|
||||
(name "mozjs")
|
||||
(version "38.2.1.rc0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://anduin.linuxfromscratch.org/BLFS/mozjs/"
|
||||
name "-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0p4bmbpgkfsj54xschcny0a118jdrdgg0q29rwxigg3lh5slr681"))
|
||||
(patches
|
||||
(search-patches
|
||||
;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1269317 for
|
||||
;; GCC 6 compatibility.
|
||||
|
||||
"mozjs38-version-detection.patch" ; for 0ad
|
||||
"mozjs38-tracelogger.patch"
|
||||
|
||||
;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1339931.
|
||||
"mozjs38-pkg-config-version.patch"
|
||||
"mozjs38-shell-version.patch"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
;; Fix incompatibility with sed 4.4.
|
||||
(substitute* "js/src/configure"
|
||||
(("\\^\\[:space:\\]") "^[[:space:]]"))
|
||||
|
||||
;; The headers are symlinks to files that are in /tmp, so they
|
||||
;; end up broken. Copy them instead.
|
||||
(substitute*
|
||||
"python/mozbuild/mozbuild/backend/recursivemake.py"
|
||||
(("\\['dist_include'\\].add_symlink")
|
||||
"['dist_include'].add_copy"))
|
||||
|
||||
;; Remove bundled libraries.
|
||||
(for-each delete-file-recursively
|
||||
'("intl"
|
||||
"js/src/ctypes/libffi"
|
||||
"js/src/ctypes/libffi-patches"
|
||||
"modules/zlib"))
|
||||
#t))))
|
||||
(arguments
|
||||
`(;; XXX: parallel build fails, lacking:
|
||||
;; mkdir -p "system_wrapper_js/"
|
||||
#:parallel-build? #f
|
||||
;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1008470.
|
||||
#:tests? #f
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'configure
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(chdir "js/src")
|
||||
(setenv "SHELL" (which "sh"))
|
||||
(setenv "CONFIG_SHELL" (which "sh"))
|
||||
(invoke "./configure"
|
||||
(string-append "--prefix=" out)
|
||||
"--enable-ctypes"
|
||||
"--enable-gcgenerational"
|
||||
"--enable-optimize"
|
||||
"--enable-pie"
|
||||
"--enable-readline"
|
||||
"--enable-shared-js"
|
||||
"--enable-system-ffi"
|
||||
"--enable-threadsafe"
|
||||
"--enable-xterm-updates"
|
||||
"--with-system-icu"
|
||||
"--with-system-nspr"
|
||||
"--with-system-zlib"
|
||||
|
||||
;; Intl API requires bundled ICU.
|
||||
"--without-intl-api")))))))
|
||||
(native-inputs
|
||||
`(("perl" ,perl)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python-2" ,python-2)))
|
||||
(inputs
|
||||
(list libffi readline icu4c zlib))))
|
||||
|
||||
(define-public mozjs-52
|
||||
;; No releases yet at <https://archive.mozilla.org/pub/spidermonkey/releases/>.
|
||||
;; While we could take a snapshot of the complete mozilla-esr52 repository at
|
||||
;; <https://treeherder.mozilla.org/#/jobs?repo=mozilla-esr52&filter-searchStr=sm-tc>,
|
||||
;; we take the Debian version instead, because it is easier to work with.
|
||||
(let ((commit "6507e63cc416fd7a3269e390efe712f8b56f374a")
|
||||
(revision "1"))
|
||||
(package (inherit mozjs-38)
|
||||
(version (git-version "52.0" revision commit))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://salsa.debian.org/gnome-team/mozjs52.git")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name "mozjs" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1ny0s53r8wn4byys87h784xrq1xg767akmfm6gqrbvrz57mlm3q2"))))
|
||||
(arguments
|
||||
`(#:tests? #f ; depends on repository metadata
|
||||
#:configure-flags
|
||||
'("--enable-ctypes"
|
||||
"--enable-optimize"
|
||||
"--enable-pie"
|
||||
"--enable-readline"
|
||||
"--enable-shared-js"
|
||||
"--enable-system-ffi"
|
||||
"--with-system-icu"
|
||||
"--with-system-nspr"
|
||||
"--with-system-zlib"
|
||||
|
||||
;; Intl API requires bundled ICU.
|
||||
"--without-intl-api"
|
||||
|
||||
;; Without this gnome-shell will crash at runtime.
|
||||
"--disable-jemalloc")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'patch-and-chdir
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
;; This patch prevents a segfault when executing JS_Init().
|
||||
;; The build does not fail without this patch, but the
|
||||
;; configure phase of the gjs package would fail.
|
||||
;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1176787
|
||||
(make-file-writable "js/src/old-configure.in")
|
||||
(make-file-writable "js/src/old-configure")
|
||||
(make-file-writable "mozglue/build/moz.build")
|
||||
(invoke "patch" "-p1" "--force"
|
||||
"--input" "debian/patches/disable-mozglue.patch")
|
||||
(invoke "touch" "js/src/configure")
|
||||
(chdir "js/src")
|
||||
#t))
|
||||
(replace 'configure
|
||||
(lambda* (#:key inputs outputs configure-flags #:allow-other-keys)
|
||||
;; The configure script does not accept environment variables
|
||||
;; as arguments.
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(setenv "SHELL" (which "sh"))
|
||||
(setenv "CONFIG_SHELL" (which "sh"))
|
||||
(setenv "AUTOCONF" (which "autoconf"))
|
||||
(apply invoke "./configure"
|
||||
(cons (string-append "--prefix=" out)
|
||||
configure-flags))))))))
|
||||
(native-inputs
|
||||
(modify-inputs (package-native-inputs mozjs-38)
|
||||
(prepend autoconf-2.13 automake))))))
|
||||
|
||||
(define-public mozjs-60
|
||||
;; No releases yet at <https://archive.mozilla.org/pub/spidermonkey/releases/>.
|
||||
;; While we could take a snapshot of the complete mozilla-esr60 repository at
|
||||
;; <https://treeherder.mozilla.org/#/jobs?repo=mozilla-esr60&filter-searchStr=sm-tc>,
|
||||
;; we take the Debian version instead, because it is easier to work with.
|
||||
(package
|
||||
(inherit mozjs-38)
|
||||
(version "60.2.3-4")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://salsa.debian.org/gnome-team/mozjs60.git")
|
||||
(commit (string-append "debian/" version))))
|
||||
(file-name (git-file-name "mozjs" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1xl6avsj9gkgma71p56jzs7nasc767k3n1frnmri5pad4rj94bij"))
|
||||
(patches (search-patches "mozjs60-riscv64-support.patch"))))
|
||||
(arguments
|
||||
`(#:tests? #f ; FIXME: all tests pass, but then the check phase fails anyway.
|
||||
#:test-target "check-jstests"
|
||||
#:configure-flags
|
||||
,#~(quasiquote
|
||||
("--enable-ctypes"
|
||||
"--enable-optimize"
|
||||
"--enable-pie"
|
||||
"--enable-readline"
|
||||
"--enable-shared-js"
|
||||
"--enable-system-ffi"
|
||||
"--with-system-nspr"
|
||||
#$@(if (%current-target-system)
|
||||
#~(,(string-append "--with-nspr-prefix="
|
||||
#$(this-package-input "nspr")))
|
||||
#~())
|
||||
"--with-system-zlib"
|
||||
"--with-system-icu"
|
||||
"--with-intl-api"
|
||||
;; This is important because without it gjs will segfault during the
|
||||
;; configure phase. With jemalloc only the standalone mozjs console
|
||||
;; will work.
|
||||
"--disable-jemalloc"
|
||||
;; Mozilla deviates from Autotools conventions due to historical
|
||||
;; reasons.
|
||||
#$@(if (%current-target-system)
|
||||
#~(#$(string-append
|
||||
"--host="
|
||||
(nix-system->gnu-triplet (%current-system)))
|
||||
#$(string-append "--target=" (%current-target-system)))
|
||||
#~())))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
;; Make sure pkg-config will be found.
|
||||
,@(if (%current-target-system)
|
||||
`((add-before 'configure 'set-PKG-CONFIG
|
||||
(lambda _
|
||||
(setenv "PKG_CONFIG" ,(pkg-config-for-target)))))
|
||||
'())
|
||||
(replace 'configure
|
||||
(lambda* (#:key inputs outputs configure-flags #:allow-other-keys)
|
||||
;; The configure script does not accept environment variables as
|
||||
;; arguments. It also must be run from a different directory,
|
||||
;; but not the root directory either.
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(mkdir "run-configure-from-here")
|
||||
(chdir "run-configure-from-here")
|
||||
(setenv "SHELL" (which "sh"))
|
||||
(setenv "CONFIG_SHELL" (which "sh"))
|
||||
(setenv "AUTOCONF" (which "autoconf"))
|
||||
(apply invoke "../js/src/configure"
|
||||
(cons (string-append "--prefix=" out)
|
||||
configure-flags))
|
||||
#t)))
|
||||
(add-after 'unpack 'update-config-scripts
|
||||
(lambda* (#:key native-inputs inputs #:allow-other-keys)
|
||||
(for-each (lambda (file)
|
||||
(install-file
|
||||
(search-input-file
|
||||
(or native-inputs inputs)
|
||||
(string-append "/bin/" file)) "build/autoconf"))
|
||||
'("config.guess" "config.sub"))))
|
||||
(add-after 'unpack 'disable-broken-tests
|
||||
(lambda _
|
||||
;; This test assumes that /bin exists and contains certain
|
||||
;; executables.
|
||||
(delete-file "js/src/tests/shell/os.js")
|
||||
#t)))))
|
||||
(native-inputs
|
||||
`(("autoconf" ,autoconf)
|
||||
("automake" ,automake)
|
||||
("config" ,config)
|
||||
("which" ,which)
|
||||
("perl" ,perl)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python-2)))))
|
||||
|
||||
(define-public mozjs-78
|
||||
(package
|
||||
(inherit mozjs-60)
|
||||
(version "78.15.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
@ -456,13 +106,16 @@ in C/C++.")
|
||||
(sha256
|
||||
(base32
|
||||
"0l91cxdc5v9fps79ckb1kid4gw6v5qng1jd9zvaacwaiv628shx4"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:imported-modules ,%cargo-utils-modules ;for `generate-all-checksums'
|
||||
#:modules ((guix build cargo-utils)
|
||||
(list
|
||||
#:imported-modules %cargo-utils-modules ;for `generate-all-checksums'
|
||||
#:modules `((guix build cargo-utils)
|
||||
,@%gnu-build-system-modules)
|
||||
#:test-target "check-jstests"
|
||||
#:configure-flags
|
||||
'(;; Disable debugging symbols to save space.
|
||||
#:test-target "check-jstests"
|
||||
#:configure-flags
|
||||
#~(list
|
||||
;; Disable debugging symbols to save space.
|
||||
"--disable-debug"
|
||||
"--disable-debug-symbols"
|
||||
;; This is important because without it gjs will segfault during the
|
||||
@ -483,109 +136,111 @@ in C/C++.")
|
||||
"--with-system-nspr"
|
||||
"--with-system-zlib"
|
||||
"--with-intl-api")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'patch-source-shebangs 'patch-cargo-checksums
|
||||
(lambda _
|
||||
(let ((null-hash
|
||||
"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"))
|
||||
(for-each (lambda (file)
|
||||
(format #t "patching checksums in ~a~%" file)
|
||||
(substitute* file
|
||||
(("^checksum = \".*\"")
|
||||
(string-append "checksum = \"" null-hash "\""))))
|
||||
(find-files "." "Cargo\\.lock$"))
|
||||
(for-each generate-all-checksums
|
||||
'("js" "third_party/rust"))
|
||||
#t)))
|
||||
(replace 'configure
|
||||
(lambda* (#:key inputs outputs configure-flags #:allow-other-keys)
|
||||
;; The configure script does not accept environment variables as
|
||||
;; arguments. It also must be run from a different directory,
|
||||
;; but not the root directory either.
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(mkdir "run-configure-from-here")
|
||||
(chdir "run-configure-from-here")
|
||||
(setenv "SHELL" (which "sh"))
|
||||
(setenv "CONFIG_SHELL" (which "sh"))
|
||||
(setenv "AUTOCONF" (which "autoconf"))
|
||||
(apply invoke "../js/src/configure"
|
||||
(cons (string-append "--prefix=" out)
|
||||
configure-flags))
|
||||
#t)))
|
||||
(add-after 'unpack 'adjust-for-icu-68
|
||||
(lambda _
|
||||
(with-directory-excursion "js/src/tests"
|
||||
;; The test suite expects a lightly patched ICU 67. Since
|
||||
;; Guix is about to switch to ICU 68, massage the tests to
|
||||
;; work with that instead of patching ICU. Try removing this
|
||||
;; phase for newer versions of mozjs.
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'patch-source-shebangs 'patch-cargo-checksums
|
||||
(lambda _
|
||||
(let ((null-hash
|
||||
"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"))
|
||||
(for-each (lambda (file)
|
||||
(format #t "patching checksums in ~a~%" file)
|
||||
(substitute* file
|
||||
(("^checksum = \".*\"")
|
||||
(string-append "checksum = \"" null-hash "\""))))
|
||||
(find-files "." "Cargo\\.lock$"))
|
||||
(for-each generate-all-checksums
|
||||
'("js" "third_party/rust")))))
|
||||
(replace 'configure
|
||||
(lambda* (#:key inputs configure-flags #:allow-other-keys)
|
||||
;; The configure script does not accept environment variables as
|
||||
;; arguments. It also must be run from a different directory,
|
||||
;; but not the root directory either.
|
||||
(mkdir "run-configure-from-here")
|
||||
(chdir "run-configure-from-here")
|
||||
(setenv "SHELL" (which "sh"))
|
||||
(setenv "CONFIG_SHELL" (which "sh"))
|
||||
(setenv "AUTOCONF" (which "autoconf"))
|
||||
(apply invoke "../js/src/configure"
|
||||
(cons (string-append "--prefix=" #$output)
|
||||
configure-flags))))
|
||||
(add-after 'unpack 'adjust-for-icu-68
|
||||
(lambda _
|
||||
(with-directory-excursion "js/src/tests"
|
||||
;; The test suite expects a lightly patched ICU 67. Since
|
||||
;; Guix is about to switch to ICU 68, massage the tests to
|
||||
;; work with that instead of patching ICU. Try removing this
|
||||
;; phase for newer versions of mozjs.
|
||||
|
||||
;; These tests look up locale names and expects to get
|
||||
;; "GB" instead of "UK".
|
||||
(substitute* "non262/Intl/DisplayNames/language.js"
|
||||
(("Traditionell, GB")
|
||||
"Traditionell, UK"))
|
||||
(substitute* "non262/Intl/DisplayNames/region.js"
|
||||
(("\"GB\": \"GB\"")
|
||||
"\"GB\": \"UK\""))
|
||||
;; These tests look up locale names and expects to get
|
||||
;; "GB" instead of "UK".
|
||||
(substitute* "non262/Intl/DisplayNames/language.js"
|
||||
(("Traditionell, GB")
|
||||
"Traditionell, UK"))
|
||||
(substitute* "non262/Intl/DisplayNames/region.js"
|
||||
(("\"GB\": \"GB\"")
|
||||
"\"GB\": \"UK\""))
|
||||
|
||||
;; XXX: Some localized time formats have changed, and
|
||||
;; substitution fails for accented characters, even though
|
||||
;; it works in the REPL(?). Just delete these for now.
|
||||
(delete-file "non262/Intl/Date/toLocaleString_timeZone.js")
|
||||
(delete-file "non262/Intl/Date/toLocaleDateString_timeZone.js")
|
||||
;; XXX: Some localized time formats have changed, and
|
||||
;; substitution fails for accented characters, even though
|
||||
;; it works in the REPL(?). Just delete these for now.
|
||||
(delete-file "non262/Intl/Date/toLocaleString_timeZone.js")
|
||||
(delete-file "non262/Intl/Date/toLocaleDateString_timeZone.js")
|
||||
|
||||
;; Similarly, these get an unexpected "A" suffix when looking
|
||||
;; up a time in the "ar-MA-u-ca-islamicc" locale, which is
|
||||
;; tricky to substitute.
|
||||
(delete-file "non262/Intl/DateTimeFormat/format_timeZone.js")
|
||||
(delete-file "non262/Intl/DateTimeFormat/format.js")
|
||||
;; Similarly, these get an unexpected "A" suffix when looking
|
||||
;; up a time in the "ar-MA-u-ca-islamicc" locale, which is
|
||||
;; tricky to substitute.
|
||||
(delete-file "non262/Intl/DateTimeFormat/format_timeZone.js")
|
||||
(delete-file "non262/Intl/DateTimeFormat/format.js")
|
||||
|
||||
;; This file compares a generated list of ICU locale names
|
||||
;; with actual lookups. Some have changed slightly, i.e.
|
||||
;; daf-Latn-ZZ -> daf-Latn-CI, so drop it for simplicity.
|
||||
(delete-file "non262/Intl/Locale/likely-subtags-generated.js"))
|
||||
;; This file compares a generated list of ICU locale names
|
||||
;; with actual lookups. Some have changed slightly, i.e.
|
||||
;; daf-Latn-ZZ -> daf-Latn-CI, so drop it for simplicity.
|
||||
(delete-file "non262/Intl/Locale/likely-subtags-generated.js"))))
|
||||
(add-before 'check 'pre-check
|
||||
(lambda _
|
||||
(with-directory-excursion "../js/src/tests"
|
||||
(substitute* "shell/os.js"
|
||||
;; FIXME: Why does the killed process have an exit status?
|
||||
((".*killed process should not have exitStatus.*")
|
||||
""))
|
||||
|
||||
#t))
|
||||
(add-before 'check 'pre-check
|
||||
(lambda _
|
||||
(with-directory-excursion "../js/src/tests"
|
||||
(substitute* "shell/os.js"
|
||||
;; FIXME: Why does the killed process have an exit status?
|
||||
((".*killed process should not have exitStatus.*")
|
||||
""))
|
||||
;; XXX: Delete all tests that test time zone functionality,
|
||||
;; because the test suite uses /etc/localtime to figure out
|
||||
;; the offset from the hardware clock, which does not work
|
||||
;; in the build container. See <tests/non262/Date/shell.js>.
|
||||
(delete-file-recursively "non262/Date")
|
||||
(delete-file "non262/Intl/DateTimeFormat/tz-environment-variable.js")
|
||||
|
||||
;; XXX: Delete all tests that test time zone functionality,
|
||||
;; because the test suite uses /etc/localtime to figure out
|
||||
;; the offset from the hardware clock, which does not work
|
||||
;; in the build container. See <tests/non262/Date/shell.js>.
|
||||
(delete-file-recursively "non262/Date")
|
||||
(delete-file "non262/Intl/DateTimeFormat/tz-environment-variable.js")
|
||||
|
||||
(setenv "JSTESTS_EXTRA_ARGS"
|
||||
(string-join
|
||||
(list
|
||||
;; Do not run tests marked as "random".
|
||||
"--exclude-random"
|
||||
;; Exclude web platform tests.
|
||||
"--wpt=disabled"
|
||||
;; Respect the daemons configured number of jobs.
|
||||
(string-append "--worker-count="
|
||||
(number->string (parallel-job-count)))))))
|
||||
#t)))))
|
||||
(setenv "JSTESTS_EXTRA_ARGS"
|
||||
(string-join
|
||||
(list
|
||||
;; Do not run tests marked as "random".
|
||||
"--exclude-random"
|
||||
;; Exclude web platform tests.
|
||||
"--wpt=disabled"
|
||||
;; Respect the daemons configured number of jobs.
|
||||
(string-append "--worker-count="
|
||||
(number->string (parallel-job-count))))))))))))
|
||||
(native-inputs
|
||||
`(("autoconf" ,autoconf-2.13)
|
||||
("automake" ,automake)
|
||||
;; TODO(staging): Use the default LLVM in the next rebuild cycle.
|
||||
("llvm" ,llvm-9) ;for llvm-objdump
|
||||
("perl" ,perl)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python-3)
|
||||
("rust" ,rust)
|
||||
("cargo" ,rust "cargo")))
|
||||
(list autoconf-2.13
|
||||
automake
|
||||
;; TODO(staging): Use the default LLVM in the next rebuild cycle.
|
||||
llvm-9 ;for llvm-objdump
|
||||
perl
|
||||
pkg-config
|
||||
python-3
|
||||
rust
|
||||
`(,rust "cargo")))
|
||||
(inputs
|
||||
(list icu4c readline zlib))))
|
||||
(list icu4c readline zlib))
|
||||
(propagated-inputs
|
||||
(list nspr)) ; in the Requires.private field of mozjs-*.pc
|
||||
(home-page
|
||||
"https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey")
|
||||
(synopsis "Mozilla javascript engine")
|
||||
(description "SpiderMonkey is Mozilla's JavaScript engine written
|
||||
in C/C++.")
|
||||
(license license:mpl2.0))) ; and others for some files
|
||||
|
||||
(define mozilla-compare-locales
|
||||
(origin
|
||||
|
@ -1,60 +0,0 @@
|
||||
https://build.opensuse.org/package/view_file/openSUSE:Factory/mozjs17/mozjs-aarch64-support.patch
|
||||
|
||||
index c071c33..90764c3 100644
|
||||
--- a/js/src/assembler/jit/ExecutableAllocator.h
|
||||
+++ b/js/src/assembler/jit/ExecutableAllocator.h
|
||||
@@ -382,6 +382,12 @@ public:
|
||||
{
|
||||
reprotectRegion(start, size, Executable);
|
||||
}
|
||||
+#elif WTF_CPU_AARCH64 && WTF_PLATFORM_LINUX
|
||||
+ static void cacheFlush(void* code, size_t size)
|
||||
+ {
|
||||
+ intptr_t end = reinterpret_cast<intptr_t>(code) + size;
|
||||
+ __builtin___clear_cache(reinterpret_cast<char*>(code), reinterpret_cast<char*>(end));
|
||||
+ }
|
||||
#else
|
||||
static void makeWritable(void*, size_t) {}
|
||||
static void makeExecutable(void*, size_t) {}
|
||||
diff --git a/js/src/assembler/wtf/Platform.h b/js/src/assembler/wtf/Platform.h
|
||||
index 0c84896..e8763a7 100644
|
||||
--- a/js/src/assembler/wtf/Platform.h
|
||||
+++ b/js/src/assembler/wtf/Platform.h
|
||||
@@ -325,6 +325,10 @@
|
||||
#define WTF_THUMB_ARCH_VERSION 0
|
||||
#endif
|
||||
|
||||
+/* CPU(AArch64) - 64-bit ARM */
|
||||
+#if defined(__aarch64__)
|
||||
+#define WTF_CPU_AARCH64 1
|
||||
+#endif
|
||||
|
||||
/* WTF_CPU_ARMV5_OR_LOWER - ARM instruction set v5 or earlier */
|
||||
/* On ARMv5 and below the natural alignment is required.
|
||||
diff --git a/js/src/configure.in b/js/src/configure.in
|
||||
index 15605b2..19fd704 100644
|
||||
--- a/js/src/configure.in
|
||||
+++ b/js/src/configure.in
|
||||
@@ -1121,6 +1121,10 @@ arm*)
|
||||
CPU_ARCH=arm
|
||||
;;
|
||||
|
||||
+aarch64)
|
||||
+ CPU_ARCH=aarch64
|
||||
+ ;;
|
||||
+
|
||||
mips|mipsel)
|
||||
CPU_ARCH="mips"
|
||||
;;
|
||||
diff --git a/mfbt/double-conversion/utils.h b/mfbt/double-conversion/utils.h
|
||||
index 0eec2d9..fe26dab 100644
|
||||
--- a/mfbt/double-conversion/utils.h
|
||||
+++ b/mfbt/double-conversion/utils.h
|
||||
@@ -58,6 +58,7 @@
|
||||
defined(__mips__) || defined(__powerpc__) || \
|
||||
defined(__sparc__) || defined(__sparc) || defined(__s390__) || \
|
||||
defined(__SH4__) || defined(__alpha__) || \
|
||||
+ defined(__aarch64__) || \
|
||||
defined(_MIPS_ARCH_MIPS32R2)
|
||||
#define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
|
||||
#elif defined(_M_IX86) || defined(__i386__) || defined(__i386)
|
@ -1,21 +0,0 @@
|
||||
This patch is sourced from Debian's mozjs24 patch set.
|
||||
|
||||
Description: Add arm64 support
|
||||
Author: Andreas Schwab <schwab@suse.de>
|
||||
Origin: vendor, https://build.opensuse.org/package/view_file/openSUSE:Factory/mozjs17/mozjs-aarch64-support.patch
|
||||
Forwarded: no
|
||||
Last-Update: 2014-01-03
|
||||
|
||||
Index: b/mfbt/double-conversion/utils.h
|
||||
===================================================================
|
||||
--- a/mfbt/double-conversion/utils.h
|
||||
+++ b/mfbt/double-conversion/utils.h
|
||||
@@ -58,7 +58,7 @@
|
||||
defined(__mips__) || defined(__powerpc__) || \
|
||||
defined(__sparc__) || defined(__sparc) || defined(__s390__) || \
|
||||
defined(__SH4__) || defined(__alpha__) || \
|
||||
- defined(_MIPS_ARCH_MIPS32R2)
|
||||
+ defined(_MIPS_ARCH_MIPS32R2) || defined(__aarch64__)
|
||||
#define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1
|
||||
#elif defined(_M_IX86) || defined(__i386__) || defined(__i386)
|
||||
#if defined(_WIN32)
|
@ -1,24 +0,0 @@
|
||||
Taken from https://bug1339931.bmoattachments.org/attachment.cgi?id=8837770.
|
||||
|
||||
Add major version to pkg-config filename.
|
||||
Author: Rico Tzschichholz <ricotz@ubuntu.com>
|
||||
Forwarded: no
|
||||
Last-Update: 2015-05-04
|
||||
|
||||
Index: b/js/src/Makefile.in
|
||||
===================================================================
|
||||
--- a/js/src/Makefile.in
|
||||
+++ b/js/src/Makefile.in
|
||||
@@ -214,10 +214,10 @@
|
||||
$(JS_CONFIG_NAME): js-config
|
||||
cp $^ $@
|
||||
|
||||
-$(LIBRARY_NAME).pc: js.pc
|
||||
+$(JS_LIBRARY_NAME).pc: js.pc
|
||||
cp $^ $@
|
||||
|
||||
-install:: $(LIBRARY_NAME).pc
|
||||
+install:: $(JS_LIBRARY_NAME).pc
|
||||
$(SYSINSTALL) $^ $(DESTDIR)$(libdir)/pkgconfig
|
||||
|
||||
install:: js-config.h
|
@ -1,67 +0,0 @@
|
||||
Taken from https://bug1339931.bmoattachments.org/attachment.cgi?id=8837771.
|
||||
|
||||
# HG changeset patch
|
||||
# Parent 4732a0e5d22bc7e5c1f1ace7a182d537d9cc2c6a
|
||||
Add major version to shell and js-config filenames.
|
||||
Author: Rico Tzschichholz <ricotz@ubuntu.com>
|
||||
Forwarded: no
|
||||
Last-Update: 2014-10-29
|
||||
|
||||
---
|
||||
diff --git a/js/src/configure b/js/src/configure
|
||||
--- a/js/src/configure
|
||||
+++ b/js/src/configure
|
||||
@@ -1696,8 +1696,13 @@
|
||||
MOZJS_PATCH_VERSION=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.[0-9]*[^0-9]*||"`
|
||||
IS_ALPHA=`echo $MOZILLA_VERSION | grep '[ab]'`
|
||||
|
||||
+if test -n "$JS_STANDALONE"; then
|
||||
+JS_SHELL_NAME=js$MOZJS_MAJOR_VERSION
|
||||
+JS_CONFIG_NAME=js$MOZJS_MAJOR_VERSION-config
|
||||
+else
|
||||
JS_SHELL_NAME=js
|
||||
JS_CONFIG_NAME=js-config
|
||||
+fi
|
||||
|
||||
|
||||
if test -n "$IS_ALPHA"; then
|
||||
|
||||
diff --git a/js/src/configure.in b/js/src/configure.in
|
||||
--- a/js/src/configure.in
|
||||
+++ b/js/src/configure.in
|
||||
@@ -234,16 +234,13 @@ MOZJS_MINOR_VERSION=`echo $MOZILLA_VERSI
|
||||
MOZJS_PATCH_VERSION=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.[0-9]*[^0-9]*||"`
|
||||
IS_ALPHA=`echo $MOZILLA_VERSION | grep '[ab]'`
|
||||
|
||||
-dnl XXX in a temporary bid to avoid developer anger at renaming files
|
||||
-dnl XXX before "js" symlinks exist, don't change names.
|
||||
-dnl
|
||||
-dnl if test -n "$JS_STANDALONE"; then
|
||||
-dnl JS_SHELL_NAME=js$MOZJS_MAJOR_VERSION
|
||||
-dnl JS_CONFIG_NAME=js$MOZJS_MAJOR_VERSION-config
|
||||
-dnl else
|
||||
+if test -n "$JS_STANDALONE"; then
|
||||
+JS_SHELL_NAME=js$MOZJS_MAJOR_VERSION
|
||||
+JS_CONFIG_NAME=js$MOZJS_MAJOR_VERSION-config
|
||||
+else
|
||||
JS_SHELL_NAME=js
|
||||
JS_CONFIG_NAME=js-config
|
||||
-dnl fi
|
||||
+fi
|
||||
|
||||
changequote([,])
|
||||
if test -n "$IS_ALPHA"; then
|
||||
|
||||
diff -r 80a9e64d75f5 js/src/Makefile.in
|
||||
--- a/js/src/Makefile.in Wed Jun 25 15:11:42 2014 +0200
|
||||
+++ b/js/src/Makefile.in Sat Jul 05 14:08:38 2014 +0200
|
||||
@@ -273,6 +273,9 @@
|
||||
SCRIPTS = $(JS_CONFIG_NAME)
|
||||
SDK_BINARY = $(JS_CONFIG_NAME)
|
||||
|
||||
+$(JS_CONFIG_NAME): js-config
|
||||
+ cp $^ $@
|
||||
+
|
||||
$(JS_LIBRARY_NAME).pc: js.pc
|
||||
cp $^ $@
|
||||
|
@ -1,608 +0,0 @@
|
||||
Squashed version of several commits to fix the tracelogger.
|
||||
|
||||
Taken from
|
||||
https://github.com/GNOME/jhbuild/blob/master/patches/mozjs38-fix-tracelogger.patch.
|
||||
|
||||
# === Fix the SM38 tracelogger ===
|
||||
# This patch is a squashed version of several patches that were adapted
|
||||
# to fix failing hunks.
|
||||
#
|
||||
# Applied in the following order, they are:
|
||||
# * https://bugzilla.mozilla.org/show_bug.cgi?id=1223767
|
||||
# Assertion failure: i < size_, at js/src/vm/TraceLoggingTypes.h:210
|
||||
# Also fix stop-information to make reduce.py work correctly.
|
||||
# * https://bugzilla.mozilla.org/show_bug.cgi?id=1227914
|
||||
# Limit the memory tracelogger can take.
|
||||
# This causes tracelogger to flush data to the disk regularly and prevents out of
|
||||
# memory issues if a lot of data gets logged.
|
||||
# * https://bugzilla.mozilla.org/show_bug.cgi?id=1155618
|
||||
# Fix tracelogger destructor that touches possibly uninitialised hash table.
|
||||
# * https://bugzilla.mozilla.org/show_bug.cgi?id=1223636
|
||||
# Don't treat extraTextId as containing only extra ids.
|
||||
# This fixes an assertion failure: id == nextTextId at js/src/vm/TraceLoggingGraph.cpp
|
||||
# * https://bugzilla.mozilla.org/show_bug.cgi?id=1227028
|
||||
# Fix when to keep the payload of a TraceLogger event.
|
||||
# This fixes an assertion failure: textId < uint32_t(1 << 31) at js/src/vm/TraceLoggingGraph.h
|
||||
# * https://bugzilla.mozilla.org/show_bug.cgi?id=1266649
|
||||
# Handle failing to add to pointermap gracefully.
|
||||
# * https://bugzilla.mozilla.org/show_bug.cgi?id=1280648
|
||||
# Don't cache based on pointers to movable GC things.
|
||||
# * https://bugzilla.mozilla.org/show_bug.cgi?id=1224123
|
||||
# Fix the use of LastEntryId in tracelogger.h.
|
||||
# * https://bugzilla.mozilla.org/show_bug.cgi?id=1231170
|
||||
# Use size in debugger instead of the current id to track last logged item.
|
||||
# * https://bugzilla.mozilla.org/show_bug.cgi?id=1221844
|
||||
# Move TraceLogger_Invalidation to LOG_ITEM.
|
||||
# Add some debug checks to logTimestamp.
|
||||
# * https://bugzilla.mozilla.org/show_bug.cgi?id=1255766
|
||||
# Also mark resizing of memory.
|
||||
# * https://bugzilla.mozilla.org/show_bug.cgi?id=1259403
|
||||
# Only increase capacity by multiples of 2.
|
||||
# Always make sure there are 3 free slots for events.
|
||||
# ===
|
||||
|
||||
diff --git a/js/src/jit-test/tests/tracelogger/bug1231170.js b/js/src/jit-test/tests/tracelogger/bug1231170.js
|
||||
new file mode 100644
|
||||
index 0000000..023e93e
|
||||
--- /dev/null
|
||||
+++ b/js/src/jit-test/tests/tracelogger/bug1231170.js
|
||||
@@ -0,0 +1,3 @@
|
||||
+var du = new Debugger();
|
||||
+if (typeof du.drainTraceLogger === "function")
|
||||
+ du.drainTraceLogger();
|
||||
diff --git a/js/src/jit-test/tests/tracelogger/bug1266649.js b/js/src/jit-test/tests/tracelogger/bug1266649.js
|
||||
new file mode 100644
|
||||
index 0000000..81ae7ad
|
||||
--- /dev/null
|
||||
+++ b/js/src/jit-test/tests/tracelogger/bug1266649.js
|
||||
@@ -0,0 +1,10 @@
|
||||
+
|
||||
+var du = new Debugger();
|
||||
+if (typeof du.setupTraceLogger === "function" &&
|
||||
+ typeof oomTest === 'function')
|
||||
+{
|
||||
+ du.setupTraceLogger({
|
||||
+ Scripts: true
|
||||
+ })
|
||||
+ oomTest(() => function(){});
|
||||
+}
|
||||
diff --git a/js/src/jit/Ion.cpp b/js/src/jit/Ion.cpp
|
||||
index 93e2fda..09049d6 100644
|
||||
--- a/js/src/jit/Ion.cpp
|
||||
+++ b/js/src/jit/Ion.cpp
|
||||
@@ -1055,6 +1055,8 @@ IonScript::Destroy(FreeOp* fop, IonScript* script)
|
||||
|
||||
script->destroyCaches();
|
||||
script->unlinkFromRuntime(fop);
|
||||
+ // Frees the potential event we have set.
|
||||
+ script->traceLoggerScriptEvent_ = TraceLoggerEvent();
|
||||
fop->free_(script);
|
||||
}
|
||||
|
||||
diff --git a/js/src/vm/Debugger.cpp b/js/src/vm/Debugger.cpp
|
||||
index 26262fd..af7f313 100644
|
||||
--- a/js/src/vm/Debugger.cpp
|
||||
+++ b/js/src/vm/Debugger.cpp
|
||||
@@ -369,10 +369,10 @@ Debugger::Debugger(JSContext* cx, NativeObject* dbg)
|
||||
objects(cx),
|
||||
environments(cx),
|
||||
#ifdef NIGHTLY_BUILD
|
||||
- traceLoggerLastDrainedId(0),
|
||||
+ traceLoggerLastDrainedSize(0),
|
||||
traceLoggerLastDrainedIteration(0),
|
||||
#endif
|
||||
- traceLoggerScriptedCallsLastDrainedId(0),
|
||||
+ traceLoggerScriptedCallsLastDrainedSize(0),
|
||||
traceLoggerScriptedCallsLastDrainedIteration(0)
|
||||
{
|
||||
assertSameCompartment(cx, dbg);
|
||||
@@ -3907,9 +3907,9 @@ Debugger::drainTraceLogger(JSContext* cx, unsigned argc, Value* vp)
|
||||
size_t num;
|
||||
TraceLoggerThread* logger = TraceLoggerForMainThread(cx->runtime());
|
||||
bool lostEvents = logger->lostEvents(dbg->traceLoggerLastDrainedIteration,
|
||||
- dbg->traceLoggerLastDrainedId);
|
||||
+ dbg->traceLoggerLastDrainedSize);
|
||||
EventEntry* events = logger->getEventsStartingAt(&dbg->traceLoggerLastDrainedIteration,
|
||||
- &dbg->traceLoggerLastDrainedId,
|
||||
+ &dbg->traceLoggerLastDrainedSize,
|
||||
&num);
|
||||
|
||||
RootedObject array(cx, NewDenseEmptyArray(cx));
|
||||
@@ -4002,10 +4002,10 @@ Debugger::drainTraceLoggerScriptCalls(JSContext* cx, unsigned argc, Value* vp)
|
||||
size_t num;
|
||||
TraceLoggerThread* logger = TraceLoggerForMainThread(cx->runtime());
|
||||
bool lostEvents = logger->lostEvents(dbg->traceLoggerScriptedCallsLastDrainedIteration,
|
||||
- dbg->traceLoggerScriptedCallsLastDrainedId);
|
||||
+ dbg->traceLoggerScriptedCallsLastDrainedSize);
|
||||
EventEntry* events = logger->getEventsStartingAt(
|
||||
&dbg->traceLoggerScriptedCallsLastDrainedIteration,
|
||||
- &dbg->traceLoggerScriptedCallsLastDrainedId,
|
||||
+ &dbg->traceLoggerScriptedCallsLastDrainedSize,
|
||||
&num);
|
||||
|
||||
RootedObject array(cx, NewDenseEmptyArray(cx));
|
||||
diff --git a/js/src/vm/Debugger.h b/js/src/vm/Debugger.h
|
||||
index 8cac36a..c92d685 100644
|
||||
--- a/js/src/vm/Debugger.h
|
||||
+++ b/js/src/vm/Debugger.h
|
||||
@@ -314,10 +314,10 @@ class Debugger : private mozilla::LinkedListElement<Debugger>
|
||||
* lost events.
|
||||
*/
|
||||
#ifdef NIGHTLY_BUILD
|
||||
- uint32_t traceLoggerLastDrainedId;
|
||||
+ uint32_t traceLoggerLastDrainedSize;
|
||||
uint32_t traceLoggerLastDrainedIteration;
|
||||
#endif
|
||||
- uint32_t traceLoggerScriptedCallsLastDrainedId;
|
||||
+ uint32_t traceLoggerScriptedCallsLastDrainedSize;
|
||||
uint32_t traceLoggerScriptedCallsLastDrainedIteration;
|
||||
|
||||
class FrameRange;
|
||||
diff --git a/js/src/vm/TraceLogging.cpp b/js/src/vm/TraceLogging.cpp
|
||||
index 6715b36..9766a6f 100644
|
||||
--- a/js/src/vm/TraceLogging.cpp
|
||||
+++ b/js/src/vm/TraceLogging.cpp
|
||||
@@ -131,7 +131,7 @@ TraceLoggerThread::init()
|
||||
{
|
||||
if (!pointerMap.init())
|
||||
return false;
|
||||
- if (!extraTextId.init())
|
||||
+ if (!textIdPayloads.init())
|
||||
return false;
|
||||
if (!events.init())
|
||||
return false;
|
||||
@@ -185,10 +185,10 @@ TraceLoggerThread::~TraceLoggerThread()
|
||||
graph = nullptr;
|
||||
}
|
||||
|
||||
- for (TextIdHashMap::Range r = extraTextId.all(); !r.empty(); r.popFront())
|
||||
- js_delete(r.front().value());
|
||||
- extraTextId.finish();
|
||||
- pointerMap.finish();
|
||||
+ if (textIdPayloads.initialized()) {
|
||||
+ for (TextIdHashMap::Range r = textIdPayloads.all(); !r.empty(); r.popFront())
|
||||
+ js_delete(r.front().value());
|
||||
+ }
|
||||
}
|
||||
|
||||
bool
|
||||
@@ -287,7 +287,7 @@ TraceLoggerThread::eventText(uint32_t id)
|
||||
if (id < TraceLogger_Last)
|
||||
return TLTextIdString(static_cast<TraceLoggerTextId>(id));
|
||||
|
||||
- TextIdHashMap::Ptr p = extraTextId.lookup(id);
|
||||
+ TextIdHashMap::Ptr p = textIdPayloads.lookup(id);
|
||||
MOZ_ASSERT(p);
|
||||
|
||||
return p->value()->string();
|
||||
@@ -341,13 +341,15 @@ TraceLoggerThread::extractScriptDetails(uint32_t textId, const char** filename,
|
||||
TraceLoggerEventPayload*
|
||||
TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId textId)
|
||||
{
|
||||
- TextIdHashMap::AddPtr p = extraTextId.lookupForAdd(textId);
|
||||
- if (p)
|
||||
+ TextIdHashMap::AddPtr p = textIdPayloads.lookupForAdd(textId);
|
||||
+ if (p) {
|
||||
+ MOZ_ASSERT(p->value()->textId() == textId); // Sanity check.
|
||||
return p->value();
|
||||
+ }
|
||||
|
||||
TraceLoggerEventPayload* payload = js_new<TraceLoggerEventPayload>(textId, (char*)nullptr);
|
||||
|
||||
- if (!extraTextId.add(p, textId, payload))
|
||||
+ if (!textIdPayloads.add(p, textId, payload))
|
||||
return nullptr;
|
||||
|
||||
return payload;
|
||||
@@ -357,8 +359,10 @@ TraceLoggerEventPayload*
|
||||
TraceLoggerThread::getOrCreateEventPayload(const char* text)
|
||||
{
|
||||
PointerHashMap::AddPtr p = pointerMap.lookupForAdd((const void*)text);
|
||||
- if (p)
|
||||
+ if (p) {
|
||||
+ MOZ_ASSERT(p->value()->textId() < nextTextId); // Sanity check.
|
||||
return p->value();
|
||||
+ }
|
||||
|
||||
size_t len = strlen(text);
|
||||
char* str = js_pod_malloc<char>(len + 1);
|
||||
@@ -369,7 +373,7 @@ TraceLoggerThread::getOrCreateEventPayload(const char* text)
|
||||
MOZ_ASSERT(ret == len);
|
||||
MOZ_ASSERT(strlen(str) == len);
|
||||
|
||||
- uint32_t textId = extraTextId.count() + TraceLogger_Last;
|
||||
+ uint32_t textId = nextTextId;
|
||||
|
||||
TraceLoggerEventPayload* payload = js_new<TraceLoggerEventPayload>(textId, str);
|
||||
if (!payload) {
|
||||
@@ -377,17 +381,19 @@ TraceLoggerThread::getOrCreateEventPayload(const char* text)
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
- if (!extraTextId.putNew(textId, payload)) {
|
||||
+ if (!textIdPayloads.putNew(textId, payload)) {
|
||||
js_delete(payload);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
- if (!pointerMap.add(p, text, payload))
|
||||
- return nullptr;
|
||||
-
|
||||
if (graph.get())
|
||||
graph->addTextId(textId, str);
|
||||
|
||||
+ nextTextId++;
|
||||
+
|
||||
+ if (!pointerMap.add(p, text, payload))
|
||||
+ return nullptr;
|
||||
+
|
||||
return payload;
|
||||
}
|
||||
|
||||
@@ -407,9 +413,14 @@ TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId type, const char* f
|
||||
if (!traceLoggerState->isTextIdEnabled(type))
|
||||
return getOrCreateEventPayload(type);
|
||||
|
||||
- PointerHashMap::AddPtr p = pointerMap.lookupForAdd(ptr);
|
||||
- if (p)
|
||||
- return p->value();
|
||||
+ PointerHashMap::AddPtr p;
|
||||
+ if (ptr) {
|
||||
+ p = pointerMap.lookupForAdd(ptr);
|
||||
+ if (p) {
|
||||
+ MOZ_ASSERT(p->value()->textId() < nextTextId); // Sanity check.
|
||||
+ return p->value();
|
||||
+ }
|
||||
+ }
|
||||
|
||||
// Compute the length of the string to create.
|
||||
size_t lenFilename = strlen(filename);
|
||||
@@ -428,24 +439,28 @@ TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId type, const char* f
|
||||
MOZ_ASSERT(ret == len);
|
||||
MOZ_ASSERT(strlen(str) == len);
|
||||
|
||||
- uint32_t textId = extraTextId.count() + TraceLogger_Last;
|
||||
+ uint32_t textId = nextTextId;
|
||||
TraceLoggerEventPayload* payload = js_new<TraceLoggerEventPayload>(textId, str);
|
||||
if (!payload) {
|
||||
js_free(str);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
- if (!extraTextId.putNew(textId, payload)) {
|
||||
+ if (!textIdPayloads.putNew(textId, payload)) {
|
||||
js_delete(payload);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
- if (!pointerMap.add(p, ptr, payload))
|
||||
- return nullptr;
|
||||
-
|
||||
if (graph.get())
|
||||
graph->addTextId(textId, str);
|
||||
|
||||
+ nextTextId++;
|
||||
+
|
||||
+ if (ptr) {
|
||||
+ if (!pointerMap.add(p, ptr, payload))
|
||||
+ return nullptr;
|
||||
+ }
|
||||
+
|
||||
return payload;
|
||||
}
|
||||
|
||||
@@ -453,14 +468,14 @@ TraceLoggerEventPayload*
|
||||
TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId type, JSScript* script)
|
||||
{
|
||||
return getOrCreateEventPayload(type, script->filename(), script->lineno(), script->column(),
|
||||
- script);
|
||||
+ nullptr);
|
||||
}
|
||||
|
||||
TraceLoggerEventPayload*
|
||||
TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId type,
|
||||
const JS::ReadOnlyCompileOptions& script)
|
||||
{
|
||||
- return getOrCreateEventPayload(type, script.filename(), script.lineno, script.column, &script);
|
||||
+ return getOrCreateEventPayload(type, script.filename(), script.lineno, script.column, nullptr);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -485,7 +500,7 @@ TraceLoggerThread::startEvent(uint32_t id)
|
||||
if (!traceLoggerState->isTextIdEnabled(id))
|
||||
return;
|
||||
|
||||
- logTimestamp(id);
|
||||
+ log(id);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -510,7 +525,7 @@ TraceLoggerThread::stopEvent(uint32_t id)
|
||||
if (!traceLoggerState->isTextIdEnabled(id))
|
||||
return;
|
||||
|
||||
- logTimestamp(TraceLogger_Stop);
|
||||
+ log(TraceLogger_Stop);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -522,23 +537,57 @@ TraceLoggerThread::logTimestamp(TraceLoggerTextId id)
|
||||
void
|
||||
TraceLoggerThread::logTimestamp(uint32_t id)
|
||||
{
|
||||
+ MOZ_ASSERT(id > TraceLogger_LastTreeItem && id < TraceLogger_Last);
|
||||
+ log(id);
|
||||
+}
|
||||
+
|
||||
+void
|
||||
+TraceLoggerThread::log(uint32_t id)
|
||||
+{
|
||||
if (enabled == 0)
|
||||
return;
|
||||
|
||||
MOZ_ASSERT(traceLoggerState);
|
||||
- if (!events.ensureSpaceBeforeAdd()) {
|
||||
+
|
||||
+ // We request for 3 items to add, since if we don't have enough room
|
||||
+ // we record the time it took to make more place. To log this information
|
||||
+ // we need 2 extra free entries.
|
||||
+ if (!events.hasSpaceForAdd(3)) {
|
||||
uint64_t start = rdtsc() - traceLoggerState->startupTime;
|
||||
|
||||
- if (graph.get())
|
||||
- graph->log(events);
|
||||
+ if (!events.ensureSpaceBeforeAdd(3)) {
|
||||
+ if (graph.get())
|
||||
+ graph->log(events);
|
||||
+
|
||||
+ iteration_++;
|
||||
+ events.clear();
|
||||
+
|
||||
+ // Remove the item in the pointerMap for which the payloads
|
||||
+ // have no uses anymore
|
||||
+ for (PointerHashMap::Enum e(pointerMap); !e.empty(); e.popFront()) {
|
||||
+ if (e.front().value()->uses() != 0)
|
||||
+ continue;
|
||||
+
|
||||
+ TextIdHashMap::Ptr p = textIdPayloads.lookup(e.front().value()->textId());
|
||||
+ MOZ_ASSERT(p);
|
||||
+ textIdPayloads.remove(p);
|
||||
+
|
||||
+ e.removeFront();
|
||||
+ }
|
||||
|
||||
- iteration_++;
|
||||
- events.clear();
|
||||
+ // Free all payloads that have no uses anymore.
|
||||
+ for (TextIdHashMap::Enum e(textIdPayloads); !e.empty(); e.popFront()) {
|
||||
+ if (e.front().value()->uses() == 0) {
|
||||
+ js_delete(e.front().value());
|
||||
+ e.removeFront();
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
|
||||
// Log the time it took to flush the events as being from the
|
||||
// Tracelogger.
|
||||
if (graph.get()) {
|
||||
- MOZ_ASSERT(events.capacity() > 2);
|
||||
+ MOZ_ASSERT(events.hasSpaceForAdd(2));
|
||||
EventEntry& entryStart = events.pushUninitialized();
|
||||
entryStart.time = start;
|
||||
entryStart.textId = TraceLogger_Internal;
|
||||
@@ -548,13 +597,6 @@ TraceLoggerThread::logTimestamp(uint32_t id)
|
||||
entryStop.textId = TraceLogger_Stop;
|
||||
}
|
||||
|
||||
- // Free all TextEvents that have no uses anymore.
|
||||
- for (TextIdHashMap::Enum e(extraTextId); !e.empty(); e.popFront()) {
|
||||
- if (e.front().value()->uses() == 0) {
|
||||
- js_delete(e.front().value());
|
||||
- e.removeFront();
|
||||
- }
|
||||
- }
|
||||
}
|
||||
|
||||
uint64_t time = rdtsc() - traceLoggerState->startupTime;
|
||||
@@ -956,3 +998,16 @@ TraceLoggerEvent::~TraceLoggerEvent()
|
||||
if (payload_)
|
||||
payload_->release();
|
||||
}
|
||||
+
|
||||
+TraceLoggerEvent&
|
||||
+TraceLoggerEvent::operator=(const TraceLoggerEvent& other)
|
||||
+{
|
||||
+ if (hasPayload())
|
||||
+ payload()->release();
|
||||
+ if (other.hasPayload())
|
||||
+ other.payload()->use();
|
||||
+
|
||||
+ payload_ = other.payload_;
|
||||
+
|
||||
+ return *this;
|
||||
+}
|
||||
diff --git a/js/src/vm/TraceLogging.h b/js/src/vm/TraceLogging.h
|
||||
index a124dcb..91a1eb0 100644
|
||||
--- a/js/src/vm/TraceLogging.h
|
||||
+++ b/js/src/vm/TraceLogging.h
|
||||
@@ -110,6 +110,9 @@ class TraceLoggerEvent {
|
||||
bool hasPayload() const {
|
||||
return !!payload_;
|
||||
}
|
||||
+
|
||||
+ TraceLoggerEvent& operator=(const TraceLoggerEvent& other);
|
||||
+ TraceLoggerEvent(const TraceLoggerEvent& event) = delete;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -130,6 +133,10 @@ class TraceLoggerEventPayload {
|
||||
uses_(0)
|
||||
{ }
|
||||
|
||||
+ ~TraceLoggerEventPayload() {
|
||||
+ MOZ_ASSERT(uses_ == 0);
|
||||
+ }
|
||||
+
|
||||
uint32_t textId() {
|
||||
return textId_;
|
||||
}
|
||||
@@ -166,7 +173,8 @@ class TraceLoggerThread
|
||||
mozilla::UniquePtr<TraceLoggerGraph> graph;
|
||||
|
||||
PointerHashMap pointerMap;
|
||||
- TextIdHashMap extraTextId;
|
||||
+ TextIdHashMap textIdPayloads;
|
||||
+ uint32_t nextTextId;
|
||||
|
||||
ContinuousSpace<EventEntry> events;
|
||||
|
||||
@@ -181,6 +189,7 @@ class TraceLoggerThread
|
||||
: enabled(0),
|
||||
failed(false),
|
||||
graph(),
|
||||
+ nextTextId(TraceLogger_Last),
|
||||
iteration_(0),
|
||||
top(nullptr)
|
||||
{ }
|
||||
@@ -195,22 +204,22 @@ class TraceLoggerThread
|
||||
bool enable(JSContext* cx);
|
||||
bool disable();
|
||||
|
||||
- // Given the previous iteration and lastEntryId, return an array of events
|
||||
+ // Given the previous iteration and size, return an array of events
|
||||
// (there could be lost events). At the same time update the iteration and
|
||||
- // lastEntry and gives back how many events there are.
|
||||
- EventEntry* getEventsStartingAt(uint32_t* lastIteration, uint32_t* lastEntryId, size_t* num) {
|
||||
+ // size and gives back how many events there are.
|
||||
+ EventEntry* getEventsStartingAt(uint32_t* lastIteration, uint32_t* lastSize, size_t* num) {
|
||||
EventEntry* start;
|
||||
if (iteration_ == *lastIteration) {
|
||||
- MOZ_ASSERT(events.lastEntryId() >= *lastEntryId);
|
||||
- *num = events.lastEntryId() - *lastEntryId;
|
||||
- start = events.data() + *lastEntryId + 1;
|
||||
+ MOZ_ASSERT(*lastSize <= events.size());
|
||||
+ *num = events.size() - *lastSize;
|
||||
+ start = events.data() + *lastSize;
|
||||
} else {
|
||||
- *num = events.lastEntryId() + 1;
|
||||
+ *num = events.size();
|
||||
start = events.data();
|
||||
}
|
||||
|
||||
*lastIteration = iteration_;
|
||||
- *lastEntryId = events.lastEntryId();
|
||||
+ *lastSize = events.size();
|
||||
return start;
|
||||
}
|
||||
|
||||
@@ -220,16 +229,16 @@ class TraceLoggerThread
|
||||
const char** lineno, size_t* lineno_len, const char** colno,
|
||||
size_t* colno_len);
|
||||
|
||||
- bool lostEvents(uint32_t lastIteration, uint32_t lastEntryId) {
|
||||
+ bool lostEvents(uint32_t lastIteration, uint32_t lastSize) {
|
||||
// If still logging in the same iteration, there are no lost events.
|
||||
if (lastIteration == iteration_) {
|
||||
- MOZ_ASSERT(lastEntryId <= events.lastEntryId());
|
||||
+ MOZ_ASSERT(lastSize <= events.size());
|
||||
return false;
|
||||
}
|
||||
|
||||
- // When proceeded to the next iteration and lastEntryId points to
|
||||
- // the maximum capacity there are no logs that are lost.
|
||||
- if (lastIteration + 1 == iteration_ && lastEntryId == events.capacity())
|
||||
+ // If we are in a consecutive iteration we are only sure we didn't lose any events,
|
||||
+ // when the lastSize equals the maximum size 'events' can get.
|
||||
+ if (lastIteration == iteration_ - 1 && lastSize == events.maxSize())
|
||||
return false;
|
||||
|
||||
return true;
|
||||
@@ -268,6 +277,7 @@ class TraceLoggerThread
|
||||
void stopEvent(uint32_t id);
|
||||
private:
|
||||
void stopEvent();
|
||||
+ void log(uint32_t id);
|
||||
|
||||
public:
|
||||
static unsigned offsetOfEnabled() {
|
||||
diff --git a/js/src/vm/TraceLoggingGraph.cpp b/js/src/vm/TraceLoggingGraph.cpp
|
||||
index d1b7f2e..a4eb273 100644
|
||||
--- a/js/src/vm/TraceLoggingGraph.cpp
|
||||
+++ b/js/src/vm/TraceLoggingGraph.cpp
|
||||
@@ -276,7 +276,7 @@ TraceLoggerGraph::flush()
|
||||
if (bytesWritten < tree.size())
|
||||
return false;
|
||||
|
||||
- treeOffset += tree.lastEntryId();
|
||||
+ treeOffset += tree.size();
|
||||
tree.clear();
|
||||
}
|
||||
|
||||
@@ -359,7 +359,7 @@ TraceLoggerGraph::startEventInternal(uint32_t id, uint64_t timestamp)
|
||||
|
||||
if (parent.lastChildId() == 0) {
|
||||
MOZ_ASSERT(!entry.hasChildren());
|
||||
- MOZ_ASSERT(parent.treeId() == tree.lastEntryId() + treeOffset);
|
||||
+ MOZ_ASSERT(parent.treeId() == treeOffset + tree.size() - 1);
|
||||
|
||||
if (!updateHasChildren(parent.treeId()))
|
||||
return false;
|
||||
diff --git a/js/src/vm/TraceLoggingTypes.h b/js/src/vm/TraceLoggingTypes.h
|
||||
index f1c9d0c..10b76d6 100644
|
||||
--- a/js/src/vm/TraceLoggingTypes.h
|
||||
+++ b/js/src/vm/TraceLoggingTypes.h
|
||||
@@ -21,7 +21,6 @@
|
||||
_(Internal) \
|
||||
_(Interpreter) \
|
||||
_(InlinedScripts) \
|
||||
- _(Invalidation) \
|
||||
_(IonCompilation) \
|
||||
_(IonCompilationPaused) \
|
||||
_(IonLinking) \
|
||||
@@ -60,6 +59,7 @@
|
||||
|
||||
#define TRACELOGGER_LOG_ITEMS(_) \
|
||||
_(Bailout) \
|
||||
+ _(Invalidation) \
|
||||
_(Disable) \
|
||||
_(Enable) \
|
||||
_(Stop)
|
||||
@@ -130,6 +130,9 @@ class ContinuousSpace {
|
||||
uint32_t size_;
|
||||
uint32_t capacity_;
|
||||
|
||||
+ // The maximum amount of ram memory a continuous space structure can take (in bytes).
|
||||
+ static const uint32_t LIMIT = 200 * 1024 * 1024;
|
||||
+
|
||||
public:
|
||||
ContinuousSpace ()
|
||||
: data_(nullptr)
|
||||
@@ -151,6 +154,10 @@ class ContinuousSpace {
|
||||
data_ = nullptr;
|
||||
}
|
||||
|
||||
+ static uint32_t maxSize() {
|
||||
+ return LIMIT / sizeof(T);
|
||||
+ }
|
||||
+
|
||||
T* data() {
|
||||
return data_;
|
||||
}
|
||||
@@ -187,11 +194,14 @@ class ContinuousSpace {
|
||||
if (hasSpaceForAdd(count))
|
||||
return true;
|
||||
|
||||
+ // Limit the size of a continuous buffer.
|
||||
+ if (size_ + count > maxSize())
|
||||
+ return false;
|
||||
+
|
||||
uint32_t nCapacity = capacity_ * 2;
|
||||
- if (size_ + count > nCapacity)
|
||||
- nCapacity = size_ + count;
|
||||
- T* entries = (T*) js_realloc(data_, nCapacity * sizeof(T));
|
||||
+ nCapacity = (nCapacity < maxSize()) ? nCapacity : maxSize();
|
||||
|
||||
+ T* entries = (T*) js_realloc(data_, nCapacity * sizeof(T));
|
||||
if (!entries)
|
||||
return false;
|
||||
|
@ -1,180 +0,0 @@
|
||||
Taken from
|
||||
https://trac.wildfiregames.com/export/18656/ps/trunk/libraries/source/spidermonkey/FixVersionDetectionConfigure.diff.
|
||||
|
||||
Fixes a version detection issue in 0ad. See
|
||||
https://lists.gnu.org/archive/html/guix-devel/2017-01/msg00625.html.
|
||||
|
||||
diff --git a/js/src/configure b/js/src/configure
|
||||
--- a/js/src/configure
|
||||
+++ b/js/src/configure
|
||||
@@ -1662,70 +1662,6 @@ esac
|
||||
|
||||
fi
|
||||
|
||||
-MOZILLA_VERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir`
|
||||
-MOZILLA_UAVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --uaversion`
|
||||
-MOZILLA_SYMBOLVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --symbolversion`
|
||||
-
|
||||
-cat >> confdefs.pytmp <<EOF
|
||||
- (''' MOZILLA_VERSION ''', r''' "$MOZILLA_VERSION" ''')
|
||||
-EOF
|
||||
-cat >> confdefs.h <<EOF
|
||||
-#define MOZILLA_VERSION "$MOZILLA_VERSION"
|
||||
-EOF
|
||||
-
|
||||
-cat >> confdefs.pytmp <<EOF
|
||||
- (''' MOZILLA_VERSION_U ''', r''' $MOZILLA_VERSION ''')
|
||||
-EOF
|
||||
-cat >> confdefs.h <<EOF
|
||||
-#define MOZILLA_VERSION_U $MOZILLA_VERSION
|
||||
-EOF
|
||||
-
|
||||
-cat >> confdefs.pytmp <<EOF
|
||||
- (''' MOZILLA_UAVERSION ''', r''' "$MOZILLA_UAVERSION" ''')
|
||||
-EOF
|
||||
-cat >> confdefs.h <<EOF
|
||||
-#define MOZILLA_UAVERSION "$MOZILLA_UAVERSION"
|
||||
-EOF
|
||||
-
|
||||
-
|
||||
-
|
||||
-# Separate version into components for use in shared object naming etc
|
||||
-
|
||||
-MOZJS_MAJOR_VERSION=`echo $MOZILLA_VERSION | sed "s|\(^[0-9]*\)\.[0-9]*.*|\1|"`
|
||||
-MOZJS_MINOR_VERSION=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.\([0-9]*\).*|\1|"`
|
||||
-MOZJS_PATCH_VERSION=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.[0-9]*[^0-9]*||"`
|
||||
-IS_ALPHA=`echo $MOZILLA_VERSION | grep '[ab]'`
|
||||
-
|
||||
-JS_SHELL_NAME=js
|
||||
-JS_CONFIG_NAME=js-config
|
||||
-
|
||||
-
|
||||
-if test -n "$IS_ALPHA"; then
|
||||
-
|
||||
- MOZJS_ALPHA=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.[0-9\.]*\([^0-9]\).*|\1|"`
|
||||
-
|
||||
-fi
|
||||
-cat >> confdefs.pytmp <<EOF
|
||||
- (''' MOZJS_MAJOR_VERSION ''', r''' $MOZJS_MAJOR_VERSION ''')
|
||||
-EOF
|
||||
-cat >> confdefs.h <<EOF
|
||||
-#define MOZJS_MAJOR_VERSION $MOZJS_MAJOR_VERSION
|
||||
-EOF
|
||||
-
|
||||
-cat >> confdefs.pytmp <<EOF
|
||||
- (''' MOZJS_MINOR_VERSION ''', r''' $MOZJS_MINOR_VERSION ''')
|
||||
-EOF
|
||||
-cat >> confdefs.h <<EOF
|
||||
-#define MOZJS_MINOR_VERSION $MOZJS_MINOR_VERSION
|
||||
-EOF
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
|
||||
AR_FLAGS='crs $@'
|
||||
|
||||
@@ -5731,6 +5565,71 @@ XCFLAGS="$X_CFLAGS"
|
||||
|
||||
fi # COMPILE_ENVIRONMENT
|
||||
|
||||
+MOZILLA_VERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir`
|
||||
+MOZILLA_UAVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --uaversion`
|
||||
+MOZILLA_SYMBOLVERSION=`$PYTHON $srcdir/python/mozbuild/mozbuild/milestone.py --topsrcdir $srcdir --symbolversion`
|
||||
+
|
||||
+cat >> confdefs.pytmp <<EOF
|
||||
+ (''' MOZILLA_VERSION ''', r''' "$MOZILLA_VERSION" ''')
|
||||
+EOF
|
||||
+cat >> confdefs.h <<EOF
|
||||
+#define MOZILLA_VERSION "$MOZILLA_VERSION"
|
||||
+EOF
|
||||
+
|
||||
+cat >> confdefs.pytmp <<EOF
|
||||
+ (''' MOZILLA_VERSION_U ''', r''' $MOZILLA_VERSION ''')
|
||||
+EOF
|
||||
+cat >> confdefs.h <<EOF
|
||||
+#define MOZILLA_VERSION_U $MOZILLA_VERSION
|
||||
+EOF
|
||||
+
|
||||
+cat >> confdefs.pytmp <<EOF
|
||||
+ (''' MOZILLA_UAVERSION ''', r''' "$MOZILLA_UAVERSION" ''')
|
||||
+EOF
|
||||
+cat >> confdefs.h <<EOF
|
||||
+#define MOZILLA_UAVERSION "$MOZILLA_UAVERSION"
|
||||
+EOF
|
||||
+
|
||||
+
|
||||
+
|
||||
+# Separate version into components for use in shared object naming etc
|
||||
+
|
||||
+MOZJS_MAJOR_VERSION=`echo $MOZILLA_VERSION | sed "s|\(^[0-9]*\)\.[0-9]*.*|\1|"`
|
||||
+MOZJS_MINOR_VERSION=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.\([0-9]*\).*|\1|"`
|
||||
+MOZJS_PATCH_VERSION=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.[0-9]*[^0-9]*||"`
|
||||
+IS_ALPHA=`echo $MOZILLA_VERSION | grep '[ab]'`
|
||||
+
|
||||
+JS_SHELL_NAME=js
|
||||
+JS_CONFIG_NAME=js-config
|
||||
+
|
||||
+
|
||||
+if test -n "$IS_ALPHA"; then
|
||||
+
|
||||
+ MOZJS_ALPHA=`echo $MOZILLA_VERSION | sed "s|^[0-9]*\.[0-9\.]*\([^0-9]\).*|\1|"`
|
||||
+
|
||||
+fi
|
||||
+cat >> confdefs.pytmp <<EOF
|
||||
+ (''' MOZJS_MAJOR_VERSION ''', r''' $MOZJS_MAJOR_VERSION ''')
|
||||
+EOF
|
||||
+cat >> confdefs.h <<EOF
|
||||
+#define MOZJS_MAJOR_VERSION $MOZJS_MAJOR_VERSION
|
||||
+EOF
|
||||
+
|
||||
+cat >> confdefs.pytmp <<EOF
|
||||
+ (''' MOZJS_MINOR_VERSION ''', r''' $MOZJS_MINOR_VERSION ''')
|
||||
+EOF
|
||||
+cat >> confdefs.h <<EOF
|
||||
+#define MOZJS_MINOR_VERSION $MOZJS_MINOR_VERSION
|
||||
+EOF
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
AS_BIN=$AS
|
||||
AR_LIST='$(AR) t'
|
||||
AR_EXTRACT='$(AR) x'
|
||||
@@ -16003,13 +15908,6 @@ sed 's/$/,/' >> $CONFIG_STATUS <<EOF
|
||||
(''' ANDROID_NDK ''', r''' $ANDROID_NDK ''')
|
||||
(''' ANDROID_TOOLCHAIN ''', r''' $ANDROID_TOOLCHAIN ''')
|
||||
(''' ANDROID_PLATFORM ''', r''' $ANDROID_PLATFORM ''')
|
||||
- (''' MOZILLA_SYMBOLVERSION ''', r''' $MOZILLA_SYMBOLVERSION ''')
|
||||
- (''' JS_SHELL_NAME ''', r''' $JS_SHELL_NAME ''')
|
||||
- (''' JS_CONFIG_NAME ''', r''' $JS_CONFIG_NAME ''')
|
||||
- (''' MOZJS_MAJOR_VERSION ''', r''' $MOZJS_MAJOR_VERSION ''')
|
||||
- (''' MOZJS_MINOR_VERSION ''', r''' $MOZJS_MINOR_VERSION ''')
|
||||
- (''' MOZJS_PATCH_VERSION ''', r''' $MOZJS_PATCH_VERSION ''')
|
||||
- (''' MOZJS_ALPHA ''', r''' $MOZJS_ALPHA ''')
|
||||
(''' HOST_CC ''', r''' $HOST_CC ''')
|
||||
(''' HOST_CXX ''', r''' $HOST_CXX ''')
|
||||
(''' HOST_RANLIB ''', r''' $HOST_RANLIB ''')
|
||||
@@ -16061,6 +15959,13 @@ sed 's/$/,/' >> $CONFIG_STATUS <<EOF
|
||||
(''' X_PRE_LIBS ''', r''' $X_PRE_LIBS ''')
|
||||
(''' X_LIBS ''', r''' $X_LIBS ''')
|
||||
(''' X_EXTRA_LIBS ''', r''' $X_EXTRA_LIBS ''')
|
||||
+ (''' MOZILLA_SYMBOLVERSION ''', r''' $MOZILLA_SYMBOLVERSION ''')
|
||||
+ (''' JS_SHELL_NAME ''', r''' $JS_SHELL_NAME ''')
|
||||
+ (''' JS_CONFIG_NAME ''', r''' $JS_CONFIG_NAME ''')
|
||||
+ (''' MOZJS_MAJOR_VERSION ''', r''' $MOZJS_MAJOR_VERSION ''')
|
||||
+ (''' MOZJS_MINOR_VERSION ''', r''' $MOZJS_MINOR_VERSION ''')
|
||||
+ (''' MOZJS_PATCH_VERSION ''', r''' $MOZJS_PATCH_VERSION ''')
|
||||
+ (''' MOZJS_ALPHA ''', r''' $MOZJS_ALPHA ''')
|
||||
(''' SOLARIS_SUNPRO_CC ''', r''' $SOLARIS_SUNPRO_CC ''')
|
||||
(''' SOLARIS_SUNPRO_CXX ''', r''' $SOLARIS_SUNPRO_CXX ''')
|
||||
(''' MOZ_THUMB2 ''', r''' $MOZ_THUMB2 ''')
|
@ -1,122 +0,0 @@
|
||||
This is a combination of several upstream patches which weren't accepted.
|
||||
They were proposed by Fedora for spidermonkey 52 and were ultimately
|
||||
accepted years later after some changes for a later version. It was
|
||||
adapted slightly from both sets of patches to apply cleanly to mozjs-60.
|
||||
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1318905
|
||||
https://bug1318905.bmoattachments.org/attachment.cgi?id=8812602
|
||||
https://bug1318905.bmoattachments.org/attachment.cgi?id=8812603
|
||||
https://bug1318905.bmoattachments.org/attachment.cgi?id=8812604
|
||||
https://phabricator.services.mozilla.com/D78623
|
||||
https://phabricator.services.mozilla.com/D78624
|
||||
https://phabricator.services.mozilla.com/D78625
|
||||
|
||||
|
||||
diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure
|
||||
index 83b8d705..59131525 100644
|
||||
--- a/build/moz.configure/init.configure
|
||||
+++ b/build/moz.configure/init.configure
|
||||
@@ -676,6 +676,9 @@ def split_triplet(triplet, allow_unknown=False):
|
||||
elif cpu == 'sh4':
|
||||
canonical_cpu = 'sh4'
|
||||
endianness = 'little'
|
||||
+ elif cpu.startswith('riscv64'):
|
||||
+ canonical_cpu = 'riscv64'
|
||||
+ endianness = 'little'
|
||||
elif allow_unknown:
|
||||
canonical_cpu = cpu
|
||||
endianness = 'unknown'
|
||||
diff --git a/js/src/jit/AtomicOperations.h b/js/src/jit/AtomicOperations.h
|
||||
index a8970b0d..6b947a3f 100644
|
||||
--- a/js/src/jit/AtomicOperations.h
|
||||
+++ b/js/src/jit/AtomicOperations.h
|
||||
@@ -375,7 +375,7 @@ AtomicOperations::isLockfreeJS(int32_t size)
|
||||
# endif
|
||||
#elif defined(__ppc__) || defined(__PPC__)
|
||||
# include "jit/none/AtomicOperations-feeling-lucky.h"
|
||||
-#elif defined(__sparc__)
|
||||
+#elif defined(__sparc__) || defined(__riscv)
|
||||
# include "jit/none/AtomicOperations-feeling-lucky.h"
|
||||
#elif defined(__ppc64__) || defined(__PPC64__) || defined(__ppc64le__) || defined(__PPC64LE__)
|
||||
# include "jit/none/AtomicOperations-feeling-lucky.h"
|
||||
diff --git a/js/src/jit/none/AtomicOperations-feeling-lucky.h b/js/src/jit/none/AtomicOperations-feeling-lucky.h
|
||||
index da572284..6ce40c89 100644
|
||||
--- a/js/src/jit/none/AtomicOperations-feeling-lucky.h
|
||||
+++ b/js/src/jit/none/AtomicOperations-feeling-lucky.h
|
||||
@@ -49,6 +49,12 @@
|
||||
# define GNUC_COMPATIBLE
|
||||
#endif
|
||||
|
||||
+#if defined(__riscv) && __riscv_xlen == 64
|
||||
+# define HAS_64BIT_ATOMICS
|
||||
+# define HAS_64BIT_LOCKFREE
|
||||
+# define GNUC_COMPATIBLE
|
||||
+#endif
|
||||
+
|
||||
#ifdef __sparc__
|
||||
# define GNUC_COMPATIBLE
|
||||
# ifdef __LP64__
|
||||
diff --git a/js/src/jit/none/MacroAssembler-none.h b/js/src/jit/none/MacroAssembler-none.h
|
||||
index 80143dc8..b430fedb 100644
|
||||
--- a/js/src/jit/none/MacroAssembler-none.h
|
||||
+++ b/js/src/jit/none/MacroAssembler-none.h
|
||||
@@ -402,6 +402,10 @@ class MacroAssemblerNone : public Assembler
|
||||
#endif
|
||||
};
|
||||
|
||||
+ struct AutoPrepareForPatching {
|
||||
+ explicit AutoPrepareForPatching(MacroAssemblerNone&) {}
|
||||
+ };
|
||||
+
|
||||
typedef MacroAssemblerNone MacroAssemblerSpecific;
|
||||
|
||||
class ABIArgGenerator
|
||||
diff --git a/mfbt/tests/TestPoisonArea.cpp b/mfbt/tests/TestPoisonArea.cpp
|
||||
index 06c24ed0..c3fed0df 100644
|
||||
--- a/mfbt/tests/TestPoisonArea.cpp
|
||||
+++ b/mfbt/tests/TestPoisonArea.cpp
|
||||
@@ -160,6 +160,9 @@
|
||||
#elif defined __aarch64__
|
||||
#define RETURN_INSTR 0xd65f03c0 /* ret */
|
||||
|
||||
+#elif defined __riscv
|
||||
+#define RETURN_INSTR 0x80828082 /* ret; ret */
|
||||
+
|
||||
#elif defined __ia64
|
||||
struct ia64_instr { uint32_t mI[4]; };
|
||||
static const ia64_instr _return_instr =
|
||||
diff --git a/python/mozbuild/mozbuild/configure/constants.py b/python/mozbuild/mozbuild/configure/constants.py
|
||||
index 33ae5a45..11a01d3b 100644
|
||||
--- a/python/mozbuild/mozbuild/configure/constants.py
|
||||
+++ b/python/mozbuild/mozbuild/configure/constants.py
|
||||
@@ -50,6 +50,7 @@ CPU_bitness = {
|
||||
'mips64': 64,
|
||||
'ppc': 32,
|
||||
'ppc64': 64,
|
||||
+ 'riscv64': 64,
|
||||
's390': 32,
|
||||
's390x': 64,
|
||||
'sh4': 32,
|
||||
@@ -82,6 +84,7 @@ CPU_preprocessor_checks = OrderedDict((
|
||||
('s390', '__s390__'),
|
||||
('ppc64', '__powerpc64__'),
|
||||
('ppc', '__powerpc__'),
|
||||
+ ('riscv64', '__riscv && __riscv_xlen == 64'),
|
||||
('Alpha', '__alpha__'),
|
||||
('hppa', '__hppa__'),
|
||||
('sparc64', '__sparc__ && __arch64__'),
|
||||
diff --git a/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py b/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py
|
||||
index cb7ff709..9da41adf 100755
|
||||
--- a/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py
|
||||
+++ b/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py
|
||||
@@ -1165,6 +1165,10 @@ class LinuxCrossCompileToolchainTest(BaseToolchainTest):
|
||||
'sh4-unknown-linux-gnu': little_endian + {
|
||||
'__sh__': 1,
|
||||
},
|
||||
+ 'riscv64-unknown-linux-gnu': little_endian + {
|
||||
+ '__riscv': 1,
|
||||
+ '__riscv_xlen': 64,
|
||||
+ },
|
||||
}
|
||||
|
||||
PLATFORMS['powerpc64le-unknown-linux-gnu'] = \
|
@ -89,7 +89,7 @@
|
||||
"\"/run/setuid-programs/polkit-agent-helper-1\""))))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
(list expat linux-pam elogind mozjs-78 nspr))
|
||||
(list expat linux-pam elogind mozjs nspr))
|
||||
(propagated-inputs
|
||||
(list glib)) ; required by polkit-gobject-1.pc
|
||||
(native-inputs
|
||||
|
Loading…
Reference in New Issue
Block a user