<pre style='margin:0'>
Herby Gillot (herbygillot) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/3a928e5cdc912c5731baec551d11032c24acfc90">https://github.com/macports/macports-ports/commit/3a928e5cdc912c5731baec551d11032c24acfc90</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 3a928e5cdc912c5731baec551d11032c24acfc90
</span>Author: Sergey Fedorov <vital.had@gmail.com>
AuthorDate: Sun Nov 12 13:04:51 2023 +0800
<span style='display:block; white-space:pre;color:#404040;'> v8-8.3: new port in lang
</span>---
lang/v8-8.3/Portfile | 111 ++
.../0001-Restore-ppc32-patches-from-upstream.patch | 1318 ++++++++++++++++++++
.../0002-inspector-unbreak-build-with-gcc.patch | 22 +
.../files/0003-cpu.cc-support-powerpc-darwin.patch | 55 +
...se-libdispatch-only-where-it-is-available.patch | 130 ++
.../0005-runtime-utils.h-fix-static_cast.patch | 22 +
.../0006-Register-specs-for-powerpc-darwin.patch | 132 ++
...0007-platform-posix.cc-for-powerpc-darwin.patch | 43 +
...08-isolate-data.h-disable-asserts-for-now.patch | 31 +
...-embedded-file-writer-mac-support-powerpc.patch | 123 ++
...ssing-headers-and-use-cinttypes-consisten.patch | 283 +++++
...11-libsampler-support-powerpc-and-aarch64.patch | 31 +
...macro-assembler-ppc.h-fix-asserts-for-ppc.patch | 91 ++
.../0013-CMakeLists-support-ppc-and-aarch64.patch | 122 ++
...4-tnode.h-backport-fix-for-is_convertible.patch | 25 +
15 files changed, 2539 insertions(+)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/v8-8.3/Portfile b/lang/v8-8.3/Portfile
</span>new file mode 100755
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..8537e0ecb82
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/v8-8.3/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,111 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup cmake 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup legacysupport 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# arc4random_buf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+legacysupport.newest_darwin_requires_legacy 10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# V8 8.3–8.4 corresponds to nodejs-14.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name v8-8.3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# No support for ppc32 in master presently; no support for ppc64 on macOS.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# See: https://github.com/nodejs/node/issues/30323
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Too many breaking commits after this version. Start from simple.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup bnoordhuis v8-cmake 8.3.110.13
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories lang devel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license BSD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers {@barracuda156 gmail.com:vital.had} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description Google’s open-source JavaScript engine
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description {*}${description}. CMake build system.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage https://v8.dev
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums rmd160 74c70d4b0af5b3cf24f1727fb6c1efd1decabcaa \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 084c9b5195387d18ab6b7e6ea0a530bff517f918a6fec7be2c5323f7e044e414 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 26713356
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.tarball_from archive
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Nothing to gain by using a new Python with an old V8.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set py_ver 3.9
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set py_ver_nodot [string map {. {}} ${py_ver}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build-append port:gettext \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:pkgconfig \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:python${py_ver_nodot} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:py${py_ver_nodot}-jinja2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append port:gettext-runtime \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ path:lib/pkgconfig/glib-2.0.pc:glib2 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ path:lib/pkgconfig/icu-uc.pc:icu
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.python ${prefix}/bin/python${py_ver}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.pre_args -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append 0001-Restore-ppc32-patches-from-upstream.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0002-inspector-unbreak-build-with-gcc.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0003-cpu.cc-support-powerpc-darwin.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0004-semaphore-use-libdispatch-only-where-it-is-available.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0005-runtime-utils.h-fix-static_cast.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0006-Register-specs-for-powerpc-darwin.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0007-platform-posix.cc-for-powerpc-darwin.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0008-isolate-data.h-disable-asserts-for-now.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0009-embedded-file-writer-mac-support-powerpc.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0010-Add-some-missing-headers-and-use-cinttypes-consisten.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0011-libsampler-support-powerpc-and-aarch64.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0012-macro-assembler-ppc.h-fix-asserts-for-ppc.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 0013-CMakeLists-support-ppc-and-aarch64.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# The following patch is needed to compile with C++17:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# patchfiles-append 0014-tnode.h-backport-fix-for-is_convertible.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Upstream mixes variations of Python shebangs, so account for all:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fs-traverse f ${worksrcpath} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[string match *.py ${f}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -q "s|/usr/bin/env python2|${configure.python}|" ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -q "s|/usr/bin/env python3|${configure.python}|" ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace -q "s|/usr/bin/env python|${configure.python}|" ${f}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${py_ver_nodot} > 39} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # https://stackoverflow.com/questions/69381312/importerror-cannot-import-name-mapping-from-collections-using-python-3-10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ reinplace "s|from collections import Mapping|from collections.abc import Mapping|" ${worksrcpath}/third_party/jinja2/tests.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# std::is_convertible
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.cxx_standard 2017
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# type_traits: error: invalid use of incomplete type 'class v8::internal::JSAggregateError' [-fpermissive]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {[string match *gcc* ${configure.compiler}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.cxxflags-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -fpermissive
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {${configure.build_arch} in [list i386 ppc]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ configure.ldflags-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ -latomic
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args-append -DPYTHON_EXECUTABLE=${configure.python}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set v8_execprefix ${prefix}/libexec/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set docdir ${prefix}/share/doc/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall -d ${destroot}${v8_execprefix}/bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall -d ${destroot}${v8_execprefix}/lib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xinstall -d ${destroot}/${docdir}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ copy ${worksrcpath}/v8/include ${destroot}${v8_execprefix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach binary [list d8 mksnapshot torque] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ copy ${cmake.build_dir}/${binary} ${destroot}${v8_execprefix}/bin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach slib [glob ${cmake.build_dir}/*.a] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ copy ${slib} ${destroot}${v8_execprefix}/lib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ copy ${worksrcpath}/v8/docs ${destroot}${docdir}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/v8-8.3/files/0001-Restore-ppc32-patches-from-upstream.patch b/lang/v8-8.3/files/0001-Restore-ppc32-patches-from-upstream.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..c055abe8300
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/v8-8.3/files/0001-Restore-ppc32-patches-from-upstream.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,1318 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From a1d5068ede0752f11ce190f4d3fb8aeec0c11129 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Fri, 3 Nov 2023 18:21:34 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 01/12] Restore ppc32 patches from upstream
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/codegen/ppc/macro-assembler-ppc.cc | 24 ++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/codegen/ppc/register-ppc.h | 6 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/compiler/backend/instruction-codes.h | 4 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/compiler/backend/instruction-selector.cc | 9 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .../backend/ppc/code-generator-ppc.cc | 150 +++++++++++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .../backend/ppc/instruction-codes-ppc.h | 25 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .../backend/ppc/instruction-scheduler-ppc.cc | 47 ++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .../backend/ppc/instruction-selector-ppc.cc | 194 ++++++++++++++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .../backend/ppc64/instruction-codes-ppc64.h | 213 ++++++++++++++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/compiler/c-linkage.cc | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/diagnostics/eh-frame.cc | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/diagnostics/perf-jit.h | 3 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/diagnostics/ppc/eh-frame-ppc.cc | 4 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/execution/ppc/simulator-ppc.cc | 10 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/objects/code.h | 3 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/wasm/jump-table-assembler.cc | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/wasm/jump-table-assembler.h | 5 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test/cctest/cctest.status | 6 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test/cctest/wasm/test-jump-table-assembler.cc | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test/mjsunit/mjsunit.status | 11 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 20 files changed, 655 insertions(+), 67 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ create mode 100644 src/compiler/backend/ppc64/instruction-codes-ppc64.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/codegen/ppc/macro-assembler-ppc.cc b/src/codegen/ppc/macro-assembler-ppc.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ca6d472c93f..99d1e819f75 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/codegen/ppc/macro-assembler-ppc.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/codegen/ppc/macro-assembler-ppc.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2434,9 +2434,17 @@ void TurboAssembler::LoadP(Register dst, const MemOperand& mem,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Todo: enhance to use scratch if dst is unsuitable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DCHECK_NE(dst, r0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ addi(dst, mem.ra(), Operand(adj));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ld(dst, MemOperand(dst, alignedOffset));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz(dst, MemOperand(dst, alignedOffset));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ld(dst, mem);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ lwz(dst, mem);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2898,7 +2906,11 @@ void TurboAssembler::JumpIfLessThan(Register x, int32_t y, Label* dest) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void TurboAssembler::LoadEntryFromBuiltinIndex(Register builtin_index) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ STATIC_ASSERT(kSystemPointerSize == 8);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ STATIC_ASSERT(kSystemPointerSize == 4);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ STATIC_ASSERT(kSmiTagSize == 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ STATIC_ASSERT(kSmiTag == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3027,15 +3039,27 @@ void TurboAssembler::CallForDeoptimization(Address target, int deopt_id,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void TurboAssembler::ZeroExtByte(Register dst, Register src) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ clrldi(dst, src, Operand(56));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ clrlwi(dst, src, Operand(24));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void TurboAssembler::ZeroExtHalfWord(Register dst, Register src) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ clrldi(dst, src, Operand(48));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ clrlwi(dst, src, Operand(16));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void TurboAssembler::ZeroExtWord32(Register dst, Register src) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ clrldi(dst, src, Operand(32));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // makes no sense on 32 bit architecture
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void TurboAssembler::Trap() { stop(); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/codegen/ppc/register-ppc.h b/src/codegen/ppc/register-ppc.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 8c89aecec7a..54e40bde93d 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/codegen/ppc/register-ppc.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/codegen/ppc/register-ppc.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -140,7 +140,11 @@ const int kNumCalleeSavedDoubles = 18;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // The following constants describe the stack frame linkage area as
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // defined by the ABI. Note that kNumRequiredStackFrameSlots must
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // satisfy alignment requirements (rounding up if required).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if V8_TARGET_ARCH_PPC64 && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_TARGET_ARCH_PPC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++const int kNumRequiredStackFrameSlots = 4;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++const int kStackFrameLRSlot = 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++const int kStackFrameExtraParamSlot = 2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif V8_TARGET_ARCH_PPC64 && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (V8_TARGET_LITTLE_ENDIAN || \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ (defined(_CALL_ELF) && _CALL_ELF == 2)) // ELFv2 ABI
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // [0] back chain
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/compiler/backend/instruction-codes.h b/src/compiler/backend/instruction-codes.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 84d5d249b83..5d0581fe361 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/compiler/backend/instruction-codes.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/compiler/backend/instruction-codes.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -19,8 +19,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "src/compiler/backend/mips64/instruction-codes-mips64.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif V8_TARGET_ARCH_X64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "src/compiler/backend/x64/instruction-codes-x64.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif V8_TARGET_ARCH_PPC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "src/compiler/backend/ppc/instruction-codes-ppc.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include "src/compiler/backend/ppc64/instruction-codes-ppc64.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif V8_TARGET_ARCH_S390
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "src/compiler/backend/s390/instruction-codes-s390.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/compiler/backend/instruction-selector.cc b/src/compiler/backend/instruction-selector.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 7d72dbbf2d0..9aa3103cdd7 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/compiler/backend/instruction-selector.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/compiler/backend/instruction-selector.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2534,7 +2534,8 @@ void InstructionSelector::VisitWord32PairShr(Node* node) { UNIMPLEMENTED(); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void InstructionSelector::VisitWord32PairSar(Node* node) { UNIMPLEMENTED(); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif // V8_TARGET_ARCH_64_BIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if !V8_TARGET_ARCH_IA32 && !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_MIPS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if !V8_TARGET_ARCH_IA32 && !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_MIPS && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ !V8_TARGET_ARCH_PPC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void InstructionSelector::VisitWord32AtomicPairLoad(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ UNIMPLEMENTED();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2571,6 +2572,7 @@ void InstructionSelector::VisitWord32AtomicPairCompareExchange(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ UNIMPLEMENTED();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif // !V8_TARGET_ARCH_IA32 && !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_MIPS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // && !V8_TARGET_ARCH_PPC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_ARM64 && !V8_TARGET_ARCH_MIPS64 && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ !V8_TARGET_ARCH_S390 && !V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2597,8 +2599,9 @@ void InstructionSelector::VisitWord64AtomicExchange(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void InstructionSelector::VisitWord64AtomicCompareExchange(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ UNIMPLEMENTED();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif // !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_ARM64 && !V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- // !V8_TARGET_ARCH_MIPS64 && !V8_TARGET_ARCH_S390
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif // !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_ARM64 &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // !V8_TARGET_ARCH_MIPS64 && !V8_TARGET_ARCH_S390 &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // !V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if !V8_TARGET_ARCH_IA32 && !V8_TARGET_ARCH_ARM
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // This is only needed on 32-bit to split the 64-bit value into two operands.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/compiler/backend/ppc/code-generator-ppc.cc b/src/compiler/backend/ppc/code-generator-ppc.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index addbd76ffba..24858da6ece 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/compiler/backend/ppc/code-generator-ppc.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/compiler/backend/ppc/code-generator-ppc.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -680,6 +680,50 @@ void EmitWordLoadPoisoningIfNeeded(CodeGenerator* codegen, Instruction* instr,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __ sync(); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } while (false)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define ASSEMBLE_ATOMIC_PAIR_BINOP(instr) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ do { \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Label binop; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ lwsync(); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ bind(&binop); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ MemOperand operand = MemOperand(i.InputRegister(0), i.InputRegister(1)); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ lwarx(i.OutputRegister(0), operand); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ instr(kScratchReg, i.OutputRegister(0), i.InputRegister(2)); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ stwcx(kScratchReg, operand); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ bne(&binop, cr0); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ addi(i.TempRegister(0), i.InputRegister(1), Operand(4)); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ operand = MemOperand(i.InputRegister(0), i.TempRegister(0)); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ lwarx(i.OutputRegister(1), operand); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ instr(kScratchReg, i.OutputRegister(1), i.InputRegister(3)); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ stwcx(kScratchReg, operand); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ bne(&binop, cr0); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ sync(); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } while (false)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define ASSEMBLE_ATOMIC_PAIR_COMPARE_EXCHANGE(instr) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ do { \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Label loop; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Label exit; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ ZeroExtWord32(r0, i.InputRegister(2)); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ ZeroExtWord32(r0, i.InputRegister(3)); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ lwsync(); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ bind(&loop); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ MemOperand operand = MemOperand(i.InputRegister(0), i.InputRegister(1)); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ lwarx(i.OutputRegister(0), operand); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ cmpw(i.OutputRegister(0), r0, cr0); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ bne(&exit, cr0); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ stwcx(i.InputRegister(3), operand); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ bne(&loop, cr0); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ addi(i.TempRegister(0), i.InputRegister(1), Operand(4)); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ operand = MemOperand(i.InputRegister(0), i.TempRegister(0)); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ lwarx(i.OutputRegister(1), operand); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ cmpw(i.OutputRegister(1), r0, cr0); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ bne(&exit, cr0); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ stwcx(i.InputRegister(2), operand); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ bne(&loop, cr0); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ bind(&exit); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ sync(); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } while (false)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void CodeGenerator::AssembleDeconstructFrame() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __ LeaveFrame(StackFrame::MANUAL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unwinding_info_writer_.MarkFrameDeconstructed(__ pc_offset());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2016,11 +2060,13 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kWord32AtomicLoadInt16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicLoadUint16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicLoadWord32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- case kPPC_AtomicLoadWord64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicStoreUint8:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicStoreUint16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicStoreWord32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicLoadWord64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicStoreWord64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ UNREACHABLE();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kWord32AtomicExchangeInt8:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ASSEMBLE_ATOMIC_EXCHANGE_INTEGER(lbarx, stbcx);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2039,9 +2085,11 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicExchangeWord32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ASSEMBLE_ATOMIC_EXCHANGE_INTEGER(lwarx, stwcx);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicExchangeWord64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ASSEMBLE_ATOMIC_EXCHANGE_INTEGER(ldarx, stdcx);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kWord32AtomicCompareExchangeInt8:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_SIGN_EXT(cmp, lbarx, stbcx, extsb);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2057,11 +2105,13 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicCompareExchangeWord32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ASSEMBLE_ATOMIC_COMPARE_EXCHANGE(cmpw, lwarx, stwcx, ZeroExtWord32);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicCompareExchangeWord64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ASSEMBLE_ATOMIC_COMPARE_EXCHANGE(cmp, ldarx, stdcx, mr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#define ATOMIC_BINOP_CASE(op, inst) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define ATOMIC_BINOP_CASE_COMMON(op, inst) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_Atomic##op##Int8: \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ASSEMBLE_ATOMIC_BINOP_SIGN_EXT(inst, lbarx, stbcx, extsb); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2079,11 +2129,18 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_Atomic##op##Uint32: \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ASSEMBLE_ATOMIC_BINOP(inst, lwarx, stwcx); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- break; \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- case kPPC_Atomic##op##Int64: \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- case kPPC_Atomic##op##Uint64: \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ASSEMBLE_ATOMIC_BINOP(inst, ldarx, stdcx); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define ATOMIC_BINOP_CASE(op, inst) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ATOMIC_BINOP_CASE_COMMON(op, inst) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_Atomic##op##Int64: \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_Atomic##op##Uint64: \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ASSEMBLE_ATOMIC_BINOP(inst, ldarx, stdcx); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define ATOMIC_BINOP_CASE(op, inst) ATOMIC_BINOP_CASE_COMMON(op, inst)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ATOMIC_BINOP_CASE(Add, add)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ATOMIC_BINOP_CASE(Sub, sub)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ATOMIC_BINOP_CASE(And, and_)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2094,7 +2151,11 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_ByteRev32: {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Register input = i.InputRegister(0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Register output = i.OutputRegister();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Register temp1 = r0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Register temp1 = output;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __ rotlwi(temp1, input, 8);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __ rlwimi(temp1, input, 24, 0, 7);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __ rlwimi(temp1, input, 24, 16, 23);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2120,6 +2181,83 @@ CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif // V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef V8_TARGET_ARCH_PPC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicPairLoadWord32: {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Label atomic_pair_load;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ lwsync();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ bind(&atomic_pair_load);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ addi(i.TempRegister(0), i.InputRegister(1), Operand(4));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ lwarx(i.OutputRegister(0),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ MemOperand(i.InputRegister(0), i.InputRegister(1)));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ lwsync();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ lwz(i.OutputRegister(1),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ MemOperand(i.InputRegister(0), i.TempRegister(0)));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ lwsync();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ stwcx(i.OutputRegister(0),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ MemOperand(i.InputRegister(0), i.InputRegister(1)));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ bne(&atomic_pair_load, cr0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ sync();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicPairStoreWord32: {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Label atomic_pair_store;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ lwsync();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ bind(&atomic_pair_store);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ addi(i.TempRegister(0), i.InputRegister(1), Operand(4));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ lwarx(kScratchReg, MemOperand(i.InputRegister(0), i.InputRegister(1)));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ lwsync();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ stw(i.InputRegister(3),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ MemOperand(i.InputRegister(0), i.TempRegister(0)));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ lwsync();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ stwcx(i.InputRegister(2),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ MemOperand(i.InputRegister(0), i.InputRegister(1)));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ bne(&atomic_pair_store, cr0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ sync();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ DCHECK_EQ(LeaveRC, i.OutputRCBit());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicPairAddWord32: {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ASSEMBLE_ATOMIC_PAIR_BINOP(add);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicPairSubWord32: {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ASSEMBLE_ATOMIC_PAIR_BINOP(sub);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicPairAndWord32: {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ASSEMBLE_ATOMIC_PAIR_BINOP(and_);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicPairOrWord32: {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ASSEMBLE_ATOMIC_PAIR_BINOP(orx);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicPairXorWord32: {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ASSEMBLE_ATOMIC_PAIR_BINOP(xor_);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicPairExchangeWord32: {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ do {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Label exchange;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ lwsync();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ bind(&exchange);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ MemOperand operand = MemOperand(i.InputRegister(0), i.InputRegister(1));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ lwarx(i.OutputRegister(0), operand);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ stwcx(i.InputRegister(2), operand);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ addi(i.TempRegister(0), i.InputRegister(1), Operand(4));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ operand = MemOperand(i.InputRegister(0), i.TempRegister(0));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ lwarx(i.OutputRegister(1), operand);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ stwcx(i.InputRegister(3), operand);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ bne(&exchange, cr0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __ sync();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } while (false);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicPairCompareExchangeWord32: {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ASSEMBLE_ATOMIC_PAIR_COMPARE_EXCHANGE(cmpw);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ default:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ UNREACHABLE();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/compiler/backend/ppc/instruction-codes-ppc.h b/src/compiler/backend/ppc/instruction-codes-ppc.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 82d1d40b5bc..2ca15843557 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/compiler/backend/ppc/instruction-codes-ppc.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/compiler/backend/ppc/instruction-codes-ppc.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -118,13 +118,11 @@ namespace compiler {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_LoadWordU16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_LoadWordS32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_LoadWordU32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- V(PPC_LoadWord64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_LoadFloat32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_LoadDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_StoreWord8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_StoreWord16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_StoreWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- V(PPC_StoreWord64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_StoreFloat32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_StoreDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_ByteRev32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -135,59 +133,54 @@ namespace compiler {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicStoreUint8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicStoreUint16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicStoreWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- V(PPC_AtomicStoreWord64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicLoadUint8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicLoadUint16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicLoadWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- V(PPC_AtomicLoadWord64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicExchangeUint8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicExchangeUint16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicExchangeWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- V(PPC_AtomicExchangeWord64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicCompareExchangeUint8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicCompareExchangeUint16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicCompareExchangeWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- V(PPC_AtomicCompareExchangeWord64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicAddUint8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicAddUint16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicAddUint32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- V(PPC_AtomicAddUint64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicAddInt8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicAddInt16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicAddInt32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- V(PPC_AtomicAddInt64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicSubUint8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicSubUint16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicSubUint32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- V(PPC_AtomicSubUint64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicSubInt8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicSubInt16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicSubInt32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- V(PPC_AtomicSubInt64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicAndUint8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicAndUint16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicAndUint32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- V(PPC_AtomicAndUint64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicAndInt8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicAndInt16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicAndInt32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- V(PPC_AtomicAndInt64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicOrUint8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicOrUint16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicOrUint32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- V(PPC_AtomicOrUint64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicOrInt8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicOrInt16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicOrInt32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- V(PPC_AtomicOrInt64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicXorUint8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicXorUint16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicXorUint32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- V(PPC_AtomicXorUint64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicXorInt8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicXorInt16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(PPC_AtomicXorInt32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- V(PPC_AtomicXorInt64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicPairLoadWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicPairStoreWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicPairAddWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicPairSubWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicPairAndWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicPairOrWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicPairXorWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicPairExchangeWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicPairCompareExchangeWord32)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Addressing modes represent the "shape" of inputs to an instruction.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Many instructions support multiple addressing modes. Addressing modes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/compiler/backend/ppc/instruction-scheduler-ppc.cc b/src/compiler/backend/ppc/instruction-scheduler-ppc.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 3062dfb53d0..d967b2bce83 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/compiler/backend/ppc/instruction-scheduler-ppc.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/compiler/backend/ppc/instruction-scheduler-ppc.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -121,80 +121,97 @@ int InstructionScheduler::GetTargetInstructionFlags(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_LoadWordU16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_LoadWordS32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_LoadWordU32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- case kPPC_LoadWord64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_LoadFloat32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_LoadDouble:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicLoadUint8:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicLoadUint16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicLoadWord32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- case kPPC_AtomicLoadWord64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_Peek:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_LoadWord64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicLoadWord64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicPairLoadWord32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return kIsLoadOperation;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_StoreWord8:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_StoreWord16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_StoreWord32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- case kPPC_StoreWord64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_StoreFloat32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_StoreDouble:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_Push:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_PushFrame:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_StoreToStackSlot:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_Sync:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_StoreWord64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return kHasSideEffect;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicStoreUint8:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicStoreUint16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicStoreWord32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- case kPPC_AtomicStoreWord64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicExchangeUint8:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicExchangeUint16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicExchangeWord32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- case kPPC_AtomicExchangeWord64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicCompareExchangeUint8:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicCompareExchangeUint16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicCompareExchangeWord32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- case kPPC_AtomicCompareExchangeWord64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicAddUint8:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicAddUint16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicAddUint32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- case kPPC_AtomicAddUint64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicAddInt8:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicAddInt16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicAddInt32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- case kPPC_AtomicAddInt64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicSubUint8:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicSubUint16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicSubUint32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- case kPPC_AtomicSubUint64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicSubInt8:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicSubInt16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicSubInt32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- case kPPC_AtomicSubInt64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicAndUint8:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicAndUint16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicAndUint32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- case kPPC_AtomicAndUint64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicAndInt8:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicAndInt16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicAndInt32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- case kPPC_AtomicAndInt64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicOrUint8:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicOrUint16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicOrUint32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- case kPPC_AtomicOrUint64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicOrInt8:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicOrInt16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicOrInt32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- case kPPC_AtomicOrInt64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicXorUint8:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicXorUint16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicXorUint32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- case kPPC_AtomicXorUint64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicXorInt8:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicXorInt16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicXorInt32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicStoreWord64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicExchangeWord64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicCompareExchangeWord64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicAddUint64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicAddInt64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicSubUint64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicSubInt64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicAndUint64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicAndInt64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicOrUint64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicOrInt64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicXorUint64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kPPC_AtomicXorInt64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicPairStoreWord32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicPairAddWord32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicPairSubWord32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicPairAndWord32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicPairOrWord32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicPairXorWord32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicPairExchangeWord32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case kPPC_AtomicPairCompareExchangeWord32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return kHasSideEffect;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define CASE(Name) case k##Name:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/compiler/backend/ppc/instruction-selector-ppc.cc b/src/compiler/backend/ppc/instruction-selector-ppc.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 7e29b00c312..84693b2d79f 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/compiler/backend/ppc/instruction-selector-ppc.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/compiler/backend/ppc/instruction-selector-ppc.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -174,6 +174,7 @@ void InstructionSelector::VisitLoad(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Node* offset = node->InputAt(1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ InstructionCode opcode = kArchNop;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ImmediateMode mode = kInt16Imm;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch (load_rep.representation()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case MachineRepresentation::kFloat32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ opcode = kPPC_LoadFloat32;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -188,9 +189,15 @@ void InstructionSelector::VisitLoad(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case MachineRepresentation::kWord16:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ opcode = load_rep.IsSigned() ? kPPC_LoadWordS16 : kPPC_LoadWordU16;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if !V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case MachineRepresentation::kTaggedSigned: // Fall through.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case MachineRepresentation::kTaggedPointer: // Fall through.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case MachineRepresentation::kTagged: // Fall through.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case MachineRepresentation::kWord32:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ opcode = kPPC_LoadWordU32;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case MachineRepresentation::kTaggedSigned: // Fall through.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case MachineRepresentation::kTaggedPointer: // Fall through.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case MachineRepresentation::kTagged: // Fall through.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -198,6 +205,9 @@ void InstructionSelector::VisitLoad(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ opcode = kPPC_LoadWord64;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mode = kInt16Imm_4ByteAligned;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case MachineRepresentation::kWord64:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case MachineRepresentation::kCompressedPointer: // Fall through.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case MachineRepresentation::kCompressed: // Fall through.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case MachineRepresentation::kSimd128: // Fall through.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1561,6 +1571,7 @@ void InstructionSelector::VisitWordCompareZero(Node* user, Node* value,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case IrOpcode::kFloat32LessThanOrEqual:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cont->OverwriteAndNegateIfEqual(kUnsignedLessThanOrEqual);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return VisitFloat32Compare(this, value, cont);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case IrOpcode::kFloat64Equal:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cont->OverwriteAndNegateIfEqual(kEqual);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return VisitFloat64Compare(this, value, cont);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1570,6 +1581,7 @@ void InstructionSelector::VisitWordCompareZero(Node* user, Node* value,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case IrOpcode::kFloat64LessThanOrEqual:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ cont->OverwriteAndNegateIfEqual(kUnsignedLessThanOrEqual);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return VisitFloat64Compare(this, value, cont);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case IrOpcode::kProjection:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Check if this is the overflow output projection of an
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // <Operation>WithOverflow node.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1864,15 +1876,19 @@ void InstructionSelector::VisitMemoryBarrier(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void InstructionSelector::VisitWord32AtomicLoad(Node* node) { VisitLoad(node); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void InstructionSelector::VisitWord64AtomicLoad(Node* node) { VisitLoad(node); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void InstructionSelector::VisitWord32AtomicStore(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ VisitStore(node);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void InstructionSelector::VisitWord64AtomicStore(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ VisitStore(node);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void VisitAtomicExchange(InstructionSelector* selector, Node* node,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ArchOpcode opcode) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1913,6 +1929,7 @@ void InstructionSelector::VisitWord32AtomicExchange(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ VisitAtomicExchange(this, node, opcode);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void InstructionSelector::VisitWord64AtomicExchange(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ArchOpcode opcode = kArchNop;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MachineType type = AtomicOpType(node->op());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1930,6 +1947,7 @@ void InstructionSelector::VisitWord64AtomicExchange(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ VisitAtomicExchange(this, node, opcode);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void VisitAtomicCompareExchange(InstructionSelector* selector, Node* node,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ArchOpcode opcode) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1976,6 +1994,7 @@ void InstructionSelector::VisitWord32AtomicCompareExchange(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ VisitAtomicCompareExchange(this, node, opcode);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void InstructionSelector::VisitWord64AtomicCompareExchange(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ MachineType type = AtomicOpType(node->op());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ArchOpcode opcode = kArchNop;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1993,12 +2012,17 @@ void InstructionSelector::VisitWord64AtomicCompareExchange(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ VisitAtomicCompareExchange(this, node, opcode);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void VisitAtomicBinaryOperation(InstructionSelector* selector, Node* node,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ArchOpcode int8_op, ArchOpcode uint8_op,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ArchOpcode int16_op, ArchOpcode uint16_op,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ArchOpcode int32_op, ArchOpcode uint32_op,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- ArchOpcode int64_op, ArchOpcode uint64_op) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ArchOpcode int32_op, ArchOpcode uint32_op
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ArchOpcode int64_op, ArchOpcode uint64_op
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ PPCOperandGenerator g(selector);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Node* base = node->InputAt(0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Node* index = node->InputAt(1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2019,10 +2043,12 @@ void VisitAtomicBinaryOperation(InstructionSelector* selector, Node* node,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ opcode = int32_op;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else if (type == MachineType::Uint32()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ opcode = uint32_op;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else if (type == MachineType::Int64()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ opcode = int64_op;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else if (type == MachineType::Uint64()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ opcode = uint64_op;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ UNREACHABLE();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2058,14 +2084,33 @@ void InstructionSelector::VisitWord64AtomicBinaryOperation(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ UNREACHABLE();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#define VISIT_ATOMIC_BINOP(op) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define VISIT_ATOMIC_BINOP32(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ op) void InstructionSelector::VisitWord32Atomic##op(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ VisitAtomicBinaryOperation(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ this, node, kPPC_Atomic##op##Int8, kPPC_Atomic##op##Uint8,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ kPPC_Atomic##op##Int16, kPPC_Atomic##op##Uint16,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ kPPC_Atomic##op##Int32, kPPC_Atomic##op##Uint32,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ kPPC_Atomic##op##Int64, kPPC_Atomic##op##Uint64);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define VISIT_ATOMIC_BINOP32(op) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void InstructionSelector::VisitWord32Atomic##op(Node* node) { \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ VisitAtomicBinaryOperation( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ this, node, kPPC_Atomic##op##Int8, kPPC_Atomic##op##Uint8, \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ kPPC_Atomic##op##Int16, kPPC_Atomic##op##Uint16, \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- kPPC_Atomic##op##Int32, kPPC_Atomic##op##Uint32, \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- kPPC_Atomic##op##Int64, kPPC_Atomic##op##Uint64); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- } \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ kPPC_Atomic##op##Int32, kPPC_Atomic##op##Uint32); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ VISIT_ATOMIC_BINOP32(Add)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ VISIT_ATOMIC_BINOP32(Sub)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ VISIT_ATOMIC_BINOP32(And)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ VISIT_ATOMIC_BINOP32(Or)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ VISIT_ATOMIC_BINOP32(Xor)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#undef VISIT_ATOMIC_BINOP32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define VISIT_ATOMIC_BINOP64(op) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void InstructionSelector::VisitWord64Atomic##op(Node* node) { \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ VisitAtomicBinaryOperation( \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ this, node, kPPC_Atomic##op##Int8, kPPC_Atomic##op##Uint8, \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2073,16 +2118,17 @@ void InstructionSelector::VisitWord64AtomicBinaryOperation(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ kPPC_Atomic##op##Int32, kPPC_Atomic##op##Uint32, \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ kPPC_Atomic##op##Int64, kPPC_Atomic##op##Uint64); \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-VISIT_ATOMIC_BINOP(Add)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-VISIT_ATOMIC_BINOP(Sub)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-VISIT_ATOMIC_BINOP(And)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-VISIT_ATOMIC_BINOP(Or)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-VISIT_ATOMIC_BINOP(Xor)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#undef VISIT_ATOMIC_BINOP
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-void InstructionSelector::VisitInt32AbsWithOverflow(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- UNREACHABLE();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ VISIT_ATOMIC_BINOP64(Add)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ VISIT_ATOMIC_BINOP64(Sub)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ VISIT_ATOMIC_BINOP64(And)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ VISIT_ATOMIC_BINOP64(Or)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ VISIT_ATOMIC_BINOP64(Xor)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#undef VISIT_ATOMIC_BINOP64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ void InstructionSelector::VisitInt32AbsWithOverflow(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ UNREACHABLE();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void InstructionSelector::VisitInt64AbsWithOverflow(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ UNREACHABLE();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2485,6 +2531,122 @@ InstructionSelector::AlignmentRequirements() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FullUnalignedAccessSupport();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_TARGET_ARCH_PPC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void InstructionSelector::VisitWord32AtomicPairLoad(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PPCOperandGenerator g(this);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Node* base = node->InputAt(0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Node* offset = node->InputAt(1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ InstructionCode opcode = kPPC_AtomicPairLoadWord32;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (node->opcode() == IrOpcode::kPoisonedLoad &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ poisoning_level_ != PoisoningMitigationLevel::kDontPoison) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ opcode |= MiscField::encode(kMemoryAccessPoisoned);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Node* projection0 = NodeProperties::FindProjection(node, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Node* projection1 = NodeProperties::FindProjection(node, 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ InstructionOperand inputs[] = {g.UseUniqueRegister(base),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ g.UseUniqueRegister(offset)};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ InstructionOperand outputs[] = {g.DefineAsFixed(projection0, r3),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ g.DefineAsFixed(projection1, r4)};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ InstructionOperand temps[] = {g.TempRegister()};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Emit(opcode, arraysize(outputs), outputs, arraysize(inputs), inputs,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ arraysize(temps), temps);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void InstructionSelector::VisitWord32AtomicPairStore(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PPCOperandGenerator g(this);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Node* base = node->InputAt(0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Node* offset = node->InputAt(1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Node* value_low = node->InputAt(2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Node* value_high = node->InputAt(3);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ InstructionCode opcode = kPPC_AtomicPairStoreWord32;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ InstructionOperand inputs[] = {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ g.UseUniqueRegister(base), g.UseUniqueRegister(offset),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ g.UseUniqueRegister(value_low), g.UseUniqueRegister(value_high)};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ InstructionOperand temps[] = {g.TempRegister(), g.TempRegister()};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Emit(opcode, 0, nullptr, arraysize(inputs), inputs, arraysize(temps), temps);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void VisitWord32AtomicPairBinOp(InstructionSelector* selector, Node* node,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ArchOpcode opcode) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PPCOperandGenerator g(selector);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Node* base = node->InputAt(0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Node* offset = node->InputAt(1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Node* value_low = node->InputAt(2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Node* value_high = node->InputAt(3);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ InstructionCode code = opcode;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ InstructionOperand inputs[] = {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ g.UseFixed(value_low, r3), g.UseFixed(value_high, r4),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ g.UseUniqueRegister(base), g.UseUniqueRegister(offset)};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Node* projection0 = NodeProperties::FindProjection(node, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Node* projection1 = NodeProperties::FindProjection(node, 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ InstructionOperand outputs[] = {g.DefineAsFixed(projection0, r3),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ g.DefineAsFixed(projection1, r4)};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ InstructionOperand temps[] = {g.TempRegister()};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ selector->Emit(code, arraysize(outputs), outputs, arraysize(inputs), inputs,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ arraysize(temps), temps);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void InstructionSelector::VisitWord32AtomicPairAdd(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ VisitWord32AtomicPairBinOp(this, node, kPPC_AtomicPairAddWord32);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void InstructionSelector::VisitWord32AtomicPairSub(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ VisitWord32AtomicPairBinOp(this, node, kPPC_AtomicPairSubWord32);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void InstructionSelector::VisitWord32AtomicPairAnd(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ VisitWord32AtomicPairBinOp(this, node, kPPC_AtomicPairAndWord32);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void InstructionSelector::VisitWord32AtomicPairOr(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ VisitWord32AtomicPairBinOp(this, node, kPPC_AtomicPairOrWord32);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void InstructionSelector::VisitWord32AtomicPairXor(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ VisitWord32AtomicPairBinOp(this, node, kPPC_AtomicPairXorWord32);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void InstructionSelector::VisitWord32AtomicPairExchange(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ VisitWord32AtomicPairBinOp(this, node, kPPC_AtomicPairExchangeWord32);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void InstructionSelector::VisitWord32AtomicPairCompareExchange(Node* node) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ PPCOperandGenerator g(this);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ AddressingMode addressing_mode = kMode_MRI;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ InstructionOperand inputs[] = {g.UseFixed(node->InputAt(2), r5),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ g.UseFixed(node->InputAt(3), r6),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ g.UseFixed(node->InputAt(4), r7),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ g.UseFixed(node->InputAt(5), r8),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ g.UseUniqueRegister(node->InputAt(0)),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ g.UseUniqueRegister(node->InputAt(1))};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ InstructionCode code = kPPC_AtomicPairCompareExchangeWord32 |
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ AddressingModeField::encode(addressing_mode);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Node* projection0 = NodeProperties::FindProjection(node, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Node* projection1 = NodeProperties::FindProjection(node, 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ InstructionOperand outputs[] = {g.DefineAsFixed(projection0, r3),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ g.DefineAsFixed(projection1, r4)};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ InstructionOperand temps[] = {g.TempRegister(), g.TempRegister()};
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ Emit(code, arraysize(outputs), outputs, arraysize(inputs), inputs,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ arraysize(temps), temps);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } // namespace compiler
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } // namespace internal
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } // namespace v8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/compiler/backend/ppc64/instruction-codes-ppc64.h b/src/compiler/backend/ppc64/instruction-codes-ppc64.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+new file mode 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 00000000000..87a330599ed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/compiler/backend/ppc64/instruction-codes-ppc64.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -0,0 +1,213 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// Copyright 2014 the V8 project authors. All rights reserved.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// Use of this source code is governed by a BSD-style license that can be
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// found in the LICENSE file.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef V8_COMPILER_BACKEND_PPC64_INSTRUCTION_CODES_PPC64_H_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define V8_COMPILER_BACKEND_PPC64_INSTRUCTION_CODES_PPC64_H_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++namespace v8 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++namespace internal {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++namespace compiler {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// PPC-specific opcodes that specify which assembly sequence to emit.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// Most opcodes specify a single instruction.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define TARGET_ARCH_OPCODE_LIST(V) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Peek) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Sync) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_And) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AndComplement) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Or) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_OrComplement) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Xor) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_ShiftLeft32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_ShiftLeft64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_ShiftLeftPair) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_ShiftRight32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_ShiftRight64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_ShiftRightPair) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_ShiftRightAlg32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_ShiftRightAlg64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_ShiftRightAlgPair) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_RotRight32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_RotRight64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Not) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_RotLeftAndMask32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_RotLeftAndClear64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_RotLeftAndClearLeft64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_RotLeftAndClearRight64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Add32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Add64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AddWithOverflow32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AddPair) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AddDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Sub) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_SubWithOverflow32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_SubPair) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_SubDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Mul32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Mul32WithHigh32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Mul64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_MulHigh32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_MulHighU32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_MulPair) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_MulDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Div32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Div64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_DivU32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_DivU64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_DivDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Mod32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Mod64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_ModU32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_ModU64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_ModDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Neg) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_NegDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_SqrtDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_FloorDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_CeilDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_TruncateDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_RoundDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_MaxDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_MinDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AbsDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Cntlz32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Cntlz64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Popcnt32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Popcnt64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Cmp32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Cmp64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_CmpDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Tst32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Tst64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Push) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_PushFrame) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_StoreToStackSlot) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_ExtendSignWord8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_ExtendSignWord16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_ExtendSignWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Uint32ToUint64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Int64ToInt32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Int64ToFloat32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Int64ToDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Uint64ToFloat32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Uint64ToDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Int32ToFloat32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Int32ToDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Uint32ToFloat32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Uint32ToDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Float32ToDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_Float64SilenceNaN) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_DoubleToInt32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_DoubleToUint32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_DoubleToInt64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_DoubleToUint64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_DoubleToFloat32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_DoubleExtractLowWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_DoubleExtractHighWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_DoubleInsertLowWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_DoubleInsertHighWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_DoubleConstruct) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_BitcastInt32ToFloat32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_BitcastFloat32ToInt32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_BitcastInt64ToDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_BitcastDoubleToInt64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_LoadWordS8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_LoadWordU8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_LoadWordS16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_LoadWordU16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_LoadWordS32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_LoadWordU32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_LoadWord64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_LoadFloat32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_LoadDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_StoreWord8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_StoreWord16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_StoreWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_StoreWord64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_StoreFloat32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_StoreDouble) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_ByteRev32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_ByteRev64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_CompressSigned) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_CompressPointer) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_CompressAny) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicStoreUint8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicStoreUint16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicStoreWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicStoreWord64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicLoadUint8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicLoadUint16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicLoadWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicLoadWord64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicExchangeUint8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicExchangeUint16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicExchangeWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicExchangeWord64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicCompareExchangeUint8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicCompareExchangeUint16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicCompareExchangeWord32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicCompareExchangeWord64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicAddUint8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicAddUint16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicAddUint32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicAddUint64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicAddInt8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicAddInt16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicAddInt32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicAddInt64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicSubUint8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicSubUint16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicSubUint32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicSubUint64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicSubInt8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicSubInt16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicSubInt32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicSubInt64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicAndUint8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicAndUint16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicAndUint32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicAndUint64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicAndInt8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicAndInt16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicAndInt32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicAndInt64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicOrUint8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicOrUint16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicOrUint32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicOrUint64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicOrInt8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicOrInt16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicOrInt32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicOrInt64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicXorUint8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicXorUint16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicXorUint32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicXorUint64) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicXorInt8) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicXorInt16) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicXorInt32) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(PPC_AtomicXorInt64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// Addressing modes represent the "shape" of inputs to an instruction.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// Many instructions support multiple addressing modes. Addressing modes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// are encoded into the InstructionCode of the instruction and tell the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// code generator after register allocation which assembler method to call.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++//
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// We use the following local notation for addressing modes:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++//
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// R = register
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// O = register or stack slot
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// D = double register
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// I = immediate (handle, external, int32)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// MRI = [register + immediate]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// MRR = [register + register]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define TARGET_ADDRESSING_MODE_LIST(V) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(MRI) /* [%r0 + K] */ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ V(MRR) /* [%r0 + %r1] */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++} // namespace compiler
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++} // namespace internal
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++} // namespace v8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif // V8_COMPILER_BACKEND_PPC64_INSTRUCTION_CODES_PPC64_H_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/compiler/c-linkage.cc b/src/compiler/c-linkage.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 4967f2bbfa1..3b282b54115 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/compiler/c-linkage.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/compiler/c-linkage.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -98,7 +98,7 @@ namespace {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define CALLEE_SAVE_FP_REGISTERS \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ f20.bit() | f22.bit() | f24.bit() | f26.bit() | f28.bit() | f30.bit()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // ===========================================================================
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // == ppc & ppc64 ============================================================
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // ===========================================================================
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/diagnostics/eh-frame.cc b/src/diagnostics/eh-frame.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 35cb529f094..ae59f2d9015 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/diagnostics/eh-frame.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/diagnostics/eh-frame.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -11,7 +11,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if !defined(V8_TARGET_ARCH_X64) && !defined(V8_TARGET_ARCH_ARM) && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ !defined(V8_TARGET_ARCH_ARM64) && !defined(V8_TARGET_ARCH_S390X) && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- !defined(V8_TARGET_ARCH_PPC64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ !defined(V8_TARGET_ARCH_PPC) && !defined(V8_TARGET_ARCH_PPC64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Placeholders for unsupported architectures.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/diagnostics/perf-jit.h b/src/diagnostics/perf-jit.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index dbe78ddf2d8..acf7148dcf8 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/diagnostics/perf-jit.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/diagnostics/perf-jit.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -85,6 +85,7 @@ class PerfJitLogger : public CodeEventLogger {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static const uint32_t kElfMachMIPS64 = 8;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static const uint32_t kElfMachARM64 = 183;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static const uint32_t kElfMachS390x = 22;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ static const uint32_t kElfMachPPC = 20;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static const uint32_t kElfMachPPC64 = 21;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uint32_t GetElfMach() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -102,6 +103,8 @@ class PerfJitLogger : public CodeEventLogger {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return kElfMachARM64;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif V8_TARGET_ARCH_S390X
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return kElfMachS390x;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif V8_TARGET_ARCH_PPC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return kElfMachPPC;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return kElfMachPPC64;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/diagnostics/ppc/eh-frame-ppc.cc b/src/diagnostics/ppc/eh-frame-ppc.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 148d01116df..933533f572e 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/diagnostics/ppc/eh-frame-ppc.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/diagnostics/ppc/eh-frame-ppc.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -10,7 +10,11 @@ namespace internal {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const int EhFrameConstants::kCodeAlignmentFactor = 4;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // all PPC are 4 bytes instruction
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const int EhFrameConstants::kDataAlignmentFactor = -8; // 64-bit always -8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++const int EhFrameConstants::kDataAlignmentFactor = -4;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void EhFrameWriter::WriteReturnAddressRegisterCode() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ WriteULeb128(kLrDwarfCode);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/execution/ppc/simulator-ppc.cc b/src/execution/ppc/simulator-ppc.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 2a9aa6486be..ad8aa0eee59 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/execution/ppc/simulator-ppc.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/execution/ppc/simulator-ppc.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -922,8 +922,18 @@ bool Simulator::OverflowFrom(int32_t alu_out, int32_t left, int32_t right,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static void decodeObjectPair(ObjectPair* pair, intptr_t* x, intptr_t* y) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_HOST_ARCH_64_BIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *x = static_cast<intptr_t>(pair->x);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *y = static_cast<intptr_t>(pair->y);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_TARGET_BIG_ENDIAN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *x = static_cast<int32_t>(*pair >> 32);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *y = static_cast<int32_t>(*pair);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *x = static_cast<int32_t>(*pair);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ *y = static_cast<int32_t>(*pair >> 32);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Calls into the V8 runtime.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/objects/code.h b/src/objects/code.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index d80e72fa038..a3322ca1790 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/objects/code.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/objects/code.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -420,6 +420,9 @@ class Code : public HeapObject {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static constexpr int kHeaderPaddingSize = 20;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif V8_TARGET_ARCH_MIPS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static constexpr int kHeaderPaddingSize = 20;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif V8_TARGET_ARCH_PPC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ static constexpr int kHeaderPaddingSize =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ FLAG_enable_embedded_constant_pool ? 16 : 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static constexpr int kHeaderPaddingSize =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ FLAG_enable_embedded_constant_pool ? 28 : 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/wasm/jump-table-assembler.cc b/src/wasm/jump-table-assembler.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 90cdad4672b..f89792d3250 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/wasm/jump-table-assembler.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/wasm/jump-table-assembler.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -268,7 +268,7 @@ void JumpTableAssembler::NopBytes(int bytes) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void JumpTableAssembler::EmitLazyCompileJumpSlot(uint32_t func_index,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Address lazy_compile_target) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int start = pc_offset();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/wasm/jump-table-assembler.h b/src/wasm/jump-table-assembler.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 253f0bc0182..3108a7ebb4f 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/wasm/jump-table-assembler.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/wasm/jump-table-assembler.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -200,6 +200,11 @@ class V8_EXPORT_PRIVATE JumpTableAssembler : public MacroAssembler {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static constexpr int kJumpTableSlotSize = 14;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static constexpr int kFarJumpTableSlotSize = 14;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static constexpr int kLazyCompileTableSlotSize = 20;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif V8_TARGET_ARCH_PPC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ static constexpr int kJumpTableLineSize = 24;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ static constexpr int kJumpTableSlotSize = 16;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ static constexpr int kFarJumpTableSlotSize = 16;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ static constexpr int kLazyCompileTableSlotSize = 12 * kInstrSize;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static constexpr int kJumpTableLineSize = 64;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static constexpr int kJumpTableSlotSize = 7 * kInstrSize;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/test/cctest/cctest.status b/test/cctest/cctest.status
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 444ec9d8ecc..a48e6709e37 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/test/cctest/cctest.status
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/test/cctest/cctest.status
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -333,10 +333,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }], # '(arch == mipsel or arch == mips64el or arch == mips or arch == mips64) and not simd_mips'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ##############################################################################
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-['arch == mips or arch == mips64', {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++['arch == mips or arch == mips64 or arch == ppc', {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # TODO(mips-team): Implement I64Atomic operations on MIPS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 'test-run-wasm-atomics64/*': [SKIP],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-}], # 'arch == mipsel or arch == mips64el or arch == mips or arch == mips64'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}], # 'arch == mips or arch == mips64 or arch == ppc'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ##############################################################################
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ['mips_arch_variant == r6', {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -399,7 +399,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }], # 'arch == ppc or arch == ppc64 or arch == s390 or arch == s390x'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-['arch == ppc64', {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++['arch == ppc64 or arch == ppc', {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # https://crbug.com/v8/8766
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 'test-bytecode-generator/WideRegisters': [SKIP],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/test/cctest/wasm/test-jump-table-assembler.cc b/test/cctest/wasm/test-jump-table-assembler.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 5ff91bc7786..dc8658fe1ed 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/test/cctest/wasm/test-jump-table-assembler.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/test/cctest/wasm/test-jump-table-assembler.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -107,7 +107,7 @@ void CompileJumpTableThunk(Address thunk, Address jump_target) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __ Tbnz(scratch, 0, &exit);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __ Mov(scratch, Immediate(jump_target, RelocInfo::NONE));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __ Br(scratch);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#elif V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __ mov(scratch, Operand(stop_bit_address, RelocInfo::NONE));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __ LoadP(scratch, MemOperand(scratch));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ __ cmpi(scratch, Operand::Zero());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/test/mjsunit/mjsunit.status b/test/mjsunit/mjsunit.status
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 989c0979080..b99894ec95d 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/test/mjsunit/mjsunit.status
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/test/mjsunit/mjsunit.status
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -432,12 +432,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ##############################################################################
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # 32-bit platforms
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-['arch in (ia32, arm, mips, mipsel)', {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++['arch in (ia32, arm, mips, mipsel, ppc)', {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Needs >2GB of available contiguous memory.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 'wasm/grow-huge-memory': [SKIP],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 'wasm/huge-memory': [SKIP],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 'wasm/huge-typedarray': [SKIP],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-}], # 'arch in (ia32, arm, mips, mipsel)'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}], # 'arch in (ia32, arm, mips, mipsel, ppc)'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ##############################################################################
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ['arch == arm64', {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -661,6 +661,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 'wasm/atomics': [PASS, SLOW],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }], # 'arch == arm
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++##############################################################################
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++['arch == ppc', {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ # do not run 64bit stress tests on 32bit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 'wasm/atomics64-stress': [SKIP],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 'wasm/compare-exchange64-stress': [SKIP],
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}], # 'arch == ppc'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ##############################################################################
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ['arch in (mipsel, mips, mips64el, mips64) and not simulator_run', {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # These tests fail occasionally on the buildbots because they consume
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/v8-8.3/files/0002-inspector-unbreak-build-with-gcc.patch b/lang/v8-8.3/files/0002-inspector-unbreak-build-with-gcc.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..7d76b6103c7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/v8-8.3/files/0002-inspector-unbreak-build-with-gcc.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,22 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From c406e6637a50b4a03ba36e0d304bca76dad9a8a5 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Fri, 3 Nov 2023 18:22:45 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 02/12] inspector: unbreak build with gcc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/inspector/string-16.h | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 1 insertion(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/inspector/string-16.h b/src/inspector/string-16.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b4cbd016a6c..45f756e3360 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/inspector/string-16.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/inspector/string-16.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -147,7 +147,7 @@ String16 String16::concat(T... args) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } // namespace v8_inspector
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if !defined(__APPLE__) || defined(_LIBCPP_VERSION)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if !(defined(__APPLE__) && defined(__clang__)) || defined(_LIBCPP_VERSION)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace std {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ template <>
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/v8-8.3/files/0003-cpu.cc-support-powerpc-darwin.patch b/lang/v8-8.3/files/0003-cpu.cc-support-powerpc-darwin.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..e247ee5aafc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/v8-8.3/files/0003-cpu.cc-support-powerpc-darwin.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,55 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From c2407e6d4cca53c9987c2c197e9a7d932588c36f Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 9 Nov 2023 02:55:54 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 03/12] cpu.cc: support powerpc-darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/base/cpu.cc | 28 +++++++++++++++++++++++++++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 27 insertions(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/base/cpu.cc b/src/base/cpu.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index f1c48fa1356..06afd61c2dc 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/base/cpu.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/base/cpu.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -28,6 +28,15 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define POWER_9 0x20000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_OS_MACOSX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <sys/sysctl.h> // sysctlbyname
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <mach/mach.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <mach/mach_host.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <mach/host_info.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <mach/machine.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if V8_OS_POSIX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <unistd.h> // sysconf()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -679,7 +688,24 @@ CPU::CPU()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ part_ = PPC_POWER5;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif // V8_OS_AIX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif V8_OS_MACOSX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++struct host_basic_info host_basic_info;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ switch(host_basic_info.cpu_subtype) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case CPU_SUBTYPE_POWERPC_970:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ default:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ part_ = PPC_G5;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case CPU_SUBTYPE_POWERPC_7450:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ part_ = PPC_G4;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ case CPU_SUBTYPE_POWERPC_7400:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ part_ = PPC_G4;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif // V8_OS_MACOSX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif // !USE_SIMULATOR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif // V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/v8-8.3/files/0004-semaphore-use-libdispatch-only-where-it-is-available.patch b/lang/v8-8.3/files/0004-semaphore-use-libdispatch-only-where-it-is-available.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..0810d9f0d07
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/v8-8.3/files/0004-semaphore-use-libdispatch-only-where-it-is-available.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,130 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From b9d27426543f9b221da8735698c12e8fe71de4fe Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 9 Nov 2023 02:59:04 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 04/12] semaphore: use libdispatch only where it is available
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/base/platform/semaphore.cc | 59 +++++++++++++++++++++++++++++++++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/base/platform/semaphore.h | 9 ++++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2 files changed, 67 insertions(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/base/platform/semaphore.cc b/src/base/platform/semaphore.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 66464d8258d..fd1c864b51a 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/base/platform/semaphore.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/base/platform/semaphore.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -5,7 +5,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "src/base/platform/semaphore.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if V8_OS_MACOSX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED > 1050 && !defined(__ppc__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <dispatch/dispatch.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <mach/mach_init.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <mach/task.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <errno.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -18,6 +24,7 @@ namespace v8 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace base {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if V8_OS_MACOSX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED > 1050 && !defined(__ppc__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Semaphore::Semaphore(int count) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ native_handle_ = dispatch_semaphore_create(count);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -32,13 +39,63 @@ void Semaphore::Wait() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dispatch_semaphore_wait(native_handle_, DISPATCH_TIME_FOREVER);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool Semaphore::WaitFor(const TimeDelta& rel_time) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dispatch_time_t timeout =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dispatch_time(DISPATCH_TIME_NOW, rel_time.InNanoseconds());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return dispatch_semaphore_wait(native_handle_, timeout) == 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else // Fallback code for macOS with no libdispatch borrowed from nodejs12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Semaphore::Semaphore(int count) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ kern_return_t result = semaphore_create(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mach_task_self(), &native_handle_, SYNC_POLICY_FIFO, count);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ DCHECK_EQ(KERN_SUCCESS, result);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ USE(result);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Semaphore::~Semaphore() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ kern_return_t result = semaphore_destroy(mach_task_self(), native_handle_);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ DCHECK_EQ(KERN_SUCCESS, result);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ USE(result);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void Semaphore::Signal() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ kern_return_t result = semaphore_signal(native_handle_);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ DCHECK_EQ(KERN_SUCCESS, result);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ USE(result);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++void Semaphore::Wait() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ while (true) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ kern_return_t result = semaphore_wait(native_handle_);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (result == KERN_SUCCESS) return; // Semaphore was signalled.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ DCHECK_EQ(KERN_ABORTED, result);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++bool Semaphore::WaitFor(const TimeDelta& rel_time) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ TimeTicks now = TimeTicks::Now();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ TimeTicks end = now + rel_time;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ while (true) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ mach_timespec_t ts;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (now >= end) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // Return immediately if semaphore was not signalled.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ts.tv_sec = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ts.tv_nsec = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ts = (end - now).ToMachTimespec();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ kern_return_t result = semaphore_timedwait(native_handle_, ts);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (result == KERN_SUCCESS) return true; // Semaphore was signalled.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ if (result == KERN_OPERATION_TIMED_OUT) return false; // Timeout.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ DCHECK_EQ(KERN_ABORTED, result);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ now = TimeTicks::Now();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif V8_OS_POSIX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Semaphore::Semaphore(int count) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/base/platform/semaphore.h b/src/base/platform/semaphore.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c4937acadd1..74435a36ae7 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/base/platform/semaphore.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/base/platform/semaphore.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -12,7 +12,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if V8_OS_MACOSX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <AvailabilityMacros.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED > 1050 && !defined(__ppc__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <dispatch/dispatch.h> // NOLINT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <mach/semaphore.h> // NOLINT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif V8_OS_POSIX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <semaphore.h> // NOLINT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -50,7 +55,11 @@ class V8_BASE_EXPORT Semaphore final {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool WaitFor(const TimeDelta& rel_time) V8_WARN_UNUSED_RESULT;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if V8_OS_MACOSX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if MAC_OS_X_VERSION_MIN_REQUIRED > 1050 && !defined(__ppc__)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ using NativeHandle = dispatch_semaphore_t;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ using NativeHandle = semaphore_t;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif V8_OS_POSIX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ using NativeHandle = sem_t;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif V8_OS_WIN
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/v8-8.3/files/0005-runtime-utils.h-fix-static_cast.patch b/lang/v8-8.3/files/0005-runtime-utils.h-fix-static_cast.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..aac85bd60d9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/v8-8.3/files/0005-runtime-utils.h-fix-static_cast.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,22 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 87e9a3995ad3a0cd95716b5489b176e4356fe875 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 9 Nov 2023 03:04:09 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 05/12] runtime-utils.h: fix static_cast
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/runtime/runtime-utils.h | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 1 insertion(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/runtime/runtime-utils.h b/src/runtime/runtime-utils.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 170c0bcdbcc..a7e02aee1a8 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/runtime/runtime-utils.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/runtime/runtime-utils.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -136,7 +136,7 @@ static inline ObjectPair MakePair(Object x, Object y) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(V8_TARGET_LITTLE_ENDIAN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return x.ptr() | (static_cast<ObjectPair>(y.ptr()) << 32);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif defined(V8_TARGET_BIG_ENDIAN)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- return y->ptr() | (static_cast<ObjectPair>(x->ptr()) << 32);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return y.ptr() | (static_cast<ObjectPair>(x.ptr()) << 32);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #error Unknown endianness
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/v8-8.3/files/0006-Register-specs-for-powerpc-darwin.patch b/lang/v8-8.3/files/0006-Register-specs-for-powerpc-darwin.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..71f133f502b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/v8-8.3/files/0006-Register-specs-for-powerpc-darwin.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,132 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 04cdc8960c69a6ee50ec708f2cd694babcec5eb1 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 9 Nov 2023 03:10:22 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 06/12] Register specs for powerpc-darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/codegen/ppc/register-ppc.h | 47 +++++++++++++++++++++++++++++++---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/compiler/c-linkage.cc | 9 ++++++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2 files changed, 51 insertions(+), 5 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/codegen/ppc/register-ppc.h b/src/codegen/ppc/register-ppc.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 54e40bde93d..f364967a5f1 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/codegen/ppc/register-ppc.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/codegen/ppc/register-ppc.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -19,19 +19,30 @@ namespace internal {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(r24) V(r25) V(r26) V(r27) V(r28) V(r29) V(r30) V(fp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if V8_EMBEDDED_CONSTANT_POOL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#define ALLOCATABLE_GENERAL_REGISTERS(V) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define ALWAYS_ALLOCATABLE_GENERAL_REGISTERS(V) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(r3) V(r4) V(r5) V(r6) V(r7) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(r8) V(r9) V(r10) V(r14) V(r15) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(r16) V(r17) V(r18) V(r19) V(r20) V(r21) V(r22) V(r23) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(r24) V(r25) V(r26) V(r27) V(r30)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#define ALLOCATABLE_GENERAL_REGISTERS(V) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define ALWAYS_ALLOCATABLE_GENERAL_REGISTERS(V) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(r3) V(r4) V(r5) V(r6) V(r7) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(r8) V(r9) V(r10) V(r14) V(r15) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(r16) V(r17) V(r18) V(r19) V(r20) V(r21) V(r22) V(r23) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(r24) V(r25) V(r26) V(r27) V(r28) V(r30)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// In 32-bit Darwin ABI r13 is just a regular callee-saved register.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_OS_MACOSX && V8_TARGET_ARCH_PPC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define MAYBE_ALLOCATABLE_R13(V) V(r13)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define MAYBE_ALLOCATABLE_R13(V)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define ALLOCATABLE_GENERAL_REGISTERS(V) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ ALWAYS_ALLOCATABLE_GENERAL_REGISTERS(V) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ MAYBE_ALLOCATABLE_R13(V)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define LOW_DOUBLE_REGISTERS(V) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(d0) V(d1) V(d2) V(d3) V(d4) V(d5) V(d6) V(d7) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ V(d8) V(d9) V(d10) V(d11) V(d12) V(d13) V(d14) V(d15)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -78,6 +89,32 @@ const int kNumJSCallerSaved = 9;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int JSCallerSavedCode(int n);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Callee-saved registers preserved when switching from C to JavaScript
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_OS_MACOSX && V8_TARGET_ARCH_PPC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++const RegList kCalleeSaved = 1 << 13 | // r13
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 1 << 14 | // r14
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 1 << 15 | // r15
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 1 << 16 | // r16
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 1 << 17 | // r17
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 1 << 18 | // r18
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 1 << 19 | // r19
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 1 << 20 | // r20
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 1 << 21 | // r21
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 1 << 22 | // r22
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 1 << 23 | // r23
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 1 << 24 | // r24
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 1 << 25 | // r25
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 1 << 26 | // r26
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 1 << 27 | // r27
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 1 << 28 | // r28
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 1 << 29 | // r29
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 1 << 30 | // r20
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 1 << 31; // r31
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++const int kNumCalleeSaved = 19;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const RegList kCalleeSaved = 1 << 14 | // r14
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 << 15 | // r15
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 << 16 | // r16
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -99,6 +136,8 @@ const RegList kCalleeSaved = 1 << 14 | // r14
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const int kNumCalleeSaved = 18;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const RegList kCallerSavedDoubles = 1 << 0 | // d0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 << 1 | // d1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 << 2 | // d2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -159,13 +198,13 @@ const int kStackFrameExtraParamSlot = 2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const int kNumRequiredStackFrameSlots = 12;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const int kStackFrameLRSlot = 2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ const int kStackFrameExtraParamSlot = 12;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#else // AIX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else // AIX and Darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // [0] back chain
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // [1] condition register save area
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // [2] link register save area
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // [3] reserved for compiler
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // [4] reserved by binder
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-// [5] TOC save area
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// [5] TOC save area on AIX; reserved on Darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // [6] Parameter1 save area
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // ...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // [13] Parameter8 save area
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/compiler/c-linkage.cc b/src/compiler/c-linkage.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 3b282b54115..88ec11a081f 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/compiler/c-linkage.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/compiler/c-linkage.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -104,14 +104,21 @@ namespace {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // ===========================================================================
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef V8_TARGET_LITTLE_ENDIAN // ppc64le linux
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define STACK_SHADOW_WORDS 12
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#else // AIX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else // AIX and Darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define STACK_SHADOW_WORDS 14
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define PARAM_REGISTERS r3, r4, r5, r6, r7, r8, r9, r10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if V8_OS_MACOSX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define CALLEE_SAVE_REGISTERS \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ r13.bit() | r14.bit() | r15.bit() | r16.bit() | r17.bit() | r18.bit() | \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ r19.bit() | r20.bit() | r21.bit() | r22.bit() | r23.bit() | r24.bit() | \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ r25.bit() | r26.bit() | r27.bit() | r28.bit() | r29.bit() | r30.bit()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define CALLEE_SAVE_REGISTERS \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ r14.bit() | r15.bit() | r16.bit() | r17.bit() | r18.bit() | r19.bit() | \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ r20.bit() | r21.bit() | r22.bit() | r23.bit() | r24.bit() | r25.bit() | \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ r26.bit() | r27.bit() | r28.bit() | r29.bit() | r30.bit()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define CALLEE_SAVE_FP_REGISTERS \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d14.bit() | d15.bit() | d16.bit() | d17.bit() | d18.bit() | d19.bit() | \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ d20.bit() | d21.bit() | d22.bit() | d23.bit() | d24.bit() | d25.bit() | \
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/v8-8.3/files/0007-platform-posix.cc-for-powerpc-darwin.patch b/lang/v8-8.3/files/0007-platform-posix.cc-for-powerpc-darwin.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..5441b5cceff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/v8-8.3/files/0007-platform-posix.cc-for-powerpc-darwin.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,43 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From eec5197741e7553c21589fc319ea7ca6a58f2fe1 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 9 Nov 2023 03:14:50 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 07/12] platform-posix.cc: for powerpc-darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/base/platform/platform-posix.cc | 8 ++++++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 6 insertions(+), 2 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/base/platform/platform-posix.cc b/src/base/platform/platform-posix.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 1e600c7891b..305b570f1c1 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/base/platform/platform-posix.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/base/platform/platform-posix.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -395,7 +395,7 @@ bool OS::SetPermissions(void* address, size_t size, MemoryPermission access) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // The cost is a syscall that effectively no-ops.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // TODO(erikchen): Fix this to only call MADV_FREE_REUSE when necessary.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // https://crbug.com/823915
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(OS_MACOSX)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(OS_MACOSX) && !(V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (access != OS::MemoryPermission::kNoAccess)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ madvise(address, size, MADV_FREE_REUSE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -406,7 +406,7 @@ bool OS::SetPermissions(void* address, size_t size, MemoryPermission access) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ bool OS::DiscardSystemPages(void* address, size_t size) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DCHECK_EQ(0, reinterpret_cast<uintptr_t>(address) % CommitPageSize());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DCHECK_EQ(0, size % CommitPageSize());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(OS_MACOSX)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(OS_MACOSX) && !(V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // On OSX, MADV_FREE_REUSABLE has comparable behavior to MADV_FREE, but also
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // marks the pages with the reusable bit, which allows both Activity Monitor
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // and memory-infra to correctly track the pages.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -471,7 +471,11 @@ void OS::DebugBreak() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif V8_HOST_ARCH_MIPS64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ asm("break");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(V8_OS_MACOSX)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ __asm__("twge r2,r2");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else // AIX, ELF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ asm("twge 2,2");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif V8_HOST_ARCH_IA32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ asm("int $3");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif V8_HOST_ARCH_X64
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/v8-8.3/files/0008-isolate-data.h-disable-asserts-for-now.patch b/lang/v8-8.3/files/0008-isolate-data.h-disable-asserts-for-now.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..59876e6f213
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/v8-8.3/files/0008-isolate-data.h-disable-asserts-for-now.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,31 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 30037c12dfdf48e674e13c6b8d6b603cb3a9c2ba Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 9 Nov 2023 03:45:43 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 08/12] isolate-data.h: disable asserts for now
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/execution/isolate-data.h | 4 ++++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 4 insertions(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/execution/isolate-data.h b/src/execution/isolate-data.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 2cbc3daa66a..6f0107e5e3b 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/execution/isolate-data.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/execution/isolate-data.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -213,6 +213,9 @@ class IsolateData final {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // cross-compiling to another platform. Otherwise there may be compatibility
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // issues because of different compilers used for snapshot generator and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // actual V8 code.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if !(V8_OS_MACOSX && V8_TARGET_ARCH_PPC)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// FIXME: these asserts fail on Darwin ppc at the moment.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// Again wrong size of bool or spinlock?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void IsolateData::AssertPredictableLayout() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ STATIC_ASSERT(std::is_standard_layout<RootsTable>::value);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ STATIC_ASSERT(std::is_standard_layout<ThreadLocalTop>::value);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -240,6 +243,7 @@ void IsolateData::AssertPredictableLayout() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ kStackIsIterableOffset);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ STATIC_ASSERT(sizeof(IsolateData) == IsolateData::kSize);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } // namespace internal
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } // namespace v8
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/v8-8.3/files/0009-embedded-file-writer-mac-support-powerpc.patch b/lang/v8-8.3/files/0009-embedded-file-writer-mac-support-powerpc.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..87613c21d25
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/v8-8.3/files/0009-embedded-file-writer-mac-support-powerpc.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,123 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From c70a9439a091c6026c500d79be4b5f0afb0ab911 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Fri, 10 Nov 2023 11:40:20 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 09/12] embedded-file-writer-mac: support powerpc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .../platform-embedded-file-writer-mac.cc | 40 ++++++++++++++++++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ .../platform-embedded-file-writer-mac.h | 5 +++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2 files changed, 44 insertions(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/snapshot/embedded/platform-embedded-file-writer-mac.cc b/src/snapshot/embedded/platform-embedded-file-writer-mac.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 234f8a1f485..f27966eba86 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/snapshot/embedded/platform-embedded-file-writer-mac.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/snapshot/embedded/platform-embedded-file-writer-mac.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -17,8 +17,10 @@ const char* DirectiveAsString(DataDirective directive) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ".long";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kQuad:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ".quad";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifndef __POWERPC__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ case kOcta:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return ".octa";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ UNREACHABLE();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -50,23 +52,40 @@ void PlatformEmbeddedFileWriterMac::DeclarePointerToSymbol(const char* name,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void PlatformEmbeddedFileWriterMac::DeclareSymbolGlobal(const char* name) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __POWERPC__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // Follow AIX here.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fprintf(fp_, ".globl _%s\n", name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // TODO(jgruber): Investigate switching to .globl. Using .private_extern
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // prevents something along the compilation chain from messing with the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // embedded blob. Using .global here causes embedded blob hash verification
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // failures at runtime.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fprintf(fp_, ".private_extern _%s\n", name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void PlatformEmbeddedFileWriterMac::AlignToCodeAlignment() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __POWERPC__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fprintf(fp_, ".align 5\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fprintf(fp_, ".balign 32\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void PlatformEmbeddedFileWriterMac::AlignToDataAlignment() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __POWERPC__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fprintf(fp_, ".align 3\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fprintf(fp_, ".balign 8\n");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void PlatformEmbeddedFileWriterMac::Comment(const char* string) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __POWERPC__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fprintf(fp_, "; %s\n", string);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fprintf(fp_, "// %s\n", string);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void PlatformEmbeddedFileWriterMac::DeclareLabel(const char* name) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -75,14 +94,17 @@ void PlatformEmbeddedFileWriterMac::DeclareLabel(const char* name) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void PlatformEmbeddedFileWriterMac::SourceInfo(int fileid, const char* filename,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int line) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __POWERPC__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ fprintf(fp_, ".line %d, \"%s\"\n", line, filename);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fprintf(fp_, ".loc %d %d\n", fileid, line);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // TODO(mmarchini): investigate emitting size annotations for OS X
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void PlatformEmbeddedFileWriterMac::DeclareFunctionBegin(const char* name,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ uint32_t size) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DeclareLabel(name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // TODO(mvstanton): Investigate the proper incantations to mark the label as
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // a function on OSX.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -107,5 +129,21 @@ int PlatformEmbeddedFileWriterMac::IndentedDataDirective(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return fprintf(fp_, " %s ", DirectiveAsString(directive));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __POWERPC__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++DataDirective PlatformEmbeddedFileWriterMac::ByteChunkDataDirective() const {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // PPC uses a fixed 4 byte instruction set, using .long
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // to prevent any unnecessary padding.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return kLong;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++int PlatformEmbeddedFileWriterMac::WriteByteChunk(const uint8_t* data) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ DCHECK_EQ(ByteChunkDataDirective(), kLong);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ const uint32_t* long_ptr = reinterpret_cast<const uint32_t*>(data);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ return HexLiteral(*long_ptr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif // __POWERPC__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } // namespace internal
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } // namespace v8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/snapshot/embedded/platform-embedded-file-writer-mac.h b/src/snapshot/embedded/platform-embedded-file-writer-mac.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 76780d75f36..d69225ec3d7 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/snapshot/embedded/platform-embedded-file-writer-mac.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/snapshot/embedded/platform-embedded-file-writer-mac.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -47,6 +47,11 @@ class PlatformEmbeddedFileWriterMac : public PlatformEmbeddedFileWriterBase {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int IndentedDataDirective(DataDirective directive) override;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef __POWERPC__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ DataDirective ByteChunkDataDirective() const override;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ int WriteByteChunk(const uint8_t* data) override;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ private:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void DeclareSymbolGlobal(const char* name);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/v8-8.3/files/0010-Add-some-missing-headers-and-use-cinttypes-consisten.patch b/lang/v8-8.3/files/0010-Add-some-missing-headers-and-use-cinttypes-consisten.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..4861e670886
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/v8-8.3/files/0010-Add-some-missing-headers-and-use-cinttypes-consisten.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,283 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 39dd16e8727f84f30b435a46d8b28ebadda500e6 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Fri, 3 Nov 2023 18:27:54 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 10/12] Add some missing headers and use cinttypes consistently
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/base/logging.h | 1 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/codegen/arm64/constants-arm64.h | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/codegen/mips/constants-mips.h | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/codegen/mips64/constants-mips64.h | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/inspector/v8-runtime-agent-impl.cc | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/inspector/v8-string-conversions.h | 1 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/wasm/module-instantiate.cc | 2 ++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ third_party/wasm-api/example/callback.c | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ third_party/wasm-api/example/finalize.c | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ third_party/wasm-api/example/global.c | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ third_party/wasm-api/example/hello.c | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ third_party/wasm-api/example/hostref.c | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ third_party/wasm-api/example/memory.c | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ third_party/wasm-api/example/multi.c | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ third_party/wasm-api/example/reflect.c | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ third_party/wasm-api/example/serialize.c | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ third_party/wasm-api/example/start.c | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ third_party/wasm-api/example/table.c | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ third_party/wasm-api/example/threads.c | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ third_party/wasm-api/example/trap.c | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 20 files changed, 21 insertions(+), 17 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/base/logging.h b/src/base/logging.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 790018c98e9..7840c02de9e 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/base/logging.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/base/logging.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -8,6 +8,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <cstring>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <sstream>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cstdint>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "src/base/base-export.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "src/base/build_config.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/codegen/arm64/constants-arm64.h b/src/codegen/arm64/constants-arm64.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index e63962993a7..e47fcb75f4b 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/codegen/arm64/constants-arm64.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/codegen/arm64/constants-arm64.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -23,7 +23,7 @@ STATIC_ASSERT(sizeof(1) == sizeof(int32_t));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef __STDC_FORMAT_MACROS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define __STDC_FORMAT_MACROS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <inttypes.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cinttypes>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace v8 {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ namespace internal {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/codegen/mips/constants-mips.h b/src/codegen/mips/constants-mips.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 67d12155a31..b5395217122 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/codegen/mips/constants-mips.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/codegen/mips/constants-mips.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -128,7 +128,7 @@ const uint32_t kLeastSignificantByteInInt32Offset = 3;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef __STDC_FORMAT_MACROS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define __STDC_FORMAT_MACROS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <inttypes.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cinttypes>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Defines constants and accessor classes to assemble, disassemble and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // simulate MIPS32 instructions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/codegen/mips64/constants-mips64.h b/src/codegen/mips64/constants-mips64.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 751fa3c35ed..bea81f810ad 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/codegen/mips64/constants-mips64.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/codegen/mips64/constants-mips64.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -89,7 +89,7 @@ const uint32_t kLessSignificantWordInDoublewordOffset = 4;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifndef __STDC_FORMAT_MACROS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define __STDC_FORMAT_MACROS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <inttypes.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cinttypes>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Defines constants and accessor classes to assemble, disassemble and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // simulate MIPS32 instructions.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/inspector/v8-runtime-agent-impl.cc b/src/inspector/v8-runtime-agent-impl.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 5a2a49154c1..67a10577b94 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/inspector/v8-runtime-agent-impl.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/inspector/v8-runtime-agent-impl.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -30,7 +30,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "src/inspector/v8-runtime-agent-impl.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <inttypes.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cinttypes>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "../../third_party/inspector_protocol/crdtp/json.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "src/debug/debug-interface.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/inspector/v8-string-conversions.h b/src/inspector/v8-string-conversions.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index c1d69c18f0a..66b3564ccad 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/inspector/v8-string-conversions.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/inspector/v8-string-conversions.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -6,6 +6,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define V8_INSPECTOR_V8_STRING_CONVERSIONS_H_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cstdint>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Conversion routines between UT8 and UTF16, used by string-16.{h,cc}. You may
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // want to use string-16.h directly rather than these.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/wasm/module-instantiate.cc b/src/wasm/module-instantiate.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 08bd8ff8718..bb8e6f955bb 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/wasm/module-instantiate.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/wasm/module-instantiate.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -4,6 +4,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "src/wasm/module-instantiate.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cinttypes>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "src/asmjs/asm-js.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "src/logging/counters.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "src/numbers/conversions-inl.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/third_party/wasm-api/example/callback.c b/third_party/wasm-api/example/callback.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index e17429bdd24..ccacdd39040 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/third_party/wasm-api/example/callback.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/third_party/wasm-api/example/callback.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,7 +1,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <inttypes.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cinttypes>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "wasm.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/third_party/wasm-api/example/finalize.c b/third_party/wasm-api/example/finalize.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 247368f28eb..b597b394238 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/third_party/wasm-api/example/finalize.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/third_party/wasm-api/example/finalize.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,7 +1,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <inttypes.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cinttypes>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "wasm.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/third_party/wasm-api/example/global.c b/third_party/wasm-api/example/global.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 5fe357cd4c1..53034eb4fdb 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/third_party/wasm-api/example/global.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/third_party/wasm-api/example/global.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,7 +1,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <inttypes.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cinttypes>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "wasm.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/third_party/wasm-api/example/hello.c b/third_party/wasm-api/example/hello.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index e4ef9837ffc..eb48ac0cda0 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/third_party/wasm-api/example/hello.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/third_party/wasm-api/example/hello.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,7 +1,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <inttypes.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cinttypes>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "wasm.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/third_party/wasm-api/example/hostref.c b/third_party/wasm-api/example/hostref.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index b70218e6105..888a46338fc 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/third_party/wasm-api/example/hostref.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/third_party/wasm-api/example/hostref.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,7 +1,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <inttypes.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cinttypes>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "wasm.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/third_party/wasm-api/example/memory.c b/third_party/wasm-api/example/memory.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 2c020c45974..855b98b4a92 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/third_party/wasm-api/example/memory.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/third_party/wasm-api/example/memory.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,7 +1,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <inttypes.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cinttypes>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "wasm.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/third_party/wasm-api/example/multi.c b/third_party/wasm-api/example/multi.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 7bd4676bae7..6cfc02492fe 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/third_party/wasm-api/example/multi.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/third_party/wasm-api/example/multi.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,7 +1,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <inttypes.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cinttypes>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "wasm.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/third_party/wasm-api/example/reflect.c b/third_party/wasm-api/example/reflect.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 15e0165d191..8d8d4d947c3 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/third_party/wasm-api/example/reflect.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/third_party/wasm-api/example/reflect.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,7 +1,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <inttypes.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cinttypes>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "wasm.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/third_party/wasm-api/example/serialize.c b/third_party/wasm-api/example/serialize.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 4522c00dff5..64fcf8fa59f 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/third_party/wasm-api/example/serialize.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/third_party/wasm-api/example/serialize.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,7 +1,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <inttypes.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cinttypes>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "wasm.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/third_party/wasm-api/example/start.c b/third_party/wasm-api/example/start.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 42fa317490b..0746011bdaa 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/third_party/wasm-api/example/start.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/third_party/wasm-api/example/start.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,7 +1,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <inttypes.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cinttypes>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "wasm.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/third_party/wasm-api/example/table.c b/third_party/wasm-api/example/table.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0ff6617f729..daef99004cf 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/third_party/wasm-api/example/table.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/third_party/wasm-api/example/table.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,7 +1,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <inttypes.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cinttypes>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "wasm.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/third_party/wasm-api/example/threads.c b/third_party/wasm-api/example/threads.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 9f9d5894a66..be91f5a5da5 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/third_party/wasm-api/example/threads.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/third_party/wasm-api/example/threads.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,4 +1,4 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <inttypes.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cinttypes>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/third_party/wasm-api/example/trap.c b/third_party/wasm-api/example/trap.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 975d6f8599f..34c077484c5 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/third_party/wasm-api/example/trap.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/third_party/wasm-api/example/trap.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1,7 +1,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <inttypes.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cinttypes>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include "wasm.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/v8-8.3/files/0011-libsampler-support-powerpc-and-aarch64.patch b/lang/v8-8.3/files/0011-libsampler-support-powerpc-and-aarch64.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..72f75134b55
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/v8-8.3/files/0011-libsampler-support-powerpc-and-aarch64.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,31 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 57b1b88153c8fc255068119333dabc15919c49a6 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 9 Nov 2023 02:53:06 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 11/12] libsampler: support powerpc and aarch64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/libsampler/sampler.cc | 11 ++++++++++-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 10 insertions(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/libsampler/sampler.cc b/src/libsampler/sampler.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index e2091ceb32a..963483f726d 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/libsampler/sampler.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/libsampler/sampler.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -468,7 +468,16 @@ void SignalHandler::FillRegisterState(void* context, RegisterState* state) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ state->pc = reinterpret_cast<void*>(mcontext->__ss.__eip);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ state->sp = reinterpret_cast<void*>(mcontext->__ss.__esp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ state->fp = reinterpret_cast<void*>(mcontext->__ss.__ebp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif // V8_HOST_ARCH_IA32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif V8_HOST_ARCH_ARM64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ state->pc = reinterpret_cast<void*>(arm_thread_state64_get_pc(mcontext->__ss));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ state->sp = reinterpret_cast<void*>(arm_thread_state64_get_sp(mcontext->__ss));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ state->fp = reinterpret_cast<void*>(arm_thread_state64_get_fp(mcontext->__ss));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#elif V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ state->pc = reinterpret_cast<void*>(mcontext->__ss.__srr0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ state->sp = reinterpret_cast<void*>(mcontext->__ss.__r1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ state->fp = reinterpret_cast<void*>(mcontext->__ss.__r30);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ state->lr = reinterpret_cast<void*>(mcontext->__ss.__lr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif // V8_HOST_ARCH_*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #elif V8_OS_FREEBSD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if V8_HOST_ARCH_IA32
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ state->pc = reinterpret_cast<void*>(mcontext.mc_eip);
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/v8-8.3/files/0012-macro-assembler-ppc.h-fix-asserts-for-ppc.patch b/lang/v8-8.3/files/0012-macro-assembler-ppc.h-fix-asserts-for-ppc.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..7e979b60a6a
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/v8-8.3/files/0012-macro-assembler-ppc.h-fix-asserts-for-ppc.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,91 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 55a34378b2e5983ae0dc2de26e1b1d6dfd928467 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 9 Nov 2023 04:37:43 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH 12/12] macro-assembler-ppc.h: fix asserts for ppc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/codegen/ppc/macro-assembler-ppc.cc | 13 +++++++------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/codegen/ppc/macro-assembler-ppc.h | 4 ++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 2 files changed, 9 insertions(+), 8 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/codegen/ppc/macro-assembler-ppc.cc b/src/codegen/ppc/macro-assembler-ppc.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 99d1e819f75..aaa268c2a66 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/codegen/ppc/macro-assembler-ppc.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/codegen/ppc/macro-assembler-ppc.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2367,7 +2367,7 @@ void MacroAssembler::Xor(Register ra, Register rs, const Operand& rb,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void MacroAssembler::CmpSmiLiteral(Register src1, Smi smi, Register scratch,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CRegister cr) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(V8_COMPRESS_POINTERS) || defined(V8_31BIT_SMIS_ON_64BIT_ARCH)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(V8_COMPRESS_POINTERS) || defined(V8_31BIT_SMIS_ON_64BIT_ARCH) || defined(V8_TARGET_ARCH_PPC)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Cmpi(src1, Operand(smi), scratch, cr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ LoadSmiLiteral(scratch, smi);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2377,7 +2377,7 @@ void MacroAssembler::CmpSmiLiteral(Register src1, Smi smi, Register scratch,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void MacroAssembler::CmplSmiLiteral(Register src1, Smi smi, Register scratch,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CRegister cr) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(V8_COMPRESS_POINTERS) || defined(V8_31BIT_SMIS_ON_64BIT_ARCH)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(V8_COMPRESS_POINTERS) || defined(V8_31BIT_SMIS_ON_64BIT_ARCH) || defined(V8_TARGET_ARCH_PPC)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Cmpli(src1, Operand(smi), scratch, cr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ LoadSmiLiteral(scratch, smi);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2387,7 +2387,7 @@ void MacroAssembler::CmplSmiLiteral(Register src1, Smi smi, Register scratch,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void MacroAssembler::AddSmiLiteral(Register dst, Register src, Smi smi,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Register scratch) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(V8_COMPRESS_POINTERS) || defined(V8_31BIT_SMIS_ON_64BIT_ARCH)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(V8_COMPRESS_POINTERS) || defined(V8_31BIT_SMIS_ON_64BIT_ARCH) || defined(V8_TARGET_ARCH_PPC)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Add(dst, src, static_cast<intptr_t>(smi.ptr()), scratch);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ LoadSmiLiteral(scratch, smi);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2397,7 +2397,7 @@ void MacroAssembler::AddSmiLiteral(Register dst, Register src, Smi smi,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void MacroAssembler::SubSmiLiteral(Register dst, Register src, Smi smi,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Register scratch) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(V8_COMPRESS_POINTERS) || defined(V8_31BIT_SMIS_ON_64BIT_ARCH)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(V8_COMPRESS_POINTERS) || defined(V8_31BIT_SMIS_ON_64BIT_ARCH) || defined(V8_TARGET_ARCH_PPC)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Add(dst, src, -(static_cast<intptr_t>(smi.ptr())), scratch);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ LoadSmiLiteral(scratch, smi);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2407,7 +2407,7 @@ void MacroAssembler::SubSmiLiteral(Register dst, Register src, Smi smi,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void MacroAssembler::AndSmiLiteral(Register dst, Register src, Smi smi,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Register scratch, RCBit rc) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(V8_COMPRESS_POINTERS) || defined(V8_31BIT_SMIS_ON_64BIT_ARCH)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(V8_COMPRESS_POINTERS) || defined(V8_31BIT_SMIS_ON_64BIT_ARCH) || defined(V8_TARGET_ARCH_PPC)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ And(dst, src, Operand(smi), rc);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ LoadSmiLiteral(scratch, smi);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2916,7 +2916,8 @@ void TurboAssembler::LoadEntryFromBuiltinIndex(Register builtin_index) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // The builtin_index register contains the builtin index as a Smi.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Untagging is folded into the indexing operand below.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(V8_COMPRESS_POINTERS) || defined(V8_31BIT_SMIS_ON_64BIT_ARCH)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ // TODO: verify this specifically.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(V8_COMPRESS_POINTERS) || defined(V8_31BIT_SMIS_ON_64BIT_ARCH) || defined(V8_TARGET_ARCH_PPC)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ShiftLeftImm(builtin_index, builtin_index,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ Operand(kSystemPointerSizeLog2 - kSmiShift));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/codegen/ppc/macro-assembler-ppc.h b/src/codegen/ppc/macro-assembler-ppc.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 2c46124b24d..7134db3e1b4 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/codegen/ppc/macro-assembler-ppc.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/codegen/ppc/macro-assembler-ppc.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -892,7 +892,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void SmiToPtrArrayOffset(Register dst, Register src) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if defined(V8_COMPRESS_POINTERS) || defined(V8_31BIT_SMIS_ON_64BIT_ARCH)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if defined(V8_COMPRESS_POINTERS) || defined(V8_31BIT_SMIS_ON_64BIT_ARCH) || defined(V8_TARGET_ARCH_PPC)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ STATIC_ASSERT(kSmiTag == 0 && kSmiShift < kPointerSizeLog2);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ ShiftLeftImm(dst, src, Operand(kPointerSizeLog2 - kSmiShift));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -911,7 +911,7 @@ class V8_EXPORT_PRIVATE MacroAssembler : public TurboAssembler {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void AssertNotSmi(Register object);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ void AssertSmi(Register object);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#if !defined(V8_COMPRESS_POINTERS) && !defined(V8_31BIT_SMIS_ON_64BIT_ARCH)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if !defined(V8_COMPRESS_POINTERS) && !defined(V8_31BIT_SMIS_ON_64BIT_ARCH) && !defined(V8_TARGET_ARCH_PPC)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Ensure it is permissible to read/write int value directly from
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // upper half of the smi.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ STATIC_ASSERT(kSmiTag == 0);
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/v8-8.3/files/0013-CMakeLists-support-ppc-and-aarch64.patch b/lang/v8-8.3/files/0013-CMakeLists-support-ppc-and-aarch64.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..041973493ce
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/v8-8.3/files/0013-CMakeLists-support-ppc-and-aarch64.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,122 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From dc5344c90503e2ae1363d2a8e78f6ff315ba9a9f Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Tue, 7 Nov 2023 05:21:35 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] CMakeLists: support ppc and aarch64
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CMakeLists.txt | 61 +++++++++++++++++++++++++++++++++++++++++++++-----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 55 insertions(+), 6 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/CMakeLists.txt b/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 176eed83..d2313b07 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -27,7 +27,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (NOT CMAKE_C_STANDARD)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- set(CMAKE_C_STANDARD 90)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ set(CMAKE_C_STANDARD 99)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set(is-freebsd $<PLATFORM_ID:FreeBSD>)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -48,15 +48,20 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set(is-arm 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set(is-arm64 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set(is-ia32 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++set(is-x64 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set(is-mips 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set(is-mips64 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set(is-ppc 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++set(is-ppc64 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++set(is-s390 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-set(is-s390 $<STREQUAL:${CMAKE_SYSTEM_PROCESSOR},S390>)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-string(CONCAT is-x64 $<OR:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- $<STREQUAL:${CMAKE_SYSTEM_PROCESSOR},AMD64>,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- $<STREQUAL:${CMAKE_SYSTEM_PROCESSOR},x86_64>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+->)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++if (CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "ppc" OR (APPLE AND CMAKE_OSX_ARCHITECTURES MATCHES "ppc"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ set(is-ppc 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++elseif (CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "arm")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ set(is-arm64 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++else ()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ set(is-x64 1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++endif ()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ option(V8_ENABLE_CONCURRENT_MARKING "Enable concurrent marking" ON)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ option(V8_ENABLE_I18N "Enable Internationalization support")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -65,6 +70,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ v8_defines
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $<${is-darwin}:V8_HAVE_TARGET_OS>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $<${is-darwin}:V8_TARGET_OS_MACOSX>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-darwin}:V8_OS_MACOSX>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $<${is-linux}:V8_HAVE_TARGET_OS>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $<${is-linux}:V8_TARGET_OS_LINUX>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $<${is-win}:V8_HAVE_TARGET_OS>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -74,6 +80,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $<$<OR:${is-win},${is-x64}>:V8_OS_WINX64>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $<$<BOOL:${V8_ENABLE_CONCURRENT_MARKING}>:V8_CONCURRENT_MARKING>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $<${is-win}:V8_OS_WIN32>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:V8_TARGET_ARCH_ARM64>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-ppc}:V8_TARGET_ARCH_PPC>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-ppc64}:V8_TARGET_ARCH_PPC64>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set(D ${PROJECT_SOURCE_DIR}/v8)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -211,6 +220,44 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $<$<AND:${is-x64},${is-win}>:${D}/src/diagnostics/unwinding-info-win64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $<$<AND:${is-x64},${is-win}>:${D}/src/trap-handler/handler-inside-win.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $<$<AND:${is-x64},${is-win}>:${D}/src/trap-handler/handler-outside-win.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/codegen/arm64/assembler-arm64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/codegen/arm64/cpu-arm64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/codegen/arm64/decoder-arm64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/codegen/arm64/instructions-arm64-constants.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/codegen/arm64/instructions-arm64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/codegen/arm64/interface-descriptors-arm64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/codegen/arm64/macro-assembler-arm64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/codegen/arm64/register-arm64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/codegen/arm64/utils-arm64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/compiler/backend/arm64/code-generator-arm64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/compiler/backend/arm64/instruction-scheduler-arm64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/compiler/backend/arm64/instruction-selector-arm64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/compiler/backend/arm64/unwinding-info-writer-arm64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/debug/arm64/debug-arm64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/deoptimizer/arm64/deoptimizer-arm64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/diagnostics/arm64/disasm-arm64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/diagnostics/arm64/eh-frame-arm64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/execution/arm64/frame-constants-arm64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/execution/arm64/pointer-auth-arm64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/execution/arm64/simulator-arm64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/execution/arm64/simulator-logic-arm64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:${D}/src/regexp/arm64/regexp-macro-assembler-arm64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-ppc}:${D}/src/codegen/ppc/assembler-ppc.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-ppc}:${D}/src/codegen/ppc/constants-ppc.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-ppc}:${D}/src/codegen/ppc/cpu-ppc.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-ppc}:${D}/src/codegen/ppc/interface-descriptors-ppc.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-ppc}:${D}/src/codegen/ppc/macro-assembler-ppc.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-ppc}:${D}/src/compiler/backend/ppc/code-generator-ppc.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-ppc}:${D}/src/compiler/backend/ppc/instruction-scheduler-ppc.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-ppc}:${D}/src/compiler/backend/ppc/instruction-selector-ppc.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-ppc}:${D}/src/compiler/backend/ppc/unwinding-info-writer-ppc.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-ppc}:${D}/src/debug/ppc/debug-ppc.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-ppc}:${D}/src/deoptimizer/ppc/deoptimizer-ppc.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-ppc}:${D}/src/diagnostics/ppc/disasm-ppc.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-ppc}:${D}/src/diagnostics/ppc/eh-frame-ppc.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-ppc}:${D}/src/execution/ppc/frame-constants-ppc.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-ppc}:${D}/src/execution/ppc/simulator-ppc.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-ppc}:${D}/src/regexp/ppc/regexp-macro-assembler-ppc.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $<${is-x64}:${D}/src/codegen/x64/assembler-x64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $<${is-x64}:${D}/src/codegen/x64/cpu-x64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $<${is-x64}:${D}/src/codegen/x64/interface-descriptors-x64.cc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -452,7 +499,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mksnapshot
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --embedded_src ${PROJECT_BINARY_DIR}/embedded.S
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ --startup_src ${PROJECT_BINARY_DIR}/snapshot.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-arm64}:--target_arch=arm64>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $<${is-x64}:--target_arch=x64>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-ppc}:--target_arch=ppc>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ $<${is-ppc64}:--target_arch=ppc64>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $<$<PLATFORM_ID:Darwin>:--target_os=mac>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $<$<PLATFORM_ID:Linux>:--target_os=linux>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ $<$<PLATFORM_ID:Windows>:--target_os=win>
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/lang/v8-8.3/files/0014-tnode.h-backport-fix-for-is_convertible.patch b/lang/v8-8.3/files/0014-tnode.h-backport-fix-for-is_convertible.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..69b6dd3e5f1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/lang/v8-8.3/files/0014-tnode.h-backport-fix-for-is_convertible.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,25 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From fd25fb7399d22130b40a936f29a37b1af688d358 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: barracuda156 <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Thu, 9 Nov 2023 03:19:08 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] tnode.h: backport fix for is_convertible
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/codegen/tnode.h | 5 +++--
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 3 insertions(+), 2 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/codegen/tnode.h b/src/codegen/tnode.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ecf9afab482..90592c98475 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- a/v8/src/codegen/tnode.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ b/v8/src/codegen/tnode.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -252,8 +252,9 @@ class int31_t {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ template <class T, class U>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct is_subtype {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static const bool value =
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std::is_base_of<U, T>::value || (std::is_same<U, MaybeObject>::value &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+- std::is_convertible<T, Object>::value);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std::disjunction<std::is_base_of<U, T>,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std::conjunction<std::is_same<U, MaybeObject>,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ std::is_convertible<T, Object>>>::value;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ template <class T1, class T2, class U>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ struct is_subtype<UnionT<T1, T2>, U> {
</span></pre><pre style='margin:0'>
</pre>