<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>