aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRonald Klop <ronald-lists@klop.ws>2022-09-13 16:30:04 +0000
committerNeel Chauhan <nc@FreeBSD.org>2022-09-13 16:30:04 +0000
commit50a4f20f0df36cad4ba09fa84c70078665e01e3d (patch)
treea531481a9f625af61abed5931633a7badbd10662
parent155822900e58dc3a1a830ac2d56bbe06b051f544 (diff)
downloadports-50a4f20f0df36cad4ba09fa84c70078665e01e3d.tar.gz
ports-50a4f20f0df36cad4ba09fa84c70078665e01e3d.zip
databases/mongodb60: New port
PR: 266394
-rw-r--r--databases/Makefile1
-rw-r--r--databases/mongodb60/Makefile99
-rw-r--r--databases/mongodb60/distinfo3
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src0.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src1.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src10.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src11.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src12.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src13.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src14.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src15.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src16.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src17.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src18.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src19.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src2.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src20.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src21.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src22.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src23.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src24.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src25.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src26.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src27.cpp41
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src3.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src4.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src5.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src6.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src7.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src8.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src9.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_debugger_Unified__cpp__js__src__debugger0.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_debugger_Unified__cpp__js__src__debugger1.cpp32
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend0.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend1.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend2.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend3.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend4.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend5.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend6.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_gc_Unified__cpp__js__src__gc0.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_gc_Unified__cpp__js__src__gc1.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_gc_Unified__cpp__js__src__gc2.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_gc_Unified__cpp__js__src__gc3.cpp14
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_irregexp_Unified__cpp__js__src__irregexp0.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_irregexp_Unified__cpp__js__src__irregexp1.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_irregexp_Unified__cpp__js__src__irregexp2.cpp23
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit0.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit1.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit10.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit11.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit12.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit13.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit14.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit15.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit2.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit3.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit4.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit5.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit6.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit7.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit8.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit9.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_js-confdefs.h85
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_wasm_Unified__cpp__js__src__wasm0.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_wasm_Unified__cpp__js__src__wasm1.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_wasm_Unified__cpp__js__src__wasm2.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_wasm_Unified__cpp__js__src__wasm3.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_wasm_Unified__cpp__js__src__wasm4.cpp59
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_include_frontend_ReservedWordsGenerated.h363
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_include_gc_StatsPhasesGenerated.h193
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_include_jit_CacheIROpsGenerated.h12512
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_include_jit_LOpcodesGenerated.h571
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_include_jit_MIROpsGenerated.h2662
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_include_js-confdefs.h85
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_include_js-config.h80
-rw-r--r--databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_include_selfhosted.out.h22
-rw-r--r--databases/mongodb60/files/mongod.in53
-rw-r--r--databases/mongodb60/files/patch-SConstruct38
-rw-r--r--databases/mongodb60/files/patch-buildscripts_scons.py25
-rw-r--r--databases/mongodb60/files/patch-rpm_mongod.conf25
-rw-r--r--databases/mongodb60/files/patch-src_mongo_platform_process__id.cpp24
-rw-r--r--databases/mongodb60/files/patch-src_third__party_mozjs_gen-config.sh30
-rw-r--r--databases/mongodb60/files/patch-src_third__party_mozjs_get-sources.sh14
-rw-r--r--databases/mongodb60/pkg-descr3
-rw-r--r--databases/mongodb60/pkg-plist7
86 files changed, 20604 insertions, 0 deletions
diff --git a/databases/Makefile b/databases/Makefile
index ecbe629ec27e..26a411d3e662 100644
--- a/databases/Makefile
+++ b/databases/Makefile
@@ -191,6 +191,7 @@
SUBDIR += mongodb42-tools
SUBDIR += mongodb44
SUBDIR += mongodb50
+ SUBDIR += mongodb60
SUBDIR += mroonga
SUBDIR += mtop
SUBDIR += mydumper
diff --git a/databases/mongodb60/Makefile b/databases/mongodb60/Makefile
new file mode 100644
index 000000000000..dc4d6a459862
--- /dev/null
+++ b/databases/mongodb60/Makefile
@@ -0,0 +1,99 @@
+PORTNAME= mongodb
+DISTVERSIONPREFIX= r
+DISTVERSION= 6.0.1
+CATEGORIES= databases net
+PKGNAMESUFFIX= ${DISTVERSION:R:S/.//}
+
+MAINTAINER= ronald-lists@klop.ws
+COMMENT= Distributed document-oriented "NoSQL" database (6.0.x Branch)
+WWW= https://docs.mongodb.com/v6.0/
+
+LICENSE= APACHE20 SSPLv1 # mongodb is SSPLv1, C++ driver is APACHE20
+LICENSE_COMB= multi
+LICENSE_NAME_SSPLv1= Server Side Public License Version 1
+LICENSE_FILE_SSPLv1= ${WRKSRC}/LICENSE-Community.txt
+LICENSE_PERMS_SSPLv1= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
+
+ONLY_FOR_ARCHS= aarch64 amd64
+ONLY_FOR_ARCHS_REASON= only ported to amd64 and aarch64 on FreeBSD; upstream supports arm64, ppc64le, s390x, and x86-64
+
+BUILD_DEPENDS= ${LOCALBASE}/bin/ar:devel/binutils \
+ ${PYTHON_PKGNAMEPREFIX}cheetah3>0:devel/py-cheetah3@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}packaging>0:devel/py-packaging@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}psutil>0:sysutils/py-psutil@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}pymongo>0:databases/pymongo@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}yaml>=3.11:devel/py-yaml@${PY_FLAVOR}
+LIB_DEPENDS= libcurl.so:ftp/curl \
+ libpcre.so:devel/pcre \
+ libsnappy.so:archivers/snappy
+
+USES= compiler:c++17-lang cpe python:3.5+,build scons shebangfix
+USE_GITHUB= yes
+GH_ACCOUNT= mongodb
+GH_PROJECT= mongo
+USE_RC_SUBR= mongod
+
+SHEBANG_FILES= buildscripts/scons.py
+python_OLD_CMD= @python_interpreter@
+
+CONFLICTS_INSTALL= mongodb[0-9][0-9]
+
+USERS= mongodb
+GROUPS= mongodb
+
+OPTIONS_DEFINE= LTO SASL SSL
+OPTIONS_DEFAULT= LTO SASL SSL
+
+MAKE_ARGS= ${MAKE_JOBS_NUMBER} \
+ --cxx-std=17 \
+ --disable-warnings-as-errors \
+ --libc++ \
+ --runtime-hardening=on \
+ --use-system-pcre \
+ --use-system-snappy \
+ --use-system-zlib \
+ -j \
+ AR=${PREFIX}/bin/ar \
+ MONGO_VERSION=${DISTVERSION} \
+ VERBOSE=on
+
+LTO_MAKE_ARGS= --lto=on
+
+SASL_LIB_DEPENDS= libsasl2.so:security/cyrus-sasl2
+SASL_MAKE_ARGS= --use-sasl-client
+
+SSL_USES= ssl
+SSL_MAKE_ARGS= --ssl
+
+.include <bsd.port.pre.mk>
+
+.if ${ARCH} == aarch64 || ${ARCH} == powerpc64le
+EXTRA_PATCHES= ${FILESDIR}/${ARCH}
+.endif
+
+ALL_TARGET= install-core
+
+# This ports is only following the Major Release.
+# https://docs.mongodb.com/manual/reference/versioning/
+PORTSCOUT= limit:^6\.0\.
+
+CPE_PRODUCT= mongodb
+
+#pre-patch:
+# ${MV} ${WRKSRC}/src/third_party/wiredtiger/src/checksum/power8/crc32.sx ${WRKSRC}/src/third_party/wiredtiger/src/checksum/power8/crc32.S
+
+do-build:
+ ${WRKSRC}/buildscripts/scons.py -C ${WRKSRC} ${MAKE_ARGS}
+
+do-install:
+.for f in mongod mongos
+ ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/${f}
+.endfor
+ ${INSTALL_DATA} ${WRKSRC}/rpm/mongod.conf ${STAGEDIR}${PREFIX}/etc/mongodb.conf.sample
+ ${MKDIR} ${STAGEDIR}${DOCSDIR}
+.for doc in LICENSE-Community.txt MPL-2 README THIRD-PARTY-NOTICES
+ ${MV} ${STAGEDIR}${PREFIX}/${doc} ${STAGEDIR}${DOCSDIR}/
+.endfor
+ ${RM} ${STAGEDIR}${PREFIX}/bin/resmoke.py
+
+.include <bsd.port.post.mk>
diff --git a/databases/mongodb60/distinfo b/databases/mongodb60/distinfo
new file mode 100644
index 000000000000..b1ae09f8b522
--- /dev/null
+++ b/databases/mongodb60/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1662628894
+SHA256 (mongodb-mongo-r6.0.1_GH0.tar.gz) = 8b6ed047a61b6172756810c906b2b182761f6c55c8ac34c9a60f41347f1659aa
+SIZE (mongodb-mongo-r6.0.1_GH0.tar.gz) = 90452293
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src0.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src0.cpp
new file mode 100644
index 000000000000..de6b6df13358
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src0.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src0.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src0.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "builtin/Array.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/Array.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/Array.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/AtomicsObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/AtomicsObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/AtomicsObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/BigInt.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/BigInt.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/BigInt.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/Boolean.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/Boolean.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/Boolean.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/DataViewObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/DataViewObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/DataViewObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/Eval.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/Eval.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/Eval.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src1.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src1.cpp
new file mode 100644
index 000000000000..b9a68c835e01
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src1.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src1.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src1.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "builtin/FinalizationRegistryObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/FinalizationRegistryObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/FinalizationRegistryObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/JSON.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/JSON.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/JSON.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/MapObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/MapObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/MapObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/ModuleObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/ModuleObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/ModuleObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/Object.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/Object.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/Object.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/Profilers.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/Profilers.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/Profilers.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src10.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src10.cpp
new file mode 100644
index 000000000000..3f7df1be215f
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src10.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src10.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src10.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "proxy/Wrapper.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "proxy/Wrapper.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "proxy/Wrapper.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "threading/Mutex.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "threading/Mutex.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "threading/Mutex.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "threading/ProtectedData.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "threading/ProtectedData.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "threading/ProtectedData.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "threading/Thread.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "threading/Thread.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "threading/Thread.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "threading/posix/CpuCount.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "threading/posix/CpuCount.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "threading/posix/CpuCount.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "threading/posix/PosixThread.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "threading/posix/PosixThread.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "threading/posix/PosixThread.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src11.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src11.cpp
new file mode 100644
index 000000000000..4d59f9a93c33
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src11.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src11.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src11.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "util/AllocPolicy.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "util/AllocPolicy.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "util/AllocPolicy.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "util/AllocationLogging.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "util/AllocationLogging.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "util/AllocationLogging.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "util/CompleteFile.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "util/CompleteFile.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "util/CompleteFile.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "util/DumpFunctions.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "util/DumpFunctions.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "util/DumpFunctions.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "util/NativeStack.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "util/NativeStack.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "util/NativeStack.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "util/Printf.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "util/Printf.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "util/Printf.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src12.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src12.cpp
new file mode 100644
index 000000000000..6f980c7f4164
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src12.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src12.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src12.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "util/StringBuffer.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "util/StringBuffer.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "util/StringBuffer.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "util/StructuredSpewer.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "util/StructuredSpewer.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "util/StructuredSpewer.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "util/Text.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "util/Text.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "util/Text.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "util/Unicode.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "util/Unicode.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "util/Unicode.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/Activation.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/Activation.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/Activation.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/ArgumentsObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/ArgumentsObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/ArgumentsObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src13.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src13.cpp
new file mode 100644
index 000000000000..a4d56f9bdd49
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src13.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src13.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src13.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "vm/ArrayBufferObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/ArrayBufferObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/ArrayBufferObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/ArrayBufferObjectMaybeShared.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/ArrayBufferObjectMaybeShared.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/ArrayBufferObjectMaybeShared.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/ArrayBufferViewObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/ArrayBufferViewObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/ArrayBufferViewObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/AsyncFunction.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/AsyncFunction.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/AsyncFunction.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/AsyncIteration.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/AsyncIteration.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/AsyncIteration.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/BigIntType.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/BigIntType.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/BigIntType.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src14.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src14.cpp
new file mode 100644
index 000000000000..012acd657845
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src14.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src14.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src14.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "vm/BuildId.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/BuildId.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/BuildId.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/BuiltinObjectKind.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/BuiltinObjectKind.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/BuiltinObjectKind.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/BytecodeLocation.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/BytecodeLocation.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/BytecodeLocation.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/BytecodeUtil.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/BytecodeUtil.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/BytecodeUtil.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/Caches.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/Caches.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/Caches.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/CallNonGenericMethod.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/CallNonGenericMethod.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/CallNonGenericMethod.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src15.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src15.cpp
new file mode 100644
index 000000000000..a1783dcc5782
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src15.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src15.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src15.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "vm/CharacterEncoding.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/CharacterEncoding.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/CharacterEncoding.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/CodeCoverage.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/CodeCoverage.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/CodeCoverage.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/Compartment.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/Compartment.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/Compartment.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/CompilationAndEvaluation.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/CompilationAndEvaluation.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/CompilationAndEvaluation.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/Compression.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/Compression.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/Compression.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/DateTime.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/DateTime.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/DateTime.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src16.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src16.cpp
new file mode 100644
index 000000000000..bdd8b279e0e2
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src16.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src16.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src16.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "vm/EnvironmentObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/EnvironmentObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/EnvironmentObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/EqualityOperations.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/EqualityOperations.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/EqualityOperations.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/ErrorMessages.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/ErrorMessages.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/ErrorMessages.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/ErrorObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/ErrorObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/ErrorObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/ErrorReporting.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/ErrorReporting.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/ErrorReporting.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/Exception.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/Exception.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/Exception.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src17.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src17.cpp
new file mode 100644
index 000000000000..3bb547532b04
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src17.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src17.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src17.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "vm/ForOfIterator.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/ForOfIterator.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/ForOfIterator.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/FrameIter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/FrameIter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/FrameIter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/FunctionFlags.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/FunctionFlags.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/FunctionFlags.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/GeckoProfiler.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/GeckoProfiler.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/GeckoProfiler.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/GeneratorObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/GeneratorObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/GeneratorObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/GetterSetter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/GetterSetter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/GetterSetter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src18.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src18.cpp
new file mode 100644
index 000000000000..f851a67daf5e
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src18.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src18.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src18.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "vm/GlobalObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/GlobalObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/GlobalObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/HelperThreads.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/HelperThreads.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/HelperThreads.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/Id.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/Id.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/Id.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/Initialization.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/Initialization.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/Initialization.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/InternalThreadPool.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/InternalThreadPool.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/InternalThreadPool.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/Iteration.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/Iteration.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/Iteration.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src19.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src19.cpp
new file mode 100644
index 000000000000..5a454612f992
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src19.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src19.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src19.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "vm/JSAtom.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/JSAtom.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/JSAtom.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/JSContext.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/JSContext.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/JSContext.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/JSFunction.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/JSFunction.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/JSFunction.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/JSONParser.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/JSONParser.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/JSONParser.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/JSONPrinter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/JSONPrinter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/JSONPrinter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/JSObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/JSObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/JSObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src2.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src2.cpp
new file mode 100644
index 000000000000..c6c8f4377660
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src2.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src2.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src2.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "builtin/Promise.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/Promise.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/Promise.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/Reflect.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/Reflect.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/Reflect.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/ReflectParse.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/ReflectParse.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/ReflectParse.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/Stream.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/Stream.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/Stream.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/String.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/String.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/String.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/Symbol.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/Symbol.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/Symbol.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src20.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src20.cpp
new file mode 100644
index 000000000000..5bb2530a659d
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src20.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src20.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src20.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "vm/JSScript.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/JSScript.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/JSScript.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/JitActivation.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/JitActivation.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/JitActivation.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/List.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/List.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/List.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/MemoryMetrics.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/MemoryMetrics.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/MemoryMetrics.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/Modules.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/Modules.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/Modules.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/NativeObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/NativeObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/NativeObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src21.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src21.cpp
new file mode 100644
index 000000000000..769f8c6c083b
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src21.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src21.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src21.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "vm/OffThreadPromiseRuntimeState.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/OffThreadPromiseRuntimeState.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/OffThreadPromiseRuntimeState.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/OffThreadScriptCompilation.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/OffThreadScriptCompilation.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/OffThreadScriptCompilation.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/PIC.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/PIC.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/PIC.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/PlainObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/PlainObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/PlainObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/Printer.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/Printer.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/Printer.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/Probes.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/Probes.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/Probes.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src22.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src22.cpp
new file mode 100644
index 000000000000..654e02947a49
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src22.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src22.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src22.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "vm/PromiseLookup.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/PromiseLookup.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/PromiseLookup.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/PropMap.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/PropMap.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/PropMap.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/ProxyObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/ProxyObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/ProxyObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/Realm.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/Realm.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/Realm.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/RegExpObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/RegExpObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/RegExpObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/RegExpStatics.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/RegExpStatics.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/RegExpStatics.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src23.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src23.cpp
new file mode 100644
index 000000000000..f80bcbcb5193
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src23.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src23.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src23.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "vm/Runtime.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/Runtime.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/Runtime.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/SavedStacks.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/SavedStacks.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/SavedStacks.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/Scope.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/Scope.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/Scope.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/SelfHosting.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/SelfHosting.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/SelfHosting.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/Shape.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/Shape.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/Shape.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/ShapeZone.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/ShapeZone.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/ShapeZone.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src24.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src24.cpp
new file mode 100644
index 000000000000..d964c6713e87
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src24.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src24.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src24.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "vm/SharedArrayObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/SharedArrayObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/SharedArrayObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/SharedImmutableStringsCache.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/SharedImmutableStringsCache.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/SharedImmutableStringsCache.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/SourceHook.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/SourceHook.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/SourceHook.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/Stack.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/Stack.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/Stack.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/StencilObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/StencilObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/StencilObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/StringType.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/StringType.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/StringType.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src25.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src25.cpp
new file mode 100644
index 000000000000..71e0bffbfecb
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src25.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src25.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src25.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "vm/StructuredClone.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/StructuredClone.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/StructuredClone.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/SymbolType.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/SymbolType.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/SymbolType.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/TaggedProto.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/TaggedProto.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/TaggedProto.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/ThrowMsgKind.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/ThrowMsgKind.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/ThrowMsgKind.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/Time.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/Time.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/Time.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/ToSource.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/ToSource.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/ToSource.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src26.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src26.cpp
new file mode 100644
index 000000000000..38ad8841441d
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src26.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src26.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src26.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "vm/TypedArrayObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/TypedArrayObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/TypedArrayObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/UbiNode.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/UbiNode.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/UbiNode.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/UbiNodeCensus.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/UbiNodeCensus.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/UbiNodeCensus.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/UbiNodeShortestPaths.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/UbiNodeShortestPaths.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/UbiNodeShortestPaths.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/UsageStatistics.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/UsageStatistics.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/UsageStatistics.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/Value.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/Value.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/Value.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src27.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src27.cpp
new file mode 100644
index 000000000000..0fd5f9113a4c
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src27.cpp
@@ -0,0 +1,41 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src27.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src27.cpp
+@@ -0,0 +1,37 @@
++#define MOZ_UNIFIED_BUILD
++#include "vm/Warnings.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/Warnings.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/Warnings.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/WellKnownAtom.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/WellKnownAtom.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/WellKnownAtom.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/WindowProxy.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/WindowProxy.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/WindowProxy.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "vm/Xdr.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "vm/Xdr.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "vm/Xdr.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src3.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src3.cpp
new file mode 100644
index 000000000000..83db42f30245
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src3.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src3.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src3.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "builtin/TestingFunctions.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/TestingFunctions.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/TestingFunctions.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/TestingUtility.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/TestingUtility.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/TestingUtility.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/WeakMapObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/WeakMapObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/WeakMapObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/WeakRefObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/WeakRefObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/WeakRefObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/WeakSetObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/WeakSetObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/WeakSetObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/streams/MiscellaneousOperations.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/streams/MiscellaneousOperations.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/streams/MiscellaneousOperations.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src4.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src4.cpp
new file mode 100644
index 000000000000..da81cc266b1f
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src4.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src4.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src4.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "builtin/streams/PipeToState.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/streams/PipeToState.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/streams/PipeToState.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/streams/PullIntoDescriptor.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/streams/PullIntoDescriptor.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/streams/PullIntoDescriptor.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/streams/QueueWithSizes.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/streams/QueueWithSizes.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/streams/QueueWithSizes.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/streams/QueueingStrategies.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/streams/QueueingStrategies.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/streams/QueueingStrategies.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/streams/ReadableStream.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/streams/ReadableStream.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/streams/ReadableStream.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/streams/ReadableStreamBYOBReader.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/streams/ReadableStreamBYOBReader.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/streams/ReadableStreamBYOBReader.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src5.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src5.cpp
new file mode 100644
index 000000000000..2ee53f81c558
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src5.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src5.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src5.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "builtin/streams/ReadableStreamDefaultController.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/streams/ReadableStreamDefaultController.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/streams/ReadableStreamDefaultController.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/streams/ReadableStreamDefaultControllerOperations.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/streams/ReadableStreamDefaultControllerOperations.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/streams/ReadableStreamDefaultControllerOperations.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/streams/ReadableStreamDefaultReader.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/streams/ReadableStreamDefaultReader.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/streams/ReadableStreamDefaultReader.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/streams/ReadableStreamInternals.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/streams/ReadableStreamInternals.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/streams/ReadableStreamInternals.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/streams/ReadableStreamOperations.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/streams/ReadableStreamOperations.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/streams/ReadableStreamOperations.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/streams/ReadableStreamReader.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/streams/ReadableStreamReader.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/streams/ReadableStreamReader.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src6.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src6.cpp
new file mode 100644
index 000000000000..66e18ea9488e
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src6.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src6.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src6.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "builtin/streams/StreamAPI.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/streams/StreamAPI.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/streams/StreamAPI.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/streams/TeeState.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/streams/TeeState.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/streams/TeeState.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/streams/WritableStream.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/streams/WritableStream.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/streams/WritableStream.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/streams/WritableStreamDefaultController.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/streams/WritableStreamDefaultController.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/streams/WritableStreamDefaultController.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/streams/WritableStreamDefaultControllerOperations.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/streams/WritableStreamDefaultControllerOperations.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/streams/WritableStreamDefaultControllerOperations.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/streams/WritableStreamDefaultWriter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/streams/WritableStreamDefaultWriter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/streams/WritableStreamDefaultWriter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src7.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src7.cpp
new file mode 100644
index 000000000000..b19f2117ca6d
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src7.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src7.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src7.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "builtin/streams/WritableStreamOperations.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/streams/WritableStreamOperations.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/streams/WritableStreamOperations.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "builtin/streams/WritableStreamWriterOperations.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "builtin/streams/WritableStreamWriterOperations.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "builtin/streams/WritableStreamWriterOperations.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "ds/Bitmap.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "ds/Bitmap.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "ds/Bitmap.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "ds/LifoAlloc.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "ds/LifoAlloc.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "ds/LifoAlloc.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "ds/MemoryProtectionExceptionHandler.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "ds/MemoryProtectionExceptionHandler.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "ds/MemoryProtectionExceptionHandler.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jsapi.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jsapi.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jsapi.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src8.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src8.cpp
new file mode 100644
index 000000000000..d79b7be93911
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src8.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src8.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src8.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "jsdate.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jsdate.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jsdate.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jsexn.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jsexn.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jsexn.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jsfriendapi.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jsfriendapi.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jsfriendapi.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jsnum.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jsnum.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jsnum.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "proxy/BaseProxyHandler.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "proxy/BaseProxyHandler.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "proxy/BaseProxyHandler.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "proxy/CrossCompartmentWrapper.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "proxy/CrossCompartmentWrapper.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "proxy/CrossCompartmentWrapper.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src9.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src9.cpp
new file mode 100644
index 000000000000..08c84827c516
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_Unified__cpp__js__src9.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src9.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/Unified_cpp_js_src9.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "proxy/DOMProxy.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "proxy/DOMProxy.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "proxy/DOMProxy.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "proxy/DeadObjectProxy.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "proxy/DeadObjectProxy.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "proxy/DeadObjectProxy.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "proxy/OpaqueCrossCompartmentWrapper.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "proxy/OpaqueCrossCompartmentWrapper.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "proxy/OpaqueCrossCompartmentWrapper.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "proxy/Proxy.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "proxy/Proxy.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "proxy/Proxy.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "proxy/ScriptedProxyHandler.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "proxy/ScriptedProxyHandler.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "proxy/ScriptedProxyHandler.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "proxy/SecurityWrapper.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "proxy/SecurityWrapper.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "proxy/SecurityWrapper.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_debugger_Unified__cpp__js__src__debugger0.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_debugger_Unified__cpp__js__src__debugger0.cpp
new file mode 100644
index 000000000000..4cd59f90cf01
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_debugger_Unified__cpp__js__src__debugger0.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/debugger/Unified_cpp_js_src_debugger0.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/debugger/Unified_cpp_js_src_debugger0.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "debugger/DebugScript.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "debugger/DebugScript.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "debugger/DebugScript.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "debugger/Debugger.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "debugger/Debugger.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "debugger/Debugger.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "debugger/DebuggerMemory.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "debugger/DebuggerMemory.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "debugger/DebuggerMemory.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "debugger/Environment.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "debugger/Environment.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "debugger/Environment.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "debugger/Frame.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "debugger/Frame.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "debugger/Frame.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "debugger/NoExecute.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "debugger/NoExecute.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "debugger/NoExecute.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_debugger_Unified__cpp__js__src__debugger1.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_debugger_Unified__cpp__js__src__debugger1.cpp
new file mode 100644
index 000000000000..7d3ec9092558
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_debugger_Unified__cpp__js__src__debugger1.cpp
@@ -0,0 +1,32 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/debugger/Unified_cpp_js_src_debugger1.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/debugger/Unified_cpp_js_src_debugger1.cpp
+@@ -0,0 +1,28 @@
++#define MOZ_UNIFIED_BUILD
++#include "debugger/Object.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "debugger/Object.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "debugger/Object.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "debugger/Script.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "debugger/Script.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "debugger/Script.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "debugger/Source.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "debugger/Source.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "debugger/Source.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend0.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend0.cpp
new file mode 100644
index 000000000000..e608c5e1109a
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend0.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/frontend/Unified_cpp_js_src_frontend0.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/frontend/Unified_cpp_js_src_frontend0.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "frontend/AbstractScopePtr.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/AbstractScopePtr.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/AbstractScopePtr.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/AsyncEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/AsyncEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/AsyncEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/BytecodeCompiler.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/BytecodeCompiler.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/BytecodeCompiler.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/BytecodeControlStructures.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/BytecodeControlStructures.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/BytecodeControlStructures.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/BytecodeEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/BytecodeEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/BytecodeEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/BytecodeSection.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/BytecodeSection.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/BytecodeSection.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend1.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend1.cpp
new file mode 100644
index 000000000000..3fa5b34356c1
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend1.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/frontend/Unified_cpp_js_src_frontend1.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/frontend/Unified_cpp_js_src_frontend1.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "frontend/CForEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/CForEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/CForEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/CallOrNewEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/CallOrNewEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/CallOrNewEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/DefaultEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/DefaultEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/DefaultEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/DoWhileEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/DoWhileEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/DoWhileEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/ElemOpEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/ElemOpEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/ElemOpEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/EmitterScope.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/EmitterScope.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/EmitterScope.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend2.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend2.cpp
new file mode 100644
index 000000000000..b3ea55b3444d
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend2.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/frontend/Unified_cpp_js_src_frontend2.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/frontend/Unified_cpp_js_src_frontend2.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "frontend/ExpressionStatementEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/ExpressionStatementEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/ExpressionStatementEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/FoldConstants.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/FoldConstants.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/FoldConstants.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/ForInEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/ForInEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/ForInEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/ForOfEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/ForOfEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/ForOfEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/ForOfLoopControl.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/ForOfLoopControl.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/ForOfLoopControl.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/FunctionEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/FunctionEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/FunctionEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend3.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend3.cpp
new file mode 100644
index 000000000000..247ccbbfc87d
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend3.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/frontend/Unified_cpp_js_src_frontend3.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/frontend/Unified_cpp_js_src_frontend3.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "frontend/IfEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/IfEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/IfEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/JumpList.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/JumpList.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/JumpList.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/LabelEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/LabelEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/LabelEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/LexicalScopeEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/LexicalScopeEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/LexicalScopeEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/NameFunctions.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/NameFunctions.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/NameFunctions.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/NameOpEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/NameOpEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/NameOpEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend4.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend4.cpp
new file mode 100644
index 000000000000..2ddb192ffa83
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend4.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/frontend/Unified_cpp_js_src_frontend4.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/frontend/Unified_cpp_js_src_frontend4.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "frontend/ObjLiteral.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/ObjLiteral.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/ObjLiteral.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/ObjectEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/ObjectEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/ObjectEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/OptionalEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/OptionalEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/OptionalEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/ParseContext.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/ParseContext.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/ParseContext.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/ParseNode.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/ParseNode.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/ParseNode.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/ParseNodeVerify.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/ParseNodeVerify.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/ParseNodeVerify.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend5.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend5.cpp
new file mode 100644
index 000000000000..e6614da37224
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend5.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/frontend/Unified_cpp_js_src_frontend5.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/frontend/Unified_cpp_js_src_frontend5.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "frontend/ParserAtom.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/ParserAtom.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/ParserAtom.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/PrivateOpEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/PrivateOpEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/PrivateOpEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/PropOpEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/PropOpEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/PropOpEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/SharedContext.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/SharedContext.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/SharedContext.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/SourceNotes.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/SourceNotes.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/SourceNotes.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/Stencil.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/Stencil.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/Stencil.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend6.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend6.cpp
new file mode 100644
index 000000000000..5dcfd4fe7560
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_frontend_Unified__cpp__js__src__frontend6.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/frontend/Unified_cpp_js_src_frontend6.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/frontend/Unified_cpp_js_src_frontend6.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "frontend/StencilXdr.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/StencilXdr.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/StencilXdr.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/SwitchEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/SwitchEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/SwitchEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/TDZCheckCache.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/TDZCheckCache.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/TDZCheckCache.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/TokenStream.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/TokenStream.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/TokenStream.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/TryEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/TryEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/TryEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "frontend/WhileEmitter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "frontend/WhileEmitter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "frontend/WhileEmitter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_gc_Unified__cpp__js__src__gc0.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_gc_Unified__cpp__js__src__gc0.cpp
new file mode 100644
index 000000000000..0ee279202089
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_gc_Unified__cpp__js__src__gc0.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/gc/Unified_cpp_js_src_gc0.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/gc/Unified_cpp_js_src_gc0.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "gc/Allocator.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "gc/Allocator.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "gc/Allocator.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "gc/AtomMarking.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "gc/AtomMarking.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "gc/AtomMarking.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "gc/Barrier.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "gc/Barrier.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "gc/Barrier.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "gc/FinalizationRegistry.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "gc/FinalizationRegistry.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "gc/FinalizationRegistry.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "gc/GC.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "gc/GC.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "gc/GC.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "gc/GCParallelTask.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "gc/GCParallelTask.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "gc/GCParallelTask.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_gc_Unified__cpp__js__src__gc1.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_gc_Unified__cpp__js__src__gc1.cpp
new file mode 100644
index 000000000000..a049aef0ad56
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_gc_Unified__cpp__js__src__gc1.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/gc/Unified_cpp_js_src_gc1.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/gc/Unified_cpp_js_src_gc1.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "gc/Marking.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "gc/Marking.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "gc/Marking.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "gc/Memory.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "gc/Memory.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "gc/Memory.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "gc/Nursery.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "gc/Nursery.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "gc/Nursery.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "gc/Pretenuring.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "gc/Pretenuring.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "gc/Pretenuring.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "gc/PublicIterators.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "gc/PublicIterators.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "gc/PublicIterators.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "gc/RootMarking.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "gc/RootMarking.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "gc/RootMarking.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_gc_Unified__cpp__js__src__gc2.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_gc_Unified__cpp__js__src__gc2.cpp
new file mode 100644
index 000000000000..c720921d48d5
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_gc_Unified__cpp__js__src__gc2.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/gc/Unified_cpp_js_src_gc2.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/gc/Unified_cpp_js_src_gc2.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "gc/Scheduling.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "gc/Scheduling.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "gc/Scheduling.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "gc/Statistics.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "gc/Statistics.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "gc/Statistics.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "gc/Tracer.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "gc/Tracer.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "gc/Tracer.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "gc/Verifier.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "gc/Verifier.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "gc/Verifier.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "gc/WeakMap.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "gc/WeakMap.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "gc/WeakMap.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "gc/WeakMapPtr.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "gc/WeakMapPtr.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "gc/WeakMapPtr.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_gc_Unified__cpp__js__src__gc3.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_gc_Unified__cpp__js__src__gc3.cpp
new file mode 100644
index 000000000000..31e33327abaa
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_gc_Unified__cpp__js__src__gc3.cpp
@@ -0,0 +1,14 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/gc/Unified_cpp_js_src_gc3.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/gc/Unified_cpp_js_src_gc3.cpp
+@@ -0,0 +1,10 @@
++#define MOZ_UNIFIED_BUILD
++#include "gc/Zone.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "gc/Zone.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "gc/Zone.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_irregexp_Unified__cpp__js__src__irregexp0.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_irregexp_Unified__cpp__js__src__irregexp0.cpp
new file mode 100644
index 000000000000..7000bc2465e0
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_irregexp_Unified__cpp__js__src__irregexp0.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/irregexp/Unified_cpp_js_src_irregexp0.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/irregexp/Unified_cpp_js_src_irregexp0.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "irregexp/RegExpAPI.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "irregexp/RegExpAPI.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "irregexp/RegExpAPI.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "irregexp/RegExpShim.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "irregexp/RegExpShim.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "irregexp/RegExpShim.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "irregexp/imported/regexp-ast.cc"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "irregexp/imported/regexp-ast.cc uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "irregexp/imported/regexp-ast.cc defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "irregexp/imported/regexp-bytecode-generator.cc"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "irregexp/imported/regexp-bytecode-generator.cc uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "irregexp/imported/regexp-bytecode-generator.cc defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "irregexp/imported/regexp-bytecode-peephole.cc"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "irregexp/imported/regexp-bytecode-peephole.cc uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "irregexp/imported/regexp-bytecode-peephole.cc defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "irregexp/imported/regexp-bytecodes.cc"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "irregexp/imported/regexp-bytecodes.cc uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "irregexp/imported/regexp-bytecodes.cc defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_irregexp_Unified__cpp__js__src__irregexp1.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_irregexp_Unified__cpp__js__src__irregexp1.cpp
new file mode 100644
index 000000000000..ce75cf27e078
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_irregexp_Unified__cpp__js__src__irregexp1.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/irregexp/Unified_cpp_js_src_irregexp1.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/irregexp/Unified_cpp_js_src_irregexp1.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "irregexp/imported/regexp-compiler-tonode.cc"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "irregexp/imported/regexp-compiler-tonode.cc uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "irregexp/imported/regexp-compiler-tonode.cc defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "irregexp/imported/regexp-dotprinter.cc"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "irregexp/imported/regexp-dotprinter.cc uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "irregexp/imported/regexp-dotprinter.cc defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "irregexp/imported/regexp-interpreter.cc"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "irregexp/imported/regexp-interpreter.cc uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "irregexp/imported/regexp-interpreter.cc defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "irregexp/imported/regexp-macro-assembler-tracer.cc"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "irregexp/imported/regexp-macro-assembler-tracer.cc uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "irregexp/imported/regexp-macro-assembler-tracer.cc defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "irregexp/imported/regexp-macro-assembler.cc"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "irregexp/imported/regexp-macro-assembler.cc uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "irregexp/imported/regexp-macro-assembler.cc defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "irregexp/imported/regexp-parser.cc"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "irregexp/imported/regexp-parser.cc uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "irregexp/imported/regexp-parser.cc defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_irregexp_Unified__cpp__js__src__irregexp2.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_irregexp_Unified__cpp__js__src__irregexp2.cpp
new file mode 100644
index 000000000000..bc699bb6eb10
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_irregexp_Unified__cpp__js__src__irregexp2.cpp
@@ -0,0 +1,23 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/irregexp/Unified_cpp_js_src_irregexp2.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/irregexp/Unified_cpp_js_src_irregexp2.cpp
+@@ -0,0 +1,19 @@
++#define MOZ_UNIFIED_BUILD
++#include "irregexp/imported/regexp-stack.cc"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "irregexp/imported/regexp-stack.cc uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "irregexp/imported/regexp-stack.cc defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "irregexp/util/UnicodeShim.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "irregexp/util/UnicodeShim.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "irregexp/util/UnicodeShim.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit0.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit0.cpp
new file mode 100644
index 000000000000..9ffe47f24ce0
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit0.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit0.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit0.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "jit/AliasAnalysis.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/AliasAnalysis.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/AliasAnalysis.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/AlignmentMaskAnalysis.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/AlignmentMaskAnalysis.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/AlignmentMaskAnalysis.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/BacktrackingAllocator.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/BacktrackingAllocator.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/BacktrackingAllocator.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/Bailouts.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/Bailouts.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/Bailouts.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/BaselineBailouts.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/BaselineBailouts.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/BaselineBailouts.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/BaselineCacheIRCompiler.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/BaselineCacheIRCompiler.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/BaselineCacheIRCompiler.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit1.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit1.cpp
new file mode 100644
index 000000000000..34003c31c155
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit1.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit1.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit1.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "jit/BaselineCodeGen.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/BaselineCodeGen.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/BaselineCodeGen.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/BaselineDebugModeOSR.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/BaselineDebugModeOSR.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/BaselineDebugModeOSR.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/BaselineFrame.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/BaselineFrame.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/BaselineFrame.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/BaselineFrameInfo.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/BaselineFrameInfo.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/BaselineFrameInfo.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/BaselineIC.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/BaselineIC.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/BaselineIC.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/BaselineJIT.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/BaselineJIT.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/BaselineJIT.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit10.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit10.cpp
new file mode 100644
index 000000000000..d534deefef45
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit10.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit10.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit10.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "jit/ScalarReplacement.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/ScalarReplacement.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/ScalarReplacement.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/Sink.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/Sink.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/Sink.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/Snapshots.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/Snapshots.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/Snapshots.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/TrialInlining.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/TrialInlining.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/TrialInlining.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/TypePolicy.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/TypePolicy.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/TypePolicy.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/VMFunctions.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/VMFunctions.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/VMFunctions.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit11.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit11.cpp
new file mode 100644
index 000000000000..78af8e907468
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit11.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit11.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit11.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "jit/ValueNumbering.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/ValueNumbering.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/ValueNumbering.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/WarpBuilder.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/WarpBuilder.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/WarpBuilder.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/WarpBuilderShared.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/WarpBuilderShared.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/WarpBuilderShared.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/WarpCacheIRTranspiler.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/WarpCacheIRTranspiler.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/WarpCacheIRTranspiler.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/WarpOracle.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/WarpOracle.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/WarpOracle.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/WarpSnapshot.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/WarpSnapshot.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/WarpSnapshot.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit12.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit12.cpp
new file mode 100644
index 000000000000..3d0e669ccbba
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit12.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit12.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit12.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "jit/WasmBCE.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/WasmBCE.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/WasmBCE.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/XrayJitInfo.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/XrayJitInfo.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/XrayJitInfo.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/arm64/Architecture-arm64.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/arm64/Architecture-arm64.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/arm64/Architecture-arm64.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/arm64/Assembler-arm64.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/arm64/Assembler-arm64.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/arm64/Assembler-arm64.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/arm64/Bailouts-arm64.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/arm64/Bailouts-arm64.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/arm64/Bailouts-arm64.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/arm64/CodeGenerator-arm64.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/arm64/CodeGenerator-arm64.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/arm64/CodeGenerator-arm64.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit13.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit13.cpp
new file mode 100644
index 000000000000..30c98613387e
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit13.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit13.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit13.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "jit/arm64/Lowering-arm64.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/arm64/Lowering-arm64.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/arm64/Lowering-arm64.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/arm64/MacroAssembler-arm64.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/arm64/MacroAssembler-arm64.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/arm64/MacroAssembler-arm64.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/arm64/MoveEmitter-arm64.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/arm64/MoveEmitter-arm64.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/arm64/MoveEmitter-arm64.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/arm64/Trampoline-arm64.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/arm64/Trampoline-arm64.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/arm64/Trampoline-arm64.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/arm64/vixl/Assembler-vixl.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/arm64/vixl/Assembler-vixl.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/arm64/vixl/Assembler-vixl.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/arm64/vixl/Cpu-Features-vixl.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/arm64/vixl/Cpu-Features-vixl.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/arm64/vixl/Cpu-Features-vixl.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit14.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit14.cpp
new file mode 100644
index 000000000000..f4b8d73f6036
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit14.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit14.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit14.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "jit/arm64/vixl/Cpu-vixl.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/arm64/vixl/Cpu-vixl.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/arm64/vixl/Cpu-vixl.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/arm64/vixl/Decoder-vixl.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/arm64/vixl/Decoder-vixl.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/arm64/vixl/Decoder-vixl.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/arm64/vixl/Instructions-vixl.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/arm64/vixl/Instructions-vixl.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/arm64/vixl/Instructions-vixl.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/arm64/vixl/MacroAssembler-vixl.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/arm64/vixl/MacroAssembler-vixl.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/arm64/vixl/MacroAssembler-vixl.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/arm64/vixl/MozAssembler-vixl.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/arm64/vixl/MozAssembler-vixl.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/arm64/vixl/MozAssembler-vixl.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/arm64/vixl/MozCpu-vixl.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/arm64/vixl/MozCpu-vixl.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/arm64/vixl/MozCpu-vixl.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit15.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit15.cpp
new file mode 100644
index 000000000000..67ee8d2baa1a
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit15.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit15.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit15.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "jit/arm64/vixl/MozInstructions-vixl.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/arm64/vixl/MozInstructions-vixl.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/arm64/vixl/MozInstructions-vixl.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/arm64/vixl/Utils-vixl.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/arm64/vixl/Utils-vixl.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/arm64/vixl/Utils-vixl.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/shared/AtomicOperations-shared-jit.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/shared/AtomicOperations-shared-jit.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/shared/AtomicOperations-shared-jit.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/shared/CodeGenerator-shared.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/shared/CodeGenerator-shared.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/shared/CodeGenerator-shared.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/shared/Disassembler-shared.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/shared/Disassembler-shared.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/shared/Disassembler-shared.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/shared/Lowering-shared.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/shared/Lowering-shared.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/shared/Lowering-shared.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit2.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit2.cpp
new file mode 100644
index 000000000000..d46fa773a8e1
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit2.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit2.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit2.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "jit/BitSet.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/BitSet.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/BitSet.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/BytecodeAnalysis.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/BytecodeAnalysis.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/BytecodeAnalysis.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/CacheIR.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/CacheIR.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/CacheIR.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/CacheIRCompiler.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/CacheIRCompiler.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/CacheIRCompiler.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/CacheIRHealth.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/CacheIRHealth.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/CacheIRHealth.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/CacheIRSpewer.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/CacheIRSpewer.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/CacheIRSpewer.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit3.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit3.cpp
new file mode 100644
index 000000000000..583c33cfed09
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit3.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit3.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit3.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "jit/CodeGenerator.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/CodeGenerator.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/CodeGenerator.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/CompileWrappers.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/CompileWrappers.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/CompileWrappers.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/Disassemble.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/Disassemble.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/Disassemble.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/EdgeCaseAnalysis.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/EdgeCaseAnalysis.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/EdgeCaseAnalysis.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/EffectiveAddressAnalysis.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/EffectiveAddressAnalysis.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/EffectiveAddressAnalysis.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/ExecutableAllocator.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/ExecutableAllocator.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/ExecutableAllocator.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit4.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit4.cpp
new file mode 100644
index 000000000000..3bc523784ad8
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit4.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit4.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit4.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "jit/FoldLinearArithConstants.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/FoldLinearArithConstants.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/FoldLinearArithConstants.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/InlinableNatives.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/InlinableNatives.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/InlinableNatives.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/InstructionReordering.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/InstructionReordering.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/InstructionReordering.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/Ion.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/Ion.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/Ion.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/IonAnalysis.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/IonAnalysis.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/IonAnalysis.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/IonCacheIRCompiler.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/IonCacheIRCompiler.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/IonCacheIRCompiler.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit5.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit5.cpp
new file mode 100644
index 000000000000..66c17628c5a8
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit5.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit5.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit5.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "jit/IonCompileTask.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/IonCompileTask.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/IonCompileTask.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/IonIC.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/IonIC.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/IonIC.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/IonOptimizationLevels.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/IonOptimizationLevels.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/IonOptimizationLevels.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/JSJitFrameIter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/JSJitFrameIter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/JSJitFrameIter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/JSONSpewer.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/JSONSpewer.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/JSONSpewer.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/Jit.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/Jit.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/Jit.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit6.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit6.cpp
new file mode 100644
index 000000000000..f5c6285ec0bf
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit6.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit6.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit6.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "jit/JitContext.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/JitContext.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/JitContext.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/JitFrames.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/JitFrames.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/JitFrames.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/JitOptions.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/JitOptions.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/JitOptions.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/JitScript.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/JitScript.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/JitScript.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/JitSpewer.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/JitSpewer.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/JitSpewer.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/JitcodeMap.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/JitcodeMap.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/JitcodeMap.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit7.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit7.cpp
new file mode 100644
index 000000000000..99cb6de51b17
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit7.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit7.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit7.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "jit/KnownClass.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/KnownClass.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/KnownClass.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/LICM.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/LICM.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/LICM.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/LIR.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/LIR.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/LIR.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/Label.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/Label.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/Label.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/Linker.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/Linker.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/Linker.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/Lowering.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/Lowering.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/Lowering.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit8.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit8.cpp
new file mode 100644
index 000000000000..92073a7dabd0
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit8.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit8.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit8.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "jit/MIR.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/MIR.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/MIR.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/MIRGraph.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/MIRGraph.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/MIRGraph.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/MacroAssembler.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/MacroAssembler.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/MacroAssembler.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/MoveResolver.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/MoveResolver.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/MoveResolver.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/PerfSpewer.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/PerfSpewer.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/PerfSpewer.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/ProcessExecutableMemory.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/ProcessExecutableMemory.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/ProcessExecutableMemory.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit9.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit9.cpp
new file mode 100644
index 000000000000..667c8e6486ba
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_jit_Unified__cpp__js__src__jit9.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit9.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/jit/Unified_cpp_js_src_jit9.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "jit/RangeAnalysis.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/RangeAnalysis.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/RangeAnalysis.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/Recover.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/Recover.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/Recover.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/RegisterAllocator.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/RegisterAllocator.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/RegisterAllocator.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/RematerializedFrame.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/RematerializedFrame.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/RematerializedFrame.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/SafepointIndex.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/SafepointIndex.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/SafepointIndex.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "jit/Safepoints.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "jit/Safepoints.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "jit/Safepoints.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_js-confdefs.h b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_js-confdefs.h
new file mode 100644
index 000000000000..2a6873d3fc13
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_js-confdefs.h
@@ -0,0 +1,85 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/js-confdefs.h.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/js-confdefs.h
+@@ -0,0 +1,82 @@
++/* List of defines generated by configure. Included with preprocessor flag,
++ * -include, to avoid long list of -D defines on the compile command-line.
++ * Do not edit.
++ */
++
++#ifndef js_confdefs_h
++#define js_confdefs_h
++
++// Expands to all the defines from configure.
++#define CROSS_COMPILE
++#define ENABLE_SHARED_MEMORY 1
++#define ENABLE_WASM_SIMD 1
++#define HAVE_64BIT_BUILD 1
++#define HAVE_CLOCK_MONOTONIC 1
++#define HAVE_DIRENT_H 1
++#define HAVE_DLOPEN 1
++#define HAVE_FTS_H 1
++#define HAVE_GETC_UNLOCKED 1
++#define HAVE_GETOPT_H 1
++#define HAVE_GMTIME_R 1
++#define HAVE_INTTYPES_H 1
++#define HAVE_LANGINFO_CODESET 1
++#define HAVE_LIBM 1
++#define HAVE_LOCALECONV 1
++#define HAVE_LOCALTIME_R 1
++#define HAVE_MALLOC_H 1
++#define HAVE_MALLOC_USABLE_SIZE 1
++#define HAVE_MEMALIGN 1
++#define HAVE_MEMFD_CREATE 1
++#define HAVE_NETINET_IN_H 1
++#define HAVE_NL_TYPES_H 1
++#define HAVE_POSIX_FADVISE 1
++#define HAVE_POSIX_FALLOCATE 1
++#define HAVE_POSIX_MEMALIGN 1
++#define HAVE_PTHREAD_GETNAME_NP 1
++#define HAVE_PTHREAD_GET_NAME_NP 1
++#define HAVE_RES_NINIT 1
++#define HAVE_SSIZE_T 1
++#define HAVE_STDINT_H 1
++#define HAVE_STRNDUP 1
++#define HAVE_SYS_MOUNT_H 1
++#define HAVE_SYS_QUEUE_H 1
++#define HAVE_SYS_STATVFS_H 1
++#define HAVE_SYS_TYPES_H 1
++#define HAVE_THREAD_TLS_KEYWORD 1
++#define HAVE_TM_ZONE_TM_GMTOFF 1
++#define HAVE_UNISTD_H 1
++#define HAVE_VALLOC 1
++#define HAVE_VA_COPY 1
++#define HAVE_VISIBILITY_ATTRIBUTE 1
++#define HAVE_VISIBILITY_HIDDEN_ATTRIBUTE 1
++#define HAVE___CXA_DEMANGLE 1
++#define JS_64BIT 1
++#define JS_CODEGEN_ARM64 1
++#define JS_DEFAULT_JITREPORT_GRANULARITY 3
++#define JS_PUNBOX64 1
++#define JS_STANDALONE 1
++#define JS_WITHOUT_NSPR 1
++#define MALLOC_H <malloc.h>
++#define MALLOC_USABLE_SIZE_CONST_PTR const
++#define MOZILLA_UAVERSION "91.0"
++#define MOZILLA_VERSION "91.4.0"
++#define MOZILLA_VERSION_U 91.4.0
++#define MOZJS_MAJOR_VERSION 91
++#define MOZJS_MINOR_VERSION 4
++#define MOZ_AARCH64_JSCVT 0
++#define MOZ_BUILD_APP js
++#define MOZ_DLL_PREFIX "lib"
++#define MOZ_DLL_SUFFIX ".so"
++#define MOZ_UPDATE_CHANNEL default
++#define NO_NSPR_10_SUPPORT 1
++#define NO_RUST_PANIC_HOOK 1
++#define RELEASE_OR_BETA 1
++#define STDC_HEADERS 1
++#define U_STATIC_IMPLEMENTATION 1
++#define VA_COPY va_copy
++#define XP_FREEBSD 1
++#define XP_UNIX 1
++#define _REENTRANT 1
++#define _THREAD_SAFE 1
++
++#endif /* js_confdefs_h */
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_wasm_Unified__cpp__js__src__wasm0.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_wasm_Unified__cpp__js__src__wasm0.cpp
new file mode 100644
index 000000000000..465cd00dde33
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_wasm_Unified__cpp__js__src__wasm0.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/wasm/Unified_cpp_js_src_wasm0.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/wasm/Unified_cpp_js_src_wasm0.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "wasm/AsmJS.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/AsmJS.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/AsmJS.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/TypedObject.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/TypedObject.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/TypedObject.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmBaselineCompile.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmBaselineCompile.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmBaselineCompile.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmBinary.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmBinary.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmBinary.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmBuiltins.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmBuiltins.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmBuiltins.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmCode.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmCode.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmCode.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_wasm_Unified__cpp__js__src__wasm1.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_wasm_Unified__cpp__js__src__wasm1.cpp
new file mode 100644
index 000000000000..c7e27453b86c
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_wasm_Unified__cpp__js__src__wasm1.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/wasm/Unified_cpp_js_src_wasm1.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/wasm/Unified_cpp_js_src_wasm1.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "wasm/WasmCompile.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmCompile.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmCompile.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmContext.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmContext.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmContext.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmDebug.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmDebug.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmDebug.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmFrame.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmFrame.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmFrame.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmFrameIter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmFrameIter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmFrameIter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmGC.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmGC.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmGC.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_wasm_Unified__cpp__js__src__wasm2.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_wasm_Unified__cpp__js__src__wasm2.cpp
new file mode 100644
index 000000000000..d49135178f55
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_wasm_Unified__cpp__js__src__wasm2.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/wasm/Unified_cpp_js_src_wasm2.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/wasm/Unified_cpp_js_src_wasm2.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "wasm/WasmGenerator.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmGenerator.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmGenerator.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmInitExpr.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmInitExpr.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmInitExpr.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmInstance.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmInstance.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmInstance.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmIonCompile.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmIonCompile.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmIonCompile.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmJS.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmJS.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmJS.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmModule.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmModule.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmModule.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_wasm_Unified__cpp__js__src__wasm3.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_wasm_Unified__cpp__js__src__wasm3.cpp
new file mode 100644
index 000000000000..40b1ed443549
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_wasm_Unified__cpp__js__src__wasm3.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/wasm/Unified_cpp_js_src_wasm3.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/wasm/Unified_cpp_js_src_wasm3.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "wasm/WasmOpIter.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmOpIter.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmOpIter.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmProcess.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmProcess.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmProcess.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmRealm.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmRealm.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmRealm.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmSignalHandlers.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmSignalHandlers.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmSignalHandlers.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmStubs.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmStubs.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmStubs.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmTable.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmTable.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmTable.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_wasm_Unified__cpp__js__src__wasm4.cpp b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_wasm_Unified__cpp__js__src__wasm4.cpp
new file mode 100644
index 000000000000..c17eee2e0c33
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_build_wasm_Unified__cpp__js__src__wasm4.cpp
@@ -0,0 +1,59 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/build/wasm/Unified_cpp_js_src_wasm4.cpp.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/build/wasm/Unified_cpp_js_src_wasm4.cpp
+@@ -0,0 +1,55 @@
++#define MOZ_UNIFIED_BUILD
++#include "wasm/WasmTlsData.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmTlsData.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmTlsData.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmTypeDef.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmTypeDef.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmTypeDef.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmTypes.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmTypes.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmTypes.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmValType.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmValType.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmValType.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmValidate.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmValidate.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmValidate.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
++#include "wasm/WasmValue.cpp"
++#ifdef PL_ARENA_CONST_ALIGN_MASK
++#error "wasm/WasmValue.cpp uses PL_ARENA_CONST_ALIGN_MASK, so it cannot be built in unified mode."
++#undef PL_ARENA_CONST_ALIGN_MASK
++#endif
++#ifdef INITGUID
++#error "wasm/WasmValue.cpp defines INITGUID, so it cannot be built in unified mode."
++#undef INITGUID
++#endif
+\ No newline at end of file
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_include_frontend_ReservedWordsGenerated.h b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_include_frontend_ReservedWordsGenerated.h
new file mode 100644
index 000000000000..5e30e9b7686f
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_include_frontend_ReservedWordsGenerated.h
@@ -0,0 +1,363 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/include/frontend/ReservedWordsGenerated.h.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/include/frontend/ReservedWordsGenerated.h
+@@ -0,0 +1,360 @@
++ /*
++ * Generating switch for the list of 54 entries:
++ * false
++ * true
++ * null
++ * break
++ * case
++ * catch
++ * const
++ * continue
++ * debugger
++ * default
++ * delete
++ * do
++ * else
++ * finally
++ * for
++ * function
++ * if
++ * in
++ * instanceof
++ * new
++ * return
++ * switch
++ * this
++ * throw
++ * try
++ * typeof
++ * var
++ * void
++ * while
++ * with
++ * import
++ * export
++ * class
++ * extends
++ * super
++ * enum
++ * implements
++ * interface
++ * package
++ * private
++ * protected
++ * public
++ * as
++ * async
++ * await
++ * from
++ * get
++ * let
++ * meta
++ * of
++ * set
++ * static
++ * target
++ * yield
++ */
++ switch (JSRW_LENGTH()) {
++ case 2:
++ switch (JSRW_AT(1)) {
++ case 'f':
++ if (JSRW_AT(0) == 'i') {
++ JSRW_GOT_MATCH(16) /* if */
++ }
++ if (JSRW_AT(0) == 'o') {
++ JSRW_GOT_MATCH(49) /* of */
++ }
++ JSRW_NO_MATCH()
++ case 'n':
++ if (JSRW_AT(0)=='i') {
++ JSRW_GOT_MATCH(17) /* in */
++ }
++ JSRW_NO_MATCH()
++ case 'o':
++ if (JSRW_AT(0)=='d') {
++ JSRW_GOT_MATCH(11) /* do */
++ }
++ JSRW_NO_MATCH()
++ case 's':
++ if (JSRW_AT(0)=='a') {
++ JSRW_GOT_MATCH(42) /* as */
++ }
++ JSRW_NO_MATCH()
++ }
++ JSRW_NO_MATCH()
++ case 3:
++ switch (JSRW_AT(2)) {
++ case 'r':
++ if (JSRW_AT(0) == 'f') {
++ if (JSRW_AT(1)=='o') {
++ JSRW_GOT_MATCH(14) /* for */
++ }
++ JSRW_NO_MATCH()
++ }
++ if (JSRW_AT(0) == 'v') {
++ if (JSRW_AT(1)=='a') {
++ JSRW_GOT_MATCH(26) /* var */
++ }
++ JSRW_NO_MATCH()
++ }
++ JSRW_NO_MATCH()
++ case 't':
++ if (JSRW_AT(1) == 'e') {
++ if (JSRW_AT(0) == 'g') {
++ JSRW_GOT_MATCH(46) /* get */
++ }
++ if (JSRW_AT(0) == 'l') {
++ JSRW_GOT_MATCH(47) /* let */
++ }
++ if (JSRW_AT(0) == 's') {
++ JSRW_GOT_MATCH(50) /* set */
++ }
++ JSRW_NO_MATCH()
++ }
++ JSRW_NO_MATCH()
++ case 'w':
++ if (JSRW_AT(0)=='n' && JSRW_AT(1)=='e') {
++ JSRW_GOT_MATCH(19) /* new */
++ }
++ JSRW_NO_MATCH()
++ case 'y':
++ if (JSRW_AT(0)=='t' && JSRW_AT(1)=='r') {
++ JSRW_GOT_MATCH(24) /* try */
++ }
++ JSRW_NO_MATCH()
++ }
++ JSRW_NO_MATCH()
++ case 4:
++ switch (JSRW_AT(2)) {
++ case 'i':
++ if (JSRW_AT(0) == 't') {
++ if (JSRW_AT(3)=='s' && JSRW_AT(1)=='h') {
++ JSRW_GOT_MATCH(22) /* this */
++ }
++ JSRW_NO_MATCH()
++ }
++ if (JSRW_AT(0) == 'v') {
++ if (JSRW_AT(3)=='d' && JSRW_AT(1)=='o') {
++ JSRW_GOT_MATCH(27) /* void */
++ }
++ JSRW_NO_MATCH()
++ }
++ JSRW_NO_MATCH()
++ case 'l':
++ if (JSRW_AT(0)=='n' && JSRW_AT(1)=='u' && JSRW_AT(3)=='l') {
++ JSRW_GOT_MATCH(2) /* null */
++ }
++ JSRW_NO_MATCH()
++ case 'o':
++ if (JSRW_AT(0)=='f' && JSRW_AT(1)=='r' && JSRW_AT(3)=='m') {
++ JSRW_GOT_MATCH(45) /* from */
++ }
++ JSRW_NO_MATCH()
++ case 's':
++ if (JSRW_AT(1) == 'a') {
++ if (JSRW_AT(0)=='c' && JSRW_AT(3)=='e') {
++ JSRW_GOT_MATCH(4) /* case */
++ }
++ JSRW_NO_MATCH()
++ }
++ if (JSRW_AT(1) == 'l') {
++ if (JSRW_AT(0)=='e' && JSRW_AT(3)=='e') {
++ JSRW_GOT_MATCH(12) /* else */
++ }
++ JSRW_NO_MATCH()
++ }
++ JSRW_NO_MATCH()
++ case 't':
++ if (JSRW_AT(0) == 'm') {
++ if (JSRW_AT(3)=='a' && JSRW_AT(1)=='e') {
++ JSRW_GOT_MATCH(48) /* meta */
++ }
++ JSRW_NO_MATCH()
++ }
++ if (JSRW_AT(0) == 'w') {
++ if (JSRW_AT(3)=='h' && JSRW_AT(1)=='i') {
++ JSRW_GOT_MATCH(29) /* with */
++ }
++ JSRW_NO_MATCH()
++ }
++ JSRW_NO_MATCH()
++ case 'u':
++ if (JSRW_AT(0) == 'e') {
++ if (JSRW_AT(3)=='m' && JSRW_AT(1)=='n') {
++ JSRW_GOT_MATCH(35) /* enum */
++ }
++ JSRW_NO_MATCH()
++ }
++ if (JSRW_AT(0) == 't') {
++ if (JSRW_AT(3)=='e' && JSRW_AT(1)=='r') {
++ JSRW_GOT_MATCH(1) /* true */
++ }
++ JSRW_NO_MATCH()
++ }
++ JSRW_NO_MATCH()
++ }
++ JSRW_NO_MATCH()
++ case 5:
++ switch (JSRW_AT(3)) {
++ case 'a':
++ if (JSRW_AT(0)=='b' && JSRW_AT(1)=='r' && JSRW_AT(2)=='e' && JSRW_AT(4)=='k') {
++ JSRW_GOT_MATCH(3) /* break */
++ }
++ JSRW_NO_MATCH()
++ case 'c':
++ if (JSRW_AT(0)=='c' && JSRW_AT(1)=='a' && JSRW_AT(2)=='t' && JSRW_AT(4)=='h') {
++ JSRW_GOT_MATCH(5) /* catch */
++ }
++ JSRW_NO_MATCH()
++ case 'e':
++ if (JSRW_AT(0)=='s' && JSRW_AT(1)=='u' && JSRW_AT(2)=='p' && JSRW_AT(4)=='r') {
++ JSRW_GOT_MATCH(34) /* super */
++ }
++ JSRW_NO_MATCH()
++ case 'i':
++ if (JSRW_AT(0)=='a' && JSRW_AT(1)=='w' && JSRW_AT(2)=='a' && JSRW_AT(4)=='t') {
++ JSRW_GOT_MATCH(44) /* await */
++ }
++ JSRW_NO_MATCH()
++ case 'l':
++ if (JSRW_AT(0) == 'w') {
++ if (JSRW_AT(4)=='e' && JSRW_AT(1)=='h' && JSRW_AT(2)=='i') {
++ JSRW_GOT_MATCH(28) /* while */
++ }
++ JSRW_NO_MATCH()
++ }
++ if (JSRW_AT(0) == 'y') {
++ if (JSRW_AT(4)=='d' && JSRW_AT(1)=='i' && JSRW_AT(2)=='e') {
++ JSRW_GOT_MATCH(53) /* yield */
++ }
++ JSRW_NO_MATCH()
++ }
++ JSRW_NO_MATCH()
++ case 'n':
++ if (JSRW_AT(0)=='a' && JSRW_AT(1)=='s' && JSRW_AT(2)=='y' && JSRW_AT(4)=='c') {
++ JSRW_GOT_MATCH(43) /* async */
++ }
++ JSRW_NO_MATCH()
++ case 'o':
++ if (JSRW_AT(0)=='t' && JSRW_AT(1)=='h' && JSRW_AT(2)=='r' && JSRW_AT(4)=='w') {
++ JSRW_GOT_MATCH(23) /* throw */
++ }
++ JSRW_NO_MATCH()
++ case 's':
++ if (JSRW_AT(0) == 'c') {
++ if (JSRW_AT(4) == 's') {
++ if (JSRW_AT(2)=='a' && JSRW_AT(1)=='l') {
++ JSRW_GOT_MATCH(32) /* class */
++ }
++ JSRW_NO_MATCH()
++ }
++ if (JSRW_AT(4) == 't') {
++ if (JSRW_AT(2)=='n' && JSRW_AT(1)=='o') {
++ JSRW_GOT_MATCH(6) /* const */
++ }
++ JSRW_NO_MATCH()
++ }
++ JSRW_NO_MATCH()
++ }
++ if (JSRW_AT(0) == 'f') {
++ if (JSRW_AT(4)=='e' && JSRW_AT(1)=='a' && JSRW_AT(2)=='l') {
++ JSRW_GOT_MATCH(0) /* false */
++ }
++ JSRW_NO_MATCH()
++ }
++ JSRW_NO_MATCH()
++ }
++ JSRW_NO_MATCH()
++ case 6:
++ switch (JSRW_AT(0)) {
++ case 'd':
++ JSRW_TEST_GUESS(10) /* delete */
++ case 'e':
++ JSRW_TEST_GUESS(31) /* export */
++ case 'i':
++ JSRW_TEST_GUESS(30) /* import */
++ case 'p':
++ JSRW_TEST_GUESS(41) /* public */
++ case 'r':
++ JSRW_TEST_GUESS(20) /* return */
++ case 's':
++ if (JSRW_AT(1) == 't') {
++ if (JSRW_AT(5)=='c' && JSRW_AT(4)=='i' && JSRW_AT(2)=='a' && JSRW_AT(3)=='t') {
++ JSRW_GOT_MATCH(51) /* static */
++ }
++ JSRW_NO_MATCH()
++ }
++ if (JSRW_AT(1) == 'w') {
++ if (JSRW_AT(5)=='h' && JSRW_AT(4)=='c' && JSRW_AT(2)=='i' && JSRW_AT(3)=='t') {
++ JSRW_GOT_MATCH(21) /* switch */
++ }
++ JSRW_NO_MATCH()
++ }
++ JSRW_NO_MATCH()
++ case 't':
++ if (JSRW_AT(5) == 'f') {
++ if (JSRW_AT(4)=='o' && JSRW_AT(1)=='y' && JSRW_AT(2)=='p' && JSRW_AT(3)=='e') {
++ JSRW_GOT_MATCH(25) /* typeof */
++ }
++ JSRW_NO_MATCH()
++ }
++ if (JSRW_AT(5) == 't') {
++ if (JSRW_AT(4)=='e' && JSRW_AT(1)=='a' && JSRW_AT(2)=='r' && JSRW_AT(3)=='g') {
++ JSRW_GOT_MATCH(52) /* target */
++ }
++ JSRW_NO_MATCH()
++ }
++ JSRW_NO_MATCH()
++ }
++ JSRW_NO_MATCH()
++ case 7:
++ switch (JSRW_AT(0)) {
++ case 'd':
++ JSRW_TEST_GUESS(9) /* default */
++ case 'e':
++ JSRW_TEST_GUESS(33) /* extends */
++ case 'f':
++ JSRW_TEST_GUESS(13) /* finally */
++ case 'p':
++ if (JSRW_AT(1) == 'a') {
++ JSRW_TEST_GUESS(38) /* package */
++ }
++ if (JSRW_AT(1) == 'r') {
++ JSRW_TEST_GUESS(39) /* private */
++ }
++ JSRW_NO_MATCH()
++ }
++ JSRW_NO_MATCH()
++ case 8:
++ if (JSRW_AT(2) == 'b') {
++ JSRW_TEST_GUESS(8) /* debugger */
++ }
++ if (JSRW_AT(2) == 'n') {
++ if (JSRW_AT(0) == 'c') {
++ JSRW_TEST_GUESS(7) /* continue */
++ }
++ if (JSRW_AT(0) == 'f') {
++ JSRW_TEST_GUESS(15) /* function */
++ }
++ JSRW_NO_MATCH()
++ }
++ JSRW_NO_MATCH()
++ case 9:
++ if (JSRW_AT(0) == 'i') {
++ JSRW_TEST_GUESS(37) /* interface */
++ }
++ if (JSRW_AT(0) == 'p') {
++ JSRW_TEST_GUESS(40) /* protected */
++ }
++ JSRW_NO_MATCH()
++ case 10:
++ if (JSRW_AT(1) == 'm') {
++ JSRW_TEST_GUESS(36) /* implements */
++ }
++ if (JSRW_AT(1) == 'n') {
++ JSRW_TEST_GUESS(18) /* instanceof */
++ }
++ JSRW_NO_MATCH()
++ }
++ JSRW_NO_MATCH()
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_include_gc_StatsPhasesGenerated.h b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_include_gc_StatsPhasesGenerated.h
new file mode 100644
index 000000000000..5983603327b3
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_include_gc_StatsPhasesGenerated.h
@@ -0,0 +1,193 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/include/gc/StatsPhasesGenerated.h.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/include/gc/StatsPhasesGenerated.h
+@@ -0,0 +1,190 @@
++enum class PhaseKind : uint8_t {
++ FIRST,
++ MUTATOR = FIRST,
++ GC_BEGIN,
++ MARK_CCWS,
++ MARK_STACK,
++ MARK_RUNTIME_DATA,
++ MARK_EMBEDDING,
++ MARK_COMPARTMENTS,
++ MARK_ROOTS,
++ EVICT_NURSERY_FOR_MAJOR_GC,
++ WAIT_BACKGROUND_THREAD,
++ UNMARK,
++ UNMARK_WEAKMAPS,
++ BUFFER_GRAY_ROOTS,
++ MARK_DISCARD_CODE,
++ RELAZIFY_FUNCTIONS,
++ PURGE,
++ PURGE_PROP_MAP_TABLES,
++ PURGE_SOURCE_URLS,
++ JOIN_PARALLEL_TASKS,
++ PREPARE,
++ MARK_DELAYED,
++ MARK,
++ SWEEP_MARK_INCOMING_BLACK,
++ SWEEP_MARK_GRAY_WEAK,
++ SWEEP_MARK_WEAK,
++ SWEEP_MARK_INCOMING_GRAY,
++ SWEEP_MARK_GRAY,
++ SWEEP_MARK,
++ WEAK_ZONES_CALLBACK,
++ WEAK_COMPARTMENT_CALLBACK,
++ FINALIZE_START,
++ UPDATE_ATOMS_BITMAP,
++ SWEEP_ATOMS_TABLE,
++ SWEEP_DISCARD_CODE,
++ SWEEP_INNER_VIEWS,
++ SWEEP_CC_WRAPPER,
++ SWEEP_BASE_SHAPE,
++ SWEEP_INITIAL_SHAPE,
++ SWEEP_REGEXP,
++ SWEEP_COMPRESSION,
++ SWEEP_WEAKMAPS,
++ SWEEP_UNIQUEIDS,
++ SWEEP_FINALIZATION_REGISTRIES,
++ SWEEP_WEAKREFS,
++ SWEEP_JIT_DATA,
++ SWEEP_WEAK_CACHES,
++ SWEEP_MISC,
++ SWEEP_COMPARTMENTS,
++ SWEEP_OBJECT,
++ SWEEP_STRING,
++ SWEEP_SCRIPT,
++ SWEEP_SCOPE,
++ SWEEP_REGEXP_SHARED,
++ SWEEP_SHAPE,
++ SWEEP_PROP_MAP,
++ FINALIZE_END,
++ DESTROY,
++ SWEEP,
++ COMPACT_MOVE,
++ COMPACT_UPDATE_CELLS,
++ COMPACT_UPDATE,
++ COMPACT,
++ DECOMMIT,
++ GC_END,
++ MINOR_GC,
++ EVICT_NURSERY,
++ TRACE_HEAP,
++ UNMARK_GRAY,
++ BARRIER,
++ LIMIT,
++ NONE = LIMIT,
++ EXPLICIT_SUSPENSION = LIMIT,
++ IMPLICIT_SUSPENSION
++};
++
++enum class Phase : uint8_t {
++ FIRST,
++ MUTATOR = FIRST,
++ GC_BEGIN,
++ EVICT_NURSERY_FOR_MAJOR_GC,
++ MARK_ROOTS_1,
++ MARK_CCWS_1,
++ MARK_STACK_1,
++ MARK_RUNTIME_DATA_1,
++ MARK_EMBEDDING_1,
++ MARK_COMPARTMENTS_1,
++ WAIT_BACKGROUND_THREAD,
++ PREPARE,
++ UNMARK,
++ UNMARK_WEAKMAPS,
++ BUFFER_GRAY_ROOTS,
++ MARK_DISCARD_CODE,
++ RELAZIFY_FUNCTIONS,
++ PURGE,
++ PURGE_PROP_MAP_TABLES,
++ PURGE_SOURCE_URLS,
++ JOIN_PARALLEL_TASKS_1,
++ MARK,
++ MARK_ROOTS_2,
++ MARK_CCWS_2,
++ MARK_STACK_2,
++ MARK_RUNTIME_DATA_2,
++ MARK_EMBEDDING_2,
++ MARK_COMPARTMENTS_2,
++ MARK_DELAYED_1,
++ SWEEP,
++ SWEEP_MARK,
++ MARK_DELAYED_2,
++ SWEEP_MARK_INCOMING_BLACK,
++ SWEEP_MARK_WEAK,
++ MARK_DELAYED_3,
++ SWEEP_MARK_GRAY_WEAK,
++ SWEEP_MARK_INCOMING_GRAY,
++ SWEEP_MARK_GRAY,
++ FINALIZE_START,
++ WEAK_ZONES_CALLBACK,
++ WEAK_COMPARTMENT_CALLBACK,
++ UPDATE_ATOMS_BITMAP,
++ SWEEP_ATOMS_TABLE,
++ SWEEP_COMPARTMENTS,
++ SWEEP_DISCARD_CODE,
++ SWEEP_INNER_VIEWS,
++ SWEEP_CC_WRAPPER,
++ SWEEP_BASE_SHAPE,
++ SWEEP_INITIAL_SHAPE,
++ SWEEP_REGEXP,
++ SWEEP_COMPRESSION,
++ SWEEP_WEAKMAPS,
++ SWEEP_UNIQUEIDS,
++ SWEEP_FINALIZATION_REGISTRIES,
++ SWEEP_WEAKREFS,
++ SWEEP_JIT_DATA,
++ SWEEP_WEAK_CACHES,
++ SWEEP_MISC,
++ JOIN_PARALLEL_TASKS_2,
++ SWEEP_OBJECT,
++ SWEEP_STRING,
++ SWEEP_SCRIPT,
++ SWEEP_SCOPE,
++ SWEEP_REGEXP_SHARED,
++ SWEEP_SHAPE,
++ SWEEP_PROP_MAP,
++ FINALIZE_END,
++ DESTROY,
++ JOIN_PARALLEL_TASKS_3,
++ COMPACT,
++ COMPACT_MOVE,
++ COMPACT_UPDATE,
++ MARK_ROOTS_3,
++ MARK_CCWS_3,
++ MARK_STACK_3,
++ MARK_RUNTIME_DATA_3,
++ MARK_EMBEDDING_3,
++ MARK_COMPARTMENTS_3,
++ COMPACT_UPDATE_CELLS,
++ JOIN_PARALLEL_TASKS_4,
++ DECOMMIT,
++ GC_END,
++ MINOR_GC,
++ MARK_ROOTS_4,
++ MARK_CCWS_4,
++ MARK_STACK_4,
++ MARK_RUNTIME_DATA_4,
++ MARK_EMBEDDING_4,
++ MARK_COMPARTMENTS_4,
++ EVICT_NURSERY,
++ MARK_ROOTS_5,
++ MARK_CCWS_5,
++ MARK_STACK_5,
++ MARK_RUNTIME_DATA_5,
++ MARK_EMBEDDING_5,
++ MARK_COMPARTMENTS_5,
++ TRACE_HEAP,
++ MARK_ROOTS_6,
++ MARK_CCWS_6,
++ MARK_STACK_6,
++ MARK_RUNTIME_DATA_6,
++ MARK_EMBEDDING_6,
++ MARK_COMPARTMENTS_6,
++ BARRIER,
++ UNMARK_GRAY,
++ LIMIT,
++ NONE = LIMIT,
++ EXPLICIT_SUSPENSION = LIMIT,
++ IMPLICIT_SUSPENSION
++};
++
++static const size_t MAX_PHASE_NESTING = 4;
diff --git a/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_include_jit_CacheIROpsGenerated.h b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_include_jit_CacheIROpsGenerated.h
new file mode 100644
index 000000000000..7ada21b4d00e
--- /dev/null
+++ b/databases/mongodb60/files/aarch64/patch-src_third__party_mozjs_platform_aarch64_freebsd_include_jit_CacheIROpsGenerated.h
@@ -0,0 +1,12512 @@
+--- src/third_party/mozjs/platform/aarch64/freebsd/include/jit/CacheIROpsGenerated.h.orig 2022-09-08 14:42:13 UTC
++++ src/third_party/mozjs/platform/aarch64/freebsd/include/jit/CacheIROpsGenerated.h
+@@ -0,0 +1,12509 @@
++/* This Source Code Form is subject to the terms of the Mozilla Public
++ * License, v. 2.0. If a copy of the MPL was not distributed with this
++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
++
++#ifndef jit_CacheIROpsGenerated_h
++#define jit_CacheIROpsGenerated_h
++
++/* This file is generated by jit/GenerateCacheIRFiles.py. Do not edit! */
++
++#define CACHE_IR_OPS(_)\
++_(ReturnFromIC, 0, true, 1)\
++_(GuardToObject, 1, true, 1)\
++_(GuardIsNullOrUndefined, 1, true, 1)\
++_(GuardIsNull, 1, true, 1)\
++_(GuardIsUndefined, 1, true, 1)\
++_(GuardToBoolean, 1, true, 1)\
++_(GuardToString, 1, true, 1)\
++_(GuardToSymbol, 1, true, 1)\
++_(GuardToBigInt, 1, true, 1)\
++_(GuardIsNumber, 1, true, 1)\
++_(GuardToInt32, 1, true, 1)\
++_(GuardBooleanToInt32, 1 + 1, true, 1)\
++_(GuardToInt32Index, 1 + 1, true, 1)\
++_(Int32ToIntPtr, 1 + 1, true, 1)\
++_(GuardNumberToIntPtrIndex, 1 + 1 + 1, true, 2)\
++_(GuardToInt32ModUint32, 1 + 1, true, 2)\
++_(GuardToUint8Clamped, 1 + 1, true, 2)\
++_(GuardNonDoubleType, 1 + 1, true, 1)\
++_(GuardShape, 1 + 1, true, 1)\
++_(GuardProto, 1 + 1, true, 1)\
++_(GuardNullProto, 1, true, 1)\
++_(GuardClass, 1 + 1, true, 1)\
++_(GuardAnyClass, 1 + 1, true, 1)\
++_(HasClassResult, 1 + 1, true, 1)\
++_(CallRegExpMatcherResult, 1 + 1 + 1, true, 5)\
++_(CallRegExpSearcherResult, 1 + 1 + 1, true, 5)\
++_(CallRegExpTesterResult, 1 + 1 + 1, true, 5)\
++_(RegExpFlagResult, 1 + 4, true, 2)\
++_(CallSubstringKernelResult, 1 + 1 + 1, true, 5)\
++_(StringReplaceStringResult, 1 + 1 + 1, true, 5)\
++_(StringSplitStringResult, 1 + 1, true, 5)\
++_(RegExpPrototypeOptimizableResult, 1, true, 4)\
++_(RegExpInstanceOptimizableResult, 1 + 1, true, 4)\
++_(GetFirstDollarIndexResult, 1, true, 5)\
++_(GuardCompartment, 1 + 1 + 1, false, 2)\
++_(GuardIsExtensible, 1, true, 1)\
++_(GuardIsNativeObject, 1, true, 1)\
++_(GuardIsProxy, 1, true, 1)\
++_(GuardIsNotProxy, 1, true, 1)\
++_(GuardIsNotArrayBufferMaybeShared, 1, true, 1)\
++_(GuardIsTypedArray, 1, true, 1)\
++_(GuardHasProxyHandler, 1 + 1, false, 1)\
++_(GuardIsNotDOMProxy, 1, true, 1)\
++_(GuardSpecificObject, 1 + 1, true, 1)\
++_(GuardSpecificFunction, 1 + 1 + 1, true, 1)\
++_(GuardFunctionScript, 1 + 1 + 1, true, 1)\
++_(GuardSpecificAtom, 1 + 1, true, 4)\
++_(GuardSpecificSymbol, 1 + 1, true, 1)\
++_(GuardNoDenseElements, 1, true, 1)\
++_(GuardStringToIndex, 1 + 1, true, 4)\
++_(GuardStringToInt32, 1 + 1, true, 4)\
++_(GuardStringToNumber, 1 + 1, true, 4)\
++_(BooleanToNumber, 1 + 1, true, 1)\
++_(GuardAndGetIterator, 1 + 1 + 1 + 1, false, 4)\
++_(GuardHasGetterSetter, 1 + 1 + 1, true, 4)\
++_(GuardInt32IsNonNegative, 1, true, 1)\
++_(GuardIndexIsValidUpdateOrAdd, 1 + 1, true, 1)\
++_(GuardIndexGreaterThanDenseInitLength, 1 + 1, true, 1)\
++_(GuardTagNotEqual, 1 + 1, true, 1)\
++_(GuardXrayExpandoShapeAndDefaultProto, 1 + 1, false, 2)\
++_(GuardXrayNoExpando, 1, false, 2)\
++_(GuardDynamicSlotIsSpecificObject, 1 + 1 + 1, true, 1)\
++_(GuardFixedSlotValue, 1 + 1 + 1, true, 1)\
++_(GuardDynamicSlotValue, 1 + 1 + 1, true, 1)\
++_(GuardNoAllocationMetadataBuilder, 1, true, 1)\
++_(GuardFunctionHasJitEntry, 1 + 1, true, 1)\
++_(GuardFunctionHasNoJitEntry, 1, true, 1)\
++_(GuardFunctionIsNonBuiltinCtor, 1, true, 1)\
++_(GuardFunctionIsConstructor, 1, true, 1)\
++_(GuardNotClassConstructor, 1, true, 1)\
++_(GuardArrayIsPacked, 1, true, 1)\
++_(GuardArgumentsObjectFlags, 1 + 1, true, 1)\
++_(LoadObject, 1 + 1, true, 1)\
++_(LoadProto, 1 + 1, true, 1)\
++_(LoadEnclosingEnvironment, 1 + 1, true, 1)\
++_(LoadWrapperTarget, 1 + 1, true, 1)\
++_(LoadValueTag, 1 + 1, true, 1)\
++_(LoadArgumentFixedSlot, 1 + 1, true, 1)\
++_(LoadArgumentDynamicSlot, 1 + 1 + 1, true, 1)\
++_(TruncateDoubleToUInt32, 1 + 1, true, 4)\
++_(MegamorphicLoadSlotResult, 1 + 1, true, 4)\
++_(MegamorphicLoadSlotByValueResult, 1 + 1, true, 4)\
++_(MegamorphicStoreSlot, 1 + 1 + 1, true, 4)\
++_(MegamorphicSetElement, 1 + 1 + 1 + 1, true, 5)\
++_(MegamorphicHasPropResult, 1 + 1 + 1, true, 4)\
++_(LoadDOMExpandoValue, 1 + 1, true, 1)\
++_(LoadDOMExpandoValueGuardGeneration, 1 + 1 + 1 + 1, true, 2)\
++_(LoadDOMExpandoValueIgnoreGeneration, 1 + 1, true, 1)\
++_(GuardDOMExpandoMissingOrGuardShape, 1 + 1, true, 2)\
++_(StoreFixedSlot, 1 + 1 + 1, true, 6)\
++_(StoreDynamicSlot, 1 + 1 + 1, true, 6)\
++_(AddAndStoreFixedSlot, 1 + 1 + 1 + 1, true, 6)\
++_(AddAndStoreDynamicSlot, 1 + 1 + 1 + 1, true, 6)\
++_(AllocateAndStoreDynamicSlot, 1 + 1 + 1 + 1 + 1, true, 6)\
++_(StoreDenseElement, 1 + 1 + 1, true, 6)\
++_(StoreDenseElementHole, 1 + 1 + 1 + 1, true, 6)\
++_(ArrayPush, 1 + 1, true, 6)\
++_(ArrayJoinResult, 1 + 1, true, 5)\
++_(PackedArrayPopResult, 1, true, 2)\
++_(PackedArrayShiftResult, 1, true, 4)\
++_(PackedArraySliceResult, 1 + 1 + 1 + 1, true, 5)\
++_(IsArrayResult, 1, true, 5)\
++_(StoreFixedSlotUndefinedResult, 1 + 1 + 1, true, 4294967295)\
++_(IsObjectResult, 1, true, 1)\
++_(IsPackedArrayResult, 1, true, 2)\
++_(IsCallableResult, 1, true, 4)\
++_(IsConstructorResult, 1, true, 4)\
++_(IsCrossRealmArrayConstructorResult, 1, true, 2)\
++_(IsTypedArrayResult, 1 + 1, true, 5)\
++_(IsTypedArrayConstructorResult, 1, true, 2)\
++_(ArrayBufferViewByteOffsetInt32Result, 1, true, 1)\
++_(ArrayBufferViewByteOffsetDoubleResult, 1, true, 1)\
++_(TypedArrayByteLengthInt32Result, 1, true, 2)\
++_(TypedArrayByteLengthDoubleResult, 1, true, 2)\
++_(TypedArrayElementSizeResult, 1, true, 2)\
++_(GuardHasAttachedArrayBuffer, 1, true, 2)\
++_(FinishBoundFunctionInitResult, 1 + 1 + 1, true, 5)\
++_(NewArrayIteratorResult, 1, true, 5)\
++_(NewStringIteratorResult, 1, true, 5)\
++_(NewRegExpStringIteratorResult, 1, true, 5)\
++_(ObjectCreateResult, 1, true, 5)\
++_(NewArrayFromLengthResult, 1 + 1, true, 5)\
++_(NewTypedArrayFromLengthResult, 1 + 1, true, 5)\
++_(NewTypedArrayFromArrayBufferResult, 1 + 1 + 1 + 1, true, 5)\
++_(NewTypedArrayFromArrayResult, 1 + 1, true, 5)\
++_(NewStringObjectResult, 1 + 1, true, 5)\
++_(StringFromCharCodeResult, 1, true, 5)\
++_(StringFromCodePointResult, 1, true, 5)\
++_(StringToLowerCaseResult, 1, true, 5)\
++_(StringToUpperCaseResult, 1, true, 5)\
++_(MathAbsInt32Result, 1, true, 2)\
++_(MathAbsNumberResult, 1, true, 1)\
++_(MathClz32Result, 1, true, 1)\
++_(MathSignInt32Result, 1, true, 1)\
++_(MathSignNumberResult, 1, true, 2)\
++_(MathSignNumberToInt32Result, 1, true, 2)\
++_(MathImulResult, 1 + 1, true, 1)\
++_(MathSqrtNumberResult, 1, true, 1)\
++_(MathFRoundNumberResult, 1, true, 1)\
++_(MathRandomResult, 1, true, 3)\
++_(MathHypot2NumberResult, 1 + 1, true, 4)\
++_(MathHypot3NumberResult, 1 + 1 + 1, true, 4)\
++_(MathHypot4NumberResult, 1 + 1 + 1 + 1, true, 4)\
++_(MathAtan2NumberResult, 1 + 1, true, 4)\
++_(MathFloorNumberResult, 1, true, 4)\
++_(MathCeilNumberResult, 1, true, 4)\
++_(MathTruncNumberResult, 1, true, 4)\
++_(MathFloorToInt32Result, 1, true, 3)\
++_(MathCeilToInt32Result, 1, true, 1)\
++_(MathTruncToInt32Result, 1, true, 4294967295)\
++_(MathRoundToInt32Result, 1, true, 1)\
++_(Int32MinMax, 1 + 1 + 1 + 1, true, 1)\
++_(NumberMinMax, 1 + 1 + 1 + 1, true, 1)\
++_(Int32MinMaxArrayResult, 1 + 1, true, 3)\
++_(NumberMinMaxArrayResult, 1 + 1, true, 3)\
++_(MathFunctionNumberResult, 1 + 1, true, 4)\
++_(ObjectToStringResult, 1, true, 4)\
++_(ReflectGetPrototypeOfResult, 1, true, 5)\
++_(StoreTypedArrayElement, 1 + 1 + 1 + 1 + 1, true, 3)\
++_(AtomicsCompareExchangeResult, 1 + 1 + 1 + 1 + 1, true, 4)\
++_(AtomicsExchangeResult, 1 + 1 + 1 + 1, true, 4)\
++_(AtomicsAddResult, 1 + 1 + 1 + 1 + 1, true, 4)\
++_(AtomicsSubResult, 1 + 1 + 1 + 1 + 1, true, 4)\
++_(AtomicsAndResult, 1 + 1 + 1 + 1 + 1, true, 4)\
++_(AtomicsOrResult, 1 + 1 + 1 + 1 + 1, true, 4)\
++_(AtomicsXorResult, 1 + 1 + 1 + 1 + 1, true, 4)\
++_(AtomicsLoadResult, 1 + 1 + 1, true, 2)\
++_(AtomicsStoreResult, 1 + 1 + 1 + 1, true, 2)\
++_(AtomicsIsLockFreeResult, 1, true, 1)\
++_(CallNativeSetter, 1 + 1 + 1 + 1 + 1, true, 5)\
++_(CallScriptedSetter, 1 + 1 + 1 + 1 + 1, true, 3)\
++_(CallInlinedSetter, 1 + 1 + 1 + 1 + 1 + 1, true, 3)\
++_(CallDOMSetter, 1 + 1 + 1, true, 4)\
++_(CallSetArrayLength, 1 + 1 + 1, true, 5)\
++_(ProxySet, 1 + 1 + 1 + 1, true, 5)\
++_(ProxySetByValue, 1 + 1 + 1 + 1, true, 5)\
++_(CallAddOrUpdateSparseElementHelper, 1 + 1 + 1 + 1, true, 5)\
++_(CallInt32ToString, 1 + 1, true, 4)\
++_(CallNumberToString, 1 + 1, true, 4)\
++_(BooleanToString, 1 + 1, true, 2)\
++_(CallScriptedFunction, 1 + 1 + 1, true, 3)\
++_(CallWasmFunction, 1 + 1 + 1 + 1 + 1, true, 3)\
++_(GuardWasmArg, 1 + 1, true, 2)\
++_(CallNativeFunction, 1 + 1 + 1 + 1, true, 4)\
++_(CallDOMFunction, 1 + 1 + 1 + 1, true, 4)\
++_(CallClassHook, 1 + 1 + 1 + 1, false, 4)\
++_(CallInlinedFunction, 1 + 1 + 1 + 1, true, 4)\
++_(MetaTwoByte, 1 + 1, true, 0)\
++_(LoadFixedSlotResult, 1 + 1, true, 1)\
++_(LoadFixedSlotTypedResult, 1 + 1 + 1, true, 1)\
++_(LoadDynamicSlotResult, 1 + 1, true, 1)\
++_(LoadDenseElementResult, 1 + 1, true, 2)\
++_(LoadDenseElementHoleResult, 1 + 1, true, 2)\
++_(CallGetSparseElementResult, 1 + 1, true, 5)\
++_(LoadDenseElementExistsResult, 1 + 1, true, 1)\
++_(LoadTypedArrayElementExistsResult, 1 + 1, true, 2)\
++_(LoadDenseElementHoleExistsResult, 1 + 1, true, 2)\
++_(LoadTypedArrayElementResult, 1 + 1 + 1 + 1 + 1, true, 4)\
++_(LoadDataViewValueResult, 1 + 1 + 1 + 1 + 1, true, 4)\
++_(StoreDataViewValueResult, 1 + 1 + 1 + 1 + 1, true, 4)\
++_(LoadInt32ArrayLengthResult, 1, true, 1)\
++_(LoadInt32ArrayLength, 1 + 1, true, 1)\
++_(LoadArgumentsObjectArgResult, 1 + 1, true, 2)\
++_(LoadArgumentsObjectLengthResult, 1, true, 1)\
++_(LoadFunctionLengthResult, 1, true, 2)\
++_(LoadFunctionNameResult, 1, true, 2)\
++_(LoadArrayBufferByteLengthInt32Result, 1, true, 1)\
++_(LoadArrayBufferByteLengthDoubleResult, 1, true, 1)\
++_(LoadArrayBufferViewLengthInt32Result, 1, true, 1)\
++_(LoadArrayBufferViewLengthDoubleResult, 1, true, 1)\
++_(LoadStringCharResult, 1 + 1, true, 5)\
++_(LoadStringCharCodeResult, 1 + 1, true, 3)\
++_(LoadStringLengthResult, 1, true, 1)\
++_(FrameIsConstructingResult, 0, true, 1)\
++_(LoadEnvironmentFixedSlotResult, 1 + 1, true, 1)\
++_(LoadEnvironmentDynamicSlotResult, 1 + 1, true, 1)\
++_(LoadObjectResult, 1, true, 1)\
++_(LoadStringResult, 1, true, 1)\
++_(LoadSymbolResult, 1, true, 1)\
++_(LoadInt32Result, 1, true, 1)\
++_(LoadDoubleResult, 1, true, 2)\
++_(LoadBigIntResult, 1, true, 1)\
++_(CallScriptedGetterResult, 1 + 1 + 1 + 1, true, 5)\
++_(CallInlinedGetterResult, 1 + 1 + 1 + 1 + 1, true, 5)\
++_(CallNativeGetterResult, 1 + 1 + 1 + 1, true, 5)\
++_(CallDOMGetterResult, 1 + 1, true, 4)\
++_(ProxyGetResult, 1 + 1, true, 5)\
++_(ProxyGetByValueResult, 1 + 1, true, 5)\
++_(ProxyHasPropResult, 1 + 1 + 1, true, 5)\
++_(CallObjectHasSparseElementResult, 1 + 1, true, 4)\
++_(CallNativeGetElementResult, 1 + 1, true, 5)\
++_(GetNextMapSetEntryForIteratorResult, 1 + 1 + 1, true, 4)\
++_(LoadUndefinedResult, 0, true, 1)\
++_(LoadBooleanResult, 1, true, 1)\
++_(LoadInt32Constant, 1 + 1, true, 1)\
++_(LoadBooleanConstant, 1 + 1, true, 1)\
++_(LoadUndefined, 1, true, 1)\
++_(LoadConstantString, 1 + 1, true, 1)\
++_(LoadConstantStringResult, 1, true, 1)\
++_(LoadInstanceOfObjectResult, 1 + 1, true, 3)\
++_(LoadTypeOfObjectResult, 1, true, 4)\
++_(DoubleAddResult, 1 + 1, true, 2)\
++_(DoubleSubResult, 1 + 1, true, 2)\
++_(DoubleMulResult, 1 + 1, true, 2)\
++_(DoubleDivResult, 1 + 1, true, 2)\
++_(DoubleModResult, 1 + 1, true, 4)\
++_(DoublePowResult, 1 + 1, true, 4)\
++_(Int32AddResult, 1 + 1, true, 1)\
++_(Int32SubResult, 1 + 1, true, 1)\
++_(Int32MulResult, 1 + 1, true, 2)\
++_(Int32DivResult, 1 + 1, true, 2)\
++_(Int32ModResult, 1 + 1, true, 2)\
++_(Int32PowResult, 1 + 1, true, 1)\
++_(BigIntAddResult, 1 + 1, true, 5)\
++_(BigIntSubResult, 1 + 1, true, 5)\
++_(BigIntMulResult, 1 + 1, true, 5)\
++_(BigIntDivResult, 1 + 1, true, 5)\
++_(BigIntModResult, 1 + 1, true, 5)\
++_(BigIntPowResult, 1 + 1, true, 5)\
++_(Int32BitOrResult, 1 + 1, true, 1)\
++_(Int32BitXorResult, 1 + 1, true, 1)\
++_(Int32BitAndResult, 1 + 1, true, 1)\
++_(Int32LeftShiftResult, 1 + 1, true, 1)\
++_(Int32RightShiftResult, 1 + 1, true, 1)\
++_(Int32URightShiftResult, 1 + 1 + 1, true, 2)\
++_(Int32NotResult, 1, true, 1)\
++_(BigIntBitOrResult, 1 + 1, true, 5)\
++_(BigIntBitXorResult, 1 + 1, true, 5)\
++_(BigIntBitAndResult, 1 + 1, true, 5)\
++_(BigIntLeftShiftResult, 1 + 1, true, 5)\
++_(BigIntRightShiftResult, 1 + 1, true, 5)\
++_(BigIntNotResult, 1, true, 5)\
++_(Int32NegationResult, 1, true, 1)\
++_(DoubleNegationResult, 1, true, 1)\
++_(BigIntNegationResult, 1, true, 5)\
++_(Int32IncResult, 1, true, 1)\
++_(Int32DecResult, 1, true, 1)\
++_(DoubleIncResult, 1, true, 1)\
++_(DoubleDecResult, 1, true, 1)\
++_(BigIntIncResult, 1, true, 5)\
++_(BigIntDecResult, 1, true, 5)\
++_(LoadInt32TruthyResult, 1, true, 2)\
++_(LoadDoubleTruthyResult, 1, true, 2)\
++_(LoadStringTruthyResult, 1, true, 2)\
++_(LoadObjectTruthyResult, 1, true, 4)\
++_(LoadBigIntTruthyResult, 1, true, 2)\
++_(LoadValueTruthyResult, 1, true, 4)\
++_(LoadValueResult, 1, false, 1)\
++_(LoadOperandResult, 1, true, 1)\
++_(NewPlainObjectResult, 4 + 4 + 1 + 1 + 1, true, 4)\
++_(NewArrayObjectResult, 4 + 1 + 1, true, 4)\
++_(CallStringConcatResult, 1 + 1, true, 5)\
++_(CallStringObjectConcatResult, 1 + 1, false, 5)\
++_(CallIsSuspendedGeneratorResult, 1, false, 2)\
++_(CompareStringResult, 1 + 1 + 1, true, 5)\
++_(CompareObjectResult, 1 + 1 + 1, true, 2)\
++_(CompareSymbolResult, 1 + 1 + 1, true, 2)\
++_(CompareInt32Result, 1 + 1 + 1, true, 2)\
++_(CompareDoubleResult, 1 + 1 + 1, true, 2)\
++_(CompareBigIntResult, 1 + 1 + 1, true, 4)\
++_(CompareBigIntInt32Result, 1 + 1 + 1, true, 3)\
++_(CompareBigIntNumberResult, 1 + 1 + 1, true, 4)\
++_(CompareBigIntStringResult, 1 + 1 + 1, true, 5)\
++_(CompareNullUndefinedResult, 1 + 1 + 1, true, 2)\
++_(CompareDoubleSameValueResult, 1 + 1, true, 3)\
++_(SameValueResult, 1 + 1, true, 4)\
++_(IndirectTruncateInt32Result, 1, true, 1)\
++_(BigIntAsIntNResult, 1 + 1, true, 5)\
++_(BigIntAsUintNResult, 1 + 1, true, 5)\
++_(CallPrintString, sizeof(uintptr_t), false, 1)\
++_(Breakpoint, 0, false, 1)\
++_(WrapResult, 0, false, 4)\
++_(Bailout, 0, true, 0)\
++_(AssertRecoveredOnBailoutResult, 1 + 1, true, 1)
++
++#define CACHE_IR_WRITER_GENERATED \
++void returnFromIC() {\
++ writeOp(CacheOp::ReturnFromIC);\
++ assertLengthMatches();\
++}\
++private:\
++void guardToObject_(ValOperandId input) {\
++ writeOp(CacheOp::GuardToObject);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++public:\
++void guardIsNullOrUndefined(ValOperandId input) {\
++ writeOp(CacheOp::GuardIsNullOrUndefined);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void guardIsNull(ValOperandId input) {\
++ writeOp(CacheOp::GuardIsNull);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void guardIsUndefined(ValOperandId input) {\
++ writeOp(CacheOp::GuardIsUndefined);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++private:\
++void guardToBoolean_(ValOperandId input) {\
++ writeOp(CacheOp::GuardToBoolean);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++public:\
++private:\
++void guardToString_(ValOperandId input) {\
++ writeOp(CacheOp::GuardToString);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++public:\
++private:\
++void guardToSymbol_(ValOperandId input) {\
++ writeOp(CacheOp::GuardToSymbol);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++public:\
++private:\
++void guardToBigInt_(ValOperandId input) {\
++ writeOp(CacheOp::GuardToBigInt);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++public:\
++private:\
++void guardIsNumber_(ValOperandId input) {\
++ writeOp(CacheOp::GuardIsNumber);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++public:\
++private:\
++void guardToInt32_(ValOperandId input) {\
++ writeOp(CacheOp::GuardToInt32);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++public:\
++Int32OperandId guardBooleanToInt32(ValOperandId input) {\
++ writeOp(CacheOp::GuardBooleanToInt32);\
++ writeOperandId(input);\
++ Int32OperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++Int32OperandId guardToInt32Index(ValOperandId input) {\
++ writeOp(CacheOp::GuardToInt32Index);\
++ writeOperandId(input);\
++ Int32OperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++IntPtrOperandId int32ToIntPtr(Int32OperandId input) {\
++ writeOp(CacheOp::Int32ToIntPtr);\
++ writeOperandId(input);\
++ IntPtrOperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++IntPtrOperandId guardNumberToIntPtrIndex(NumberOperandId input, bool supportOOB) {\
++ writeOp(CacheOp::GuardNumberToIntPtrIndex);\
++ writeOperandId(input);\
++ writeBoolImm(supportOOB);\
++ IntPtrOperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++Int32OperandId guardToInt32ModUint32(ValOperandId input) {\
++ writeOp(CacheOp::GuardToInt32ModUint32);\
++ writeOperandId(input);\
++ Int32OperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++Int32OperandId guardToUint8Clamped(ValOperandId input) {\
++ writeOp(CacheOp::GuardToUint8Clamped);\
++ writeOperandId(input);\
++ Int32OperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++void guardNonDoubleType(ValOperandId input, ValueType type) {\
++ writeOp(CacheOp::GuardNonDoubleType);\
++ writeOperandId(input);\
++ writeValueTypeImm(type);\
++ assertLengthMatches();\
++}\
++void guardShape(ObjOperandId obj, Shape* shape) {\
++ writeOp(CacheOp::GuardShape);\
++ writeOperandId(obj);\
++ writeShapeField(shape);\
++ assertLengthMatches();\
++}\
++void guardProto(ObjOperandId obj, JSObject* proto) {\
++ writeOp(CacheOp::GuardProto);\
++ writeOperandId(obj);\
++ writeObjectField(proto);\
++ assertLengthMatches();\
++}\
++void guardNullProto(ObjOperandId obj) {\
++ writeOp(CacheOp::GuardNullProto);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void guardClass(ObjOperandId obj, GuardClassKind kind) {\
++ writeOp(CacheOp::GuardClass);\
++ writeOperandId(obj);\
++ writeGuardClassKindImm(kind);\
++ assertLengthMatches();\
++}\
++void guardAnyClass(ObjOperandId obj, const void* clasp) {\
++ writeOp(CacheOp::GuardAnyClass);\
++ writeOperandId(obj);\
++ writeRawPointerField(clasp);\
++ assertLengthMatches();\
++}\
++void hasClassResult(ObjOperandId obj, const void* clasp) {\
++ writeOp(CacheOp::HasClassResult);\
++ writeOperandId(obj);\
++ writeRawPointerField(clasp);\
++ assertLengthMatches();\
++}\
++void callRegExpMatcherResult(ObjOperandId regexp, StringOperandId input, Int32OperandId lastIndex) {\
++ writeOp(CacheOp::CallRegExpMatcherResult);\
++ writeOperandId(regexp);\
++ writeOperandId(input);\
++ writeOperandId(lastIndex);\
++ assertLengthMatches();\
++}\
++void callRegExpSearcherResult(ObjOperandId regexp, StringOperandId input, Int32OperandId lastIndex) {\
++ writeOp(CacheOp::CallRegExpSearcherResult);\
++ writeOperandId(regexp);\
++ writeOperandId(input);\
++ writeOperandId(lastIndex);\
++ assertLengthMatches();\
++}\
++void callRegExpTesterResult(ObjOperandId regexp, StringOperandId input, Int32OperandId lastIndex) {\
++ writeOp(CacheOp::CallRegExpTesterResult);\
++ writeOperandId(regexp);\
++ writeOperandId(input);\
++ writeOperandId(lastIndex);\
++ assertLengthMatches();\
++}\
++void regExpFlagResult(ObjOperandId regexp, int32_t flagsMask) {\
++ writeOp(CacheOp::RegExpFlagResult);\
++ writeOperandId(regexp);\
++ writeInt32Imm(flagsMask);\
++ assertLengthMatches();\
++}\
++void callSubstringKernelResult(StringOperandId str, Int32OperandId begin, Int32OperandId length) {\
++ writeOp(CacheOp::CallSubstringKernelResult);\
++ writeOperandId(str);\
++ writeOperandId(begin);\
++ writeOperandId(length);\
++ assertLengthMatches();\
++}\
++void stringReplaceStringResult(StringOperandId str, StringOperandId pattern, StringOperandId replacement) {\
++ writeOp(CacheOp::StringReplaceStringResult);\
++ writeOperandId(str);\
++ writeOperandId(pattern);\
++ writeOperandId(replacement);\
++ assertLengthMatches();\
++}\
++void stringSplitStringResult(StringOperandId str, StringOperandId separator) {\
++ writeOp(CacheOp::StringSplitStringResult);\
++ writeOperandId(str);\
++ writeOperandId(separator);\
++ assertLengthMatches();\
++}\
++void regExpPrototypeOptimizableResult(ObjOperandId proto) {\
++ writeOp(CacheOp::RegExpPrototypeOptimizableResult);\
++ writeOperandId(proto);\
++ assertLengthMatches();\
++}\
++void regExpInstanceOptimizableResult(ObjOperandId regexp, ObjOperandId proto) {\
++ writeOp(CacheOp::RegExpInstanceOptimizableResult);\
++ writeOperandId(regexp);\
++ writeOperandId(proto);\
++ assertLengthMatches();\
++}\
++void getFirstDollarIndexResult(StringOperandId str) {\
++ writeOp(CacheOp::GetFirstDollarIndexResult);\
++ writeOperandId(str);\
++ assertLengthMatches();\
++}\
++void guardCompartment(ObjOperandId obj, JSObject* global, const void* compartment) {\
++ writeOp(CacheOp::GuardCompartment);\
++ writeOperandId(obj);\
++ writeObjectField(global);\
++ writeRawPointerField(compartment);\
++ assertLengthMatches();\
++}\
++void guardIsExtensible(ObjOperandId obj) {\
++ writeOp(CacheOp::GuardIsExtensible);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void guardIsNativeObject(ObjOperandId obj) {\
++ writeOp(CacheOp::GuardIsNativeObject);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void guardIsProxy(ObjOperandId obj) {\
++ writeOp(CacheOp::GuardIsProxy);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void guardIsNotProxy(ObjOperandId obj) {\
++ writeOp(CacheOp::GuardIsNotProxy);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void guardIsNotArrayBufferMaybeShared(ObjOperandId obj) {\
++ writeOp(CacheOp::GuardIsNotArrayBufferMaybeShared);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void guardIsTypedArray(ObjOperandId obj) {\
++ writeOp(CacheOp::GuardIsTypedArray);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void guardHasProxyHandler(ObjOperandId obj, const void* handler) {\
++ writeOp(CacheOp::GuardHasProxyHandler);\
++ writeOperandId(obj);\
++ writeRawPointerField(handler);\
++ assertLengthMatches();\
++}\
++void guardIsNotDOMProxy(ObjOperandId obj) {\
++ writeOp(CacheOp::GuardIsNotDOMProxy);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void guardSpecificObject(ObjOperandId obj, JSObject* expected) {\
++ writeOp(CacheOp::GuardSpecificObject);\
++ writeOperandId(obj);\
++ writeObjectField(expected);\
++ assertLengthMatches();\
++}\
++private:\
++void guardSpecificFunction_(ObjOperandId fun, JSObject* expected, uint32_t nargsAndFlags) {\
++ writeOp(CacheOp::GuardSpecificFunction);\
++ writeOperandId(fun);\
++ writeObjectField(expected);\
++ writeRawInt32Field(nargsAndFlags);\
++ assertLengthMatches();\
++}\
++public:\
++private:\
++void guardFunctionScript_(ObjOperandId obj, BaseScript* expected, uint32_t nargsAndFlags) {\
++ writeOp(CacheOp::GuardFunctionScript);\
++ writeOperandId(obj);\
++ writeBaseScriptField(expected);\
++ writeRawInt32Field(nargsAndFlags);\
++ assertLengthMatches();\
++}\
++public:\
++void guardSpecificAtom(StringOperandId str, JSAtom* expected) {\
++ writeOp(CacheOp::GuardSpecificAtom);\
++ writeOperandId(str);\
++ writeStringField(expected);\
++ assertLengthMatches();\
++}\
++void guardSpecificSymbol(SymbolOperandId sym, JS::Symbol* expected) {\
++ writeOp(CacheOp::GuardSpecificSymbol);\
++ writeOperandId(sym);\
++ writeSymbolField(expected);\
++ assertLengthMatches();\
++}\
++void guardNoDenseElements(ObjOperandId obj) {\
++ writeOp(CacheOp::GuardNoDenseElements);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++Int32OperandId guardStringToIndex(StringOperandId str) {\
++ writeOp(CacheOp::GuardStringToIndex);\
++ writeOperandId(str);\
++ Int32OperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++Int32OperandId guardStringToInt32(StringOperandId str) {\
++ writeOp(CacheOp::GuardStringToInt32);\
++ writeOperandId(str);\
++ Int32OperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++NumberOperandId guardStringToNumber(StringOperandId str) {\
++ writeOp(CacheOp::GuardStringToNumber);\
++ writeOperandId(str);\
++ NumberOperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++NumberOperandId booleanToNumber(BooleanOperandId boolean) {\
++ writeOp(CacheOp::BooleanToNumber);\
++ writeOperandId(boolean);\
++ NumberOperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++ObjOperandId guardAndGetIterator(ObjOperandId obj, JSObject* iter, const void* enumeratorsAddr) {\
++ writeOp(CacheOp::GuardAndGetIterator);\
++ writeOperandId(obj);\
++ writeObjectField(iter);\
++ writeRawPointerField(enumeratorsAddr);\
++ ObjOperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++void guardHasGetterSetter(ObjOperandId obj, jsid id, GetterSetter* getterSetter) {\
++ writeOp(CacheOp::GuardHasGetterSetter);\
++ writeOperandId(obj);\
++ writeIdField(id);\
++ writeGetterSetterField(getterSetter);\
++ assertLengthMatches();\
++}\
++void guardInt32IsNonNegative(Int32OperandId index) {\
++ writeOp(CacheOp::GuardInt32IsNonNegative);\
++ writeOperandId(index);\
++ assertLengthMatches();\
++}\
++void guardIndexIsValidUpdateOrAdd(ObjOperandId obj, Int32OperandId index) {\
++ writeOp(CacheOp::GuardIndexIsValidUpdateOrAdd);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ assertLengthMatches();\
++}\
++void guardIndexGreaterThanDenseInitLength(ObjOperandId obj, Int32OperandId index) {\
++ writeOp(CacheOp::GuardIndexGreaterThanDenseInitLength);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ assertLengthMatches();\
++}\
++void guardTagNotEqual(ValueTagOperandId lhs, ValueTagOperandId rhs) {\
++ writeOp(CacheOp::GuardTagNotEqual);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void guardXrayExpandoShapeAndDefaultProto(ObjOperandId obj, JSObject* shapeWrapper) {\
++ writeOp(CacheOp::GuardXrayExpandoShapeAndDefaultProto);\
++ writeOperandId(obj);\
++ writeObjectField(shapeWrapper);\
++ assertLengthMatches();\
++}\
++void guardXrayNoExpando(ObjOperandId obj) {\
++ writeOp(CacheOp::GuardXrayNoExpando);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void guardDynamicSlotIsSpecificObject(ObjOperandId obj, ObjOperandId expected, uint32_t slot) {\
++ writeOp(CacheOp::GuardDynamicSlotIsSpecificObject);\
++ writeOperandId(obj);\
++ writeOperandId(expected);\
++ writeRawInt32Field(slot);\
++ assertLengthMatches();\
++}\
++void guardFixedSlotValue(ObjOperandId obj, uint32_t offset, const Value& val) {\
++ writeOp(CacheOp::GuardFixedSlotValue);\
++ writeOperandId(obj);\
++ writeRawInt32Field(offset);\
++ writeValueField(val);\
++ assertLengthMatches();\
++}\
++void guardDynamicSlotValue(ObjOperandId obj, uint32_t offset, const Value& val) {\
++ writeOp(CacheOp::GuardDynamicSlotValue);\
++ writeOperandId(obj);\
++ writeRawInt32Field(offset);\
++ writeValueField(val);\
++ assertLengthMatches();\
++}\
++void guardNoAllocationMetadataBuilder(const void* builderAddr) {\
++ writeOp(CacheOp::GuardNoAllocationMetadataBuilder);\
++ writeRawPointerField(builderAddr);\
++ assertLengthMatches();\
++}\
++void guardFunctionHasJitEntry(ObjOperandId fun, bool constructing) {\
++ writeOp(CacheOp::GuardFunctionHasJitEntry);\
++ writeOperandId(fun);\
++ writeBoolImm(constructing);\
++ assertLengthMatches();\
++}\
++void guardFunctionHasNoJitEntry(ObjOperandId fun) {\
++ writeOp(CacheOp::GuardFunctionHasNoJitEntry);\
++ writeOperandId(fun);\
++ assertLengthMatches();\
++}\
++void guardFunctionIsNonBuiltinCtor(ObjOperandId fun) {\
++ writeOp(CacheOp::GuardFunctionIsNonBuiltinCtor);\
++ writeOperandId(fun);\
++ assertLengthMatches();\
++}\
++void guardFunctionIsConstructor(ObjOperandId fun) {\
++ writeOp(CacheOp::GuardFunctionIsConstructor);\
++ writeOperandId(fun);\
++ assertLengthMatches();\
++}\
++void guardNotClassConstructor(ObjOperandId fun) {\
++ writeOp(CacheOp::GuardNotClassConstructor);\
++ writeOperandId(fun);\
++ assertLengthMatches();\
++}\
++void guardArrayIsPacked(ObjOperandId array) {\
++ writeOp(CacheOp::GuardArrayIsPacked);\
++ writeOperandId(array);\
++ assertLengthMatches();\
++}\
++void guardArgumentsObjectFlags(ObjOperandId obj, uint32_t flags) {\
++ writeOp(CacheOp::GuardArgumentsObjectFlags);\
++ writeOperandId(obj);\
++ writeByteImm(flags);\
++ assertLengthMatches();\
++}\
++ObjOperandId loadObject(JSObject* obj) {\
++ writeOp(CacheOp::LoadObject);\
++ ObjOperandId result(newOperandId());\
++ writeOperandId(result);\
++ writeObjectField(obj);\
++ assertLengthMatches();\
++ return result;\
++}\
++ObjOperandId loadProto(ObjOperandId obj) {\
++ writeOp(CacheOp::LoadProto);\
++ writeOperandId(obj);\
++ ObjOperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++ObjOperandId loadEnclosingEnvironment(ObjOperandId obj) {\
++ writeOp(CacheOp::LoadEnclosingEnvironment);\
++ writeOperandId(obj);\
++ ObjOperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++ObjOperandId loadWrapperTarget(ObjOperandId obj) {\
++ writeOp(CacheOp::LoadWrapperTarget);\
++ writeOperandId(obj);\
++ ObjOperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++ValueTagOperandId loadValueTag(ValOperandId val) {\
++ writeOp(CacheOp::LoadValueTag);\
++ writeOperandId(val);\
++ ValueTagOperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++private:\
++ValOperandId loadArgumentFixedSlot_(uint32_t slotIndex) {\
++ writeOp(CacheOp::LoadArgumentFixedSlot);\
++ ValOperandId result(newOperandId());\
++ writeOperandId(result);\
++ writeByteImm(slotIndex);\
++ assertLengthMatches();\
++ return result;\
++}\
++public:\
++private:\
++ValOperandId loadArgumentDynamicSlot_(Int32OperandId argc, uint32_t slotIndex) {\
++ writeOp(CacheOp::LoadArgumentDynamicSlot);\
++ ValOperandId result(newOperandId());\
++ writeOperandId(result);\
++ writeOperandId(argc);\
++ writeByteImm(slotIndex);\
++ assertLengthMatches();\
++ return result;\
++}\
++public:\
++Int32OperandId truncateDoubleToUInt32(NumberOperandId input) {\
++ writeOp(CacheOp::TruncateDoubleToUInt32);\
++ writeOperandId(input);\
++ Int32OperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++void megamorphicLoadSlotResult(ObjOperandId obj, PropertyName* name) {\
++ writeOp(CacheOp::MegamorphicLoadSlotResult);\
++ writeOperandId(obj);\
++ writeStringField(name);\
++ assertLengthMatches();\
++}\
++void megamorphicLoadSlotByValueResult(ObjOperandId obj, ValOperandId id) {\
++ writeOp(CacheOp::MegamorphicLoadSlotByValueResult);\
++ writeOperandId(obj);\
++ writeOperandId(id);\
++ assertLengthMatches();\
++}\
++void megamorphicStoreSlot(ObjOperandId obj, PropertyName* name, ValOperandId rhs) {\
++ writeOp(CacheOp::MegamorphicStoreSlot);\
++ writeOperandId(obj);\
++ writeStringField(name);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void megamorphicSetElement(ObjOperandId obj, ValOperandId id, ValOperandId rhs, bool strict) {\
++ writeOp(CacheOp::MegamorphicSetElement);\
++ writeOperandId(obj);\
++ writeOperandId(id);\
++ writeOperandId(rhs);\
++ writeBoolImm(strict);\
++ assertLengthMatches();\
++}\
++void megamorphicHasPropResult(ObjOperandId obj, ValOperandId id, bool hasOwn) {\
++ writeOp(CacheOp::MegamorphicHasPropResult);\
++ writeOperandId(obj);\
++ writeOperandId(id);\
++ writeBoolImm(hasOwn);\
++ assertLengthMatches();\
++}\
++ValOperandId loadDOMExpandoValue(ObjOperandId obj) {\
++ writeOp(CacheOp::LoadDOMExpandoValue);\
++ writeOperandId(obj);\
++ ValOperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++ValOperandId loadDOMExpandoValueGuardGeneration(ObjOperandId obj, const void* expandoAndGeneration, uint64_t generation) {\
++ writeOp(CacheOp::LoadDOMExpandoValueGuardGeneration);\
++ writeOperandId(obj);\
++ writeRawPointerField(expandoAndGeneration);\
++ writeRawInt64Field(generation);\
++ ValOperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++ValOperandId loadDOMExpandoValueIgnoreGeneration(ObjOperandId obj) {\
++ writeOp(CacheOp::LoadDOMExpandoValueIgnoreGeneration);\
++ writeOperandId(obj);\
++ ValOperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++void guardDOMExpandoMissingOrGuardShape(ValOperandId expando, Shape* shape) {\
++ writeOp(CacheOp::GuardDOMExpandoMissingOrGuardShape);\
++ writeOperandId(expando);\
++ writeShapeField(shape);\
++ assertLengthMatches();\
++}\
++void storeFixedSlot(ObjOperandId obj, uint32_t offset, ValOperandId rhs) {\
++ writeOp(CacheOp::StoreFixedSlot);\
++ writeOperandId(obj);\
++ writeRawInt32Field(offset);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void storeDynamicSlot(ObjOperandId obj, uint32_t offset, ValOperandId rhs) {\
++ writeOp(CacheOp::StoreDynamicSlot);\
++ writeOperandId(obj);\
++ writeRawInt32Field(offset);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void addAndStoreFixedSlot(ObjOperandId obj, uint32_t offset, ValOperandId rhs, Shape* newShape) {\
++ writeOp(CacheOp::AddAndStoreFixedSlot);\
++ writeOperandId(obj);\
++ writeRawInt32Field(offset);\
++ writeOperandId(rhs);\
++ writeShapeField(newShape);\
++ assertLengthMatches();\
++}\
++void addAndStoreDynamicSlot(ObjOperandId obj, uint32_t offset, ValOperandId rhs, Shape* newShape) {\
++ writeOp(CacheOp::AddAndStoreDynamicSlot);\
++ writeOperandId(obj);\
++ writeRawInt32Field(offset);\
++ writeOperandId(rhs);\
++ writeShapeField(newShape);\
++ assertLengthMatches();\
++}\
++void allocateAndStoreDynamicSlot(ObjOperandId obj, uint32_t offset, ValOperandId rhs, Shape* newShape, uint32_t numNewSlots) {\
++ writeOp(CacheOp::AllocateAndStoreDynamicSlot);\
++ writeOperandId(obj);\
++ writeRawInt32Field(offset);\
++ writeOperandId(rhs);\
++ writeShapeField(newShape);\
++ writeRawInt32Field(numNewSlots);\
++ assertLengthMatches();\
++}\
++void storeDenseElement(ObjOperandId obj, Int32OperandId index, ValOperandId rhs) {\
++ writeOp(CacheOp::StoreDenseElement);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void storeDenseElementHole(ObjOperandId obj, Int32OperandId index, ValOperandId rhs, bool handleAdd) {\
++ writeOp(CacheOp::StoreDenseElementHole);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ writeOperandId(rhs);\
++ writeBoolImm(handleAdd);\
++ assertLengthMatches();\
++}\
++void arrayPush(ObjOperandId obj, ValOperandId rhs) {\
++ writeOp(CacheOp::ArrayPush);\
++ writeOperandId(obj);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void arrayJoinResult(ObjOperandId obj, StringOperandId sep) {\
++ writeOp(CacheOp::ArrayJoinResult);\
++ writeOperandId(obj);\
++ writeOperandId(sep);\
++ assertLengthMatches();\
++}\
++void packedArrayPopResult(ObjOperandId array) {\
++ writeOp(CacheOp::PackedArrayPopResult);\
++ writeOperandId(array);\
++ assertLengthMatches();\
++}\
++void packedArrayShiftResult(ObjOperandId array) {\
++ writeOp(CacheOp::PackedArrayShiftResult);\
++ writeOperandId(array);\
++ assertLengthMatches();\
++}\
++void packedArraySliceResult(JSObject* templateObject, ObjOperandId array, Int32OperandId begin, Int32OperandId end) {\
++ writeOp(CacheOp::PackedArraySliceResult);\
++ writeObjectField(templateObject);\
++ writeOperandId(array);\
++ writeOperandId(begin);\
++ writeOperandId(end);\
++ assertLengthMatches();\
++}\
++void isArrayResult(ValOperandId input) {\
++ writeOp(CacheOp::IsArrayResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void storeFixedSlotUndefinedResult(ObjOperandId obj, uint32_t offset, ValOperandId rhs) {\
++ writeOp(CacheOp::StoreFixedSlotUndefinedResult);\
++ writeOperandId(obj);\
++ writeRawInt32Field(offset);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void isObjectResult(ValOperandId input) {\
++ writeOp(CacheOp::IsObjectResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void isPackedArrayResult(ObjOperandId obj) {\
++ writeOp(CacheOp::IsPackedArrayResult);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void isCallableResult(ValOperandId input) {\
++ writeOp(CacheOp::IsCallableResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void isConstructorResult(ObjOperandId obj) {\
++ writeOp(CacheOp::IsConstructorResult);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void isCrossRealmArrayConstructorResult(ObjOperandId obj) {\
++ writeOp(CacheOp::IsCrossRealmArrayConstructorResult);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void isTypedArrayResult(ObjOperandId obj, bool isPossiblyWrapped) {\
++ writeOp(CacheOp::IsTypedArrayResult);\
++ writeOperandId(obj);\
++ writeBoolImm(isPossiblyWrapped);\
++ assertLengthMatches();\
++}\
++void isTypedArrayConstructorResult(ObjOperandId obj) {\
++ writeOp(CacheOp::IsTypedArrayConstructorResult);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void arrayBufferViewByteOffsetInt32Result(ObjOperandId obj) {\
++ writeOp(CacheOp::ArrayBufferViewByteOffsetInt32Result);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void arrayBufferViewByteOffsetDoubleResult(ObjOperandId obj) {\
++ writeOp(CacheOp::ArrayBufferViewByteOffsetDoubleResult);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void typedArrayByteLengthInt32Result(ObjOperandId obj) {\
++ writeOp(CacheOp::TypedArrayByteLengthInt32Result);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void typedArrayByteLengthDoubleResult(ObjOperandId obj) {\
++ writeOp(CacheOp::TypedArrayByteLengthDoubleResult);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void typedArrayElementSizeResult(ObjOperandId obj) {\
++ writeOp(CacheOp::TypedArrayElementSizeResult);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void guardHasAttachedArrayBuffer(ObjOperandId obj) {\
++ writeOp(CacheOp::GuardHasAttachedArrayBuffer);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void finishBoundFunctionInitResult(ObjOperandId bound, ObjOperandId target, Int32OperandId argCount) {\
++ writeOp(CacheOp::FinishBoundFunctionInitResult);\
++ writeOperandId(bound);\
++ writeOperandId(target);\
++ writeOperandId(argCount);\
++ assertLengthMatches();\
++}\
++void newArrayIteratorResult(JSObject* templateObject) {\
++ writeOp(CacheOp::NewArrayIteratorResult);\
++ writeObjectField(templateObject);\
++ assertLengthMatches();\
++}\
++void newStringIteratorResult(JSObject* templateObject) {\
++ writeOp(CacheOp::NewStringIteratorResult);\
++ writeObjectField(templateObject);\
++ assertLengthMatches();\
++}\
++void newRegExpStringIteratorResult(JSObject* templateObject) {\
++ writeOp(CacheOp::NewRegExpStringIteratorResult);\
++ writeObjectField(templateObject);\
++ assertLengthMatches();\
++}\
++void objectCreateResult(JSObject* templateObject) {\
++ writeOp(CacheOp::ObjectCreateResult);\
++ writeObjectField(templateObject);\
++ assertLengthMatches();\
++}\
++void newArrayFromLengthResult(JSObject* templateObject, Int32OperandId length) {\
++ writeOp(CacheOp::NewArrayFromLengthResult);\
++ writeObjectField(templateObject);\
++ writeOperandId(length);\
++ assertLengthMatches();\
++}\
++void newTypedArrayFromLengthResult(JSObject* templateObject, Int32OperandId length) {\
++ writeOp(CacheOp::NewTypedArrayFromLengthResult);\
++ writeObjectField(templateObject);\
++ writeOperandId(length);\
++ assertLengthMatches();\
++}\
++void newTypedArrayFromArrayBufferResult(JSObject* templateObject, ObjOperandId buffer, ValOperandId byteOffset, ValOperandId length) {\
++ writeOp(CacheOp::NewTypedArrayFromArrayBufferResult);\
++ writeObjectField(templateObject);\
++ writeOperandId(buffer);\
++ writeOperandId(byteOffset);\
++ writeOperandId(length);\
++ assertLengthMatches();\
++}\
++void newTypedArrayFromArrayResult(JSObject* templateObject, ObjOperandId array) {\
++ writeOp(CacheOp::NewTypedArrayFromArrayResult);\
++ writeObjectField(templateObject);\
++ writeOperandId(array);\
++ assertLengthMatches();\
++}\
++void newStringObjectResult(JSObject* templateObject, StringOperandId str) {\
++ writeOp(CacheOp::NewStringObjectResult);\
++ writeObjectField(templateObject);\
++ writeOperandId(str);\
++ assertLengthMatches();\
++}\
++void stringFromCharCodeResult(Int32OperandId code) {\
++ writeOp(CacheOp::StringFromCharCodeResult);\
++ writeOperandId(code);\
++ assertLengthMatches();\
++}\
++void stringFromCodePointResult(Int32OperandId code) {\
++ writeOp(CacheOp::StringFromCodePointResult);\
++ writeOperandId(code);\
++ assertLengthMatches();\
++}\
++void stringToLowerCaseResult(StringOperandId str) {\
++ writeOp(CacheOp::StringToLowerCaseResult);\
++ writeOperandId(str);\
++ assertLengthMatches();\
++}\
++void stringToUpperCaseResult(StringOperandId str) {\
++ writeOp(CacheOp::StringToUpperCaseResult);\
++ writeOperandId(str);\
++ assertLengthMatches();\
++}\
++void mathAbsInt32Result(Int32OperandId input) {\
++ writeOp(CacheOp::MathAbsInt32Result);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void mathAbsNumberResult(NumberOperandId input) {\
++ writeOp(CacheOp::MathAbsNumberResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void mathClz32Result(Int32OperandId input) {\
++ writeOp(CacheOp::MathClz32Result);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void mathSignInt32Result(Int32OperandId input) {\
++ writeOp(CacheOp::MathSignInt32Result);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void mathSignNumberResult(NumberOperandId input) {\
++ writeOp(CacheOp::MathSignNumberResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void mathSignNumberToInt32Result(NumberOperandId input) {\
++ writeOp(CacheOp::MathSignNumberToInt32Result);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void mathImulResult(Int32OperandId lhs, Int32OperandId rhs) {\
++ writeOp(CacheOp::MathImulResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void mathSqrtNumberResult(NumberOperandId input) {\
++ writeOp(CacheOp::MathSqrtNumberResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void mathFRoundNumberResult(NumberOperandId input) {\
++ writeOp(CacheOp::MathFRoundNumberResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void mathRandomResult(const void* rng) {\
++ writeOp(CacheOp::MathRandomResult);\
++ writeRawPointerField(rng);\
++ assertLengthMatches();\
++}\
++void mathHypot2NumberResult(NumberOperandId first, NumberOperandId second) {\
++ writeOp(CacheOp::MathHypot2NumberResult);\
++ writeOperandId(first);\
++ writeOperandId(second);\
++ assertLengthMatches();\
++}\
++void mathHypot3NumberResult(NumberOperandId first, NumberOperandId second, NumberOperandId third) {\
++ writeOp(CacheOp::MathHypot3NumberResult);\
++ writeOperandId(first);\
++ writeOperandId(second);\
++ writeOperandId(third);\
++ assertLengthMatches();\
++}\
++void mathHypot4NumberResult(NumberOperandId first, NumberOperandId second, NumberOperandId third, NumberOperandId fourth) {\
++ writeOp(CacheOp::MathHypot4NumberResult);\
++ writeOperandId(first);\
++ writeOperandId(second);\
++ writeOperandId(third);\
++ writeOperandId(fourth);\
++ assertLengthMatches();\
++}\
++void mathAtan2NumberResult(NumberOperandId lhs, NumberOperandId rhs) {\
++ writeOp(CacheOp::MathAtan2NumberResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void mathFloorNumberResult(NumberOperandId input) {\
++ writeOp(CacheOp::MathFloorNumberResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void mathCeilNumberResult(NumberOperandId input) {\
++ writeOp(CacheOp::MathCeilNumberResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void mathTruncNumberResult(NumberOperandId input) {\
++ writeOp(CacheOp::MathTruncNumberResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void mathFloorToInt32Result(NumberOperandId input) {\
++ writeOp(CacheOp::MathFloorToInt32Result);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void mathCeilToInt32Result(NumberOperandId input) {\
++ writeOp(CacheOp::MathCeilToInt32Result);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void mathTruncToInt32Result(NumberOperandId input) {\
++ writeOp(CacheOp::MathTruncToInt32Result);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void mathRoundToInt32Result(NumberOperandId input) {\
++ writeOp(CacheOp::MathRoundToInt32Result);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++Int32OperandId int32MinMax(bool isMax, Int32OperandId first, Int32OperandId second) {\
++ writeOp(CacheOp::Int32MinMax);\
++ writeBoolImm(isMax);\
++ writeOperandId(first);\
++ writeOperandId(second);\
++ Int32OperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++NumberOperandId numberMinMax(bool isMax, NumberOperandId first, NumberOperandId second) {\
++ writeOp(CacheOp::NumberMinMax);\
++ writeBoolImm(isMax);\
++ writeOperandId(first);\
++ writeOperandId(second);\
++ NumberOperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++void int32MinMaxArrayResult(ObjOperandId array, bool isMax) {\
++ writeOp(CacheOp::Int32MinMaxArrayResult);\
++ writeOperandId(array);\
++ writeBoolImm(isMax);\
++ assertLengthMatches();\
++}\
++void numberMinMaxArrayResult(ObjOperandId array, bool isMax) {\
++ writeOp(CacheOp::NumberMinMaxArrayResult);\
++ writeOperandId(array);\
++ writeBoolImm(isMax);\
++ assertLengthMatches();\
++}\
++void mathFunctionNumberResult(NumberOperandId input, UnaryMathFunction fun) {\
++ writeOp(CacheOp::MathFunctionNumberResult);\
++ writeOperandId(input);\
++ writeUnaryMathFunctionImm(fun);\
++ assertLengthMatches();\
++}\
++void objectToStringResult(ObjOperandId obj) {\
++ writeOp(CacheOp::ObjectToStringResult);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void reflectGetPrototypeOfResult(ObjOperandId obj) {\
++ writeOp(CacheOp::ReflectGetPrototypeOfResult);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void storeTypedArrayElement(ObjOperandId obj, Scalar::Type elementType, IntPtrOperandId index, OperandId rhs, bool handleOOB) {\
++ writeOp(CacheOp::StoreTypedArrayElement);\
++ writeOperandId(obj);\
++ writeScalarTypeImm(elementType);\
++ writeOperandId(index);\
++ writeOperandId(rhs);\
++ writeBoolImm(handleOOB);\
++ assertLengthMatches();\
++}\
++void atomicsCompareExchangeResult(ObjOperandId obj, IntPtrOperandId index, OperandId expected, OperandId replacement, Scalar::Type elementType) {\
++ writeOp(CacheOp::AtomicsCompareExchangeResult);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ writeOperandId(expected);\
++ writeOperandId(replacement);\
++ writeScalarTypeImm(elementType);\
++ assertLengthMatches();\
++}\
++void atomicsExchangeResult(ObjOperandId obj, IntPtrOperandId index, OperandId value, Scalar::Type elementType) {\
++ writeOp(CacheOp::AtomicsExchangeResult);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ writeOperandId(value);\
++ writeScalarTypeImm(elementType);\
++ assertLengthMatches();\
++}\
++void atomicsAddResult(ObjOperandId obj, IntPtrOperandId index, OperandId value, Scalar::Type elementType, bool forEffect) {\
++ writeOp(CacheOp::AtomicsAddResult);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ writeOperandId(value);\
++ writeScalarTypeImm(elementType);\
++ writeBoolImm(forEffect);\
++ assertLengthMatches();\
++}\
++void atomicsSubResult(ObjOperandId obj, IntPtrOperandId index, OperandId value, Scalar::Type elementType, bool forEffect) {\
++ writeOp(CacheOp::AtomicsSubResult);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ writeOperandId(value);\
++ writeScalarTypeImm(elementType);\
++ writeBoolImm(forEffect);\
++ assertLengthMatches();\
++}\
++void atomicsAndResult(ObjOperandId obj, IntPtrOperandId index, OperandId value, Scalar::Type elementType, bool forEffect) {\
++ writeOp(CacheOp::AtomicsAndResult);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ writeOperandId(value);\
++ writeScalarTypeImm(elementType);\
++ writeBoolImm(forEffect);\
++ assertLengthMatches();\
++}\
++void atomicsOrResult(ObjOperandId obj, IntPtrOperandId index, OperandId value, Scalar::Type elementType, bool forEffect) {\
++ writeOp(CacheOp::AtomicsOrResult);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ writeOperandId(value);\
++ writeScalarTypeImm(elementType);\
++ writeBoolImm(forEffect);\
++ assertLengthMatches();\
++}\
++void atomicsXorResult(ObjOperandId obj, IntPtrOperandId index, OperandId value, Scalar::Type elementType, bool forEffect) {\
++ writeOp(CacheOp::AtomicsXorResult);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ writeOperandId(value);\
++ writeScalarTypeImm(elementType);\
++ writeBoolImm(forEffect);\
++ assertLengthMatches();\
++}\
++void atomicsLoadResult(ObjOperandId obj, IntPtrOperandId index, Scalar::Type elementType) {\
++ writeOp(CacheOp::AtomicsLoadResult);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ writeScalarTypeImm(elementType);\
++ assertLengthMatches();\
++}\
++void atomicsStoreResult(ObjOperandId obj, IntPtrOperandId index, OperandId value, Scalar::Type elementType) {\
++ writeOp(CacheOp::AtomicsStoreResult);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ writeOperandId(value);\
++ writeScalarTypeImm(elementType);\
++ assertLengthMatches();\
++}\
++void atomicsIsLockFreeResult(Int32OperandId value) {\
++ writeOp(CacheOp::AtomicsIsLockFreeResult);\
++ writeOperandId(value);\
++ assertLengthMatches();\
++}\
++private:\
++void callNativeSetter_(ObjOperandId receiver, JSObject* setter, ValOperandId rhs, bool sameRealm, uint32_t nargsAndFlags) {\
++ writeOp(CacheOp::CallNativeSetter);\
++ writeOperandId(receiver);\
++ writeObjectField(setter);\
++ writeOperandId(rhs);\
++ writeBoolImm(sameRealm);\
++ writeRawInt32Field(nargsAndFlags);\
++ assertLengthMatches();\
++}\
++public:\
++private:\
++void callScriptedSetter_(ObjOperandId receiver, JSObject* setter, ValOperandId rhs, bool sameRealm, uint32_t nargsAndFlags) {\
++ writeOp(CacheOp::CallScriptedSetter);\
++ writeOperandId(receiver);\
++ writeObjectField(setter);\
++ writeOperandId(rhs);\
++ writeBoolImm(sameRealm);\
++ writeRawInt32Field(nargsAndFlags);\
++ assertLengthMatches();\
++}\
++public:\
++private:\
++void callInlinedSetter_(ObjOperandId receiver, JSObject* setter, ValOperandId rhs, const void* icScript, bool sameRealm, uint32_t nargsAndFlags) {\
++ writeOp(CacheOp::CallInlinedSetter);\
++ writeOperandId(receiver);\
++ writeObjectField(setter);\
++ writeOperandId(rhs);\
++ writeRawPointerField(icScript);\
++ writeBoolImm(sameRealm);\
++ writeRawInt32Field(nargsAndFlags);\
++ assertLengthMatches();\
++}\
++public:\
++void callDOMSetter(ObjOperandId obj, const void* jitInfo, ValOperandId rhs) {\
++ writeOp(CacheOp::CallDOMSetter);\
++ writeOperandId(obj);\
++ writeRawPointerField(jitInfo);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void callSetArrayLength(ObjOperandId obj, bool strict, ValOperandId rhs) {\
++ writeOp(CacheOp::CallSetArrayLength);\
++ writeOperandId(obj);\
++ writeBoolImm(strict);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void proxySet(ObjOperandId obj, jsid id, ValOperandId rhs, bool strict) {\
++ writeOp(CacheOp::ProxySet);\
++ writeOperandId(obj);\
++ writeIdField(id);\
++ writeOperandId(rhs);\
++ writeBoolImm(strict);\
++ assertLengthMatches();\
++}\
++void proxySetByValue(ObjOperandId obj, ValOperandId id, ValOperandId rhs, bool strict) {\
++ writeOp(CacheOp::ProxySetByValue);\
++ writeOperandId(obj);\
++ writeOperandId(id);\
++ writeOperandId(rhs);\
++ writeBoolImm(strict);\
++ assertLengthMatches();\
++}\
++void callAddOrUpdateSparseElementHelper(ObjOperandId obj, Int32OperandId id, ValOperandId rhs, bool strict) {\
++ writeOp(CacheOp::CallAddOrUpdateSparseElementHelper);\
++ writeOperandId(obj);\
++ writeOperandId(id);\
++ writeOperandId(rhs);\
++ writeBoolImm(strict);\
++ assertLengthMatches();\
++}\
++StringOperandId callInt32ToString(Int32OperandId input) {\
++ writeOp(CacheOp::CallInt32ToString);\
++ writeOperandId(input);\
++ StringOperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++StringOperandId callNumberToString(NumberOperandId input) {\
++ writeOp(CacheOp::CallNumberToString);\
++ writeOperandId(input);\
++ StringOperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++StringOperandId booleanToString(BooleanOperandId input) {\
++ writeOp(CacheOp::BooleanToString);\
++ writeOperandId(input);\
++ StringOperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++private:\
++void callScriptedFunction_(ObjOperandId callee, Int32OperandId argc, CallFlags flags) {\
++ writeOp(CacheOp::CallScriptedFunction);\
++ writeOperandId(callee);\
++ writeOperandId(argc);\
++ writeCallFlagsImm(flags);\
++ assertLengthMatches();\
++}\
++public:\
++void callWasmFunction(ObjOperandId callee, Int32OperandId argc, CallFlags flags, const void* funcExport, JSObject* instance) {\
++ writeOp(CacheOp::CallWasmFunction);\
++ writeOperandId(callee);\
++ writeOperandId(argc);\
++ writeCallFlagsImm(flags);\
++ writeRawPointerField(funcExport);\
++ writeObjectField(instance);\
++ assertLengthMatches();\
++}\
++void guardWasmArg(ValOperandId arg, wasm::ValType::Kind type) {\
++ writeOp(CacheOp::GuardWasmArg);\
++ writeOperandId(arg);\
++ writeWasmValTypeImm(type);\
++ assertLengthMatches();\
++}\
++private:\
++void callNativeFunction_(ObjOperandId callee, Int32OperandId argc, CallFlags flags, bool ignoresReturnValue) {\
++ writeOp(CacheOp::CallNativeFunction);\
++ writeOperandId(callee);\
++ writeOperandId(argc);\
++ writeCallFlagsImm(flags);\
++ writeBoolImm(ignoresReturnValue);\
++ assertLengthMatches();\
++}\
++public:\
++private:\
++void callDOMFunction_(ObjOperandId callee, Int32OperandId argc, ObjOperandId thisObj, CallFlags flags) {\
++ writeOp(CacheOp::CallDOMFunction);\
++ writeOperandId(callee);\
++ writeOperandId(argc);\
++ writeOperandId(thisObj);\
++ writeCallFlagsImm(flags);\
++ assertLengthMatches();\
++}\
++public:\
++private:\
++void callClassHook_(ObjOperandId callee, Int32OperandId argc, CallFlags flags, const void* target) {\
++ writeOp(CacheOp::CallClassHook);\
++ writeOperandId(callee);\
++ writeOperandId(argc);\
++ writeCallFlagsImm(flags);\
++ writeRawPointerField(target);\
++ assertLengthMatches();\
++}\
++public:\
++private:\
++void callInlinedFunction_(ObjOperandId callee, Int32OperandId argc, const void* icScript, CallFlags flags) {\
++ writeOp(CacheOp::CallInlinedFunction);\
++ writeOperandId(callee);\
++ writeOperandId(argc);\
++ writeRawPointerField(icScript);\
++ writeCallFlagsImm(flags);\
++ assertLengthMatches();\
++}\
++public:\
++private:\
++void metaTwoByte_(JSObject* functionObject, JSObject* templateObject) {\
++ writeOp(CacheOp::MetaTwoByte);\
++ writeObjectField(functionObject);\
++ writeObjectField(templateObject);\
++ assertLengthMatches();\
++}\
++public:\
++void loadFixedSlotResult(ObjOperandId obj, uint32_t offset) {\
++ writeOp(CacheOp::LoadFixedSlotResult);\
++ writeOperandId(obj);\
++ writeRawInt32Field(offset);\
++ assertLengthMatches();\
++}\
++void loadFixedSlotTypedResult(ObjOperandId obj, uint32_t offset, ValueType type) {\
++ writeOp(CacheOp::LoadFixedSlotTypedResult);\
++ writeOperandId(obj);\
++ writeRawInt32Field(offset);\
++ writeValueTypeImm(type);\
++ assertLengthMatches();\
++}\
++void loadDynamicSlotResult(ObjOperandId obj, uint32_t offset) {\
++ writeOp(CacheOp::LoadDynamicSlotResult);\
++ writeOperandId(obj);\
++ writeRawInt32Field(offset);\
++ assertLengthMatches();\
++}\
++void loadDenseElementResult(ObjOperandId obj, Int32OperandId index) {\
++ writeOp(CacheOp::LoadDenseElementResult);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ assertLengthMatches();\
++}\
++void loadDenseElementHoleResult(ObjOperandId obj, Int32OperandId index) {\
++ writeOp(CacheOp::LoadDenseElementHoleResult);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ assertLengthMatches();\
++}\
++void callGetSparseElementResult(ObjOperandId obj, Int32OperandId index) {\
++ writeOp(CacheOp::CallGetSparseElementResult);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ assertLengthMatches();\
++}\
++void loadDenseElementExistsResult(ObjOperandId obj, Int32OperandId index) {\
++ writeOp(CacheOp::LoadDenseElementExistsResult);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ assertLengthMatches();\
++}\
++void loadTypedArrayElementExistsResult(ObjOperandId obj, IntPtrOperandId index) {\
++ writeOp(CacheOp::LoadTypedArrayElementExistsResult);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ assertLengthMatches();\
++}\
++void loadDenseElementHoleExistsResult(ObjOperandId obj, Int32OperandId index) {\
++ writeOp(CacheOp::LoadDenseElementHoleExistsResult);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ assertLengthMatches();\
++}\
++void loadTypedArrayElementResult(ObjOperandId obj, IntPtrOperandId index, Scalar::Type elementType, bool handleOOB, bool forceDoubleForUint32) {\
++ writeOp(CacheOp::LoadTypedArrayElementResult);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ writeScalarTypeImm(elementType);\
++ writeBoolImm(handleOOB);\
++ writeBoolImm(forceDoubleForUint32);\
++ assertLengthMatches();\
++}\
++void loadDataViewValueResult(ObjOperandId obj, IntPtrOperandId offset, BooleanOperandId littleEndian, Scalar::Type elementType, bool forceDoubleForUint32) {\
++ writeOp(CacheOp::LoadDataViewValueResult);\
++ writeOperandId(obj);\
++ writeOperandId(offset);\
++ writeOperandId(littleEndian);\
++ writeScalarTypeImm(elementType);\
++ writeBoolImm(forceDoubleForUint32);\
++ assertLengthMatches();\
++}\
++void storeDataViewValueResult(ObjOperandId obj, IntPtrOperandId offset, OperandId value, BooleanOperandId littleEndian, Scalar::Type elementType) {\
++ writeOp(CacheOp::StoreDataViewValueResult);\
++ writeOperandId(obj);\
++ writeOperandId(offset);\
++ writeOperandId(value);\
++ writeOperandId(littleEndian);\
++ writeScalarTypeImm(elementType);\
++ assertLengthMatches();\
++}\
++void loadInt32ArrayLengthResult(ObjOperandId obj) {\
++ writeOp(CacheOp::LoadInt32ArrayLengthResult);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++Int32OperandId loadInt32ArrayLength(ObjOperandId obj) {\
++ writeOp(CacheOp::LoadInt32ArrayLength);\
++ writeOperandId(obj);\
++ Int32OperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++void loadArgumentsObjectArgResult(ObjOperandId obj, Int32OperandId index) {\
++ writeOp(CacheOp::LoadArgumentsObjectArgResult);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ assertLengthMatches();\
++}\
++void loadArgumentsObjectLengthResult(ObjOperandId obj) {\
++ writeOp(CacheOp::LoadArgumentsObjectLengthResult);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void loadFunctionLengthResult(ObjOperandId obj) {\
++ writeOp(CacheOp::LoadFunctionLengthResult);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void loadFunctionNameResult(ObjOperandId obj) {\
++ writeOp(CacheOp::LoadFunctionNameResult);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void loadArrayBufferByteLengthInt32Result(ObjOperandId obj) {\
++ writeOp(CacheOp::LoadArrayBufferByteLengthInt32Result);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void loadArrayBufferByteLengthDoubleResult(ObjOperandId obj) {\
++ writeOp(CacheOp::LoadArrayBufferByteLengthDoubleResult);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void loadArrayBufferViewLengthInt32Result(ObjOperandId obj) {\
++ writeOp(CacheOp::LoadArrayBufferViewLengthInt32Result);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void loadArrayBufferViewLengthDoubleResult(ObjOperandId obj) {\
++ writeOp(CacheOp::LoadArrayBufferViewLengthDoubleResult);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void loadStringCharResult(StringOperandId str, Int32OperandId index) {\
++ writeOp(CacheOp::LoadStringCharResult);\
++ writeOperandId(str);\
++ writeOperandId(index);\
++ assertLengthMatches();\
++}\
++void loadStringCharCodeResult(StringOperandId str, Int32OperandId index) {\
++ writeOp(CacheOp::LoadStringCharCodeResult);\
++ writeOperandId(str);\
++ writeOperandId(index);\
++ assertLengthMatches();\
++}\
++void loadStringLengthResult(StringOperandId str) {\
++ writeOp(CacheOp::LoadStringLengthResult);\
++ writeOperandId(str);\
++ assertLengthMatches();\
++}\
++void frameIsConstructingResult() {\
++ writeOp(CacheOp::FrameIsConstructingResult);\
++ assertLengthMatches();\
++}\
++void loadEnvironmentFixedSlotResult(ObjOperandId obj, uint32_t offset) {\
++ writeOp(CacheOp::LoadEnvironmentFixedSlotResult);\
++ writeOperandId(obj);\
++ writeRawInt32Field(offset);\
++ assertLengthMatches();\
++}\
++void loadEnvironmentDynamicSlotResult(ObjOperandId obj, uint32_t offset) {\
++ writeOp(CacheOp::LoadEnvironmentDynamicSlotResult);\
++ writeOperandId(obj);\
++ writeRawInt32Field(offset);\
++ assertLengthMatches();\
++}\
++void loadObjectResult(ObjOperandId obj) {\
++ writeOp(CacheOp::LoadObjectResult);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void loadStringResult(StringOperandId str) {\
++ writeOp(CacheOp::LoadStringResult);\
++ writeOperandId(str);\
++ assertLengthMatches();\
++}\
++void loadSymbolResult(SymbolOperandId sym) {\
++ writeOp(CacheOp::LoadSymbolResult);\
++ writeOperandId(sym);\
++ assertLengthMatches();\
++}\
++void loadInt32Result(Int32OperandId val) {\
++ writeOp(CacheOp::LoadInt32Result);\
++ writeOperandId(val);\
++ assertLengthMatches();\
++}\
++void loadDoubleResult(NumberOperandId val) {\
++ writeOp(CacheOp::LoadDoubleResult);\
++ writeOperandId(val);\
++ assertLengthMatches();\
++}\
++void loadBigIntResult(BigIntOperandId val) {\
++ writeOp(CacheOp::LoadBigIntResult);\
++ writeOperandId(val);\
++ assertLengthMatches();\
++}\
++private:\
++void callScriptedGetterResult_(ValOperandId receiver, JSObject* getter, bool sameRealm, uint32_t nargsAndFlags) {\
++ writeOp(CacheOp::CallScriptedGetterResult);\
++ writeOperandId(receiver);\
++ writeObjectField(getter);\
++ writeBoolImm(sameRealm);\
++ writeRawInt32Field(nargsAndFlags);\
++ assertLengthMatches();\
++}\
++public:\
++private:\
++void callInlinedGetterResult_(ValOperandId receiver, JSObject* getter, const void* icScript, bool sameRealm, uint32_t nargsAndFlags) {\
++ writeOp(CacheOp::CallInlinedGetterResult);\
++ writeOperandId(receiver);\
++ writeObjectField(getter);\
++ writeRawPointerField(icScript);\
++ writeBoolImm(sameRealm);\
++ writeRawInt32Field(nargsAndFlags);\
++ assertLengthMatches();\
++}\
++public:\
++private:\
++void callNativeGetterResult_(ValOperandId receiver, JSObject* getter, bool sameRealm, uint32_t nargsAndFlags) {\
++ writeOp(CacheOp::CallNativeGetterResult);\
++ writeOperandId(receiver);\
++ writeObjectField(getter);\
++ writeBoolImm(sameRealm);\
++ writeRawInt32Field(nargsAndFlags);\
++ assertLengthMatches();\
++}\
++public:\
++void callDOMGetterResult(ObjOperandId obj, const void* jitInfo) {\
++ writeOp(CacheOp::CallDOMGetterResult);\
++ writeOperandId(obj);\
++ writeRawPointerField(jitInfo);\
++ assertLengthMatches();\
++}\
++void proxyGetResult(ObjOperandId obj, jsid id) {\
++ writeOp(CacheOp::ProxyGetResult);\
++ writeOperandId(obj);\
++ writeIdField(id);\
++ assertLengthMatches();\
++}\
++void proxyGetByValueResult(ObjOperandId obj, ValOperandId id) {\
++ writeOp(CacheOp::ProxyGetByValueResult);\
++ writeOperandId(obj);\
++ writeOperandId(id);\
++ assertLengthMatches();\
++}\
++void proxyHasPropResult(ObjOperandId obj, ValOperandId id, bool hasOwn) {\
++ writeOp(CacheOp::ProxyHasPropResult);\
++ writeOperandId(obj);\
++ writeOperandId(id);\
++ writeBoolImm(hasOwn);\
++ assertLengthMatches();\
++}\
++void callObjectHasSparseElementResult(ObjOperandId obj, Int32OperandId index) {\
++ writeOp(CacheOp::CallObjectHasSparseElementResult);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ assertLengthMatches();\
++}\
++void callNativeGetElementResult(ObjOperandId obj, Int32OperandId index) {\
++ writeOp(CacheOp::CallNativeGetElementResult);\
++ writeOperandId(obj);\
++ writeOperandId(index);\
++ assertLengthMatches();\
++}\
++void getNextMapSetEntryForIteratorResult(ObjOperandId iter, ObjOperandId resultArr, bool isMap) {\
++ writeOp(CacheOp::GetNextMapSetEntryForIteratorResult);\
++ writeOperandId(iter);\
++ writeOperandId(resultArr);\
++ writeBoolImm(isMap);\
++ assertLengthMatches();\
++}\
++void loadUndefinedResult() {\
++ writeOp(CacheOp::LoadUndefinedResult);\
++ assertLengthMatches();\
++}\
++void loadBooleanResult(bool val) {\
++ writeOp(CacheOp::LoadBooleanResult);\
++ writeBoolImm(val);\
++ assertLengthMatches();\
++}\
++Int32OperandId loadInt32Constant(uint32_t val) {\
++ writeOp(CacheOp::LoadInt32Constant);\
++ writeRawInt32Field(val);\
++ Int32OperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++BooleanOperandId loadBooleanConstant(bool val) {\
++ writeOp(CacheOp::LoadBooleanConstant);\
++ writeBoolImm(val);\
++ BooleanOperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++ValOperandId loadUndefined() {\
++ writeOp(CacheOp::LoadUndefined);\
++ ValOperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++StringOperandId loadConstantString(JSString* str) {\
++ writeOp(CacheOp::LoadConstantString);\
++ writeStringField(str);\
++ StringOperandId result(newOperandId());\
++ writeOperandId(result);\
++ assertLengthMatches();\
++ return result;\
++}\
++void loadConstantStringResult(JSString* str) {\
++ writeOp(CacheOp::LoadConstantStringResult);\
++ writeStringField(str);\
++ assertLengthMatches();\
++}\
++void loadInstanceOfObjectResult(ValOperandId lhs, ObjOperandId proto) {\
++ writeOp(CacheOp::LoadInstanceOfObjectResult);\
++ writeOperandId(lhs);\
++ writeOperandId(proto);\
++ assertLengthMatches();\
++}\
++void loadTypeOfObjectResult(ObjOperandId obj) {\
++ writeOp(CacheOp::LoadTypeOfObjectResult);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void doubleAddResult(NumberOperandId lhs, NumberOperandId rhs) {\
++ writeOp(CacheOp::DoubleAddResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void doubleSubResult(NumberOperandId lhs, NumberOperandId rhs) {\
++ writeOp(CacheOp::DoubleSubResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void doubleMulResult(NumberOperandId lhs, NumberOperandId rhs) {\
++ writeOp(CacheOp::DoubleMulResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void doubleDivResult(NumberOperandId lhs, NumberOperandId rhs) {\
++ writeOp(CacheOp::DoubleDivResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void doubleModResult(NumberOperandId lhs, NumberOperandId rhs) {\
++ writeOp(CacheOp::DoubleModResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void doublePowResult(NumberOperandId lhs, NumberOperandId rhs) {\
++ writeOp(CacheOp::DoublePowResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void int32AddResult(Int32OperandId lhs, Int32OperandId rhs) {\
++ writeOp(CacheOp::Int32AddResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void int32SubResult(Int32OperandId lhs, Int32OperandId rhs) {\
++ writeOp(CacheOp::Int32SubResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void int32MulResult(Int32OperandId lhs, Int32OperandId rhs) {\
++ writeOp(CacheOp::Int32MulResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void int32DivResult(Int32OperandId lhs, Int32OperandId rhs) {\
++ writeOp(CacheOp::Int32DivResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void int32ModResult(Int32OperandId lhs, Int32OperandId rhs) {\
++ writeOp(CacheOp::Int32ModResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void int32PowResult(Int32OperandId lhs, Int32OperandId rhs) {\
++ writeOp(CacheOp::Int32PowResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void bigIntAddResult(BigIntOperandId lhs, BigIntOperandId rhs) {\
++ writeOp(CacheOp::BigIntAddResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void bigIntSubResult(BigIntOperandId lhs, BigIntOperandId rhs) {\
++ writeOp(CacheOp::BigIntSubResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void bigIntMulResult(BigIntOperandId lhs, BigIntOperandId rhs) {\
++ writeOp(CacheOp::BigIntMulResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void bigIntDivResult(BigIntOperandId lhs, BigIntOperandId rhs) {\
++ writeOp(CacheOp::BigIntDivResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void bigIntModResult(BigIntOperandId lhs, BigIntOperandId rhs) {\
++ writeOp(CacheOp::BigIntModResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void bigIntPowResult(BigIntOperandId lhs, BigIntOperandId rhs) {\
++ writeOp(CacheOp::BigIntPowResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void int32BitOrResult(Int32OperandId lhs, Int32OperandId rhs) {\
++ writeOp(CacheOp::Int32BitOrResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void int32BitXorResult(Int32OperandId lhs, Int32OperandId rhs) {\
++ writeOp(CacheOp::Int32BitXorResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void int32BitAndResult(Int32OperandId lhs, Int32OperandId rhs) {\
++ writeOp(CacheOp::Int32BitAndResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void int32LeftShiftResult(Int32OperandId lhs, Int32OperandId rhs) {\
++ writeOp(CacheOp::Int32LeftShiftResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void int32RightShiftResult(Int32OperandId lhs, Int32OperandId rhs) {\
++ writeOp(CacheOp::Int32RightShiftResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void int32URightShiftResult(Int32OperandId lhs, Int32OperandId rhs, bool forceDouble) {\
++ writeOp(CacheOp::Int32URightShiftResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ writeBoolImm(forceDouble);\
++ assertLengthMatches();\
++}\
++void int32NotResult(Int32OperandId input) {\
++ writeOp(CacheOp::Int32NotResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void bigIntBitOrResult(BigIntOperandId lhs, BigIntOperandId rhs) {\
++ writeOp(CacheOp::BigIntBitOrResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void bigIntBitXorResult(BigIntOperandId lhs, BigIntOperandId rhs) {\
++ writeOp(CacheOp::BigIntBitXorResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void bigIntBitAndResult(BigIntOperandId lhs, BigIntOperandId rhs) {\
++ writeOp(CacheOp::BigIntBitAndResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void bigIntLeftShiftResult(BigIntOperandId lhs, BigIntOperandId rhs) {\
++ writeOp(CacheOp::BigIntLeftShiftResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void bigIntRightShiftResult(BigIntOperandId lhs, BigIntOperandId rhs) {\
++ writeOp(CacheOp::BigIntRightShiftResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void bigIntNotResult(BigIntOperandId input) {\
++ writeOp(CacheOp::BigIntNotResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void int32NegationResult(Int32OperandId input) {\
++ writeOp(CacheOp::Int32NegationResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void doubleNegationResult(NumberOperandId input) {\
++ writeOp(CacheOp::DoubleNegationResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void bigIntNegationResult(BigIntOperandId input) {\
++ writeOp(CacheOp::BigIntNegationResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void int32IncResult(Int32OperandId input) {\
++ writeOp(CacheOp::Int32IncResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void int32DecResult(Int32OperandId input) {\
++ writeOp(CacheOp::Int32DecResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void doubleIncResult(NumberOperandId input) {\
++ writeOp(CacheOp::DoubleIncResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void doubleDecResult(NumberOperandId input) {\
++ writeOp(CacheOp::DoubleDecResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void bigIntIncResult(BigIntOperandId input) {\
++ writeOp(CacheOp::BigIntIncResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void bigIntDecResult(BigIntOperandId input) {\
++ writeOp(CacheOp::BigIntDecResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void loadInt32TruthyResult(ValOperandId input) {\
++ writeOp(CacheOp::LoadInt32TruthyResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void loadDoubleTruthyResult(NumberOperandId input) {\
++ writeOp(CacheOp::LoadDoubleTruthyResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void loadStringTruthyResult(StringOperandId str) {\
++ writeOp(CacheOp::LoadStringTruthyResult);\
++ writeOperandId(str);\
++ assertLengthMatches();\
++}\
++void loadObjectTruthyResult(ObjOperandId obj) {\
++ writeOp(CacheOp::LoadObjectTruthyResult);\
++ writeOperandId(obj);\
++ assertLengthMatches();\
++}\
++void loadBigIntTruthyResult(BigIntOperandId bigInt) {\
++ writeOp(CacheOp::LoadBigIntTruthyResult);\
++ writeOperandId(bigInt);\
++ assertLengthMatches();\
++}\
++void loadValueTruthyResult(ValOperandId input) {\
++ writeOp(CacheOp::LoadValueTruthyResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void loadValueResult(const Value& val) {\
++ writeOp(CacheOp::LoadValueResult);\
++ writeValueField(val);\
++ assertLengthMatches();\
++}\
++void loadOperandResult(ValOperandId input) {\
++ writeOp(CacheOp::LoadOperandResult);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void newPlainObjectResult(uint32_t numFixedSlots, uint32_t numDynamicSlots, gc::AllocKind allocKind, Shape* shape, gc::AllocSite* site) {\
++ writeOp(CacheOp::NewPlainObjectResult);\
++ writeUInt32Imm(numFixedSlots);\
++ writeUInt32Imm(numDynamicSlots);\
++ writeAllocKindImm(allocKind);\
++ writeShapeField(shape);\
++ writeAllocSiteField(site);\
++ assertLengthMatches();\
++}\
++void newArrayObjectResult(uint32_t arrayLength, Shape* shape, gc::AllocSite* site) {\
++ writeOp(CacheOp::NewArrayObjectResult);\
++ writeUInt32Imm(arrayLength);\
++ writeShapeField(shape);\
++ writeAllocSiteField(site);\
++ assertLengthMatches();\
++}\
++void callStringConcatResult(StringOperandId lhs, StringOperandId rhs) {\
++ writeOp(CacheOp::CallStringConcatResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void callStringObjectConcatResult(ValOperandId lhs, ValOperandId rhs) {\
++ writeOp(CacheOp::CallStringObjectConcatResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void callIsSuspendedGeneratorResult(ValOperandId val) {\
++ writeOp(CacheOp::CallIsSuspendedGeneratorResult);\
++ writeOperandId(val);\
++ assertLengthMatches();\
++}\
++void compareStringResult(JSOp op, StringOperandId lhs, StringOperandId rhs) {\
++ writeOp(CacheOp::CompareStringResult);\
++ writeJSOpImm(op);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void compareObjectResult(JSOp op, ObjOperandId lhs, ObjOperandId rhs) {\
++ writeOp(CacheOp::CompareObjectResult);\
++ writeJSOpImm(op);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void compareSymbolResult(JSOp op, SymbolOperandId lhs, SymbolOperandId rhs) {\
++ writeOp(CacheOp::CompareSymbolResult);\
++ writeJSOpImm(op);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void compareInt32Result(JSOp op, Int32OperandId lhs, Int32OperandId rhs) {\
++ writeOp(CacheOp::CompareInt32Result);\
++ writeJSOpImm(op);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void compareDoubleResult(JSOp op, NumberOperandId lhs, NumberOperandId rhs) {\
++ writeOp(CacheOp::CompareDoubleResult);\
++ writeJSOpImm(op);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void compareBigIntResult(JSOp op, BigIntOperandId lhs, BigIntOperandId rhs) {\
++ writeOp(CacheOp::CompareBigIntResult);\
++ writeJSOpImm(op);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void compareBigIntInt32Result(JSOp op, BigIntOperandId lhs, Int32OperandId rhs) {\
++ writeOp(CacheOp::CompareBigIntInt32Result);\
++ writeJSOpImm(op);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void compareBigIntNumberResult(JSOp op, BigIntOperandId lhs, NumberOperandId rhs) {\
++ writeOp(CacheOp::CompareBigIntNumberResult);\
++ writeJSOpImm(op);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void compareBigIntStringResult(JSOp op, BigIntOperandId lhs, StringOperandId rhs) {\
++ writeOp(CacheOp::CompareBigIntStringResult);\
++ writeJSOpImm(op);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void compareNullUndefinedResult(JSOp op, bool isUndefined, ValOperandId input) {\
++ writeOp(CacheOp::CompareNullUndefinedResult);\
++ writeJSOpImm(op);\
++ writeBoolImm(isUndefined);\
++ writeOperandId(input);\
++ assertLengthMatches();\
++}\
++void compareDoubleSameValueResult(NumberOperandId lhs, NumberOperandId rhs) {\
++ writeOp(CacheOp::CompareDoubleSameValueResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void sameValueResult(ValOperandId lhs, ValOperandId rhs) {\
++ writeOp(CacheOp::SameValueResult);\
++ writeOperandId(lhs);\
++ writeOperandId(rhs);\
++ assertLengthMatches();\
++}\
++void indirectTruncateInt32Result(Int32OperandId val) {\
++ writeOp(CacheOp::IndirectTruncateInt32Result);\
++ writeOperandId(val);\
++ assertLengthMatches();\
++}\
++void bigIntAsIntNResult(Int32OperandId bits, BigIntOperandId bigInt) {\
++ writeOp(CacheOp::BigIntAsIntNResult);\
++ writeOperandId(bits);\
++ writeOperandId(bigInt);\
++ assertLengthMatches();\
++}\
++void bigIntAsUintNResult(Int32OperandId bits, BigIntOperandId bigInt) {\
++ writeOp(CacheOp::BigIntAsUintNResult);\
++ writeOperandId(bits);\
++ writeOperandId(bigInt);\
++ assertLengthMatches();\
++}\
++void callPrintString(const char* str) {\
++ writeOp(CacheOp::CallPrintString);\
++ writeStaticStringImm(str);\
++ assertLengthMatches();\
++}\
++void breakpoint() {\
++ writeOp(CacheOp::Breakpoint);\
++ assertLengthMatches();\
++}\
++void wrapResult() {\
++ writeOp(CacheOp::WrapResult);\
++ assertLengthMatches();\
++}\
++void bailout() {\
++ writeOp(CacheOp::Bailout);\
++ assertLengthMatches();\
++}\
++void assertRecoveredOnBailoutResult(ValOperandId val, bool mustBeRecovered) {\
++ writeOp(CacheOp::AssertRecoveredOnBailoutResult);\
++ writeOperandId(val);\
++ writeBoolImm(mustBeRecovered);\
++ assertLengthMatches();\
++}
++
++#define CACHE_IR_COMPILER_SHARED_GENERATED \
++[[nodiscard]] bool emitGuardToObject(ValOperandId inputId);\
++[[nodiscard]] bool emitGuardToObject(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitGuardToObject(inputId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsNullOrUndefined(ValOperandId inputId);\
++[[nodiscard]] bool emitGuardIsNullOrUndefined(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitGuardIsNullOrUndefined(inputId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsNull(ValOperandId inputId);\
++[[nodiscard]] bool emitGuardIsNull(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitGuardIsNull(inputId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsUndefined(ValOperandId inputId);\
++[[nodiscard]] bool emitGuardIsUndefined(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitGuardIsUndefined(inputId);\
++}\
++\
++[[nodiscard]] bool emitGuardToBoolean(ValOperandId inputId);\
++[[nodiscard]] bool emitGuardToBoolean(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitGuardToBoolean(inputId);\
++}\
++\
++[[nodiscard]] bool emitGuardToString(ValOperandId inputId);\
++[[nodiscard]] bool emitGuardToString(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitGuardToString(inputId);\
++}\
++\
++[[nodiscard]] bool emitGuardToSymbol(ValOperandId inputId);\
++[[nodiscard]] bool emitGuardToSymbol(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitGuardToSymbol(inputId);\
++}\
++\
++[[nodiscard]] bool emitGuardToBigInt(ValOperandId inputId);\
++[[nodiscard]] bool emitGuardToBigInt(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitGuardToBigInt(inputId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsNumber(ValOperandId inputId);\
++[[nodiscard]] bool emitGuardIsNumber(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitGuardIsNumber(inputId);\
++}\
++\
++[[nodiscard]] bool emitGuardToInt32(ValOperandId inputId);\
++[[nodiscard]] bool emitGuardToInt32(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitGuardToInt32(inputId);\
++}\
++\
++[[nodiscard]] bool emitGuardBooleanToInt32(ValOperandId inputId, Int32OperandId resultId);\
++[[nodiscard]] bool emitGuardBooleanToInt32(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ Int32OperandId resultId = reader.int32OperandId();\
++ return emitGuardBooleanToInt32(inputId, resultId);\
++}\
++\
++[[nodiscard]] bool emitGuardToInt32Index(ValOperandId inputId, Int32OperandId resultId);\
++[[nodiscard]] bool emitGuardToInt32Index(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ Int32OperandId resultId = reader.int32OperandId();\
++ return emitGuardToInt32Index(inputId, resultId);\
++}\
++\
++[[nodiscard]] bool emitInt32ToIntPtr(Int32OperandId inputId, IntPtrOperandId resultId);\
++[[nodiscard]] bool emitInt32ToIntPtr(CacheIRReader& reader) {\
++ Int32OperandId inputId = reader.int32OperandId();\
++ IntPtrOperandId resultId = reader.intPtrOperandId();\
++ return emitInt32ToIntPtr(inputId, resultId);\
++}\
++\
++[[nodiscard]] bool emitGuardNumberToIntPtrIndex(NumberOperandId inputId, bool supportOOB, IntPtrOperandId resultId);\
++[[nodiscard]] bool emitGuardNumberToIntPtrIndex(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ bool supportOOB = reader.readBool();\
++ IntPtrOperandId resultId = reader.intPtrOperandId();\
++ return emitGuardNumberToIntPtrIndex(inputId, supportOOB, resultId);\
++}\
++\
++[[nodiscard]] bool emitGuardToInt32ModUint32(ValOperandId inputId, Int32OperandId resultId);\
++[[nodiscard]] bool emitGuardToInt32ModUint32(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ Int32OperandId resultId = reader.int32OperandId();\
++ return emitGuardToInt32ModUint32(inputId, resultId);\
++}\
++\
++[[nodiscard]] bool emitGuardToUint8Clamped(ValOperandId inputId, Int32OperandId resultId);\
++[[nodiscard]] bool emitGuardToUint8Clamped(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ Int32OperandId resultId = reader.int32OperandId();\
++ return emitGuardToUint8Clamped(inputId, resultId);\
++}\
++\
++[[nodiscard]] bool emitGuardNonDoubleType(ValOperandId inputId, ValueType type);\
++[[nodiscard]] bool emitGuardNonDoubleType(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ ValueType type = reader.valueType();\
++ return emitGuardNonDoubleType(inputId, type);\
++}\
++\
++[[nodiscard]] bool emitGuardNullProto(ObjOperandId objId);\
++[[nodiscard]] bool emitGuardNullProto(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitGuardNullProto(objId);\
++}\
++\
++[[nodiscard]] bool emitGuardClass(ObjOperandId objId, GuardClassKind kind);\
++[[nodiscard]] bool emitGuardClass(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ GuardClassKind kind = reader.guardClassKind();\
++ return emitGuardClass(objId, kind);\
++}\
++\
++[[nodiscard]] bool emitCallRegExpMatcherResult(ObjOperandId regexpId, StringOperandId inputId, Int32OperandId lastIndexId);\
++[[nodiscard]] bool emitCallRegExpMatcherResult(CacheIRReader& reader) {\
++ ObjOperandId regexpId = reader.objOperandId();\
++ StringOperandId inputId = reader.stringOperandId();\
++ Int32OperandId lastIndexId = reader.int32OperandId();\
++ return emitCallRegExpMatcherResult(regexpId, inputId, lastIndexId);\
++}\
++\
++[[nodiscard]] bool emitCallRegExpSearcherResult(ObjOperandId regexpId, StringOperandId inputId, Int32OperandId lastIndexId);\
++[[nodiscard]] bool emitCallRegExpSearcherResult(CacheIRReader& reader) {\
++ ObjOperandId regexpId = reader.objOperandId();\
++ StringOperandId inputId = reader.stringOperandId();\
++ Int32OperandId lastIndexId = reader.int32OperandId();\
++ return emitCallRegExpSearcherResult(regexpId, inputId, lastIndexId);\
++}\
++\
++[[nodiscard]] bool emitCallRegExpTesterResult(ObjOperandId regexpId, StringOperandId inputId, Int32OperandId lastIndexId);\
++[[nodiscard]] bool emitCallRegExpTesterResult(CacheIRReader& reader) {\
++ ObjOperandId regexpId = reader.objOperandId();\
++ StringOperandId inputId = reader.stringOperandId();\
++ Int32OperandId lastIndexId = reader.int32OperandId();\
++ return emitCallRegExpTesterResult(regexpId, inputId, lastIndexId);\
++}\
++\
++[[nodiscard]] bool emitRegExpFlagResult(ObjOperandId regexpId, int32_t flagsMask);\
++[[nodiscard]] bool emitRegExpFlagResult(CacheIRReader& reader) {\
++ ObjOperandId regexpId = reader.objOperandId();\
++ int32_t flagsMask = reader.int32Immediate();\
++ return emitRegExpFlagResult(regexpId, flagsMask);\
++}\
++\
++[[nodiscard]] bool emitCallSubstringKernelResult(StringOperandId strId, Int32OperandId beginId, Int32OperandId lengthId);\
++[[nodiscard]] bool emitCallSubstringKernelResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ Int32OperandId beginId = reader.int32OperandId();\
++ Int32OperandId lengthId = reader.int32OperandId();\
++ return emitCallSubstringKernelResult(strId, beginId, lengthId);\
++}\
++\
++[[nodiscard]] bool emitStringReplaceStringResult(StringOperandId strId, StringOperandId patternId, StringOperandId replacementId);\
++[[nodiscard]] bool emitStringReplaceStringResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ StringOperandId patternId = reader.stringOperandId();\
++ StringOperandId replacementId = reader.stringOperandId();\
++ return emitStringReplaceStringResult(strId, patternId, replacementId);\
++}\
++\
++[[nodiscard]] bool emitStringSplitStringResult(StringOperandId strId, StringOperandId separatorId);\
++[[nodiscard]] bool emitStringSplitStringResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ StringOperandId separatorId = reader.stringOperandId();\
++ return emitStringSplitStringResult(strId, separatorId);\
++}\
++\
++[[nodiscard]] bool emitRegExpPrototypeOptimizableResult(ObjOperandId protoId);\
++[[nodiscard]] bool emitRegExpPrototypeOptimizableResult(CacheIRReader& reader) {\
++ ObjOperandId protoId = reader.objOperandId();\
++ return emitRegExpPrototypeOptimizableResult(protoId);\
++}\
++\
++[[nodiscard]] bool emitRegExpInstanceOptimizableResult(ObjOperandId regexpId, ObjOperandId protoId);\
++[[nodiscard]] bool emitRegExpInstanceOptimizableResult(CacheIRReader& reader) {\
++ ObjOperandId regexpId = reader.objOperandId();\
++ ObjOperandId protoId = reader.objOperandId();\
++ return emitRegExpInstanceOptimizableResult(regexpId, protoId);\
++}\
++\
++[[nodiscard]] bool emitGetFirstDollarIndexResult(StringOperandId strId);\
++[[nodiscard]] bool emitGetFirstDollarIndexResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ return emitGetFirstDollarIndexResult(strId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsExtensible(ObjOperandId objId);\
++[[nodiscard]] bool emitGuardIsExtensible(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitGuardIsExtensible(objId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsNativeObject(ObjOperandId objId);\
++[[nodiscard]] bool emitGuardIsNativeObject(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitGuardIsNativeObject(objId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsProxy(ObjOperandId objId);\
++[[nodiscard]] bool emitGuardIsProxy(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitGuardIsProxy(objId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsNotProxy(ObjOperandId objId);\
++[[nodiscard]] bool emitGuardIsNotProxy(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitGuardIsNotProxy(objId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsNotArrayBufferMaybeShared(ObjOperandId objId);\
++[[nodiscard]] bool emitGuardIsNotArrayBufferMaybeShared(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitGuardIsNotArrayBufferMaybeShared(objId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsTypedArray(ObjOperandId objId);\
++[[nodiscard]] bool emitGuardIsTypedArray(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitGuardIsTypedArray(objId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsNotDOMProxy(ObjOperandId objId);\
++[[nodiscard]] bool emitGuardIsNotDOMProxy(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitGuardIsNotDOMProxy(objId);\
++}\
++\
++[[nodiscard]] bool emitGuardNoDenseElements(ObjOperandId objId);\
++[[nodiscard]] bool emitGuardNoDenseElements(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitGuardNoDenseElements(objId);\
++}\
++\
++[[nodiscard]] bool emitGuardStringToIndex(StringOperandId strId, Int32OperandId resultId);\
++[[nodiscard]] bool emitGuardStringToIndex(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ Int32OperandId resultId = reader.int32OperandId();\
++ return emitGuardStringToIndex(strId, resultId);\
++}\
++\
++[[nodiscard]] bool emitGuardStringToInt32(StringOperandId strId, Int32OperandId resultId);\
++[[nodiscard]] bool emitGuardStringToInt32(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ Int32OperandId resultId = reader.int32OperandId();\
++ return emitGuardStringToInt32(strId, resultId);\
++}\
++\
++[[nodiscard]] bool emitGuardStringToNumber(StringOperandId strId, NumberOperandId resultId);\
++[[nodiscard]] bool emitGuardStringToNumber(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ NumberOperandId resultId = reader.numberOperandId();\
++ return emitGuardStringToNumber(strId, resultId);\
++}\
++\
++[[nodiscard]] bool emitBooleanToNumber(BooleanOperandId booleanId, NumberOperandId resultId);\
++[[nodiscard]] bool emitBooleanToNumber(CacheIRReader& reader) {\
++ BooleanOperandId booleanId = reader.booleanOperandId();\
++ NumberOperandId resultId = reader.numberOperandId();\
++ return emitBooleanToNumber(booleanId, resultId);\
++}\
++\
++[[nodiscard]] bool emitGuardHasGetterSetter(ObjOperandId objId, uint32_t idOffset, uint32_t getterSetterOffset);\
++[[nodiscard]] bool emitGuardHasGetterSetter(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t idOffset = reader.stubOffset();\
++ uint32_t getterSetterOffset = reader.stubOffset();\
++ return emitGuardHasGetterSetter(objId, idOffset, getterSetterOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardInt32IsNonNegative(Int32OperandId indexId);\
++[[nodiscard]] bool emitGuardInt32IsNonNegative(CacheIRReader& reader) {\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitGuardInt32IsNonNegative(indexId);\
++}\
++\
++[[nodiscard]] bool emitGuardIndexIsValidUpdateOrAdd(ObjOperandId objId, Int32OperandId indexId);\
++[[nodiscard]] bool emitGuardIndexIsValidUpdateOrAdd(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitGuardIndexIsValidUpdateOrAdd(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitGuardIndexGreaterThanDenseInitLength(ObjOperandId objId, Int32OperandId indexId);\
++[[nodiscard]] bool emitGuardIndexGreaterThanDenseInitLength(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitGuardIndexGreaterThanDenseInitLength(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitGuardTagNotEqual(ValueTagOperandId lhsId, ValueTagOperandId rhsId);\
++[[nodiscard]] bool emitGuardTagNotEqual(CacheIRReader& reader) {\
++ ValueTagOperandId lhsId = reader.valueTagOperandId();\
++ ValueTagOperandId rhsId = reader.valueTagOperandId();\
++ return emitGuardTagNotEqual(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitGuardXrayExpandoShapeAndDefaultProto(ObjOperandId objId, uint32_t shapeWrapperOffset);\
++[[nodiscard]] bool emitGuardXrayExpandoShapeAndDefaultProto(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t shapeWrapperOffset = reader.stubOffset();\
++ return emitGuardXrayExpandoShapeAndDefaultProto(objId, shapeWrapperOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardXrayNoExpando(ObjOperandId objId);\
++[[nodiscard]] bool emitGuardXrayNoExpando(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitGuardXrayNoExpando(objId);\
++}\
++\
++[[nodiscard]] bool emitGuardDynamicSlotIsSpecificObject(ObjOperandId objId, ObjOperandId expectedId, uint32_t slotOffset);\
++[[nodiscard]] bool emitGuardDynamicSlotIsSpecificObject(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ObjOperandId expectedId = reader.objOperandId();\
++ uint32_t slotOffset = reader.stubOffset();\
++ return emitGuardDynamicSlotIsSpecificObject(objId, expectedId, slotOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardFixedSlotValue(ObjOperandId objId, uint32_t offsetOffset, uint32_t valOffset);\
++[[nodiscard]] bool emitGuardFixedSlotValue(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ uint32_t valOffset = reader.stubOffset();\
++ return emitGuardFixedSlotValue(objId, offsetOffset, valOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardDynamicSlotValue(ObjOperandId objId, uint32_t offsetOffset, uint32_t valOffset);\
++[[nodiscard]] bool emitGuardDynamicSlotValue(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ uint32_t valOffset = reader.stubOffset();\
++ return emitGuardDynamicSlotValue(objId, offsetOffset, valOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardNoAllocationMetadataBuilder(uint32_t builderAddrOffset);\
++[[nodiscard]] bool emitGuardNoAllocationMetadataBuilder(CacheIRReader& reader) {\
++ uint32_t builderAddrOffset = reader.stubOffset();\
++ return emitGuardNoAllocationMetadataBuilder(builderAddrOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardFunctionHasJitEntry(ObjOperandId funId, bool constructing);\
++[[nodiscard]] bool emitGuardFunctionHasJitEntry(CacheIRReader& reader) {\
++ ObjOperandId funId = reader.objOperandId();\
++ bool constructing = reader.readBool();\
++ return emitGuardFunctionHasJitEntry(funId, constructing);\
++}\
++\
++[[nodiscard]] bool emitGuardFunctionHasNoJitEntry(ObjOperandId funId);\
++[[nodiscard]] bool emitGuardFunctionHasNoJitEntry(CacheIRReader& reader) {\
++ ObjOperandId funId = reader.objOperandId();\
++ return emitGuardFunctionHasNoJitEntry(funId);\
++}\
++\
++[[nodiscard]] bool emitGuardFunctionIsNonBuiltinCtor(ObjOperandId funId);\
++[[nodiscard]] bool emitGuardFunctionIsNonBuiltinCtor(CacheIRReader& reader) {\
++ ObjOperandId funId = reader.objOperandId();\
++ return emitGuardFunctionIsNonBuiltinCtor(funId);\
++}\
++\
++[[nodiscard]] bool emitGuardFunctionIsConstructor(ObjOperandId funId);\
++[[nodiscard]] bool emitGuardFunctionIsConstructor(CacheIRReader& reader) {\
++ ObjOperandId funId = reader.objOperandId();\
++ return emitGuardFunctionIsConstructor(funId);\
++}\
++\
++[[nodiscard]] bool emitGuardNotClassConstructor(ObjOperandId funId);\
++[[nodiscard]] bool emitGuardNotClassConstructor(CacheIRReader& reader) {\
++ ObjOperandId funId = reader.objOperandId();\
++ return emitGuardNotClassConstructor(funId);\
++}\
++\
++[[nodiscard]] bool emitGuardArrayIsPacked(ObjOperandId arrayId);\
++[[nodiscard]] bool emitGuardArrayIsPacked(CacheIRReader& reader) {\
++ ObjOperandId arrayId = reader.objOperandId();\
++ return emitGuardArrayIsPacked(arrayId);\
++}\
++\
++[[nodiscard]] bool emitGuardArgumentsObjectFlags(ObjOperandId objId, uint8_t flags);\
++[[nodiscard]] bool emitGuardArgumentsObjectFlags(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint8_t flags = reader.readByte();\
++ return emitGuardArgumentsObjectFlags(objId, flags);\
++}\
++\
++[[nodiscard]] bool emitLoadObject(ObjOperandId resultId, uint32_t objOffset);\
++[[nodiscard]] bool emitLoadObject(CacheIRReader& reader) {\
++ ObjOperandId resultId = reader.objOperandId();\
++ uint32_t objOffset = reader.stubOffset();\
++ return emitLoadObject(resultId, objOffset);\
++}\
++\
++[[nodiscard]] bool emitLoadProto(ObjOperandId objId, ObjOperandId resultId);\
++[[nodiscard]] bool emitLoadProto(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ObjOperandId resultId = reader.objOperandId();\
++ return emitLoadProto(objId, resultId);\
++}\
++\
++[[nodiscard]] bool emitLoadEnclosingEnvironment(ObjOperandId objId, ObjOperandId resultId);\
++[[nodiscard]] bool emitLoadEnclosingEnvironment(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ObjOperandId resultId = reader.objOperandId();\
++ return emitLoadEnclosingEnvironment(objId, resultId);\
++}\
++\
++[[nodiscard]] bool emitLoadWrapperTarget(ObjOperandId objId, ObjOperandId resultId);\
++[[nodiscard]] bool emitLoadWrapperTarget(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ObjOperandId resultId = reader.objOperandId();\
++ return emitLoadWrapperTarget(objId, resultId);\
++}\
++\
++[[nodiscard]] bool emitLoadValueTag(ValOperandId valId, ValueTagOperandId resultId);\
++[[nodiscard]] bool emitLoadValueTag(CacheIRReader& reader) {\
++ ValOperandId valId = reader.valOperandId();\
++ ValueTagOperandId resultId = reader.valueTagOperandId();\
++ return emitLoadValueTag(valId, resultId);\
++}\
++\
++[[nodiscard]] bool emitTruncateDoubleToUInt32(NumberOperandId inputId, Int32OperandId resultId);\
++[[nodiscard]] bool emitTruncateDoubleToUInt32(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ Int32OperandId resultId = reader.int32OperandId();\
++ return emitTruncateDoubleToUInt32(inputId, resultId);\
++}\
++\
++[[nodiscard]] bool emitMegamorphicLoadSlotResult(ObjOperandId objId, uint32_t nameOffset);\
++[[nodiscard]] bool emitMegamorphicLoadSlotResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t nameOffset = reader.stubOffset();\
++ return emitMegamorphicLoadSlotResult(objId, nameOffset);\
++}\
++\
++[[nodiscard]] bool emitMegamorphicLoadSlotByValueResult(ObjOperandId objId, ValOperandId idId);\
++[[nodiscard]] bool emitMegamorphicLoadSlotByValueResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ValOperandId idId = reader.valOperandId();\
++ return emitMegamorphicLoadSlotByValueResult(objId, idId);\
++}\
++\
++[[nodiscard]] bool emitMegamorphicStoreSlot(ObjOperandId objId, uint32_t nameOffset, ValOperandId rhsId);\
++[[nodiscard]] bool emitMegamorphicStoreSlot(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t nameOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ return emitMegamorphicStoreSlot(objId, nameOffset, rhsId);\
++}\
++\
++[[nodiscard]] bool emitMegamorphicHasPropResult(ObjOperandId objId, ValOperandId idId, bool hasOwn);\
++[[nodiscard]] bool emitMegamorphicHasPropResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ValOperandId idId = reader.valOperandId();\
++ bool hasOwn = reader.readBool();\
++ return emitMegamorphicHasPropResult(objId, idId, hasOwn);\
++}\
++\
++[[nodiscard]] bool emitLoadDOMExpandoValue(ObjOperandId objId, ValOperandId resultId);\
++[[nodiscard]] bool emitLoadDOMExpandoValue(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ValOperandId resultId = reader.valOperandId();\
++ return emitLoadDOMExpandoValue(objId, resultId);\
++}\
++\
++[[nodiscard]] bool emitLoadDOMExpandoValueIgnoreGeneration(ObjOperandId objId, ValOperandId resultId);\
++[[nodiscard]] bool emitLoadDOMExpandoValueIgnoreGeneration(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ValOperandId resultId = reader.valOperandId();\
++ return emitLoadDOMExpandoValueIgnoreGeneration(objId, resultId);\
++}\
++\
++[[nodiscard]] bool emitStoreDenseElement(ObjOperandId objId, Int32OperandId indexId, ValOperandId rhsId);\
++[[nodiscard]] bool emitStoreDenseElement(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ ValOperandId rhsId = reader.valOperandId();\
++ return emitStoreDenseElement(objId, indexId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitStoreDenseElementHole(ObjOperandId objId, Int32OperandId indexId, ValOperandId rhsId, bool handleAdd);\
++[[nodiscard]] bool emitStoreDenseElementHole(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ ValOperandId rhsId = reader.valOperandId();\
++ bool handleAdd = reader.readBool();\
++ return emitStoreDenseElementHole(objId, indexId, rhsId, handleAdd);\
++}\
++\
++[[nodiscard]] bool emitArrayPush(ObjOperandId objId, ValOperandId rhsId);\
++[[nodiscard]] bool emitArrayPush(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ValOperandId rhsId = reader.valOperandId();\
++ return emitArrayPush(objId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitPackedArrayPopResult(ObjOperandId arrayId);\
++[[nodiscard]] bool emitPackedArrayPopResult(CacheIRReader& reader) {\
++ ObjOperandId arrayId = reader.objOperandId();\
++ return emitPackedArrayPopResult(arrayId);\
++}\
++\
++[[nodiscard]] bool emitPackedArrayShiftResult(ObjOperandId arrayId);\
++[[nodiscard]] bool emitPackedArrayShiftResult(CacheIRReader& reader) {\
++ ObjOperandId arrayId = reader.objOperandId();\
++ return emitPackedArrayShiftResult(arrayId);\
++}\
++\
++[[nodiscard]] bool emitStoreFixedSlotUndefinedResult(ObjOperandId objId, uint32_t offsetOffset, ValOperandId rhsId);\
++[[nodiscard]] bool emitStoreFixedSlotUndefinedResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ return emitStoreFixedSlotUndefinedResult(objId, offsetOffset, rhsId);\
++}\
++\
++[[nodiscard]] bool emitIsObjectResult(ValOperandId inputId);\
++[[nodiscard]] bool emitIsObjectResult(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitIsObjectResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitIsPackedArrayResult(ObjOperandId objId);\
++[[nodiscard]] bool emitIsPackedArrayResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitIsPackedArrayResult(objId);\
++}\
++\
++[[nodiscard]] bool emitIsCallableResult(ValOperandId inputId);\
++[[nodiscard]] bool emitIsCallableResult(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitIsCallableResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitIsConstructorResult(ObjOperandId objId);\
++[[nodiscard]] bool emitIsConstructorResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitIsConstructorResult(objId);\
++}\
++\
++[[nodiscard]] bool emitIsCrossRealmArrayConstructorResult(ObjOperandId objId);\
++[[nodiscard]] bool emitIsCrossRealmArrayConstructorResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitIsCrossRealmArrayConstructorResult(objId);\
++}\
++\
++[[nodiscard]] bool emitIsTypedArrayConstructorResult(ObjOperandId objId);\
++[[nodiscard]] bool emitIsTypedArrayConstructorResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitIsTypedArrayConstructorResult(objId);\
++}\
++\
++[[nodiscard]] bool emitArrayBufferViewByteOffsetInt32Result(ObjOperandId objId);\
++[[nodiscard]] bool emitArrayBufferViewByteOffsetInt32Result(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitArrayBufferViewByteOffsetInt32Result(objId);\
++}\
++\
++[[nodiscard]] bool emitArrayBufferViewByteOffsetDoubleResult(ObjOperandId objId);\
++[[nodiscard]] bool emitArrayBufferViewByteOffsetDoubleResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitArrayBufferViewByteOffsetDoubleResult(objId);\
++}\
++\
++[[nodiscard]] bool emitTypedArrayByteLengthInt32Result(ObjOperandId objId);\
++[[nodiscard]] bool emitTypedArrayByteLengthInt32Result(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitTypedArrayByteLengthInt32Result(objId);\
++}\
++\
++[[nodiscard]] bool emitTypedArrayByteLengthDoubleResult(ObjOperandId objId);\
++[[nodiscard]] bool emitTypedArrayByteLengthDoubleResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitTypedArrayByteLengthDoubleResult(objId);\
++}\
++\
++[[nodiscard]] bool emitTypedArrayElementSizeResult(ObjOperandId objId);\
++[[nodiscard]] bool emitTypedArrayElementSizeResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitTypedArrayElementSizeResult(objId);\
++}\
++\
++[[nodiscard]] bool emitGuardHasAttachedArrayBuffer(ObjOperandId objId);\
++[[nodiscard]] bool emitGuardHasAttachedArrayBuffer(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitGuardHasAttachedArrayBuffer(objId);\
++}\
++\
++[[nodiscard]] bool emitFinishBoundFunctionInitResult(ObjOperandId boundId, ObjOperandId targetId, Int32OperandId argCountId);\
++[[nodiscard]] bool emitFinishBoundFunctionInitResult(CacheIRReader& reader) {\
++ ObjOperandId boundId = reader.objOperandId();\
++ ObjOperandId targetId = reader.objOperandId();\
++ Int32OperandId argCountId = reader.int32OperandId();\
++ return emitFinishBoundFunctionInitResult(boundId, targetId, argCountId);\
++}\
++\
++[[nodiscard]] bool emitNewArrayIteratorResult(uint32_t templateObjectOffset);\
++[[nodiscard]] bool emitNewArrayIteratorResult(CacheIRReader& reader) {\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ return emitNewArrayIteratorResult(templateObjectOffset);\
++}\
++\
++[[nodiscard]] bool emitNewStringIteratorResult(uint32_t templateObjectOffset);\
++[[nodiscard]] bool emitNewStringIteratorResult(CacheIRReader& reader) {\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ return emitNewStringIteratorResult(templateObjectOffset);\
++}\
++\
++[[nodiscard]] bool emitNewRegExpStringIteratorResult(uint32_t templateObjectOffset);\
++[[nodiscard]] bool emitNewRegExpStringIteratorResult(CacheIRReader& reader) {\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ return emitNewRegExpStringIteratorResult(templateObjectOffset);\
++}\
++\
++[[nodiscard]] bool emitObjectCreateResult(uint32_t templateObjectOffset);\
++[[nodiscard]] bool emitObjectCreateResult(CacheIRReader& reader) {\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ return emitObjectCreateResult(templateObjectOffset);\
++}\
++\
++[[nodiscard]] bool emitNewArrayFromLengthResult(uint32_t templateObjectOffset, Int32OperandId lengthId);\
++[[nodiscard]] bool emitNewArrayFromLengthResult(CacheIRReader& reader) {\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ Int32OperandId lengthId = reader.int32OperandId();\
++ return emitNewArrayFromLengthResult(templateObjectOffset, lengthId);\
++}\
++\
++[[nodiscard]] bool emitNewTypedArrayFromLengthResult(uint32_t templateObjectOffset, Int32OperandId lengthId);\
++[[nodiscard]] bool emitNewTypedArrayFromLengthResult(CacheIRReader& reader) {\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ Int32OperandId lengthId = reader.int32OperandId();\
++ return emitNewTypedArrayFromLengthResult(templateObjectOffset, lengthId);\
++}\
++\
++[[nodiscard]] bool emitNewTypedArrayFromArrayBufferResult(uint32_t templateObjectOffset, ObjOperandId bufferId, ValOperandId byteOffsetId, ValOperandId lengthId);\
++[[nodiscard]] bool emitNewTypedArrayFromArrayBufferResult(CacheIRReader& reader) {\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ ObjOperandId bufferId = reader.objOperandId();\
++ ValOperandId byteOffsetId = reader.valOperandId();\
++ ValOperandId lengthId = reader.valOperandId();\
++ return emitNewTypedArrayFromArrayBufferResult(templateObjectOffset, bufferId, byteOffsetId, lengthId);\
++}\
++\
++[[nodiscard]] bool emitNewTypedArrayFromArrayResult(uint32_t templateObjectOffset, ObjOperandId arrayId);\
++[[nodiscard]] bool emitNewTypedArrayFromArrayResult(CacheIRReader& reader) {\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ ObjOperandId arrayId = reader.objOperandId();\
++ return emitNewTypedArrayFromArrayResult(templateObjectOffset, arrayId);\
++}\
++\
++[[nodiscard]] bool emitNewStringObjectResult(uint32_t templateObjectOffset, StringOperandId strId);\
++[[nodiscard]] bool emitNewStringObjectResult(CacheIRReader& reader) {\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ StringOperandId strId = reader.stringOperandId();\
++ return emitNewStringObjectResult(templateObjectOffset, strId);\
++}\
++\
++[[nodiscard]] bool emitStringToLowerCaseResult(StringOperandId strId);\
++[[nodiscard]] bool emitStringToLowerCaseResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ return emitStringToLowerCaseResult(strId);\
++}\
++\
++[[nodiscard]] bool emitStringToUpperCaseResult(StringOperandId strId);\
++[[nodiscard]] bool emitStringToUpperCaseResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ return emitStringToUpperCaseResult(strId);\
++}\
++\
++[[nodiscard]] bool emitMathAbsInt32Result(Int32OperandId inputId);\
++[[nodiscard]] bool emitMathAbsInt32Result(CacheIRReader& reader) {\
++ Int32OperandId inputId = reader.int32OperandId();\
++ return emitMathAbsInt32Result(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathAbsNumberResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathAbsNumberResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathAbsNumberResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathClz32Result(Int32OperandId inputId);\
++[[nodiscard]] bool emitMathClz32Result(CacheIRReader& reader) {\
++ Int32OperandId inputId = reader.int32OperandId();\
++ return emitMathClz32Result(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathSignInt32Result(Int32OperandId inputId);\
++[[nodiscard]] bool emitMathSignInt32Result(CacheIRReader& reader) {\
++ Int32OperandId inputId = reader.int32OperandId();\
++ return emitMathSignInt32Result(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathSignNumberResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathSignNumberResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathSignNumberResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathSignNumberToInt32Result(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathSignNumberToInt32Result(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathSignNumberToInt32Result(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathImulResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitMathImulResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitMathImulResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitMathSqrtNumberResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathSqrtNumberResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathSqrtNumberResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathFRoundNumberResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathFRoundNumberResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathFRoundNumberResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathHypot2NumberResult(NumberOperandId firstId, NumberOperandId secondId);\
++[[nodiscard]] bool emitMathHypot2NumberResult(CacheIRReader& reader) {\
++ NumberOperandId firstId = reader.numberOperandId();\
++ NumberOperandId secondId = reader.numberOperandId();\
++ return emitMathHypot2NumberResult(firstId, secondId);\
++}\
++\
++[[nodiscard]] bool emitMathHypot3NumberResult(NumberOperandId firstId, NumberOperandId secondId, NumberOperandId thirdId);\
++[[nodiscard]] bool emitMathHypot3NumberResult(CacheIRReader& reader) {\
++ NumberOperandId firstId = reader.numberOperandId();\
++ NumberOperandId secondId = reader.numberOperandId();\
++ NumberOperandId thirdId = reader.numberOperandId();\
++ return emitMathHypot3NumberResult(firstId, secondId, thirdId);\
++}\
++\
++[[nodiscard]] bool emitMathHypot4NumberResult(NumberOperandId firstId, NumberOperandId secondId, NumberOperandId thirdId, NumberOperandId fourthId);\
++[[nodiscard]] bool emitMathHypot4NumberResult(CacheIRReader& reader) {\
++ NumberOperandId firstId = reader.numberOperandId();\
++ NumberOperandId secondId = reader.numberOperandId();\
++ NumberOperandId thirdId = reader.numberOperandId();\
++ NumberOperandId fourthId = reader.numberOperandId();\
++ return emitMathHypot4NumberResult(firstId, secondId, thirdId, fourthId);\
++}\
++\
++[[nodiscard]] bool emitMathAtan2NumberResult(NumberOperandId lhsId, NumberOperandId rhsId);\
++[[nodiscard]] bool emitMathAtan2NumberResult(CacheIRReader& reader) {\
++ NumberOperandId lhsId = reader.numberOperandId();\
++ NumberOperandId rhsId = reader.numberOperandId();\
++ return emitMathAtan2NumberResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitMathFloorNumberResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathFloorNumberResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathFloorNumberResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathCeilNumberResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathCeilNumberResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathCeilNumberResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathTruncNumberResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathTruncNumberResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathTruncNumberResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathFloorToInt32Result(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathFloorToInt32Result(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathFloorToInt32Result(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathCeilToInt32Result(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathCeilToInt32Result(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathCeilToInt32Result(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathTruncToInt32Result(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathTruncToInt32Result(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathTruncToInt32Result(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathRoundToInt32Result(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathRoundToInt32Result(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathRoundToInt32Result(inputId);\
++}\
++\
++[[nodiscard]] bool emitInt32MinMax(bool isMax, Int32OperandId firstId, Int32OperandId secondId, Int32OperandId resultId);\
++[[nodiscard]] bool emitInt32MinMax(CacheIRReader& reader) {\
++ bool isMax = reader.readBool();\
++ Int32OperandId firstId = reader.int32OperandId();\
++ Int32OperandId secondId = reader.int32OperandId();\
++ Int32OperandId resultId = reader.int32OperandId();\
++ return emitInt32MinMax(isMax, firstId, secondId, resultId);\
++}\
++\
++[[nodiscard]] bool emitNumberMinMax(bool isMax, NumberOperandId firstId, NumberOperandId secondId, NumberOperandId resultId);\
++[[nodiscard]] bool emitNumberMinMax(CacheIRReader& reader) {\
++ bool isMax = reader.readBool();\
++ NumberOperandId firstId = reader.numberOperandId();\
++ NumberOperandId secondId = reader.numberOperandId();\
++ NumberOperandId resultId = reader.numberOperandId();\
++ return emitNumberMinMax(isMax, firstId, secondId, resultId);\
++}\
++\
++[[nodiscard]] bool emitInt32MinMaxArrayResult(ObjOperandId arrayId, bool isMax);\
++[[nodiscard]] bool emitInt32MinMaxArrayResult(CacheIRReader& reader) {\
++ ObjOperandId arrayId = reader.objOperandId();\
++ bool isMax = reader.readBool();\
++ return emitInt32MinMaxArrayResult(arrayId, isMax);\
++}\
++\
++[[nodiscard]] bool emitNumberMinMaxArrayResult(ObjOperandId arrayId, bool isMax);\
++[[nodiscard]] bool emitNumberMinMaxArrayResult(CacheIRReader& reader) {\
++ ObjOperandId arrayId = reader.objOperandId();\
++ bool isMax = reader.readBool();\
++ return emitNumberMinMaxArrayResult(arrayId, isMax);\
++}\
++\
++[[nodiscard]] bool emitMathFunctionNumberResult(NumberOperandId inputId, UnaryMathFunction fun);\
++[[nodiscard]] bool emitMathFunctionNumberResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ UnaryMathFunction fun = reader.unaryMathFunction();\
++ return emitMathFunctionNumberResult(inputId, fun);\
++}\
++\
++[[nodiscard]] bool emitObjectToStringResult(ObjOperandId objId);\
++[[nodiscard]] bool emitObjectToStringResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitObjectToStringResult(objId);\
++}\
++\
++[[nodiscard]] bool emitStoreTypedArrayElement(ObjOperandId objId, Scalar::Type elementType, IntPtrOperandId indexId, uint32_t rhsId, bool handleOOB);\
++[[nodiscard]] bool emitStoreTypedArrayElement(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ uint32_t rhsId = reader.rawOperandId();\
++ bool handleOOB = reader.readBool();\
++ return emitStoreTypedArrayElement(objId, elementType, indexId, rhsId, handleOOB);\
++}\
++\
++[[nodiscard]] bool emitAtomicsCompareExchangeResult(ObjOperandId objId, IntPtrOperandId indexId, uint32_t expectedId, uint32_t replacementId, Scalar::Type elementType);\
++[[nodiscard]] bool emitAtomicsCompareExchangeResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ uint32_t expectedId = reader.rawOperandId();\
++ uint32_t replacementId = reader.rawOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ return emitAtomicsCompareExchangeResult(objId, indexId, expectedId, replacementId, elementType);\
++}\
++\
++[[nodiscard]] bool emitAtomicsExchangeResult(ObjOperandId objId, IntPtrOperandId indexId, uint32_t valueId, Scalar::Type elementType);\
++[[nodiscard]] bool emitAtomicsExchangeResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ uint32_t valueId = reader.rawOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ return emitAtomicsExchangeResult(objId, indexId, valueId, elementType);\
++}\
++\
++[[nodiscard]] bool emitAtomicsAddResult(ObjOperandId objId, IntPtrOperandId indexId, uint32_t valueId, Scalar::Type elementType, bool forEffect);\
++[[nodiscard]] bool emitAtomicsAddResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ uint32_t valueId = reader.rawOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ bool forEffect = reader.readBool();\
++ return emitAtomicsAddResult(objId, indexId, valueId, elementType, forEffect);\
++}\
++\
++[[nodiscard]] bool emitAtomicsSubResult(ObjOperandId objId, IntPtrOperandId indexId, uint32_t valueId, Scalar::Type elementType, bool forEffect);\
++[[nodiscard]] bool emitAtomicsSubResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ uint32_t valueId = reader.rawOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ bool forEffect = reader.readBool();\
++ return emitAtomicsSubResult(objId, indexId, valueId, elementType, forEffect);\
++}\
++\
++[[nodiscard]] bool emitAtomicsAndResult(ObjOperandId objId, IntPtrOperandId indexId, uint32_t valueId, Scalar::Type elementType, bool forEffect);\
++[[nodiscard]] bool emitAtomicsAndResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ uint32_t valueId = reader.rawOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ bool forEffect = reader.readBool();\
++ return emitAtomicsAndResult(objId, indexId, valueId, elementType, forEffect);\
++}\
++\
++[[nodiscard]] bool emitAtomicsOrResult(ObjOperandId objId, IntPtrOperandId indexId, uint32_t valueId, Scalar::Type elementType, bool forEffect);\
++[[nodiscard]] bool emitAtomicsOrResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ uint32_t valueId = reader.rawOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ bool forEffect = reader.readBool();\
++ return emitAtomicsOrResult(objId, indexId, valueId, elementType, forEffect);\
++}\
++\
++[[nodiscard]] bool emitAtomicsXorResult(ObjOperandId objId, IntPtrOperandId indexId, uint32_t valueId, Scalar::Type elementType, bool forEffect);\
++[[nodiscard]] bool emitAtomicsXorResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ uint32_t valueId = reader.rawOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ bool forEffect = reader.readBool();\
++ return emitAtomicsXorResult(objId, indexId, valueId, elementType, forEffect);\
++}\
++\
++[[nodiscard]] bool emitAtomicsLoadResult(ObjOperandId objId, IntPtrOperandId indexId, Scalar::Type elementType);\
++[[nodiscard]] bool emitAtomicsLoadResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ return emitAtomicsLoadResult(objId, indexId, elementType);\
++}\
++\
++[[nodiscard]] bool emitAtomicsStoreResult(ObjOperandId objId, IntPtrOperandId indexId, uint32_t valueId, Scalar::Type elementType);\
++[[nodiscard]] bool emitAtomicsStoreResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ uint32_t valueId = reader.rawOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ return emitAtomicsStoreResult(objId, indexId, valueId, elementType);\
++}\
++\
++[[nodiscard]] bool emitAtomicsIsLockFreeResult(Int32OperandId valueId);\
++[[nodiscard]] bool emitAtomicsIsLockFreeResult(CacheIRReader& reader) {\
++ Int32OperandId valueId = reader.int32OperandId();\
++ return emitAtomicsIsLockFreeResult(valueId);\
++}\
++\
++[[nodiscard]] bool emitCallInt32ToString(Int32OperandId inputId, StringOperandId resultId);\
++[[nodiscard]] bool emitCallInt32ToString(CacheIRReader& reader) {\
++ Int32OperandId inputId = reader.int32OperandId();\
++ StringOperandId resultId = reader.stringOperandId();\
++ return emitCallInt32ToString(inputId, resultId);\
++}\
++\
++[[nodiscard]] bool emitCallNumberToString(NumberOperandId inputId, StringOperandId resultId);\
++[[nodiscard]] bool emitCallNumberToString(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ StringOperandId resultId = reader.stringOperandId();\
++ return emitCallNumberToString(inputId, resultId);\
++}\
++\
++[[nodiscard]] bool emitBooleanToString(BooleanOperandId inputId, StringOperandId resultId);\
++[[nodiscard]] bool emitBooleanToString(CacheIRReader& reader) {\
++ BooleanOperandId inputId = reader.booleanOperandId();\
++ StringOperandId resultId = reader.stringOperandId();\
++ return emitBooleanToString(inputId, resultId);\
++}\
++\
++[[nodiscard]] bool emitGuardWasmArg(ValOperandId argId, wasm::ValType::Kind type);\
++[[nodiscard]] bool emitGuardWasmArg(CacheIRReader& reader) {\
++ ValOperandId argId = reader.valOperandId();\
++ wasm::ValType::Kind type = reader.wasmValType();\
++ return emitGuardWasmArg(argId, type);\
++}\
++\
++[[nodiscard]] bool emitMetaTwoByte(uint32_t functionObjectOffset, uint32_t templateObjectOffset);\
++[[nodiscard]] bool emitMetaTwoByte(CacheIRReader& reader) {\
++ uint32_t functionObjectOffset = reader.stubOffset();\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ return emitMetaTwoByte(functionObjectOffset, templateObjectOffset);\
++}\
++\
++[[nodiscard]] bool emitLoadDenseElementResult(ObjOperandId objId, Int32OperandId indexId);\
++[[nodiscard]] bool emitLoadDenseElementResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitLoadDenseElementResult(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitLoadDenseElementHoleResult(ObjOperandId objId, Int32OperandId indexId);\
++[[nodiscard]] bool emitLoadDenseElementHoleResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitLoadDenseElementHoleResult(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitCallGetSparseElementResult(ObjOperandId objId, Int32OperandId indexId);\
++[[nodiscard]] bool emitCallGetSparseElementResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitCallGetSparseElementResult(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitLoadDenseElementExistsResult(ObjOperandId objId, Int32OperandId indexId);\
++[[nodiscard]] bool emitLoadDenseElementExistsResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitLoadDenseElementExistsResult(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitLoadTypedArrayElementExistsResult(ObjOperandId objId, IntPtrOperandId indexId);\
++[[nodiscard]] bool emitLoadTypedArrayElementExistsResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ return emitLoadTypedArrayElementExistsResult(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitLoadDenseElementHoleExistsResult(ObjOperandId objId, Int32OperandId indexId);\
++[[nodiscard]] bool emitLoadDenseElementHoleExistsResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitLoadDenseElementHoleExistsResult(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitLoadTypedArrayElementResult(ObjOperandId objId, IntPtrOperandId indexId, Scalar::Type elementType, bool handleOOB, bool forceDoubleForUint32);\
++[[nodiscard]] bool emitLoadTypedArrayElementResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ bool handleOOB = reader.readBool();\
++ bool forceDoubleForUint32 = reader.readBool();\
++ return emitLoadTypedArrayElementResult(objId, indexId, elementType, handleOOB, forceDoubleForUint32);\
++}\
++\
++[[nodiscard]] bool emitLoadDataViewValueResult(ObjOperandId objId, IntPtrOperandId offsetId, BooleanOperandId littleEndianId, Scalar::Type elementType, bool forceDoubleForUint32);\
++[[nodiscard]] bool emitLoadDataViewValueResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId offsetId = reader.intPtrOperandId();\
++ BooleanOperandId littleEndianId = reader.booleanOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ bool forceDoubleForUint32 = reader.readBool();\
++ return emitLoadDataViewValueResult(objId, offsetId, littleEndianId, elementType, forceDoubleForUint32);\
++}\
++\
++[[nodiscard]] bool emitStoreDataViewValueResult(ObjOperandId objId, IntPtrOperandId offsetId, uint32_t valueId, BooleanOperandId littleEndianId, Scalar::Type elementType);\
++[[nodiscard]] bool emitStoreDataViewValueResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId offsetId = reader.intPtrOperandId();\
++ uint32_t valueId = reader.rawOperandId();\
++ BooleanOperandId littleEndianId = reader.booleanOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ return emitStoreDataViewValueResult(objId, offsetId, valueId, littleEndianId, elementType);\
++}\
++\
++[[nodiscard]] bool emitLoadInt32ArrayLengthResult(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadInt32ArrayLengthResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadInt32ArrayLengthResult(objId);\
++}\
++\
++[[nodiscard]] bool emitLoadInt32ArrayLength(ObjOperandId objId, Int32OperandId resultId);\
++[[nodiscard]] bool emitLoadInt32ArrayLength(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId resultId = reader.int32OperandId();\
++ return emitLoadInt32ArrayLength(objId, resultId);\
++}\
++\
++[[nodiscard]] bool emitLoadArgumentsObjectArgResult(ObjOperandId objId, Int32OperandId indexId);\
++[[nodiscard]] bool emitLoadArgumentsObjectArgResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitLoadArgumentsObjectArgResult(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitLoadArgumentsObjectLengthResult(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadArgumentsObjectLengthResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadArgumentsObjectLengthResult(objId);\
++}\
++\
++[[nodiscard]] bool emitLoadFunctionLengthResult(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadFunctionLengthResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadFunctionLengthResult(objId);\
++}\
++\
++[[nodiscard]] bool emitLoadFunctionNameResult(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadFunctionNameResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadFunctionNameResult(objId);\
++}\
++\
++[[nodiscard]] bool emitLoadArrayBufferByteLengthInt32Result(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadArrayBufferByteLengthInt32Result(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadArrayBufferByteLengthInt32Result(objId);\
++}\
++\
++[[nodiscard]] bool emitLoadArrayBufferByteLengthDoubleResult(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadArrayBufferByteLengthDoubleResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadArrayBufferByteLengthDoubleResult(objId);\
++}\
++\
++[[nodiscard]] bool emitLoadArrayBufferViewLengthInt32Result(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadArrayBufferViewLengthInt32Result(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadArrayBufferViewLengthInt32Result(objId);\
++}\
++\
++[[nodiscard]] bool emitLoadArrayBufferViewLengthDoubleResult(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadArrayBufferViewLengthDoubleResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadArrayBufferViewLengthDoubleResult(objId);\
++}\
++\
++[[nodiscard]] bool emitLoadStringCharCodeResult(StringOperandId strId, Int32OperandId indexId);\
++[[nodiscard]] bool emitLoadStringCharCodeResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitLoadStringCharCodeResult(strId, indexId);\
++}\
++\
++[[nodiscard]] bool emitLoadStringLengthResult(StringOperandId strId);\
++[[nodiscard]] bool emitLoadStringLengthResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ return emitLoadStringLengthResult(strId);\
++}\
++\
++[[nodiscard]] bool emitLoadObjectResult(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadObjectResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadObjectResult(objId);\
++}\
++\
++[[nodiscard]] bool emitLoadStringResult(StringOperandId strId);\
++[[nodiscard]] bool emitLoadStringResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ return emitLoadStringResult(strId);\
++}\
++\
++[[nodiscard]] bool emitLoadSymbolResult(SymbolOperandId symId);\
++[[nodiscard]] bool emitLoadSymbolResult(CacheIRReader& reader) {\
++ SymbolOperandId symId = reader.symbolOperandId();\
++ return emitLoadSymbolResult(symId);\
++}\
++\
++[[nodiscard]] bool emitLoadInt32Result(Int32OperandId valId);\
++[[nodiscard]] bool emitLoadInt32Result(CacheIRReader& reader) {\
++ Int32OperandId valId = reader.int32OperandId();\
++ return emitLoadInt32Result(valId);\
++}\
++\
++[[nodiscard]] bool emitLoadDoubleResult(NumberOperandId valId);\
++[[nodiscard]] bool emitLoadDoubleResult(CacheIRReader& reader) {\
++ NumberOperandId valId = reader.numberOperandId();\
++ return emitLoadDoubleResult(valId);\
++}\
++\
++[[nodiscard]] bool emitLoadBigIntResult(BigIntOperandId valId);\
++[[nodiscard]] bool emitLoadBigIntResult(CacheIRReader& reader) {\
++ BigIntOperandId valId = reader.bigIntOperandId();\
++ return emitLoadBigIntResult(valId);\
++}\
++\
++[[nodiscard]] bool emitProxyGetByValueResult(ObjOperandId objId, ValOperandId idId);\
++[[nodiscard]] bool emitProxyGetByValueResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ValOperandId idId = reader.valOperandId();\
++ return emitProxyGetByValueResult(objId, idId);\
++}\
++\
++[[nodiscard]] bool emitProxyHasPropResult(ObjOperandId objId, ValOperandId idId, bool hasOwn);\
++[[nodiscard]] bool emitProxyHasPropResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ValOperandId idId = reader.valOperandId();\
++ bool hasOwn = reader.readBool();\
++ return emitProxyHasPropResult(objId, idId, hasOwn);\
++}\
++\
++[[nodiscard]] bool emitCallObjectHasSparseElementResult(ObjOperandId objId, Int32OperandId indexId);\
++[[nodiscard]] bool emitCallObjectHasSparseElementResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitCallObjectHasSparseElementResult(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitCallNativeGetElementResult(ObjOperandId objId, Int32OperandId indexId);\
++[[nodiscard]] bool emitCallNativeGetElementResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitCallNativeGetElementResult(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitGetNextMapSetEntryForIteratorResult(ObjOperandId iterId, ObjOperandId resultArrId, bool isMap);\
++[[nodiscard]] bool emitGetNextMapSetEntryForIteratorResult(CacheIRReader& reader) {\
++ ObjOperandId iterId = reader.objOperandId();\
++ ObjOperandId resultArrId = reader.objOperandId();\
++ bool isMap = reader.readBool();\
++ return emitGetNextMapSetEntryForIteratorResult(iterId, resultArrId, isMap);\
++}\
++\
++[[nodiscard]] bool emitLoadUndefinedResult();\
++[[nodiscard]] bool emitLoadUndefinedResult(CacheIRReader& reader) {\
++ return emitLoadUndefinedResult();\
++}\
++\
++[[nodiscard]] bool emitLoadBooleanResult(bool val);\
++[[nodiscard]] bool emitLoadBooleanResult(CacheIRReader& reader) {\
++ bool val = reader.readBool();\
++ return emitLoadBooleanResult(val);\
++}\
++\
++[[nodiscard]] bool emitLoadInt32Constant(uint32_t valOffset, Int32OperandId resultId);\
++[[nodiscard]] bool emitLoadInt32Constant(CacheIRReader& reader) {\
++ uint32_t valOffset = reader.stubOffset();\
++ Int32OperandId resultId = reader.int32OperandId();\
++ return emitLoadInt32Constant(valOffset, resultId);\
++}\
++\
++[[nodiscard]] bool emitLoadBooleanConstant(bool val, BooleanOperandId resultId);\
++[[nodiscard]] bool emitLoadBooleanConstant(CacheIRReader& reader) {\
++ bool val = reader.readBool();\
++ BooleanOperandId resultId = reader.booleanOperandId();\
++ return emitLoadBooleanConstant(val, resultId);\
++}\
++\
++[[nodiscard]] bool emitLoadUndefined(ValOperandId resultId);\
++[[nodiscard]] bool emitLoadUndefined(CacheIRReader& reader) {\
++ ValOperandId resultId = reader.valOperandId();\
++ return emitLoadUndefined(resultId);\
++}\
++\
++[[nodiscard]] bool emitLoadConstantString(uint32_t strOffset, StringOperandId resultId);\
++[[nodiscard]] bool emitLoadConstantString(CacheIRReader& reader) {\
++ uint32_t strOffset = reader.stubOffset();\
++ StringOperandId resultId = reader.stringOperandId();\
++ return emitLoadConstantString(strOffset, resultId);\
++}\
++\
++[[nodiscard]] bool emitLoadInstanceOfObjectResult(ValOperandId lhsId, ObjOperandId protoId);\
++[[nodiscard]] bool emitLoadInstanceOfObjectResult(CacheIRReader& reader) {\
++ ValOperandId lhsId = reader.valOperandId();\
++ ObjOperandId protoId = reader.objOperandId();\
++ return emitLoadInstanceOfObjectResult(lhsId, protoId);\
++}\
++\
++[[nodiscard]] bool emitLoadTypeOfObjectResult(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadTypeOfObjectResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadTypeOfObjectResult(objId);\
++}\
++\
++[[nodiscard]] bool emitDoubleAddResult(NumberOperandId lhsId, NumberOperandId rhsId);\
++[[nodiscard]] bool emitDoubleAddResult(CacheIRReader& reader) {\
++ NumberOperandId lhsId = reader.numberOperandId();\
++ NumberOperandId rhsId = reader.numberOperandId();\
++ return emitDoubleAddResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitDoubleSubResult(NumberOperandId lhsId, NumberOperandId rhsId);\
++[[nodiscard]] bool emitDoubleSubResult(CacheIRReader& reader) {\
++ NumberOperandId lhsId = reader.numberOperandId();\
++ NumberOperandId rhsId = reader.numberOperandId();\
++ return emitDoubleSubResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitDoubleMulResult(NumberOperandId lhsId, NumberOperandId rhsId);\
++[[nodiscard]] bool emitDoubleMulResult(CacheIRReader& reader) {\
++ NumberOperandId lhsId = reader.numberOperandId();\
++ NumberOperandId rhsId = reader.numberOperandId();\
++ return emitDoubleMulResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitDoubleDivResult(NumberOperandId lhsId, NumberOperandId rhsId);\
++[[nodiscard]] bool emitDoubleDivResult(CacheIRReader& reader) {\
++ NumberOperandId lhsId = reader.numberOperandId();\
++ NumberOperandId rhsId = reader.numberOperandId();\
++ return emitDoubleDivResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitDoubleModResult(NumberOperandId lhsId, NumberOperandId rhsId);\
++[[nodiscard]] bool emitDoubleModResult(CacheIRReader& reader) {\
++ NumberOperandId lhsId = reader.numberOperandId();\
++ NumberOperandId rhsId = reader.numberOperandId();\
++ return emitDoubleModResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitDoublePowResult(NumberOperandId lhsId, NumberOperandId rhsId);\
++[[nodiscard]] bool emitDoublePowResult(CacheIRReader& reader) {\
++ NumberOperandId lhsId = reader.numberOperandId();\
++ NumberOperandId rhsId = reader.numberOperandId();\
++ return emitDoublePowResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32AddResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32AddResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32AddResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32SubResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32SubResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32SubResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32MulResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32MulResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32MulResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32DivResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32DivResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32DivResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32ModResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32ModResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32ModResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32PowResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32PowResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32PowResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntAddResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntAddResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntAddResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntSubResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntSubResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntSubResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntMulResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntMulResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntMulResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntDivResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntDivResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntDivResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntModResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntModResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntModResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntPowResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntPowResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntPowResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32BitOrResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32BitOrResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32BitOrResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32BitXorResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32BitXorResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32BitXorResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32BitAndResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32BitAndResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32BitAndResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32LeftShiftResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32LeftShiftResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32LeftShiftResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32RightShiftResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32RightShiftResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32RightShiftResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32URightShiftResult(Int32OperandId lhsId, Int32OperandId rhsId, bool forceDouble);\
++[[nodiscard]] bool emitInt32URightShiftResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ bool forceDouble = reader.readBool();\
++ return emitInt32URightShiftResult(lhsId, rhsId, forceDouble);\
++}\
++\
++[[nodiscard]] bool emitInt32NotResult(Int32OperandId inputId);\
++[[nodiscard]] bool emitInt32NotResult(CacheIRReader& reader) {\
++ Int32OperandId inputId = reader.int32OperandId();\
++ return emitInt32NotResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitBigIntBitOrResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntBitOrResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntBitOrResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntBitXorResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntBitXorResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntBitXorResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntBitAndResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntBitAndResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntBitAndResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntLeftShiftResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntLeftShiftResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntLeftShiftResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntRightShiftResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntRightShiftResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntRightShiftResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntNotResult(BigIntOperandId inputId);\
++[[nodiscard]] bool emitBigIntNotResult(CacheIRReader& reader) {\
++ BigIntOperandId inputId = reader.bigIntOperandId();\
++ return emitBigIntNotResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitInt32NegationResult(Int32OperandId inputId);\
++[[nodiscard]] bool emitInt32NegationResult(CacheIRReader& reader) {\
++ Int32OperandId inputId = reader.int32OperandId();\
++ return emitInt32NegationResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitDoubleNegationResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitDoubleNegationResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitDoubleNegationResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitBigIntNegationResult(BigIntOperandId inputId);\
++[[nodiscard]] bool emitBigIntNegationResult(CacheIRReader& reader) {\
++ BigIntOperandId inputId = reader.bigIntOperandId();\
++ return emitBigIntNegationResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitInt32IncResult(Int32OperandId inputId);\
++[[nodiscard]] bool emitInt32IncResult(CacheIRReader& reader) {\
++ Int32OperandId inputId = reader.int32OperandId();\
++ return emitInt32IncResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitInt32DecResult(Int32OperandId inputId);\
++[[nodiscard]] bool emitInt32DecResult(CacheIRReader& reader) {\
++ Int32OperandId inputId = reader.int32OperandId();\
++ return emitInt32DecResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitDoubleIncResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitDoubleIncResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitDoubleIncResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitDoubleDecResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitDoubleDecResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitDoubleDecResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitBigIntIncResult(BigIntOperandId inputId);\
++[[nodiscard]] bool emitBigIntIncResult(CacheIRReader& reader) {\
++ BigIntOperandId inputId = reader.bigIntOperandId();\
++ return emitBigIntIncResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitBigIntDecResult(BigIntOperandId inputId);\
++[[nodiscard]] bool emitBigIntDecResult(CacheIRReader& reader) {\
++ BigIntOperandId inputId = reader.bigIntOperandId();\
++ return emitBigIntDecResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitLoadInt32TruthyResult(ValOperandId inputId);\
++[[nodiscard]] bool emitLoadInt32TruthyResult(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitLoadInt32TruthyResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitLoadDoubleTruthyResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitLoadDoubleTruthyResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitLoadDoubleTruthyResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitLoadStringTruthyResult(StringOperandId strId);\
++[[nodiscard]] bool emitLoadStringTruthyResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ return emitLoadStringTruthyResult(strId);\
++}\
++\
++[[nodiscard]] bool emitLoadObjectTruthyResult(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadObjectTruthyResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadObjectTruthyResult(objId);\
++}\
++\
++[[nodiscard]] bool emitLoadBigIntTruthyResult(BigIntOperandId bigIntId);\
++[[nodiscard]] bool emitLoadBigIntTruthyResult(CacheIRReader& reader) {\
++ BigIntOperandId bigIntId = reader.bigIntOperandId();\
++ return emitLoadBigIntTruthyResult(bigIntId);\
++}\
++\
++[[nodiscard]] bool emitLoadValueTruthyResult(ValOperandId inputId);\
++[[nodiscard]] bool emitLoadValueTruthyResult(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitLoadValueTruthyResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitLoadOperandResult(ValOperandId inputId);\
++[[nodiscard]] bool emitLoadOperandResult(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitLoadOperandResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitCallStringConcatResult(StringOperandId lhsId, StringOperandId rhsId);\
++[[nodiscard]] bool emitCallStringConcatResult(CacheIRReader& reader) {\
++ StringOperandId lhsId = reader.stringOperandId();\
++ StringOperandId rhsId = reader.stringOperandId();\
++ return emitCallStringConcatResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCallIsSuspendedGeneratorResult(ValOperandId valId);\
++[[nodiscard]] bool emitCallIsSuspendedGeneratorResult(CacheIRReader& reader) {\
++ ValOperandId valId = reader.valOperandId();\
++ return emitCallIsSuspendedGeneratorResult(valId);\
++}\
++\
++[[nodiscard]] bool emitCompareObjectResult(JSOp op, ObjOperandId lhsId, ObjOperandId rhsId);\
++[[nodiscard]] bool emitCompareObjectResult(CacheIRReader& reader) {\
++ JSOp op = reader.jsop();\
++ ObjOperandId lhsId = reader.objOperandId();\
++ ObjOperandId rhsId = reader.objOperandId();\
++ return emitCompareObjectResult(op, lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCompareSymbolResult(JSOp op, SymbolOperandId lhsId, SymbolOperandId rhsId);\
++[[nodiscard]] bool emitCompareSymbolResult(CacheIRReader& reader) {\
++ JSOp op = reader.jsop();\
++ SymbolOperandId lhsId = reader.symbolOperandId();\
++ SymbolOperandId rhsId = reader.symbolOperandId();\
++ return emitCompareSymbolResult(op, lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCompareInt32Result(JSOp op, Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitCompareInt32Result(CacheIRReader& reader) {\
++ JSOp op = reader.jsop();\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitCompareInt32Result(op, lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCompareDoubleResult(JSOp op, NumberOperandId lhsId, NumberOperandId rhsId);\
++[[nodiscard]] bool emitCompareDoubleResult(CacheIRReader& reader) {\
++ JSOp op = reader.jsop();\
++ NumberOperandId lhsId = reader.numberOperandId();\
++ NumberOperandId rhsId = reader.numberOperandId();\
++ return emitCompareDoubleResult(op, lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCompareBigIntResult(JSOp op, BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitCompareBigIntResult(CacheIRReader& reader) {\
++ JSOp op = reader.jsop();\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitCompareBigIntResult(op, lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCompareBigIntInt32Result(JSOp op, BigIntOperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitCompareBigIntInt32Result(CacheIRReader& reader) {\
++ JSOp op = reader.jsop();\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitCompareBigIntInt32Result(op, lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCompareBigIntNumberResult(JSOp op, BigIntOperandId lhsId, NumberOperandId rhsId);\
++[[nodiscard]] bool emitCompareBigIntNumberResult(CacheIRReader& reader) {\
++ JSOp op = reader.jsop();\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ NumberOperandId rhsId = reader.numberOperandId();\
++ return emitCompareBigIntNumberResult(op, lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCompareBigIntStringResult(JSOp op, BigIntOperandId lhsId, StringOperandId rhsId);\
++[[nodiscard]] bool emitCompareBigIntStringResult(CacheIRReader& reader) {\
++ JSOp op = reader.jsop();\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ StringOperandId rhsId = reader.stringOperandId();\
++ return emitCompareBigIntStringResult(op, lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCompareNullUndefinedResult(JSOp op, bool isUndefined, ValOperandId inputId);\
++[[nodiscard]] bool emitCompareNullUndefinedResult(CacheIRReader& reader) {\
++ JSOp op = reader.jsop();\
++ bool isUndefined = reader.readBool();\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitCompareNullUndefinedResult(op, isUndefined, inputId);\
++}\
++\
++[[nodiscard]] bool emitCompareDoubleSameValueResult(NumberOperandId lhsId, NumberOperandId rhsId);\
++[[nodiscard]] bool emitCompareDoubleSameValueResult(CacheIRReader& reader) {\
++ NumberOperandId lhsId = reader.numberOperandId();\
++ NumberOperandId rhsId = reader.numberOperandId();\
++ return emitCompareDoubleSameValueResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitIndirectTruncateInt32Result(Int32OperandId valId);\
++[[nodiscard]] bool emitIndirectTruncateInt32Result(CacheIRReader& reader) {\
++ Int32OperandId valId = reader.int32OperandId();\
++ return emitIndirectTruncateInt32Result(valId);\
++}\
++\
++[[nodiscard]] bool emitBigIntAsIntNResult(Int32OperandId bitsId, BigIntOperandId bigIntId);\
++[[nodiscard]] bool emitBigIntAsIntNResult(CacheIRReader& reader) {\
++ Int32OperandId bitsId = reader.int32OperandId();\
++ BigIntOperandId bigIntId = reader.bigIntOperandId();\
++ return emitBigIntAsIntNResult(bitsId, bigIntId);\
++}\
++\
++[[nodiscard]] bool emitBigIntAsUintNResult(Int32OperandId bitsId, BigIntOperandId bigIntId);\
++[[nodiscard]] bool emitBigIntAsUintNResult(CacheIRReader& reader) {\
++ Int32OperandId bitsId = reader.int32OperandId();\
++ BigIntOperandId bigIntId = reader.bigIntOperandId();\
++ return emitBigIntAsUintNResult(bitsId, bigIntId);\
++}\
++\
++[[nodiscard]] bool emitCallPrintString(const char* str);\
++[[nodiscard]] bool emitCallPrintString(CacheIRReader& reader) {\
++ const char* str = reinterpret_cast<char*>(reader.pointer());\
++ return emitCallPrintString(str);\
++}\
++\
++[[nodiscard]] bool emitBreakpoint();\
++[[nodiscard]] bool emitBreakpoint(CacheIRReader& reader) {\
++ return emitBreakpoint();\
++}\
++\
++[[nodiscard]] bool emitWrapResult();\
++[[nodiscard]] bool emitWrapResult(CacheIRReader& reader) {\
++ return emitWrapResult();\
++}\
++\
++[[nodiscard]] bool emitBailout();\
++[[nodiscard]] bool emitBailout(CacheIRReader& reader) {\
++ return emitBailout();\
++}\
++\
++[[nodiscard]] bool emitAssertRecoveredOnBailoutResult(ValOperandId valId, bool mustBeRecovered);\
++[[nodiscard]] bool emitAssertRecoveredOnBailoutResult(CacheIRReader& reader) {\
++ ValOperandId valId = reader.valOperandId();\
++ bool mustBeRecovered = reader.readBool();\
++ return emitAssertRecoveredOnBailoutResult(valId, mustBeRecovered);\
++}\
++
++
++#define CACHE_IR_COMPILER_UNSHARED_GENERATED \
++[[nodiscard]] bool emitReturnFromIC();\
++[[nodiscard]] bool emitReturnFromIC(CacheIRReader& reader) {\
++ return emitReturnFromIC();\
++}\
++\
++[[nodiscard]] bool emitGuardShape(ObjOperandId objId, uint32_t shapeOffset);\
++[[nodiscard]] bool emitGuardShape(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t shapeOffset = reader.stubOffset();\
++ return emitGuardShape(objId, shapeOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardProto(ObjOperandId objId, uint32_t protoOffset);\
++[[nodiscard]] bool emitGuardProto(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t protoOffset = reader.stubOffset();\
++ return emitGuardProto(objId, protoOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardAnyClass(ObjOperandId objId, uint32_t claspOffset);\
++[[nodiscard]] bool emitGuardAnyClass(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t claspOffset = reader.stubOffset();\
++ return emitGuardAnyClass(objId, claspOffset);\
++}\
++\
++[[nodiscard]] bool emitHasClassResult(ObjOperandId objId, uint32_t claspOffset);\
++[[nodiscard]] bool emitHasClassResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t claspOffset = reader.stubOffset();\
++ return emitHasClassResult(objId, claspOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardCompartment(ObjOperandId objId, uint32_t globalOffset, uint32_t compartmentOffset);\
++[[nodiscard]] bool emitGuardCompartment(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t globalOffset = reader.stubOffset();\
++ uint32_t compartmentOffset = reader.stubOffset();\
++ return emitGuardCompartment(objId, globalOffset, compartmentOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardHasProxyHandler(ObjOperandId objId, uint32_t handlerOffset);\
++[[nodiscard]] bool emitGuardHasProxyHandler(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t handlerOffset = reader.stubOffset();\
++ return emitGuardHasProxyHandler(objId, handlerOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardSpecificObject(ObjOperandId objId, uint32_t expectedOffset);\
++[[nodiscard]] bool emitGuardSpecificObject(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t expectedOffset = reader.stubOffset();\
++ return emitGuardSpecificObject(objId, expectedOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardSpecificFunction(ObjOperandId funId, uint32_t expectedOffset, uint32_t nargsAndFlagsOffset);\
++[[nodiscard]] bool emitGuardSpecificFunction(CacheIRReader& reader) {\
++ ObjOperandId funId = reader.objOperandId();\
++ uint32_t expectedOffset = reader.stubOffset();\
++ uint32_t nargsAndFlagsOffset = reader.stubOffset();\
++ return emitGuardSpecificFunction(funId, expectedOffset, nargsAndFlagsOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardFunctionScript(ObjOperandId objId, uint32_t expectedOffset, uint32_t nargsAndFlagsOffset);\
++[[nodiscard]] bool emitGuardFunctionScript(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t expectedOffset = reader.stubOffset();\
++ uint32_t nargsAndFlagsOffset = reader.stubOffset();\
++ return emitGuardFunctionScript(objId, expectedOffset, nargsAndFlagsOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardSpecificAtom(StringOperandId strId, uint32_t expectedOffset);\
++[[nodiscard]] bool emitGuardSpecificAtom(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ uint32_t expectedOffset = reader.stubOffset();\
++ return emitGuardSpecificAtom(strId, expectedOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardSpecificSymbol(SymbolOperandId symId, uint32_t expectedOffset);\
++[[nodiscard]] bool emitGuardSpecificSymbol(CacheIRReader& reader) {\
++ SymbolOperandId symId = reader.symbolOperandId();\
++ uint32_t expectedOffset = reader.stubOffset();\
++ return emitGuardSpecificSymbol(symId, expectedOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardAndGetIterator(ObjOperandId objId, uint32_t iterOffset, uint32_t enumeratorsAddrOffset, ObjOperandId resultId);\
++[[nodiscard]] bool emitGuardAndGetIterator(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t iterOffset = reader.stubOffset();\
++ uint32_t enumeratorsAddrOffset = reader.stubOffset();\
++ ObjOperandId resultId = reader.objOperandId();\
++ return emitGuardAndGetIterator(objId, iterOffset, enumeratorsAddrOffset, resultId);\
++}\
++\
++[[nodiscard]] bool emitLoadArgumentFixedSlot(ValOperandId resultId, uint8_t slotIndex);\
++[[nodiscard]] bool emitLoadArgumentFixedSlot(CacheIRReader& reader) {\
++ ValOperandId resultId = reader.valOperandId();\
++ uint8_t slotIndex = reader.readByte();\
++ return emitLoadArgumentFixedSlot(resultId, slotIndex);\
++}\
++\
++[[nodiscard]] bool emitLoadArgumentDynamicSlot(ValOperandId resultId, Int32OperandId argcId, uint8_t slotIndex);\
++[[nodiscard]] bool emitLoadArgumentDynamicSlot(CacheIRReader& reader) {\
++ ValOperandId resultId = reader.valOperandId();\
++ Int32OperandId argcId = reader.int32OperandId();\
++ uint8_t slotIndex = reader.readByte();\
++ return emitLoadArgumentDynamicSlot(resultId, argcId, slotIndex);\
++}\
++\
++[[nodiscard]] bool emitMegamorphicSetElement(ObjOperandId objId, ValOperandId idId, ValOperandId rhsId, bool strict);\
++[[nodiscard]] bool emitMegamorphicSetElement(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ValOperandId idId = reader.valOperandId();\
++ ValOperandId rhsId = reader.valOperandId();\
++ bool strict = reader.readBool();\
++ return emitMegamorphicSetElement(objId, idId, rhsId, strict);\
++}\
++\
++[[nodiscard]] bool emitLoadDOMExpandoValueGuardGeneration(ObjOperandId objId, uint32_t expandoAndGenerationOffset, uint32_t generationOffset, ValOperandId resultId);\
++[[nodiscard]] bool emitLoadDOMExpandoValueGuardGeneration(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t expandoAndGenerationOffset = reader.stubOffset();\
++ uint32_t generationOffset = reader.stubOffset();\
++ ValOperandId resultId = reader.valOperandId();\
++ return emitLoadDOMExpandoValueGuardGeneration(objId, expandoAndGenerationOffset, generationOffset, resultId);\
++}\
++\
++[[nodiscard]] bool emitGuardDOMExpandoMissingOrGuardShape(ValOperandId expandoId, uint32_t shapeOffset);\
++[[nodiscard]] bool emitGuardDOMExpandoMissingOrGuardShape(CacheIRReader& reader) {\
++ ValOperandId expandoId = reader.valOperandId();\
++ uint32_t shapeOffset = reader.stubOffset();\
++ return emitGuardDOMExpandoMissingOrGuardShape(expandoId, shapeOffset);\
++}\
++\
++[[nodiscard]] bool emitStoreFixedSlot(ObjOperandId objId, uint32_t offsetOffset, ValOperandId rhsId);\
++[[nodiscard]] bool emitStoreFixedSlot(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ return emitStoreFixedSlot(objId, offsetOffset, rhsId);\
++}\
++\
++[[nodiscard]] bool emitStoreDynamicSlot(ObjOperandId objId, uint32_t offsetOffset, ValOperandId rhsId);\
++[[nodiscard]] bool emitStoreDynamicSlot(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ return emitStoreDynamicSlot(objId, offsetOffset, rhsId);\
++}\
++\
++[[nodiscard]] bool emitAddAndStoreFixedSlot(ObjOperandId objId, uint32_t offsetOffset, ValOperandId rhsId, uint32_t newShapeOffset);\
++[[nodiscard]] bool emitAddAndStoreFixedSlot(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ uint32_t newShapeOffset = reader.stubOffset();\
++ return emitAddAndStoreFixedSlot(objId, offsetOffset, rhsId, newShapeOffset);\
++}\
++\
++[[nodiscard]] bool emitAddAndStoreDynamicSlot(ObjOperandId objId, uint32_t offsetOffset, ValOperandId rhsId, uint32_t newShapeOffset);\
++[[nodiscard]] bool emitAddAndStoreDynamicSlot(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ uint32_t newShapeOffset = reader.stubOffset();\
++ return emitAddAndStoreDynamicSlot(objId, offsetOffset, rhsId, newShapeOffset);\
++}\
++\
++[[nodiscard]] bool emitAllocateAndStoreDynamicSlot(ObjOperandId objId, uint32_t offsetOffset, ValOperandId rhsId, uint32_t newShapeOffset, uint32_t numNewSlotsOffset);\
++[[nodiscard]] bool emitAllocateAndStoreDynamicSlot(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ uint32_t newShapeOffset = reader.stubOffset();\
++ uint32_t numNewSlotsOffset = reader.stubOffset();\
++ return emitAllocateAndStoreDynamicSlot(objId, offsetOffset, rhsId, newShapeOffset, numNewSlotsOffset);\
++}\
++\
++[[nodiscard]] bool emitArrayJoinResult(ObjOperandId objId, StringOperandId sepId);\
++[[nodiscard]] bool emitArrayJoinResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ StringOperandId sepId = reader.stringOperandId();\
++ return emitArrayJoinResult(objId, sepId);\
++}\
++\
++[[nodiscard]] bool emitPackedArraySliceResult(uint32_t templateObjectOffset, ObjOperandId arrayId, Int32OperandId beginId, Int32OperandId endId);\
++[[nodiscard]] bool emitPackedArraySliceResult(CacheIRReader& reader) {\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ ObjOperandId arrayId = reader.objOperandId();\
++ Int32OperandId beginId = reader.int32OperandId();\
++ Int32OperandId endId = reader.int32OperandId();\
++ return emitPackedArraySliceResult(templateObjectOffset, arrayId, beginId, endId);\
++}\
++\
++[[nodiscard]] bool emitIsArrayResult(ValOperandId inputId);\
++[[nodiscard]] bool emitIsArrayResult(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitIsArrayResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitIsTypedArrayResult(ObjOperandId objId, bool isPossiblyWrapped);\
++[[nodiscard]] bool emitIsTypedArrayResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ bool isPossiblyWrapped = reader.readBool();\
++ return emitIsTypedArrayResult(objId, isPossiblyWrapped);\
++}\
++\
++[[nodiscard]] bool emitStringFromCharCodeResult(Int32OperandId codeId);\
++[[nodiscard]] bool emitStringFromCharCodeResult(CacheIRReader& reader) {\
++ Int32OperandId codeId = reader.int32OperandId();\
++ return emitStringFromCharCodeResult(codeId);\
++}\
++\
++[[nodiscard]] bool emitStringFromCodePointResult(Int32OperandId codeId);\
++[[nodiscard]] bool emitStringFromCodePointResult(CacheIRReader& reader) {\
++ Int32OperandId codeId = reader.int32OperandId();\
++ return emitStringFromCodePointResult(codeId);\
++}\
++\
++[[nodiscard]] bool emitMathRandomResult(uint32_t rngOffset);\
++[[nodiscard]] bool emitMathRandomResult(CacheIRReader& reader) {\
++ uint32_t rngOffset = reader.stubOffset();\
++ return emitMathRandomResult(rngOffset);\
++}\
++\
++[[nodiscard]] bool emitReflectGetPrototypeOfResult(ObjOperandId objId);\
++[[nodiscard]] bool emitReflectGetPrototypeOfResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitReflectGetPrototypeOfResult(objId);\
++}\
++\
++[[nodiscard]] bool emitCallNativeSetter(ObjOperandId receiverId, uint32_t setterOffset, ValOperandId rhsId, bool sameRealm, uint32_t nargsAndFlagsOffset);\
++[[nodiscard]] bool emitCallNativeSetter(CacheIRReader& reader) {\
++ ObjOperandId receiverId = reader.objOperandId();\
++ uint32_t setterOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ bool sameRealm = reader.readBool();\
++ uint32_t nargsAndFlagsOffset = reader.stubOffset();\
++ return emitCallNativeSetter(receiverId, setterOffset, rhsId, sameRealm, nargsAndFlagsOffset);\
++}\
++\
++[[nodiscard]] bool emitCallScriptedSetter(ObjOperandId receiverId, uint32_t setterOffset, ValOperandId rhsId, bool sameRealm, uint32_t nargsAndFlagsOffset);\
++[[nodiscard]] bool emitCallScriptedSetter(CacheIRReader& reader) {\
++ ObjOperandId receiverId = reader.objOperandId();\
++ uint32_t setterOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ bool sameRealm = reader.readBool();\
++ uint32_t nargsAndFlagsOffset = reader.stubOffset();\
++ return emitCallScriptedSetter(receiverId, setterOffset, rhsId, sameRealm, nargsAndFlagsOffset);\
++}\
++\
++[[nodiscard]] bool emitCallInlinedSetter(ObjOperandId receiverId, uint32_t setterOffset, ValOperandId rhsId, uint32_t icScriptOffset, bool sameRealm, uint32_t nargsAndFlagsOffset);\
++[[nodiscard]] bool emitCallInlinedSetter(CacheIRReader& reader) {\
++ ObjOperandId receiverId = reader.objOperandId();\
++ uint32_t setterOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ uint32_t icScriptOffset = reader.stubOffset();\
++ bool sameRealm = reader.readBool();\
++ uint32_t nargsAndFlagsOffset = reader.stubOffset();\
++ return emitCallInlinedSetter(receiverId, setterOffset, rhsId, icScriptOffset, sameRealm, nargsAndFlagsOffset);\
++}\
++\
++[[nodiscard]] bool emitCallDOMSetter(ObjOperandId objId, uint32_t jitInfoOffset, ValOperandId rhsId);\
++[[nodiscard]] bool emitCallDOMSetter(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t jitInfoOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ return emitCallDOMSetter(objId, jitInfoOffset, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCallSetArrayLength(ObjOperandId objId, bool strict, ValOperandId rhsId);\
++[[nodiscard]] bool emitCallSetArrayLength(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ bool strict = reader.readBool();\
++ ValOperandId rhsId = reader.valOperandId();\
++ return emitCallSetArrayLength(objId, strict, rhsId);\
++}\
++\
++[[nodiscard]] bool emitProxySet(ObjOperandId objId, uint32_t idOffset, ValOperandId rhsId, bool strict);\
++[[nodiscard]] bool emitProxySet(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t idOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ bool strict = reader.readBool();\
++ return emitProxySet(objId, idOffset, rhsId, strict);\
++}\
++\
++[[nodiscard]] bool emitProxySetByValue(ObjOperandId objId, ValOperandId idId, ValOperandId rhsId, bool strict);\
++[[nodiscard]] bool emitProxySetByValue(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ValOperandId idId = reader.valOperandId();\
++ ValOperandId rhsId = reader.valOperandId();\
++ bool strict = reader.readBool();\
++ return emitProxySetByValue(objId, idId, rhsId, strict);\
++}\
++\
++[[nodiscard]] bool emitCallAddOrUpdateSparseElementHelper(ObjOperandId objId, Int32OperandId idId, ValOperandId rhsId, bool strict);\
++[[nodiscard]] bool emitCallAddOrUpdateSparseElementHelper(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId idId = reader.int32OperandId();\
++ ValOperandId rhsId = reader.valOperandId();\
++ bool strict = reader.readBool();\
++ return emitCallAddOrUpdateSparseElementHelper(objId, idId, rhsId, strict);\
++}\
++\
++[[nodiscard]] bool emitCallScriptedFunction(ObjOperandId calleeId, Int32OperandId argcId, CallFlags flags);\
++[[nodiscard]] bool emitCallScriptedFunction(CacheIRReader& reader) {\
++ ObjOperandId calleeId = reader.objOperandId();\
++ Int32OperandId argcId = reader.int32OperandId();\
++ CallFlags flags = reader.callFlags();\
++ return emitCallScriptedFunction(calleeId, argcId, flags);\
++}\
++\
++[[nodiscard]] bool emitCallWasmFunction(ObjOperandId calleeId, Int32OperandId argcId, CallFlags flags, uint32_t funcExportOffset, uint32_t instanceOffset);\
++[[nodiscard]] bool emitCallWasmFunction(CacheIRReader& reader) {\
++ ObjOperandId calleeId = reader.objOperandId();\
++ Int32OperandId argcId = reader.int32OperandId();\
++ CallFlags flags = reader.callFlags();\
++ uint32_t funcExportOffset = reader.stubOffset();\
++ uint32_t instanceOffset = reader.stubOffset();\
++ return emitCallWasmFunction(calleeId, argcId, flags, funcExportOffset, instanceOffset);\
++}\
++\
++[[nodiscard]] bool emitCallNativeFunction(ObjOperandId calleeId, Int32OperandId argcId, CallFlags flags, bool ignoresReturnValue);\
++[[nodiscard]] bool emitCallNativeFunction(CacheIRReader& reader) {\
++ ObjOperandId calleeId = reader.objOperandId();\
++ Int32OperandId argcId = reader.int32OperandId();\
++ CallFlags flags = reader.callFlags();\
++ bool ignoresReturnValue = reader.readBool();\
++ return emitCallNativeFunction(calleeId, argcId, flags, ignoresReturnValue);\
++}\
++\
++[[nodiscard]] bool emitCallDOMFunction(ObjOperandId calleeId, Int32OperandId argcId, ObjOperandId thisObjId, CallFlags flags);\
++[[nodiscard]] bool emitCallDOMFunction(CacheIRReader& reader) {\
++ ObjOperandId calleeId = reader.objOperandId();\
++ Int32OperandId argcId = reader.int32OperandId();\
++ ObjOperandId thisObjId = reader.objOperandId();\
++ CallFlags flags = reader.callFlags();\
++ return emitCallDOMFunction(calleeId, argcId, thisObjId, flags);\
++}\
++\
++[[nodiscard]] bool emitCallClassHook(ObjOperandId calleeId, Int32OperandId argcId, CallFlags flags, uint32_t targetOffset);\
++[[nodiscard]] bool emitCallClassHook(CacheIRReader& reader) {\
++ ObjOperandId calleeId = reader.objOperandId();\
++ Int32OperandId argcId = reader.int32OperandId();\
++ CallFlags flags = reader.callFlags();\
++ uint32_t targetOffset = reader.stubOffset();\
++ return emitCallClassHook(calleeId, argcId, flags, targetOffset);\
++}\
++\
++[[nodiscard]] bool emitCallInlinedFunction(ObjOperandId calleeId, Int32OperandId argcId, uint32_t icScriptOffset, CallFlags flags);\
++[[nodiscard]] bool emitCallInlinedFunction(CacheIRReader& reader) {\
++ ObjOperandId calleeId = reader.objOperandId();\
++ Int32OperandId argcId = reader.int32OperandId();\
++ uint32_t icScriptOffset = reader.stubOffset();\
++ CallFlags flags = reader.callFlags();\
++ return emitCallInlinedFunction(calleeId, argcId, icScriptOffset, flags);\
++}\
++\
++[[nodiscard]] bool emitLoadFixedSlotResult(ObjOperandId objId, uint32_t offsetOffset);\
++[[nodiscard]] bool emitLoadFixedSlotResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ return emitLoadFixedSlotResult(objId, offsetOffset);\
++}\
++\
++[[nodiscard]] bool emitLoadFixedSlotTypedResult(ObjOperandId objId, uint32_t offsetOffset, ValueType type);\
++[[nodiscard]] bool emitLoadFixedSlotTypedResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ ValueType type = reader.valueType();\
++ return emitLoadFixedSlotTypedResult(objId, offsetOffset, type);\
++}\
++\
++[[nodiscard]] bool emitLoadDynamicSlotResult(ObjOperandId objId, uint32_t offsetOffset);\
++[[nodiscard]] bool emitLoadDynamicSlotResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ return emitLoadDynamicSlotResult(objId, offsetOffset);\
++}\
++\
++[[nodiscard]] bool emitLoadStringCharResult(StringOperandId strId, Int32OperandId indexId);\
++[[nodiscard]] bool emitLoadStringCharResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitLoadStringCharResult(strId, indexId);\
++}\
++\
++[[nodiscard]] bool emitFrameIsConstructingResult();\
++[[nodiscard]] bool emitFrameIsConstructingResult(CacheIRReader& reader) {\
++ return emitFrameIsConstructingResult();\
++}\
++\
++[[nodiscard]] bool emitLoadEnvironmentFixedSlotResult(ObjOperandId objId, uint32_t offsetOffset);\
++[[nodiscard]] bool emitLoadEnvironmentFixedSlotResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ return emitLoadEnvironmentFixedSlotResult(objId, offsetOffset);\
++}\
++\
++[[nodiscard]] bool emitLoadEnvironmentDynamicSlotResult(ObjOperandId objId, uint32_t offsetOffset);\
++[[nodiscard]] bool emitLoadEnvironmentDynamicSlotResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ return emitLoadEnvironmentDynamicSlotResult(objId, offsetOffset);\
++}\
++\
++[[nodiscard]] bool emitCallScriptedGetterResult(ValOperandId receiverId, uint32_t getterOffset, bool sameRealm, uint32_t nargsAndFlagsOffset);\
++[[nodiscard]] bool emitCallScriptedGetterResult(CacheIRReader& reader) {\
++ ValOperandId receiverId = reader.valOperandId();\
++ uint32_t getterOffset = reader.stubOffset();\
++ bool sameRealm = reader.readBool();\
++ uint32_t nargsAndFlagsOffset = reader.stubOffset();\
++ return emitCallScriptedGetterResult(receiverId, getterOffset, sameRealm, nargsAndFlagsOffset);\
++}\
++\
++[[nodiscard]] bool emitCallInlinedGetterResult(ValOperandId receiverId, uint32_t getterOffset, uint32_t icScriptOffset, bool sameRealm, uint32_t nargsAndFlagsOffset);\
++[[nodiscard]] bool emitCallInlinedGetterResult(CacheIRReader& reader) {\
++ ValOperandId receiverId = reader.valOperandId();\
++ uint32_t getterOffset = reader.stubOffset();\
++ uint32_t icScriptOffset = reader.stubOffset();\
++ bool sameRealm = reader.readBool();\
++ uint32_t nargsAndFlagsOffset = reader.stubOffset();\
++ return emitCallInlinedGetterResult(receiverId, getterOffset, icScriptOffset, sameRealm, nargsAndFlagsOffset);\
++}\
++\
++[[nodiscard]] bool emitCallNativeGetterResult(ValOperandId receiverId, uint32_t getterOffset, bool sameRealm, uint32_t nargsAndFlagsOffset);\
++[[nodiscard]] bool emitCallNativeGetterResult(CacheIRReader& reader) {\
++ ValOperandId receiverId = reader.valOperandId();\
++ uint32_t getterOffset = reader.stubOffset();\
++ bool sameRealm = reader.readBool();\
++ uint32_t nargsAndFlagsOffset = reader.stubOffset();\
++ return emitCallNativeGetterResult(receiverId, getterOffset, sameRealm, nargsAndFlagsOffset);\
++}\
++\
++[[nodiscard]] bool emitCallDOMGetterResult(ObjOperandId objId, uint32_t jitInfoOffset);\
++[[nodiscard]] bool emitCallDOMGetterResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t jitInfoOffset = reader.stubOffset();\
++ return emitCallDOMGetterResult(objId, jitInfoOffset);\
++}\
++\
++[[nodiscard]] bool emitProxyGetResult(ObjOperandId objId, uint32_t idOffset);\
++[[nodiscard]] bool emitProxyGetResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t idOffset = reader.stubOffset();\
++ return emitProxyGetResult(objId, idOffset);\
++}\
++\
++[[nodiscard]] bool emitLoadConstantStringResult(uint32_t strOffset);\
++[[nodiscard]] bool emitLoadConstantStringResult(CacheIRReader& reader) {\
++ uint32_t strOffset = reader.stubOffset();\
++ return emitLoadConstantStringResult(strOffset);\
++}\
++\
++[[nodiscard]] bool emitLoadValueResult(uint32_t valOffset);\
++[[nodiscard]] bool emitLoadValueResult(CacheIRReader& reader) {\
++ uint32_t valOffset = reader.stubOffset();\
++ return emitLoadValueResult(valOffset);\
++}\
++\
++[[nodiscard]] bool emitNewPlainObjectResult(uint32_t numFixedSlots, uint32_t numDynamicSlots, gc::AllocKind allocKind, uint32_t shapeOffset, uint32_t siteOffset);\
++[[nodiscard]] bool emitNewPlainObjectResult(CacheIRReader& reader) {\
++ uint32_t numFixedSlots = reader.uint32Immediate();\
++ uint32_t numDynamicSlots = reader.uint32Immediate();\
++ gc::AllocKind allocKind = reader.allocKind();\
++ uint32_t shapeOffset = reader.stubOffset();\
++ uint32_t siteOffset = reader.stubOffset();\
++ return emitNewPlainObjectResult(numFixedSlots, numDynamicSlots, allocKind, shapeOffset, siteOffset);\
++}\
++\
++[[nodiscard]] bool emitNewArrayObjectResult(uint32_t arrayLength, uint32_t shapeOffset, uint32_t siteOffset);\
++[[nodiscard]] bool emitNewArrayObjectResult(CacheIRReader& reader) {\
++ uint32_t arrayLength = reader.uint32Immediate();\
++ uint32_t shapeOffset = reader.stubOffset();\
++ uint32_t siteOffset = reader.stubOffset();\
++ return emitNewArrayObjectResult(arrayLength, shapeOffset, siteOffset);\
++}\
++\
++[[nodiscard]] bool emitCallStringObjectConcatResult(ValOperandId lhsId, ValOperandId rhsId);\
++[[nodiscard]] bool emitCallStringObjectConcatResult(CacheIRReader& reader) {\
++ ValOperandId lhsId = reader.valOperandId();\
++ ValOperandId rhsId = reader.valOperandId();\
++ return emitCallStringObjectConcatResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCompareStringResult(JSOp op, StringOperandId lhsId, StringOperandId rhsId);\
++[[nodiscard]] bool emitCompareStringResult(CacheIRReader& reader) {\
++ JSOp op = reader.jsop();\
++ StringOperandId lhsId = reader.stringOperandId();\
++ StringOperandId rhsId = reader.stringOperandId();\
++ return emitCompareStringResult(op, lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitSameValueResult(ValOperandId lhsId, ValOperandId rhsId);\
++[[nodiscard]] bool emitSameValueResult(CacheIRReader& reader) {\
++ ValOperandId lhsId = reader.valOperandId();\
++ ValOperandId rhsId = reader.valOperandId();\
++ return emitSameValueResult(lhsId, rhsId);\
++}\
++
++
++#define CACHE_IR_TRANSPILER_GENERATED \
++[[nodiscard]] bool emitReturnFromIC();\
++[[nodiscard]] bool emitReturnFromIC(CacheIRReader& reader) {\
++ return emitReturnFromIC();\
++}\
++\
++[[nodiscard]] bool emitGuardToObject(ValOperandId inputId);\
++[[nodiscard]] bool emitGuardToObject(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitGuardToObject(inputId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsNullOrUndefined(ValOperandId inputId);\
++[[nodiscard]] bool emitGuardIsNullOrUndefined(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitGuardIsNullOrUndefined(inputId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsNull(ValOperandId inputId);\
++[[nodiscard]] bool emitGuardIsNull(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitGuardIsNull(inputId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsUndefined(ValOperandId inputId);\
++[[nodiscard]] bool emitGuardIsUndefined(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitGuardIsUndefined(inputId);\
++}\
++\
++[[nodiscard]] bool emitGuardToBoolean(ValOperandId inputId);\
++[[nodiscard]] bool emitGuardToBoolean(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitGuardToBoolean(inputId);\
++}\
++\
++[[nodiscard]] bool emitGuardToString(ValOperandId inputId);\
++[[nodiscard]] bool emitGuardToString(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitGuardToString(inputId);\
++}\
++\
++[[nodiscard]] bool emitGuardToSymbol(ValOperandId inputId);\
++[[nodiscard]] bool emitGuardToSymbol(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitGuardToSymbol(inputId);\
++}\
++\
++[[nodiscard]] bool emitGuardToBigInt(ValOperandId inputId);\
++[[nodiscard]] bool emitGuardToBigInt(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitGuardToBigInt(inputId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsNumber(ValOperandId inputId);\
++[[nodiscard]] bool emitGuardIsNumber(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitGuardIsNumber(inputId);\
++}\
++\
++[[nodiscard]] bool emitGuardToInt32(ValOperandId inputId);\
++[[nodiscard]] bool emitGuardToInt32(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitGuardToInt32(inputId);\
++}\
++\
++[[nodiscard]] bool emitGuardBooleanToInt32(ValOperandId inputId, Int32OperandId resultId);\
++[[nodiscard]] bool emitGuardBooleanToInt32(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ Int32OperandId resultId = reader.int32OperandId();\
++ return emitGuardBooleanToInt32(inputId, resultId);\
++}\
++\
++[[nodiscard]] bool emitGuardToInt32Index(ValOperandId inputId, Int32OperandId resultId);\
++[[nodiscard]] bool emitGuardToInt32Index(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ Int32OperandId resultId = reader.int32OperandId();\
++ return emitGuardToInt32Index(inputId, resultId);\
++}\
++\
++[[nodiscard]] bool emitInt32ToIntPtr(Int32OperandId inputId, IntPtrOperandId resultId);\
++[[nodiscard]] bool emitInt32ToIntPtr(CacheIRReader& reader) {\
++ Int32OperandId inputId = reader.int32OperandId();\
++ IntPtrOperandId resultId = reader.intPtrOperandId();\
++ return emitInt32ToIntPtr(inputId, resultId);\
++}\
++\
++[[nodiscard]] bool emitGuardNumberToIntPtrIndex(NumberOperandId inputId, bool supportOOB, IntPtrOperandId resultId);\
++[[nodiscard]] bool emitGuardNumberToIntPtrIndex(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ bool supportOOB = reader.readBool();\
++ IntPtrOperandId resultId = reader.intPtrOperandId();\
++ return emitGuardNumberToIntPtrIndex(inputId, supportOOB, resultId);\
++}\
++\
++[[nodiscard]] bool emitGuardToInt32ModUint32(ValOperandId inputId, Int32OperandId resultId);\
++[[nodiscard]] bool emitGuardToInt32ModUint32(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ Int32OperandId resultId = reader.int32OperandId();\
++ return emitGuardToInt32ModUint32(inputId, resultId);\
++}\
++\
++[[nodiscard]] bool emitGuardToUint8Clamped(ValOperandId inputId, Int32OperandId resultId);\
++[[nodiscard]] bool emitGuardToUint8Clamped(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ Int32OperandId resultId = reader.int32OperandId();\
++ return emitGuardToUint8Clamped(inputId, resultId);\
++}\
++\
++[[nodiscard]] bool emitGuardNonDoubleType(ValOperandId inputId, ValueType type);\
++[[nodiscard]] bool emitGuardNonDoubleType(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ ValueType type = reader.valueType();\
++ return emitGuardNonDoubleType(inputId, type);\
++}\
++\
++[[nodiscard]] bool emitGuardShape(ObjOperandId objId, uint32_t shapeOffset);\
++[[nodiscard]] bool emitGuardShape(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t shapeOffset = reader.stubOffset();\
++ return emitGuardShape(objId, shapeOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardProto(ObjOperandId objId, uint32_t protoOffset);\
++[[nodiscard]] bool emitGuardProto(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t protoOffset = reader.stubOffset();\
++ return emitGuardProto(objId, protoOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardNullProto(ObjOperandId objId);\
++[[nodiscard]] bool emitGuardNullProto(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitGuardNullProto(objId);\
++}\
++\
++[[nodiscard]] bool emitGuardClass(ObjOperandId objId, GuardClassKind kind);\
++[[nodiscard]] bool emitGuardClass(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ GuardClassKind kind = reader.guardClassKind();\
++ return emitGuardClass(objId, kind);\
++}\
++\
++[[nodiscard]] bool emitGuardAnyClass(ObjOperandId objId, uint32_t claspOffset);\
++[[nodiscard]] bool emitGuardAnyClass(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t claspOffset = reader.stubOffset();\
++ return emitGuardAnyClass(objId, claspOffset);\
++}\
++\
++[[nodiscard]] bool emitHasClassResult(ObjOperandId objId, uint32_t claspOffset);\
++[[nodiscard]] bool emitHasClassResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t claspOffset = reader.stubOffset();\
++ return emitHasClassResult(objId, claspOffset);\
++}\
++\
++[[nodiscard]] bool emitCallRegExpMatcherResult(ObjOperandId regexpId, StringOperandId inputId, Int32OperandId lastIndexId);\
++[[nodiscard]] bool emitCallRegExpMatcherResult(CacheIRReader& reader) {\
++ ObjOperandId regexpId = reader.objOperandId();\
++ StringOperandId inputId = reader.stringOperandId();\
++ Int32OperandId lastIndexId = reader.int32OperandId();\
++ return emitCallRegExpMatcherResult(regexpId, inputId, lastIndexId);\
++}\
++\
++[[nodiscard]] bool emitCallRegExpSearcherResult(ObjOperandId regexpId, StringOperandId inputId, Int32OperandId lastIndexId);\
++[[nodiscard]] bool emitCallRegExpSearcherResult(CacheIRReader& reader) {\
++ ObjOperandId regexpId = reader.objOperandId();\
++ StringOperandId inputId = reader.stringOperandId();\
++ Int32OperandId lastIndexId = reader.int32OperandId();\
++ return emitCallRegExpSearcherResult(regexpId, inputId, lastIndexId);\
++}\
++\
++[[nodiscard]] bool emitCallRegExpTesterResult(ObjOperandId regexpId, StringOperandId inputId, Int32OperandId lastIndexId);\
++[[nodiscard]] bool emitCallRegExpTesterResult(CacheIRReader& reader) {\
++ ObjOperandId regexpId = reader.objOperandId();\
++ StringOperandId inputId = reader.stringOperandId();\
++ Int32OperandId lastIndexId = reader.int32OperandId();\
++ return emitCallRegExpTesterResult(regexpId, inputId, lastIndexId);\
++}\
++\
++[[nodiscard]] bool emitRegExpFlagResult(ObjOperandId regexpId, int32_t flagsMask);\
++[[nodiscard]] bool emitRegExpFlagResult(CacheIRReader& reader) {\
++ ObjOperandId regexpId = reader.objOperandId();\
++ int32_t flagsMask = reader.int32Immediate();\
++ return emitRegExpFlagResult(regexpId, flagsMask);\
++}\
++\
++[[nodiscard]] bool emitCallSubstringKernelResult(StringOperandId strId, Int32OperandId beginId, Int32OperandId lengthId);\
++[[nodiscard]] bool emitCallSubstringKernelResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ Int32OperandId beginId = reader.int32OperandId();\
++ Int32OperandId lengthId = reader.int32OperandId();\
++ return emitCallSubstringKernelResult(strId, beginId, lengthId);\
++}\
++\
++[[nodiscard]] bool emitStringReplaceStringResult(StringOperandId strId, StringOperandId patternId, StringOperandId replacementId);\
++[[nodiscard]] bool emitStringReplaceStringResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ StringOperandId patternId = reader.stringOperandId();\
++ StringOperandId replacementId = reader.stringOperandId();\
++ return emitStringReplaceStringResult(strId, patternId, replacementId);\
++}\
++\
++[[nodiscard]] bool emitStringSplitStringResult(StringOperandId strId, StringOperandId separatorId);\
++[[nodiscard]] bool emitStringSplitStringResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ StringOperandId separatorId = reader.stringOperandId();\
++ return emitStringSplitStringResult(strId, separatorId);\
++}\
++\
++[[nodiscard]] bool emitRegExpPrototypeOptimizableResult(ObjOperandId protoId);\
++[[nodiscard]] bool emitRegExpPrototypeOptimizableResult(CacheIRReader& reader) {\
++ ObjOperandId protoId = reader.objOperandId();\
++ return emitRegExpPrototypeOptimizableResult(protoId);\
++}\
++\
++[[nodiscard]] bool emitRegExpInstanceOptimizableResult(ObjOperandId regexpId, ObjOperandId protoId);\
++[[nodiscard]] bool emitRegExpInstanceOptimizableResult(CacheIRReader& reader) {\
++ ObjOperandId regexpId = reader.objOperandId();\
++ ObjOperandId protoId = reader.objOperandId();\
++ return emitRegExpInstanceOptimizableResult(regexpId, protoId);\
++}\
++\
++[[nodiscard]] bool emitGetFirstDollarIndexResult(StringOperandId strId);\
++[[nodiscard]] bool emitGetFirstDollarIndexResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ return emitGetFirstDollarIndexResult(strId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsExtensible(ObjOperandId objId);\
++[[nodiscard]] bool emitGuardIsExtensible(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitGuardIsExtensible(objId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsNativeObject(ObjOperandId objId);\
++[[nodiscard]] bool emitGuardIsNativeObject(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitGuardIsNativeObject(objId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsProxy(ObjOperandId objId);\
++[[nodiscard]] bool emitGuardIsProxy(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitGuardIsProxy(objId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsNotProxy(ObjOperandId objId);\
++[[nodiscard]] bool emitGuardIsNotProxy(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitGuardIsNotProxy(objId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsNotArrayBufferMaybeShared(ObjOperandId objId);\
++[[nodiscard]] bool emitGuardIsNotArrayBufferMaybeShared(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitGuardIsNotArrayBufferMaybeShared(objId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsTypedArray(ObjOperandId objId);\
++[[nodiscard]] bool emitGuardIsTypedArray(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitGuardIsTypedArray(objId);\
++}\
++\
++[[nodiscard]] bool emitGuardIsNotDOMProxy(ObjOperandId objId);\
++[[nodiscard]] bool emitGuardIsNotDOMProxy(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitGuardIsNotDOMProxy(objId);\
++}\
++\
++[[nodiscard]] bool emitGuardSpecificObject(ObjOperandId objId, uint32_t expectedOffset);\
++[[nodiscard]] bool emitGuardSpecificObject(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t expectedOffset = reader.stubOffset();\
++ return emitGuardSpecificObject(objId, expectedOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardSpecificFunction(ObjOperandId funId, uint32_t expectedOffset, uint32_t nargsAndFlagsOffset);\
++[[nodiscard]] bool emitGuardSpecificFunction(CacheIRReader& reader) {\
++ ObjOperandId funId = reader.objOperandId();\
++ uint32_t expectedOffset = reader.stubOffset();\
++ uint32_t nargsAndFlagsOffset = reader.stubOffset();\
++ return emitGuardSpecificFunction(funId, expectedOffset, nargsAndFlagsOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardFunctionScript(ObjOperandId objId, uint32_t expectedOffset, uint32_t nargsAndFlagsOffset);\
++[[nodiscard]] bool emitGuardFunctionScript(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t expectedOffset = reader.stubOffset();\
++ uint32_t nargsAndFlagsOffset = reader.stubOffset();\
++ return emitGuardFunctionScript(objId, expectedOffset, nargsAndFlagsOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardSpecificAtom(StringOperandId strId, uint32_t expectedOffset);\
++[[nodiscard]] bool emitGuardSpecificAtom(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ uint32_t expectedOffset = reader.stubOffset();\
++ return emitGuardSpecificAtom(strId, expectedOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardSpecificSymbol(SymbolOperandId symId, uint32_t expectedOffset);\
++[[nodiscard]] bool emitGuardSpecificSymbol(CacheIRReader& reader) {\
++ SymbolOperandId symId = reader.symbolOperandId();\
++ uint32_t expectedOffset = reader.stubOffset();\
++ return emitGuardSpecificSymbol(symId, expectedOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardNoDenseElements(ObjOperandId objId);\
++[[nodiscard]] bool emitGuardNoDenseElements(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitGuardNoDenseElements(objId);\
++}\
++\
++[[nodiscard]] bool emitGuardStringToIndex(StringOperandId strId, Int32OperandId resultId);\
++[[nodiscard]] bool emitGuardStringToIndex(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ Int32OperandId resultId = reader.int32OperandId();\
++ return emitGuardStringToIndex(strId, resultId);\
++}\
++\
++[[nodiscard]] bool emitGuardStringToInt32(StringOperandId strId, Int32OperandId resultId);\
++[[nodiscard]] bool emitGuardStringToInt32(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ Int32OperandId resultId = reader.int32OperandId();\
++ return emitGuardStringToInt32(strId, resultId);\
++}\
++\
++[[nodiscard]] bool emitGuardStringToNumber(StringOperandId strId, NumberOperandId resultId);\
++[[nodiscard]] bool emitGuardStringToNumber(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ NumberOperandId resultId = reader.numberOperandId();\
++ return emitGuardStringToNumber(strId, resultId);\
++}\
++\
++[[nodiscard]] bool emitBooleanToNumber(BooleanOperandId booleanId, NumberOperandId resultId);\
++[[nodiscard]] bool emitBooleanToNumber(CacheIRReader& reader) {\
++ BooleanOperandId booleanId = reader.booleanOperandId();\
++ NumberOperandId resultId = reader.numberOperandId();\
++ return emitBooleanToNumber(booleanId, resultId);\
++}\
++\
++[[nodiscard]] bool emitGuardHasGetterSetter(ObjOperandId objId, uint32_t idOffset, uint32_t getterSetterOffset);\
++[[nodiscard]] bool emitGuardHasGetterSetter(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t idOffset = reader.stubOffset();\
++ uint32_t getterSetterOffset = reader.stubOffset();\
++ return emitGuardHasGetterSetter(objId, idOffset, getterSetterOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardInt32IsNonNegative(Int32OperandId indexId);\
++[[nodiscard]] bool emitGuardInt32IsNonNegative(CacheIRReader& reader) {\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitGuardInt32IsNonNegative(indexId);\
++}\
++\
++[[nodiscard]] bool emitGuardIndexIsValidUpdateOrAdd(ObjOperandId objId, Int32OperandId indexId);\
++[[nodiscard]] bool emitGuardIndexIsValidUpdateOrAdd(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitGuardIndexIsValidUpdateOrAdd(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitGuardIndexGreaterThanDenseInitLength(ObjOperandId objId, Int32OperandId indexId);\
++[[nodiscard]] bool emitGuardIndexGreaterThanDenseInitLength(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitGuardIndexGreaterThanDenseInitLength(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitGuardTagNotEqual(ValueTagOperandId lhsId, ValueTagOperandId rhsId);\
++[[nodiscard]] bool emitGuardTagNotEqual(CacheIRReader& reader) {\
++ ValueTagOperandId lhsId = reader.valueTagOperandId();\
++ ValueTagOperandId rhsId = reader.valueTagOperandId();\
++ return emitGuardTagNotEqual(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitGuardDynamicSlotIsSpecificObject(ObjOperandId objId, ObjOperandId expectedId, uint32_t slotOffset);\
++[[nodiscard]] bool emitGuardDynamicSlotIsSpecificObject(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ObjOperandId expectedId = reader.objOperandId();\
++ uint32_t slotOffset = reader.stubOffset();\
++ return emitGuardDynamicSlotIsSpecificObject(objId, expectedId, slotOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardFixedSlotValue(ObjOperandId objId, uint32_t offsetOffset, uint32_t valOffset);\
++[[nodiscard]] bool emitGuardFixedSlotValue(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ uint32_t valOffset = reader.stubOffset();\
++ return emitGuardFixedSlotValue(objId, offsetOffset, valOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardDynamicSlotValue(ObjOperandId objId, uint32_t offsetOffset, uint32_t valOffset);\
++[[nodiscard]] bool emitGuardDynamicSlotValue(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ uint32_t valOffset = reader.stubOffset();\
++ return emitGuardDynamicSlotValue(objId, offsetOffset, valOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardNoAllocationMetadataBuilder(uint32_t builderAddrOffset);\
++[[nodiscard]] bool emitGuardNoAllocationMetadataBuilder(CacheIRReader& reader) {\
++ uint32_t builderAddrOffset = reader.stubOffset();\
++ return emitGuardNoAllocationMetadataBuilder(builderAddrOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardFunctionHasJitEntry(ObjOperandId funId, bool constructing);\
++[[nodiscard]] bool emitGuardFunctionHasJitEntry(CacheIRReader& reader) {\
++ ObjOperandId funId = reader.objOperandId();\
++ bool constructing = reader.readBool();\
++ return emitGuardFunctionHasJitEntry(funId, constructing);\
++}\
++\
++[[nodiscard]] bool emitGuardFunctionHasNoJitEntry(ObjOperandId funId);\
++[[nodiscard]] bool emitGuardFunctionHasNoJitEntry(CacheIRReader& reader) {\
++ ObjOperandId funId = reader.objOperandId();\
++ return emitGuardFunctionHasNoJitEntry(funId);\
++}\
++\
++[[nodiscard]] bool emitGuardFunctionIsNonBuiltinCtor(ObjOperandId funId);\
++[[nodiscard]] bool emitGuardFunctionIsNonBuiltinCtor(CacheIRReader& reader) {\
++ ObjOperandId funId = reader.objOperandId();\
++ return emitGuardFunctionIsNonBuiltinCtor(funId);\
++}\
++\
++[[nodiscard]] bool emitGuardFunctionIsConstructor(ObjOperandId funId);\
++[[nodiscard]] bool emitGuardFunctionIsConstructor(CacheIRReader& reader) {\
++ ObjOperandId funId = reader.objOperandId();\
++ return emitGuardFunctionIsConstructor(funId);\
++}\
++\
++[[nodiscard]] bool emitGuardNotClassConstructor(ObjOperandId funId);\
++[[nodiscard]] bool emitGuardNotClassConstructor(CacheIRReader& reader) {\
++ ObjOperandId funId = reader.objOperandId();\
++ return emitGuardNotClassConstructor(funId);\
++}\
++\
++[[nodiscard]] bool emitGuardArrayIsPacked(ObjOperandId arrayId);\
++[[nodiscard]] bool emitGuardArrayIsPacked(CacheIRReader& reader) {\
++ ObjOperandId arrayId = reader.objOperandId();\
++ return emitGuardArrayIsPacked(arrayId);\
++}\
++\
++[[nodiscard]] bool emitGuardArgumentsObjectFlags(ObjOperandId objId, uint8_t flags);\
++[[nodiscard]] bool emitGuardArgumentsObjectFlags(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint8_t flags = reader.readByte();\
++ return emitGuardArgumentsObjectFlags(objId, flags);\
++}\
++\
++[[nodiscard]] bool emitLoadObject(ObjOperandId resultId, uint32_t objOffset);\
++[[nodiscard]] bool emitLoadObject(CacheIRReader& reader) {\
++ ObjOperandId resultId = reader.objOperandId();\
++ uint32_t objOffset = reader.stubOffset();\
++ return emitLoadObject(resultId, objOffset);\
++}\
++\
++[[nodiscard]] bool emitLoadProto(ObjOperandId objId, ObjOperandId resultId);\
++[[nodiscard]] bool emitLoadProto(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ObjOperandId resultId = reader.objOperandId();\
++ return emitLoadProto(objId, resultId);\
++}\
++\
++[[nodiscard]] bool emitLoadEnclosingEnvironment(ObjOperandId objId, ObjOperandId resultId);\
++[[nodiscard]] bool emitLoadEnclosingEnvironment(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ObjOperandId resultId = reader.objOperandId();\
++ return emitLoadEnclosingEnvironment(objId, resultId);\
++}\
++\
++[[nodiscard]] bool emitLoadWrapperTarget(ObjOperandId objId, ObjOperandId resultId);\
++[[nodiscard]] bool emitLoadWrapperTarget(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ObjOperandId resultId = reader.objOperandId();\
++ return emitLoadWrapperTarget(objId, resultId);\
++}\
++\
++[[nodiscard]] bool emitLoadValueTag(ValOperandId valId, ValueTagOperandId resultId);\
++[[nodiscard]] bool emitLoadValueTag(CacheIRReader& reader) {\
++ ValOperandId valId = reader.valOperandId();\
++ ValueTagOperandId resultId = reader.valueTagOperandId();\
++ return emitLoadValueTag(valId, resultId);\
++}\
++\
++[[nodiscard]] bool emitLoadArgumentFixedSlot(ValOperandId resultId, uint8_t slotIndex);\
++[[nodiscard]] bool emitLoadArgumentFixedSlot(CacheIRReader& reader) {\
++ ValOperandId resultId = reader.valOperandId();\
++ uint8_t slotIndex = reader.readByte();\
++ return emitLoadArgumentFixedSlot(resultId, slotIndex);\
++}\
++\
++[[nodiscard]] bool emitLoadArgumentDynamicSlot(ValOperandId resultId, Int32OperandId argcId, uint8_t slotIndex);\
++[[nodiscard]] bool emitLoadArgumentDynamicSlot(CacheIRReader& reader) {\
++ ValOperandId resultId = reader.valOperandId();\
++ Int32OperandId argcId = reader.int32OperandId();\
++ uint8_t slotIndex = reader.readByte();\
++ return emitLoadArgumentDynamicSlot(resultId, argcId, slotIndex);\
++}\
++\
++[[nodiscard]] bool emitTruncateDoubleToUInt32(NumberOperandId inputId, Int32OperandId resultId);\
++[[nodiscard]] bool emitTruncateDoubleToUInt32(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ Int32OperandId resultId = reader.int32OperandId();\
++ return emitTruncateDoubleToUInt32(inputId, resultId);\
++}\
++\
++[[nodiscard]] bool emitMegamorphicLoadSlotResult(ObjOperandId objId, uint32_t nameOffset);\
++[[nodiscard]] bool emitMegamorphicLoadSlotResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t nameOffset = reader.stubOffset();\
++ return emitMegamorphicLoadSlotResult(objId, nameOffset);\
++}\
++\
++[[nodiscard]] bool emitMegamorphicLoadSlotByValueResult(ObjOperandId objId, ValOperandId idId);\
++[[nodiscard]] bool emitMegamorphicLoadSlotByValueResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ValOperandId idId = reader.valOperandId();\
++ return emitMegamorphicLoadSlotByValueResult(objId, idId);\
++}\
++\
++[[nodiscard]] bool emitMegamorphicStoreSlot(ObjOperandId objId, uint32_t nameOffset, ValOperandId rhsId);\
++[[nodiscard]] bool emitMegamorphicStoreSlot(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t nameOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ return emitMegamorphicStoreSlot(objId, nameOffset, rhsId);\
++}\
++\
++[[nodiscard]] bool emitMegamorphicSetElement(ObjOperandId objId, ValOperandId idId, ValOperandId rhsId, bool strict);\
++[[nodiscard]] bool emitMegamorphicSetElement(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ValOperandId idId = reader.valOperandId();\
++ ValOperandId rhsId = reader.valOperandId();\
++ bool strict = reader.readBool();\
++ return emitMegamorphicSetElement(objId, idId, rhsId, strict);\
++}\
++\
++[[nodiscard]] bool emitMegamorphicHasPropResult(ObjOperandId objId, ValOperandId idId, bool hasOwn);\
++[[nodiscard]] bool emitMegamorphicHasPropResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ValOperandId idId = reader.valOperandId();\
++ bool hasOwn = reader.readBool();\
++ return emitMegamorphicHasPropResult(objId, idId, hasOwn);\
++}\
++\
++[[nodiscard]] bool emitLoadDOMExpandoValue(ObjOperandId objId, ValOperandId resultId);\
++[[nodiscard]] bool emitLoadDOMExpandoValue(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ValOperandId resultId = reader.valOperandId();\
++ return emitLoadDOMExpandoValue(objId, resultId);\
++}\
++\
++[[nodiscard]] bool emitLoadDOMExpandoValueGuardGeneration(ObjOperandId objId, uint32_t expandoAndGenerationOffset, uint32_t generationOffset, ValOperandId resultId);\
++[[nodiscard]] bool emitLoadDOMExpandoValueGuardGeneration(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t expandoAndGenerationOffset = reader.stubOffset();\
++ uint32_t generationOffset = reader.stubOffset();\
++ ValOperandId resultId = reader.valOperandId();\
++ return emitLoadDOMExpandoValueGuardGeneration(objId, expandoAndGenerationOffset, generationOffset, resultId);\
++}\
++\
++[[nodiscard]] bool emitLoadDOMExpandoValueIgnoreGeneration(ObjOperandId objId, ValOperandId resultId);\
++[[nodiscard]] bool emitLoadDOMExpandoValueIgnoreGeneration(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ValOperandId resultId = reader.valOperandId();\
++ return emitLoadDOMExpandoValueIgnoreGeneration(objId, resultId);\
++}\
++\
++[[nodiscard]] bool emitGuardDOMExpandoMissingOrGuardShape(ValOperandId expandoId, uint32_t shapeOffset);\
++[[nodiscard]] bool emitGuardDOMExpandoMissingOrGuardShape(CacheIRReader& reader) {\
++ ValOperandId expandoId = reader.valOperandId();\
++ uint32_t shapeOffset = reader.stubOffset();\
++ return emitGuardDOMExpandoMissingOrGuardShape(expandoId, shapeOffset);\
++}\
++\
++[[nodiscard]] bool emitStoreFixedSlot(ObjOperandId objId, uint32_t offsetOffset, ValOperandId rhsId);\
++[[nodiscard]] bool emitStoreFixedSlot(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ return emitStoreFixedSlot(objId, offsetOffset, rhsId);\
++}\
++\
++[[nodiscard]] bool emitStoreDynamicSlot(ObjOperandId objId, uint32_t offsetOffset, ValOperandId rhsId);\
++[[nodiscard]] bool emitStoreDynamicSlot(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ return emitStoreDynamicSlot(objId, offsetOffset, rhsId);\
++}\
++\
++[[nodiscard]] bool emitAddAndStoreFixedSlot(ObjOperandId objId, uint32_t offsetOffset, ValOperandId rhsId, uint32_t newShapeOffset);\
++[[nodiscard]] bool emitAddAndStoreFixedSlot(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ uint32_t newShapeOffset = reader.stubOffset();\
++ return emitAddAndStoreFixedSlot(objId, offsetOffset, rhsId, newShapeOffset);\
++}\
++\
++[[nodiscard]] bool emitAddAndStoreDynamicSlot(ObjOperandId objId, uint32_t offsetOffset, ValOperandId rhsId, uint32_t newShapeOffset);\
++[[nodiscard]] bool emitAddAndStoreDynamicSlot(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ uint32_t newShapeOffset = reader.stubOffset();\
++ return emitAddAndStoreDynamicSlot(objId, offsetOffset, rhsId, newShapeOffset);\
++}\
++\
++[[nodiscard]] bool emitAllocateAndStoreDynamicSlot(ObjOperandId objId, uint32_t offsetOffset, ValOperandId rhsId, uint32_t newShapeOffset, uint32_t numNewSlotsOffset);\
++[[nodiscard]] bool emitAllocateAndStoreDynamicSlot(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ uint32_t newShapeOffset = reader.stubOffset();\
++ uint32_t numNewSlotsOffset = reader.stubOffset();\
++ return emitAllocateAndStoreDynamicSlot(objId, offsetOffset, rhsId, newShapeOffset, numNewSlotsOffset);\
++}\
++\
++[[nodiscard]] bool emitStoreDenseElement(ObjOperandId objId, Int32OperandId indexId, ValOperandId rhsId);\
++[[nodiscard]] bool emitStoreDenseElement(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ ValOperandId rhsId = reader.valOperandId();\
++ return emitStoreDenseElement(objId, indexId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitStoreDenseElementHole(ObjOperandId objId, Int32OperandId indexId, ValOperandId rhsId, bool handleAdd);\
++[[nodiscard]] bool emitStoreDenseElementHole(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ ValOperandId rhsId = reader.valOperandId();\
++ bool handleAdd = reader.readBool();\
++ return emitStoreDenseElementHole(objId, indexId, rhsId, handleAdd);\
++}\
++\
++[[nodiscard]] bool emitArrayPush(ObjOperandId objId, ValOperandId rhsId);\
++[[nodiscard]] bool emitArrayPush(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ValOperandId rhsId = reader.valOperandId();\
++ return emitArrayPush(objId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitArrayJoinResult(ObjOperandId objId, StringOperandId sepId);\
++[[nodiscard]] bool emitArrayJoinResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ StringOperandId sepId = reader.stringOperandId();\
++ return emitArrayJoinResult(objId, sepId);\
++}\
++\
++[[nodiscard]] bool emitPackedArrayPopResult(ObjOperandId arrayId);\
++[[nodiscard]] bool emitPackedArrayPopResult(CacheIRReader& reader) {\
++ ObjOperandId arrayId = reader.objOperandId();\
++ return emitPackedArrayPopResult(arrayId);\
++}\
++\
++[[nodiscard]] bool emitPackedArrayShiftResult(ObjOperandId arrayId);\
++[[nodiscard]] bool emitPackedArrayShiftResult(CacheIRReader& reader) {\
++ ObjOperandId arrayId = reader.objOperandId();\
++ return emitPackedArrayShiftResult(arrayId);\
++}\
++\
++[[nodiscard]] bool emitPackedArraySliceResult(uint32_t templateObjectOffset, ObjOperandId arrayId, Int32OperandId beginId, Int32OperandId endId);\
++[[nodiscard]] bool emitPackedArraySliceResult(CacheIRReader& reader) {\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ ObjOperandId arrayId = reader.objOperandId();\
++ Int32OperandId beginId = reader.int32OperandId();\
++ Int32OperandId endId = reader.int32OperandId();\
++ return emitPackedArraySliceResult(templateObjectOffset, arrayId, beginId, endId);\
++}\
++\
++[[nodiscard]] bool emitIsArrayResult(ValOperandId inputId);\
++[[nodiscard]] bool emitIsArrayResult(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitIsArrayResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitStoreFixedSlotUndefinedResult(ObjOperandId objId, uint32_t offsetOffset, ValOperandId rhsId);\
++[[nodiscard]] bool emitStoreFixedSlotUndefinedResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ return emitStoreFixedSlotUndefinedResult(objId, offsetOffset, rhsId);\
++}\
++\
++[[nodiscard]] bool emitIsObjectResult(ValOperandId inputId);\
++[[nodiscard]] bool emitIsObjectResult(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitIsObjectResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitIsPackedArrayResult(ObjOperandId objId);\
++[[nodiscard]] bool emitIsPackedArrayResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitIsPackedArrayResult(objId);\
++}\
++\
++[[nodiscard]] bool emitIsCallableResult(ValOperandId inputId);\
++[[nodiscard]] bool emitIsCallableResult(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitIsCallableResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitIsConstructorResult(ObjOperandId objId);\
++[[nodiscard]] bool emitIsConstructorResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitIsConstructorResult(objId);\
++}\
++\
++[[nodiscard]] bool emitIsCrossRealmArrayConstructorResult(ObjOperandId objId);\
++[[nodiscard]] bool emitIsCrossRealmArrayConstructorResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitIsCrossRealmArrayConstructorResult(objId);\
++}\
++\
++[[nodiscard]] bool emitIsTypedArrayResult(ObjOperandId objId, bool isPossiblyWrapped);\
++[[nodiscard]] bool emitIsTypedArrayResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ bool isPossiblyWrapped = reader.readBool();\
++ return emitIsTypedArrayResult(objId, isPossiblyWrapped);\
++}\
++\
++[[nodiscard]] bool emitIsTypedArrayConstructorResult(ObjOperandId objId);\
++[[nodiscard]] bool emitIsTypedArrayConstructorResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitIsTypedArrayConstructorResult(objId);\
++}\
++\
++[[nodiscard]] bool emitArrayBufferViewByteOffsetInt32Result(ObjOperandId objId);\
++[[nodiscard]] bool emitArrayBufferViewByteOffsetInt32Result(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitArrayBufferViewByteOffsetInt32Result(objId);\
++}\
++\
++[[nodiscard]] bool emitArrayBufferViewByteOffsetDoubleResult(ObjOperandId objId);\
++[[nodiscard]] bool emitArrayBufferViewByteOffsetDoubleResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitArrayBufferViewByteOffsetDoubleResult(objId);\
++}\
++\
++[[nodiscard]] bool emitTypedArrayByteLengthInt32Result(ObjOperandId objId);\
++[[nodiscard]] bool emitTypedArrayByteLengthInt32Result(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitTypedArrayByteLengthInt32Result(objId);\
++}\
++\
++[[nodiscard]] bool emitTypedArrayByteLengthDoubleResult(ObjOperandId objId);\
++[[nodiscard]] bool emitTypedArrayByteLengthDoubleResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitTypedArrayByteLengthDoubleResult(objId);\
++}\
++\
++[[nodiscard]] bool emitTypedArrayElementSizeResult(ObjOperandId objId);\
++[[nodiscard]] bool emitTypedArrayElementSizeResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitTypedArrayElementSizeResult(objId);\
++}\
++\
++[[nodiscard]] bool emitGuardHasAttachedArrayBuffer(ObjOperandId objId);\
++[[nodiscard]] bool emitGuardHasAttachedArrayBuffer(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitGuardHasAttachedArrayBuffer(objId);\
++}\
++\
++[[nodiscard]] bool emitFinishBoundFunctionInitResult(ObjOperandId boundId, ObjOperandId targetId, Int32OperandId argCountId);\
++[[nodiscard]] bool emitFinishBoundFunctionInitResult(CacheIRReader& reader) {\
++ ObjOperandId boundId = reader.objOperandId();\
++ ObjOperandId targetId = reader.objOperandId();\
++ Int32OperandId argCountId = reader.int32OperandId();\
++ return emitFinishBoundFunctionInitResult(boundId, targetId, argCountId);\
++}\
++\
++[[nodiscard]] bool emitNewArrayIteratorResult(uint32_t templateObjectOffset);\
++[[nodiscard]] bool emitNewArrayIteratorResult(CacheIRReader& reader) {\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ return emitNewArrayIteratorResult(templateObjectOffset);\
++}\
++\
++[[nodiscard]] bool emitNewStringIteratorResult(uint32_t templateObjectOffset);\
++[[nodiscard]] bool emitNewStringIteratorResult(CacheIRReader& reader) {\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ return emitNewStringIteratorResult(templateObjectOffset);\
++}\
++\
++[[nodiscard]] bool emitNewRegExpStringIteratorResult(uint32_t templateObjectOffset);\
++[[nodiscard]] bool emitNewRegExpStringIteratorResult(CacheIRReader& reader) {\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ return emitNewRegExpStringIteratorResult(templateObjectOffset);\
++}\
++\
++[[nodiscard]] bool emitObjectCreateResult(uint32_t templateObjectOffset);\
++[[nodiscard]] bool emitObjectCreateResult(CacheIRReader& reader) {\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ return emitObjectCreateResult(templateObjectOffset);\
++}\
++\
++[[nodiscard]] bool emitNewArrayFromLengthResult(uint32_t templateObjectOffset, Int32OperandId lengthId);\
++[[nodiscard]] bool emitNewArrayFromLengthResult(CacheIRReader& reader) {\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ Int32OperandId lengthId = reader.int32OperandId();\
++ return emitNewArrayFromLengthResult(templateObjectOffset, lengthId);\
++}\
++\
++[[nodiscard]] bool emitNewTypedArrayFromLengthResult(uint32_t templateObjectOffset, Int32OperandId lengthId);\
++[[nodiscard]] bool emitNewTypedArrayFromLengthResult(CacheIRReader& reader) {\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ Int32OperandId lengthId = reader.int32OperandId();\
++ return emitNewTypedArrayFromLengthResult(templateObjectOffset, lengthId);\
++}\
++\
++[[nodiscard]] bool emitNewTypedArrayFromArrayBufferResult(uint32_t templateObjectOffset, ObjOperandId bufferId, ValOperandId byteOffsetId, ValOperandId lengthId);\
++[[nodiscard]] bool emitNewTypedArrayFromArrayBufferResult(CacheIRReader& reader) {\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ ObjOperandId bufferId = reader.objOperandId();\
++ ValOperandId byteOffsetId = reader.valOperandId();\
++ ValOperandId lengthId = reader.valOperandId();\
++ return emitNewTypedArrayFromArrayBufferResult(templateObjectOffset, bufferId, byteOffsetId, lengthId);\
++}\
++\
++[[nodiscard]] bool emitNewTypedArrayFromArrayResult(uint32_t templateObjectOffset, ObjOperandId arrayId);\
++[[nodiscard]] bool emitNewTypedArrayFromArrayResult(CacheIRReader& reader) {\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ ObjOperandId arrayId = reader.objOperandId();\
++ return emitNewTypedArrayFromArrayResult(templateObjectOffset, arrayId);\
++}\
++\
++[[nodiscard]] bool emitNewStringObjectResult(uint32_t templateObjectOffset, StringOperandId strId);\
++[[nodiscard]] bool emitNewStringObjectResult(CacheIRReader& reader) {\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ StringOperandId strId = reader.stringOperandId();\
++ return emitNewStringObjectResult(templateObjectOffset, strId);\
++}\
++\
++[[nodiscard]] bool emitStringFromCharCodeResult(Int32OperandId codeId);\
++[[nodiscard]] bool emitStringFromCharCodeResult(CacheIRReader& reader) {\
++ Int32OperandId codeId = reader.int32OperandId();\
++ return emitStringFromCharCodeResult(codeId);\
++}\
++\
++[[nodiscard]] bool emitStringFromCodePointResult(Int32OperandId codeId);\
++[[nodiscard]] bool emitStringFromCodePointResult(CacheIRReader& reader) {\
++ Int32OperandId codeId = reader.int32OperandId();\
++ return emitStringFromCodePointResult(codeId);\
++}\
++\
++[[nodiscard]] bool emitStringToLowerCaseResult(StringOperandId strId);\
++[[nodiscard]] bool emitStringToLowerCaseResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ return emitStringToLowerCaseResult(strId);\
++}\
++\
++[[nodiscard]] bool emitStringToUpperCaseResult(StringOperandId strId);\
++[[nodiscard]] bool emitStringToUpperCaseResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ return emitStringToUpperCaseResult(strId);\
++}\
++\
++[[nodiscard]] bool emitMathAbsInt32Result(Int32OperandId inputId);\
++[[nodiscard]] bool emitMathAbsInt32Result(CacheIRReader& reader) {\
++ Int32OperandId inputId = reader.int32OperandId();\
++ return emitMathAbsInt32Result(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathAbsNumberResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathAbsNumberResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathAbsNumberResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathClz32Result(Int32OperandId inputId);\
++[[nodiscard]] bool emitMathClz32Result(CacheIRReader& reader) {\
++ Int32OperandId inputId = reader.int32OperandId();\
++ return emitMathClz32Result(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathSignInt32Result(Int32OperandId inputId);\
++[[nodiscard]] bool emitMathSignInt32Result(CacheIRReader& reader) {\
++ Int32OperandId inputId = reader.int32OperandId();\
++ return emitMathSignInt32Result(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathSignNumberResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathSignNumberResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathSignNumberResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathSignNumberToInt32Result(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathSignNumberToInt32Result(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathSignNumberToInt32Result(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathImulResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitMathImulResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitMathImulResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitMathSqrtNumberResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathSqrtNumberResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathSqrtNumberResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathFRoundNumberResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathFRoundNumberResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathFRoundNumberResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathRandomResult(uint32_t rngOffset);\
++[[nodiscard]] bool emitMathRandomResult(CacheIRReader& reader) {\
++ uint32_t rngOffset = reader.stubOffset();\
++ return emitMathRandomResult(rngOffset);\
++}\
++\
++[[nodiscard]] bool emitMathHypot2NumberResult(NumberOperandId firstId, NumberOperandId secondId);\
++[[nodiscard]] bool emitMathHypot2NumberResult(CacheIRReader& reader) {\
++ NumberOperandId firstId = reader.numberOperandId();\
++ NumberOperandId secondId = reader.numberOperandId();\
++ return emitMathHypot2NumberResult(firstId, secondId);\
++}\
++\
++[[nodiscard]] bool emitMathHypot3NumberResult(NumberOperandId firstId, NumberOperandId secondId, NumberOperandId thirdId);\
++[[nodiscard]] bool emitMathHypot3NumberResult(CacheIRReader& reader) {\
++ NumberOperandId firstId = reader.numberOperandId();\
++ NumberOperandId secondId = reader.numberOperandId();\
++ NumberOperandId thirdId = reader.numberOperandId();\
++ return emitMathHypot3NumberResult(firstId, secondId, thirdId);\
++}\
++\
++[[nodiscard]] bool emitMathHypot4NumberResult(NumberOperandId firstId, NumberOperandId secondId, NumberOperandId thirdId, NumberOperandId fourthId);\
++[[nodiscard]] bool emitMathHypot4NumberResult(CacheIRReader& reader) {\
++ NumberOperandId firstId = reader.numberOperandId();\
++ NumberOperandId secondId = reader.numberOperandId();\
++ NumberOperandId thirdId = reader.numberOperandId();\
++ NumberOperandId fourthId = reader.numberOperandId();\
++ return emitMathHypot4NumberResult(firstId, secondId, thirdId, fourthId);\
++}\
++\
++[[nodiscard]] bool emitMathAtan2NumberResult(NumberOperandId lhsId, NumberOperandId rhsId);\
++[[nodiscard]] bool emitMathAtan2NumberResult(CacheIRReader& reader) {\
++ NumberOperandId lhsId = reader.numberOperandId();\
++ NumberOperandId rhsId = reader.numberOperandId();\
++ return emitMathAtan2NumberResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitMathFloorNumberResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathFloorNumberResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathFloorNumberResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathCeilNumberResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathCeilNumberResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathCeilNumberResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathTruncNumberResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathTruncNumberResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathTruncNumberResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathFloorToInt32Result(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathFloorToInt32Result(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathFloorToInt32Result(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathCeilToInt32Result(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathCeilToInt32Result(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathCeilToInt32Result(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathTruncToInt32Result(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathTruncToInt32Result(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathTruncToInt32Result(inputId);\
++}\
++\
++[[nodiscard]] bool emitMathRoundToInt32Result(NumberOperandId inputId);\
++[[nodiscard]] bool emitMathRoundToInt32Result(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitMathRoundToInt32Result(inputId);\
++}\
++\
++[[nodiscard]] bool emitInt32MinMax(bool isMax, Int32OperandId firstId, Int32OperandId secondId, Int32OperandId resultId);\
++[[nodiscard]] bool emitInt32MinMax(CacheIRReader& reader) {\
++ bool isMax = reader.readBool();\
++ Int32OperandId firstId = reader.int32OperandId();\
++ Int32OperandId secondId = reader.int32OperandId();\
++ Int32OperandId resultId = reader.int32OperandId();\
++ return emitInt32MinMax(isMax, firstId, secondId, resultId);\
++}\
++\
++[[nodiscard]] bool emitNumberMinMax(bool isMax, NumberOperandId firstId, NumberOperandId secondId, NumberOperandId resultId);\
++[[nodiscard]] bool emitNumberMinMax(CacheIRReader& reader) {\
++ bool isMax = reader.readBool();\
++ NumberOperandId firstId = reader.numberOperandId();\
++ NumberOperandId secondId = reader.numberOperandId();\
++ NumberOperandId resultId = reader.numberOperandId();\
++ return emitNumberMinMax(isMax, firstId, secondId, resultId);\
++}\
++\
++[[nodiscard]] bool emitInt32MinMaxArrayResult(ObjOperandId arrayId, bool isMax);\
++[[nodiscard]] bool emitInt32MinMaxArrayResult(CacheIRReader& reader) {\
++ ObjOperandId arrayId = reader.objOperandId();\
++ bool isMax = reader.readBool();\
++ return emitInt32MinMaxArrayResult(arrayId, isMax);\
++}\
++\
++[[nodiscard]] bool emitNumberMinMaxArrayResult(ObjOperandId arrayId, bool isMax);\
++[[nodiscard]] bool emitNumberMinMaxArrayResult(CacheIRReader& reader) {\
++ ObjOperandId arrayId = reader.objOperandId();\
++ bool isMax = reader.readBool();\
++ return emitNumberMinMaxArrayResult(arrayId, isMax);\
++}\
++\
++[[nodiscard]] bool emitMathFunctionNumberResult(NumberOperandId inputId, UnaryMathFunction fun);\
++[[nodiscard]] bool emitMathFunctionNumberResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ UnaryMathFunction fun = reader.unaryMathFunction();\
++ return emitMathFunctionNumberResult(inputId, fun);\
++}\
++\
++[[nodiscard]] bool emitObjectToStringResult(ObjOperandId objId);\
++[[nodiscard]] bool emitObjectToStringResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitObjectToStringResult(objId);\
++}\
++\
++[[nodiscard]] bool emitReflectGetPrototypeOfResult(ObjOperandId objId);\
++[[nodiscard]] bool emitReflectGetPrototypeOfResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitReflectGetPrototypeOfResult(objId);\
++}\
++\
++[[nodiscard]] bool emitStoreTypedArrayElement(ObjOperandId objId, Scalar::Type elementType, IntPtrOperandId indexId, uint32_t rhsId, bool handleOOB);\
++[[nodiscard]] bool emitStoreTypedArrayElement(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ uint32_t rhsId = reader.rawOperandId();\
++ bool handleOOB = reader.readBool();\
++ return emitStoreTypedArrayElement(objId, elementType, indexId, rhsId, handleOOB);\
++}\
++\
++[[nodiscard]] bool emitAtomicsCompareExchangeResult(ObjOperandId objId, IntPtrOperandId indexId, uint32_t expectedId, uint32_t replacementId, Scalar::Type elementType);\
++[[nodiscard]] bool emitAtomicsCompareExchangeResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ uint32_t expectedId = reader.rawOperandId();\
++ uint32_t replacementId = reader.rawOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ return emitAtomicsCompareExchangeResult(objId, indexId, expectedId, replacementId, elementType);\
++}\
++\
++[[nodiscard]] bool emitAtomicsExchangeResult(ObjOperandId objId, IntPtrOperandId indexId, uint32_t valueId, Scalar::Type elementType);\
++[[nodiscard]] bool emitAtomicsExchangeResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ uint32_t valueId = reader.rawOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ return emitAtomicsExchangeResult(objId, indexId, valueId, elementType);\
++}\
++\
++[[nodiscard]] bool emitAtomicsAddResult(ObjOperandId objId, IntPtrOperandId indexId, uint32_t valueId, Scalar::Type elementType, bool forEffect);\
++[[nodiscard]] bool emitAtomicsAddResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ uint32_t valueId = reader.rawOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ bool forEffect = reader.readBool();\
++ return emitAtomicsAddResult(objId, indexId, valueId, elementType, forEffect);\
++}\
++\
++[[nodiscard]] bool emitAtomicsSubResult(ObjOperandId objId, IntPtrOperandId indexId, uint32_t valueId, Scalar::Type elementType, bool forEffect);\
++[[nodiscard]] bool emitAtomicsSubResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ uint32_t valueId = reader.rawOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ bool forEffect = reader.readBool();\
++ return emitAtomicsSubResult(objId, indexId, valueId, elementType, forEffect);\
++}\
++\
++[[nodiscard]] bool emitAtomicsAndResult(ObjOperandId objId, IntPtrOperandId indexId, uint32_t valueId, Scalar::Type elementType, bool forEffect);\
++[[nodiscard]] bool emitAtomicsAndResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ uint32_t valueId = reader.rawOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ bool forEffect = reader.readBool();\
++ return emitAtomicsAndResult(objId, indexId, valueId, elementType, forEffect);\
++}\
++\
++[[nodiscard]] bool emitAtomicsOrResult(ObjOperandId objId, IntPtrOperandId indexId, uint32_t valueId, Scalar::Type elementType, bool forEffect);\
++[[nodiscard]] bool emitAtomicsOrResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ uint32_t valueId = reader.rawOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ bool forEffect = reader.readBool();\
++ return emitAtomicsOrResult(objId, indexId, valueId, elementType, forEffect);\
++}\
++\
++[[nodiscard]] bool emitAtomicsXorResult(ObjOperandId objId, IntPtrOperandId indexId, uint32_t valueId, Scalar::Type elementType, bool forEffect);\
++[[nodiscard]] bool emitAtomicsXorResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ uint32_t valueId = reader.rawOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ bool forEffect = reader.readBool();\
++ return emitAtomicsXorResult(objId, indexId, valueId, elementType, forEffect);\
++}\
++\
++[[nodiscard]] bool emitAtomicsLoadResult(ObjOperandId objId, IntPtrOperandId indexId, Scalar::Type elementType);\
++[[nodiscard]] bool emitAtomicsLoadResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ return emitAtomicsLoadResult(objId, indexId, elementType);\
++}\
++\
++[[nodiscard]] bool emitAtomicsStoreResult(ObjOperandId objId, IntPtrOperandId indexId, uint32_t valueId, Scalar::Type elementType);\
++[[nodiscard]] bool emitAtomicsStoreResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ uint32_t valueId = reader.rawOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ return emitAtomicsStoreResult(objId, indexId, valueId, elementType);\
++}\
++\
++[[nodiscard]] bool emitAtomicsIsLockFreeResult(Int32OperandId valueId);\
++[[nodiscard]] bool emitAtomicsIsLockFreeResult(CacheIRReader& reader) {\
++ Int32OperandId valueId = reader.int32OperandId();\
++ return emitAtomicsIsLockFreeResult(valueId);\
++}\
++\
++[[nodiscard]] bool emitCallNativeSetter(ObjOperandId receiverId, uint32_t setterOffset, ValOperandId rhsId, bool sameRealm, uint32_t nargsAndFlagsOffset);\
++[[nodiscard]] bool emitCallNativeSetter(CacheIRReader& reader) {\
++ ObjOperandId receiverId = reader.objOperandId();\
++ uint32_t setterOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ bool sameRealm = reader.readBool();\
++ uint32_t nargsAndFlagsOffset = reader.stubOffset();\
++ return emitCallNativeSetter(receiverId, setterOffset, rhsId, sameRealm, nargsAndFlagsOffset);\
++}\
++\
++[[nodiscard]] bool emitCallScriptedSetter(ObjOperandId receiverId, uint32_t setterOffset, ValOperandId rhsId, bool sameRealm, uint32_t nargsAndFlagsOffset);\
++[[nodiscard]] bool emitCallScriptedSetter(CacheIRReader& reader) {\
++ ObjOperandId receiverId = reader.objOperandId();\
++ uint32_t setterOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ bool sameRealm = reader.readBool();\
++ uint32_t nargsAndFlagsOffset = reader.stubOffset();\
++ return emitCallScriptedSetter(receiverId, setterOffset, rhsId, sameRealm, nargsAndFlagsOffset);\
++}\
++\
++[[nodiscard]] bool emitCallInlinedSetter(ObjOperandId receiverId, uint32_t setterOffset, ValOperandId rhsId, uint32_t icScriptOffset, bool sameRealm, uint32_t nargsAndFlagsOffset);\
++[[nodiscard]] bool emitCallInlinedSetter(CacheIRReader& reader) {\
++ ObjOperandId receiverId = reader.objOperandId();\
++ uint32_t setterOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ uint32_t icScriptOffset = reader.stubOffset();\
++ bool sameRealm = reader.readBool();\
++ uint32_t nargsAndFlagsOffset = reader.stubOffset();\
++ return emitCallInlinedSetter(receiverId, setterOffset, rhsId, icScriptOffset, sameRealm, nargsAndFlagsOffset);\
++}\
++\
++[[nodiscard]] bool emitCallDOMSetter(ObjOperandId objId, uint32_t jitInfoOffset, ValOperandId rhsId);\
++[[nodiscard]] bool emitCallDOMSetter(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t jitInfoOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ return emitCallDOMSetter(objId, jitInfoOffset, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCallSetArrayLength(ObjOperandId objId, bool strict, ValOperandId rhsId);\
++[[nodiscard]] bool emitCallSetArrayLength(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ bool strict = reader.readBool();\
++ ValOperandId rhsId = reader.valOperandId();\
++ return emitCallSetArrayLength(objId, strict, rhsId);\
++}\
++\
++[[nodiscard]] bool emitProxySet(ObjOperandId objId, uint32_t idOffset, ValOperandId rhsId, bool strict);\
++[[nodiscard]] bool emitProxySet(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t idOffset = reader.stubOffset();\
++ ValOperandId rhsId = reader.valOperandId();\
++ bool strict = reader.readBool();\
++ return emitProxySet(objId, idOffset, rhsId, strict);\
++}\
++\
++[[nodiscard]] bool emitProxySetByValue(ObjOperandId objId, ValOperandId idId, ValOperandId rhsId, bool strict);\
++[[nodiscard]] bool emitProxySetByValue(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ValOperandId idId = reader.valOperandId();\
++ ValOperandId rhsId = reader.valOperandId();\
++ bool strict = reader.readBool();\
++ return emitProxySetByValue(objId, idId, rhsId, strict);\
++}\
++\
++[[nodiscard]] bool emitCallAddOrUpdateSparseElementHelper(ObjOperandId objId, Int32OperandId idId, ValOperandId rhsId, bool strict);\
++[[nodiscard]] bool emitCallAddOrUpdateSparseElementHelper(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId idId = reader.int32OperandId();\
++ ValOperandId rhsId = reader.valOperandId();\
++ bool strict = reader.readBool();\
++ return emitCallAddOrUpdateSparseElementHelper(objId, idId, rhsId, strict);\
++}\
++\
++[[nodiscard]] bool emitCallInt32ToString(Int32OperandId inputId, StringOperandId resultId);\
++[[nodiscard]] bool emitCallInt32ToString(CacheIRReader& reader) {\
++ Int32OperandId inputId = reader.int32OperandId();\
++ StringOperandId resultId = reader.stringOperandId();\
++ return emitCallInt32ToString(inputId, resultId);\
++}\
++\
++[[nodiscard]] bool emitCallNumberToString(NumberOperandId inputId, StringOperandId resultId);\
++[[nodiscard]] bool emitCallNumberToString(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ StringOperandId resultId = reader.stringOperandId();\
++ return emitCallNumberToString(inputId, resultId);\
++}\
++\
++[[nodiscard]] bool emitBooleanToString(BooleanOperandId inputId, StringOperandId resultId);\
++[[nodiscard]] bool emitBooleanToString(CacheIRReader& reader) {\
++ BooleanOperandId inputId = reader.booleanOperandId();\
++ StringOperandId resultId = reader.stringOperandId();\
++ return emitBooleanToString(inputId, resultId);\
++}\
++\
++[[nodiscard]] bool emitCallScriptedFunction(ObjOperandId calleeId, Int32OperandId argcId, CallFlags flags);\
++[[nodiscard]] bool emitCallScriptedFunction(CacheIRReader& reader) {\
++ ObjOperandId calleeId = reader.objOperandId();\
++ Int32OperandId argcId = reader.int32OperandId();\
++ CallFlags flags = reader.callFlags();\
++ return emitCallScriptedFunction(calleeId, argcId, flags);\
++}\
++\
++[[nodiscard]] bool emitCallWasmFunction(ObjOperandId calleeId, Int32OperandId argcId, CallFlags flags, uint32_t funcExportOffset, uint32_t instanceOffset);\
++[[nodiscard]] bool emitCallWasmFunction(CacheIRReader& reader) {\
++ ObjOperandId calleeId = reader.objOperandId();\
++ Int32OperandId argcId = reader.int32OperandId();\
++ CallFlags flags = reader.callFlags();\
++ uint32_t funcExportOffset = reader.stubOffset();\
++ uint32_t instanceOffset = reader.stubOffset();\
++ return emitCallWasmFunction(calleeId, argcId, flags, funcExportOffset, instanceOffset);\
++}\
++\
++[[nodiscard]] bool emitGuardWasmArg(ValOperandId argId, wasm::ValType::Kind type);\
++[[nodiscard]] bool emitGuardWasmArg(CacheIRReader& reader) {\
++ ValOperandId argId = reader.valOperandId();\
++ wasm::ValType::Kind type = reader.wasmValType();\
++ return emitGuardWasmArg(argId, type);\
++}\
++\
++[[nodiscard]] bool emitCallNativeFunction(ObjOperandId calleeId, Int32OperandId argcId, CallFlags flags, bool ignoresReturnValue);\
++[[nodiscard]] bool emitCallNativeFunction(CacheIRReader& reader) {\
++ ObjOperandId calleeId = reader.objOperandId();\
++ Int32OperandId argcId = reader.int32OperandId();\
++ CallFlags flags = reader.callFlags();\
++ bool ignoresReturnValue = reader.readBool();\
++ return emitCallNativeFunction(calleeId, argcId, flags, ignoresReturnValue);\
++}\
++\
++[[nodiscard]] bool emitCallDOMFunction(ObjOperandId calleeId, Int32OperandId argcId, ObjOperandId thisObjId, CallFlags flags);\
++[[nodiscard]] bool emitCallDOMFunction(CacheIRReader& reader) {\
++ ObjOperandId calleeId = reader.objOperandId();\
++ Int32OperandId argcId = reader.int32OperandId();\
++ ObjOperandId thisObjId = reader.objOperandId();\
++ CallFlags flags = reader.callFlags();\
++ return emitCallDOMFunction(calleeId, argcId, thisObjId, flags);\
++}\
++\
++[[nodiscard]] bool emitCallInlinedFunction(ObjOperandId calleeId, Int32OperandId argcId, uint32_t icScriptOffset, CallFlags flags);\
++[[nodiscard]] bool emitCallInlinedFunction(CacheIRReader& reader) {\
++ ObjOperandId calleeId = reader.objOperandId();\
++ Int32OperandId argcId = reader.int32OperandId();\
++ uint32_t icScriptOffset = reader.stubOffset();\
++ CallFlags flags = reader.callFlags();\
++ return emitCallInlinedFunction(calleeId, argcId, icScriptOffset, flags);\
++}\
++\
++[[nodiscard]] bool emitMetaTwoByte(uint32_t functionObjectOffset, uint32_t templateObjectOffset);\
++[[nodiscard]] bool emitMetaTwoByte(CacheIRReader& reader) {\
++ uint32_t functionObjectOffset = reader.stubOffset();\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ return emitMetaTwoByte(functionObjectOffset, templateObjectOffset);\
++}\
++\
++[[nodiscard]] bool emitLoadFixedSlotResult(ObjOperandId objId, uint32_t offsetOffset);\
++[[nodiscard]] bool emitLoadFixedSlotResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ return emitLoadFixedSlotResult(objId, offsetOffset);\
++}\
++\
++[[nodiscard]] bool emitLoadFixedSlotTypedResult(ObjOperandId objId, uint32_t offsetOffset, ValueType type);\
++[[nodiscard]] bool emitLoadFixedSlotTypedResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ ValueType type = reader.valueType();\
++ return emitLoadFixedSlotTypedResult(objId, offsetOffset, type);\
++}\
++\
++[[nodiscard]] bool emitLoadDynamicSlotResult(ObjOperandId objId, uint32_t offsetOffset);\
++[[nodiscard]] bool emitLoadDynamicSlotResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ return emitLoadDynamicSlotResult(objId, offsetOffset);\
++}\
++\
++[[nodiscard]] bool emitLoadDenseElementResult(ObjOperandId objId, Int32OperandId indexId);\
++[[nodiscard]] bool emitLoadDenseElementResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitLoadDenseElementResult(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitLoadDenseElementHoleResult(ObjOperandId objId, Int32OperandId indexId);\
++[[nodiscard]] bool emitLoadDenseElementHoleResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitLoadDenseElementHoleResult(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitCallGetSparseElementResult(ObjOperandId objId, Int32OperandId indexId);\
++[[nodiscard]] bool emitCallGetSparseElementResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitCallGetSparseElementResult(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitLoadDenseElementExistsResult(ObjOperandId objId, Int32OperandId indexId);\
++[[nodiscard]] bool emitLoadDenseElementExistsResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitLoadDenseElementExistsResult(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitLoadTypedArrayElementExistsResult(ObjOperandId objId, IntPtrOperandId indexId);\
++[[nodiscard]] bool emitLoadTypedArrayElementExistsResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ return emitLoadTypedArrayElementExistsResult(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitLoadDenseElementHoleExistsResult(ObjOperandId objId, Int32OperandId indexId);\
++[[nodiscard]] bool emitLoadDenseElementHoleExistsResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitLoadDenseElementHoleExistsResult(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitLoadTypedArrayElementResult(ObjOperandId objId, IntPtrOperandId indexId, Scalar::Type elementType, bool handleOOB, bool forceDoubleForUint32);\
++[[nodiscard]] bool emitLoadTypedArrayElementResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId indexId = reader.intPtrOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ bool handleOOB = reader.readBool();\
++ bool forceDoubleForUint32 = reader.readBool();\
++ return emitLoadTypedArrayElementResult(objId, indexId, elementType, handleOOB, forceDoubleForUint32);\
++}\
++\
++[[nodiscard]] bool emitLoadDataViewValueResult(ObjOperandId objId, IntPtrOperandId offsetId, BooleanOperandId littleEndianId, Scalar::Type elementType, bool forceDoubleForUint32);\
++[[nodiscard]] bool emitLoadDataViewValueResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId offsetId = reader.intPtrOperandId();\
++ BooleanOperandId littleEndianId = reader.booleanOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ bool forceDoubleForUint32 = reader.readBool();\
++ return emitLoadDataViewValueResult(objId, offsetId, littleEndianId, elementType, forceDoubleForUint32);\
++}\
++\
++[[nodiscard]] bool emitStoreDataViewValueResult(ObjOperandId objId, IntPtrOperandId offsetId, uint32_t valueId, BooleanOperandId littleEndianId, Scalar::Type elementType);\
++[[nodiscard]] bool emitStoreDataViewValueResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ IntPtrOperandId offsetId = reader.intPtrOperandId();\
++ uint32_t valueId = reader.rawOperandId();\
++ BooleanOperandId littleEndianId = reader.booleanOperandId();\
++ Scalar::Type elementType = reader.scalarType();\
++ return emitStoreDataViewValueResult(objId, offsetId, valueId, littleEndianId, elementType);\
++}\
++\
++[[nodiscard]] bool emitLoadInt32ArrayLengthResult(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadInt32ArrayLengthResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadInt32ArrayLengthResult(objId);\
++}\
++\
++[[nodiscard]] bool emitLoadInt32ArrayLength(ObjOperandId objId, Int32OperandId resultId);\
++[[nodiscard]] bool emitLoadInt32ArrayLength(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId resultId = reader.int32OperandId();\
++ return emitLoadInt32ArrayLength(objId, resultId);\
++}\
++\
++[[nodiscard]] bool emitLoadArgumentsObjectArgResult(ObjOperandId objId, Int32OperandId indexId);\
++[[nodiscard]] bool emitLoadArgumentsObjectArgResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitLoadArgumentsObjectArgResult(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitLoadArgumentsObjectLengthResult(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadArgumentsObjectLengthResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadArgumentsObjectLengthResult(objId);\
++}\
++\
++[[nodiscard]] bool emitLoadFunctionLengthResult(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadFunctionLengthResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadFunctionLengthResult(objId);\
++}\
++\
++[[nodiscard]] bool emitLoadFunctionNameResult(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadFunctionNameResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadFunctionNameResult(objId);\
++}\
++\
++[[nodiscard]] bool emitLoadArrayBufferByteLengthInt32Result(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadArrayBufferByteLengthInt32Result(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadArrayBufferByteLengthInt32Result(objId);\
++}\
++\
++[[nodiscard]] bool emitLoadArrayBufferByteLengthDoubleResult(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadArrayBufferByteLengthDoubleResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadArrayBufferByteLengthDoubleResult(objId);\
++}\
++\
++[[nodiscard]] bool emitLoadArrayBufferViewLengthInt32Result(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadArrayBufferViewLengthInt32Result(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadArrayBufferViewLengthInt32Result(objId);\
++}\
++\
++[[nodiscard]] bool emitLoadArrayBufferViewLengthDoubleResult(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadArrayBufferViewLengthDoubleResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadArrayBufferViewLengthDoubleResult(objId);\
++}\
++\
++[[nodiscard]] bool emitLoadStringCharResult(StringOperandId strId, Int32OperandId indexId);\
++[[nodiscard]] bool emitLoadStringCharResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitLoadStringCharResult(strId, indexId);\
++}\
++\
++[[nodiscard]] bool emitLoadStringCharCodeResult(StringOperandId strId, Int32OperandId indexId);\
++[[nodiscard]] bool emitLoadStringCharCodeResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitLoadStringCharCodeResult(strId, indexId);\
++}\
++\
++[[nodiscard]] bool emitLoadStringLengthResult(StringOperandId strId);\
++[[nodiscard]] bool emitLoadStringLengthResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ return emitLoadStringLengthResult(strId);\
++}\
++\
++[[nodiscard]] bool emitFrameIsConstructingResult();\
++[[nodiscard]] bool emitFrameIsConstructingResult(CacheIRReader& reader) {\
++ return emitFrameIsConstructingResult();\
++}\
++\
++[[nodiscard]] bool emitLoadEnvironmentFixedSlotResult(ObjOperandId objId, uint32_t offsetOffset);\
++[[nodiscard]] bool emitLoadEnvironmentFixedSlotResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ return emitLoadEnvironmentFixedSlotResult(objId, offsetOffset);\
++}\
++\
++[[nodiscard]] bool emitLoadEnvironmentDynamicSlotResult(ObjOperandId objId, uint32_t offsetOffset);\
++[[nodiscard]] bool emitLoadEnvironmentDynamicSlotResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t offsetOffset = reader.stubOffset();\
++ return emitLoadEnvironmentDynamicSlotResult(objId, offsetOffset);\
++}\
++\
++[[nodiscard]] bool emitLoadObjectResult(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadObjectResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadObjectResult(objId);\
++}\
++\
++[[nodiscard]] bool emitLoadStringResult(StringOperandId strId);\
++[[nodiscard]] bool emitLoadStringResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ return emitLoadStringResult(strId);\
++}\
++\
++[[nodiscard]] bool emitLoadSymbolResult(SymbolOperandId symId);\
++[[nodiscard]] bool emitLoadSymbolResult(CacheIRReader& reader) {\
++ SymbolOperandId symId = reader.symbolOperandId();\
++ return emitLoadSymbolResult(symId);\
++}\
++\
++[[nodiscard]] bool emitLoadInt32Result(Int32OperandId valId);\
++[[nodiscard]] bool emitLoadInt32Result(CacheIRReader& reader) {\
++ Int32OperandId valId = reader.int32OperandId();\
++ return emitLoadInt32Result(valId);\
++}\
++\
++[[nodiscard]] bool emitLoadDoubleResult(NumberOperandId valId);\
++[[nodiscard]] bool emitLoadDoubleResult(CacheIRReader& reader) {\
++ NumberOperandId valId = reader.numberOperandId();\
++ return emitLoadDoubleResult(valId);\
++}\
++\
++[[nodiscard]] bool emitLoadBigIntResult(BigIntOperandId valId);\
++[[nodiscard]] bool emitLoadBigIntResult(CacheIRReader& reader) {\
++ BigIntOperandId valId = reader.bigIntOperandId();\
++ return emitLoadBigIntResult(valId);\
++}\
++\
++[[nodiscard]] bool emitCallScriptedGetterResult(ValOperandId receiverId, uint32_t getterOffset, bool sameRealm, uint32_t nargsAndFlagsOffset);\
++[[nodiscard]] bool emitCallScriptedGetterResult(CacheIRReader& reader) {\
++ ValOperandId receiverId = reader.valOperandId();\
++ uint32_t getterOffset = reader.stubOffset();\
++ bool sameRealm = reader.readBool();\
++ uint32_t nargsAndFlagsOffset = reader.stubOffset();\
++ return emitCallScriptedGetterResult(receiverId, getterOffset, sameRealm, nargsAndFlagsOffset);\
++}\
++\
++[[nodiscard]] bool emitCallInlinedGetterResult(ValOperandId receiverId, uint32_t getterOffset, uint32_t icScriptOffset, bool sameRealm, uint32_t nargsAndFlagsOffset);\
++[[nodiscard]] bool emitCallInlinedGetterResult(CacheIRReader& reader) {\
++ ValOperandId receiverId = reader.valOperandId();\
++ uint32_t getterOffset = reader.stubOffset();\
++ uint32_t icScriptOffset = reader.stubOffset();\
++ bool sameRealm = reader.readBool();\
++ uint32_t nargsAndFlagsOffset = reader.stubOffset();\
++ return emitCallInlinedGetterResult(receiverId, getterOffset, icScriptOffset, sameRealm, nargsAndFlagsOffset);\
++}\
++\
++[[nodiscard]] bool emitCallNativeGetterResult(ValOperandId receiverId, uint32_t getterOffset, bool sameRealm, uint32_t nargsAndFlagsOffset);\
++[[nodiscard]] bool emitCallNativeGetterResult(CacheIRReader& reader) {\
++ ValOperandId receiverId = reader.valOperandId();\
++ uint32_t getterOffset = reader.stubOffset();\
++ bool sameRealm = reader.readBool();\
++ uint32_t nargsAndFlagsOffset = reader.stubOffset();\
++ return emitCallNativeGetterResult(receiverId, getterOffset, sameRealm, nargsAndFlagsOffset);\
++}\
++\
++[[nodiscard]] bool emitCallDOMGetterResult(ObjOperandId objId, uint32_t jitInfoOffset);\
++[[nodiscard]] bool emitCallDOMGetterResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t jitInfoOffset = reader.stubOffset();\
++ return emitCallDOMGetterResult(objId, jitInfoOffset);\
++}\
++\
++[[nodiscard]] bool emitProxyGetResult(ObjOperandId objId, uint32_t idOffset);\
++[[nodiscard]] bool emitProxyGetResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ uint32_t idOffset = reader.stubOffset();\
++ return emitProxyGetResult(objId, idOffset);\
++}\
++\
++[[nodiscard]] bool emitProxyGetByValueResult(ObjOperandId objId, ValOperandId idId);\
++[[nodiscard]] bool emitProxyGetByValueResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ValOperandId idId = reader.valOperandId();\
++ return emitProxyGetByValueResult(objId, idId);\
++}\
++\
++[[nodiscard]] bool emitProxyHasPropResult(ObjOperandId objId, ValOperandId idId, bool hasOwn);\
++[[nodiscard]] bool emitProxyHasPropResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ ValOperandId idId = reader.valOperandId();\
++ bool hasOwn = reader.readBool();\
++ return emitProxyHasPropResult(objId, idId, hasOwn);\
++}\
++\
++[[nodiscard]] bool emitCallObjectHasSparseElementResult(ObjOperandId objId, Int32OperandId indexId);\
++[[nodiscard]] bool emitCallObjectHasSparseElementResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitCallObjectHasSparseElementResult(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitCallNativeGetElementResult(ObjOperandId objId, Int32OperandId indexId);\
++[[nodiscard]] bool emitCallNativeGetElementResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ Int32OperandId indexId = reader.int32OperandId();\
++ return emitCallNativeGetElementResult(objId, indexId);\
++}\
++\
++[[nodiscard]] bool emitGetNextMapSetEntryForIteratorResult(ObjOperandId iterId, ObjOperandId resultArrId, bool isMap);\
++[[nodiscard]] bool emitGetNextMapSetEntryForIteratorResult(CacheIRReader& reader) {\
++ ObjOperandId iterId = reader.objOperandId();\
++ ObjOperandId resultArrId = reader.objOperandId();\
++ bool isMap = reader.readBool();\
++ return emitGetNextMapSetEntryForIteratorResult(iterId, resultArrId, isMap);\
++}\
++\
++[[nodiscard]] bool emitLoadUndefinedResult();\
++[[nodiscard]] bool emitLoadUndefinedResult(CacheIRReader& reader) {\
++ return emitLoadUndefinedResult();\
++}\
++\
++[[nodiscard]] bool emitLoadBooleanResult(bool val);\
++[[nodiscard]] bool emitLoadBooleanResult(CacheIRReader& reader) {\
++ bool val = reader.readBool();\
++ return emitLoadBooleanResult(val);\
++}\
++\
++[[nodiscard]] bool emitLoadInt32Constant(uint32_t valOffset, Int32OperandId resultId);\
++[[nodiscard]] bool emitLoadInt32Constant(CacheIRReader& reader) {\
++ uint32_t valOffset = reader.stubOffset();\
++ Int32OperandId resultId = reader.int32OperandId();\
++ return emitLoadInt32Constant(valOffset, resultId);\
++}\
++\
++[[nodiscard]] bool emitLoadBooleanConstant(bool val, BooleanOperandId resultId);\
++[[nodiscard]] bool emitLoadBooleanConstant(CacheIRReader& reader) {\
++ bool val = reader.readBool();\
++ BooleanOperandId resultId = reader.booleanOperandId();\
++ return emitLoadBooleanConstant(val, resultId);\
++}\
++\
++[[nodiscard]] bool emitLoadUndefined(ValOperandId resultId);\
++[[nodiscard]] bool emitLoadUndefined(CacheIRReader& reader) {\
++ ValOperandId resultId = reader.valOperandId();\
++ return emitLoadUndefined(resultId);\
++}\
++\
++[[nodiscard]] bool emitLoadConstantString(uint32_t strOffset, StringOperandId resultId);\
++[[nodiscard]] bool emitLoadConstantString(CacheIRReader& reader) {\
++ uint32_t strOffset = reader.stubOffset();\
++ StringOperandId resultId = reader.stringOperandId();\
++ return emitLoadConstantString(strOffset, resultId);\
++}\
++\
++[[nodiscard]] bool emitLoadConstantStringResult(uint32_t strOffset);\
++[[nodiscard]] bool emitLoadConstantStringResult(CacheIRReader& reader) {\
++ uint32_t strOffset = reader.stubOffset();\
++ return emitLoadConstantStringResult(strOffset);\
++}\
++\
++[[nodiscard]] bool emitLoadInstanceOfObjectResult(ValOperandId lhsId, ObjOperandId protoId);\
++[[nodiscard]] bool emitLoadInstanceOfObjectResult(CacheIRReader& reader) {\
++ ValOperandId lhsId = reader.valOperandId();\
++ ObjOperandId protoId = reader.objOperandId();\
++ return emitLoadInstanceOfObjectResult(lhsId, protoId);\
++}\
++\
++[[nodiscard]] bool emitLoadTypeOfObjectResult(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadTypeOfObjectResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadTypeOfObjectResult(objId);\
++}\
++\
++[[nodiscard]] bool emitDoubleAddResult(NumberOperandId lhsId, NumberOperandId rhsId);\
++[[nodiscard]] bool emitDoubleAddResult(CacheIRReader& reader) {\
++ NumberOperandId lhsId = reader.numberOperandId();\
++ NumberOperandId rhsId = reader.numberOperandId();\
++ return emitDoubleAddResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitDoubleSubResult(NumberOperandId lhsId, NumberOperandId rhsId);\
++[[nodiscard]] bool emitDoubleSubResult(CacheIRReader& reader) {\
++ NumberOperandId lhsId = reader.numberOperandId();\
++ NumberOperandId rhsId = reader.numberOperandId();\
++ return emitDoubleSubResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitDoubleMulResult(NumberOperandId lhsId, NumberOperandId rhsId);\
++[[nodiscard]] bool emitDoubleMulResult(CacheIRReader& reader) {\
++ NumberOperandId lhsId = reader.numberOperandId();\
++ NumberOperandId rhsId = reader.numberOperandId();\
++ return emitDoubleMulResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitDoubleDivResult(NumberOperandId lhsId, NumberOperandId rhsId);\
++[[nodiscard]] bool emitDoubleDivResult(CacheIRReader& reader) {\
++ NumberOperandId lhsId = reader.numberOperandId();\
++ NumberOperandId rhsId = reader.numberOperandId();\
++ return emitDoubleDivResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitDoubleModResult(NumberOperandId lhsId, NumberOperandId rhsId);\
++[[nodiscard]] bool emitDoubleModResult(CacheIRReader& reader) {\
++ NumberOperandId lhsId = reader.numberOperandId();\
++ NumberOperandId rhsId = reader.numberOperandId();\
++ return emitDoubleModResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitDoublePowResult(NumberOperandId lhsId, NumberOperandId rhsId);\
++[[nodiscard]] bool emitDoublePowResult(CacheIRReader& reader) {\
++ NumberOperandId lhsId = reader.numberOperandId();\
++ NumberOperandId rhsId = reader.numberOperandId();\
++ return emitDoublePowResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32AddResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32AddResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32AddResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32SubResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32SubResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32SubResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32MulResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32MulResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32MulResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32DivResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32DivResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32DivResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32ModResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32ModResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32ModResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32PowResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32PowResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32PowResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntAddResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntAddResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntAddResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntSubResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntSubResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntSubResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntMulResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntMulResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntMulResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntDivResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntDivResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntDivResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntModResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntModResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntModResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntPowResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntPowResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntPowResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32BitOrResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32BitOrResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32BitOrResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32BitXorResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32BitXorResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32BitXorResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32BitAndResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32BitAndResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32BitAndResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32LeftShiftResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32LeftShiftResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32LeftShiftResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32RightShiftResult(Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitInt32RightShiftResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitInt32RightShiftResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitInt32URightShiftResult(Int32OperandId lhsId, Int32OperandId rhsId, bool forceDouble);\
++[[nodiscard]] bool emitInt32URightShiftResult(CacheIRReader& reader) {\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ bool forceDouble = reader.readBool();\
++ return emitInt32URightShiftResult(lhsId, rhsId, forceDouble);\
++}\
++\
++[[nodiscard]] bool emitInt32NotResult(Int32OperandId inputId);\
++[[nodiscard]] bool emitInt32NotResult(CacheIRReader& reader) {\
++ Int32OperandId inputId = reader.int32OperandId();\
++ return emitInt32NotResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitBigIntBitOrResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntBitOrResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntBitOrResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntBitXorResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntBitXorResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntBitXorResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntBitAndResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntBitAndResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntBitAndResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntLeftShiftResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntLeftShiftResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntLeftShiftResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntRightShiftResult(BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitBigIntRightShiftResult(CacheIRReader& reader) {\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitBigIntRightShiftResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitBigIntNotResult(BigIntOperandId inputId);\
++[[nodiscard]] bool emitBigIntNotResult(CacheIRReader& reader) {\
++ BigIntOperandId inputId = reader.bigIntOperandId();\
++ return emitBigIntNotResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitInt32NegationResult(Int32OperandId inputId);\
++[[nodiscard]] bool emitInt32NegationResult(CacheIRReader& reader) {\
++ Int32OperandId inputId = reader.int32OperandId();\
++ return emitInt32NegationResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitDoubleNegationResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitDoubleNegationResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitDoubleNegationResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitBigIntNegationResult(BigIntOperandId inputId);\
++[[nodiscard]] bool emitBigIntNegationResult(CacheIRReader& reader) {\
++ BigIntOperandId inputId = reader.bigIntOperandId();\
++ return emitBigIntNegationResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitInt32IncResult(Int32OperandId inputId);\
++[[nodiscard]] bool emitInt32IncResult(CacheIRReader& reader) {\
++ Int32OperandId inputId = reader.int32OperandId();\
++ return emitInt32IncResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitInt32DecResult(Int32OperandId inputId);\
++[[nodiscard]] bool emitInt32DecResult(CacheIRReader& reader) {\
++ Int32OperandId inputId = reader.int32OperandId();\
++ return emitInt32DecResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitDoubleIncResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitDoubleIncResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitDoubleIncResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitDoubleDecResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitDoubleDecResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitDoubleDecResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitBigIntIncResult(BigIntOperandId inputId);\
++[[nodiscard]] bool emitBigIntIncResult(CacheIRReader& reader) {\
++ BigIntOperandId inputId = reader.bigIntOperandId();\
++ return emitBigIntIncResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitBigIntDecResult(BigIntOperandId inputId);\
++[[nodiscard]] bool emitBigIntDecResult(CacheIRReader& reader) {\
++ BigIntOperandId inputId = reader.bigIntOperandId();\
++ return emitBigIntDecResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitLoadInt32TruthyResult(ValOperandId inputId);\
++[[nodiscard]] bool emitLoadInt32TruthyResult(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitLoadInt32TruthyResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitLoadDoubleTruthyResult(NumberOperandId inputId);\
++[[nodiscard]] bool emitLoadDoubleTruthyResult(CacheIRReader& reader) {\
++ NumberOperandId inputId = reader.numberOperandId();\
++ return emitLoadDoubleTruthyResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitLoadStringTruthyResult(StringOperandId strId);\
++[[nodiscard]] bool emitLoadStringTruthyResult(CacheIRReader& reader) {\
++ StringOperandId strId = reader.stringOperandId();\
++ return emitLoadStringTruthyResult(strId);\
++}\
++\
++[[nodiscard]] bool emitLoadObjectTruthyResult(ObjOperandId objId);\
++[[nodiscard]] bool emitLoadObjectTruthyResult(CacheIRReader& reader) {\
++ ObjOperandId objId = reader.objOperandId();\
++ return emitLoadObjectTruthyResult(objId);\
++}\
++\
++[[nodiscard]] bool emitLoadBigIntTruthyResult(BigIntOperandId bigIntId);\
++[[nodiscard]] bool emitLoadBigIntTruthyResult(CacheIRReader& reader) {\
++ BigIntOperandId bigIntId = reader.bigIntOperandId();\
++ return emitLoadBigIntTruthyResult(bigIntId);\
++}\
++\
++[[nodiscard]] bool emitLoadValueTruthyResult(ValOperandId inputId);\
++[[nodiscard]] bool emitLoadValueTruthyResult(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitLoadValueTruthyResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitLoadOperandResult(ValOperandId inputId);\
++[[nodiscard]] bool emitLoadOperandResult(CacheIRReader& reader) {\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitLoadOperandResult(inputId);\
++}\
++\
++[[nodiscard]] bool emitNewPlainObjectResult(uint32_t numFixedSlots, uint32_t numDynamicSlots, gc::AllocKind allocKind, uint32_t shapeOffset, uint32_t siteOffset);\
++[[nodiscard]] bool emitNewPlainObjectResult(CacheIRReader& reader) {\
++ uint32_t numFixedSlots = reader.uint32Immediate();\
++ uint32_t numDynamicSlots = reader.uint32Immediate();\
++ gc::AllocKind allocKind = reader.allocKind();\
++ uint32_t shapeOffset = reader.stubOffset();\
++ uint32_t siteOffset = reader.stubOffset();\
++ return emitNewPlainObjectResult(numFixedSlots, numDynamicSlots, allocKind, shapeOffset, siteOffset);\
++}\
++\
++[[nodiscard]] bool emitNewArrayObjectResult(uint32_t arrayLength, uint32_t shapeOffset, uint32_t siteOffset);\
++[[nodiscard]] bool emitNewArrayObjectResult(CacheIRReader& reader) {\
++ uint32_t arrayLength = reader.uint32Immediate();\
++ uint32_t shapeOffset = reader.stubOffset();\
++ uint32_t siteOffset = reader.stubOffset();\
++ return emitNewArrayObjectResult(arrayLength, shapeOffset, siteOffset);\
++}\
++\
++[[nodiscard]] bool emitCallStringConcatResult(StringOperandId lhsId, StringOperandId rhsId);\
++[[nodiscard]] bool emitCallStringConcatResult(CacheIRReader& reader) {\
++ StringOperandId lhsId = reader.stringOperandId();\
++ StringOperandId rhsId = reader.stringOperandId();\
++ return emitCallStringConcatResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCompareStringResult(JSOp op, StringOperandId lhsId, StringOperandId rhsId);\
++[[nodiscard]] bool emitCompareStringResult(CacheIRReader& reader) {\
++ JSOp op = reader.jsop();\
++ StringOperandId lhsId = reader.stringOperandId();\
++ StringOperandId rhsId = reader.stringOperandId();\
++ return emitCompareStringResult(op, lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCompareObjectResult(JSOp op, ObjOperandId lhsId, ObjOperandId rhsId);\
++[[nodiscard]] bool emitCompareObjectResult(CacheIRReader& reader) {\
++ JSOp op = reader.jsop();\
++ ObjOperandId lhsId = reader.objOperandId();\
++ ObjOperandId rhsId = reader.objOperandId();\
++ return emitCompareObjectResult(op, lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCompareSymbolResult(JSOp op, SymbolOperandId lhsId, SymbolOperandId rhsId);\
++[[nodiscard]] bool emitCompareSymbolResult(CacheIRReader& reader) {\
++ JSOp op = reader.jsop();\
++ SymbolOperandId lhsId = reader.symbolOperandId();\
++ SymbolOperandId rhsId = reader.symbolOperandId();\
++ return emitCompareSymbolResult(op, lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCompareInt32Result(JSOp op, Int32OperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitCompareInt32Result(CacheIRReader& reader) {\
++ JSOp op = reader.jsop();\
++ Int32OperandId lhsId = reader.int32OperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitCompareInt32Result(op, lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCompareDoubleResult(JSOp op, NumberOperandId lhsId, NumberOperandId rhsId);\
++[[nodiscard]] bool emitCompareDoubleResult(CacheIRReader& reader) {\
++ JSOp op = reader.jsop();\
++ NumberOperandId lhsId = reader.numberOperandId();\
++ NumberOperandId rhsId = reader.numberOperandId();\
++ return emitCompareDoubleResult(op, lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCompareBigIntResult(JSOp op, BigIntOperandId lhsId, BigIntOperandId rhsId);\
++[[nodiscard]] bool emitCompareBigIntResult(CacheIRReader& reader) {\
++ JSOp op = reader.jsop();\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ BigIntOperandId rhsId = reader.bigIntOperandId();\
++ return emitCompareBigIntResult(op, lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCompareBigIntInt32Result(JSOp op, BigIntOperandId lhsId, Int32OperandId rhsId);\
++[[nodiscard]] bool emitCompareBigIntInt32Result(CacheIRReader& reader) {\
++ JSOp op = reader.jsop();\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ Int32OperandId rhsId = reader.int32OperandId();\
++ return emitCompareBigIntInt32Result(op, lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCompareBigIntNumberResult(JSOp op, BigIntOperandId lhsId, NumberOperandId rhsId);\
++[[nodiscard]] bool emitCompareBigIntNumberResult(CacheIRReader& reader) {\
++ JSOp op = reader.jsop();\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ NumberOperandId rhsId = reader.numberOperandId();\
++ return emitCompareBigIntNumberResult(op, lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCompareBigIntStringResult(JSOp op, BigIntOperandId lhsId, StringOperandId rhsId);\
++[[nodiscard]] bool emitCompareBigIntStringResult(CacheIRReader& reader) {\
++ JSOp op = reader.jsop();\
++ BigIntOperandId lhsId = reader.bigIntOperandId();\
++ StringOperandId rhsId = reader.stringOperandId();\
++ return emitCompareBigIntStringResult(op, lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitCompareNullUndefinedResult(JSOp op, bool isUndefined, ValOperandId inputId);\
++[[nodiscard]] bool emitCompareNullUndefinedResult(CacheIRReader& reader) {\
++ JSOp op = reader.jsop();\
++ bool isUndefined = reader.readBool();\
++ ValOperandId inputId = reader.valOperandId();\
++ return emitCompareNullUndefinedResult(op, isUndefined, inputId);\
++}\
++\
++[[nodiscard]] bool emitCompareDoubleSameValueResult(NumberOperandId lhsId, NumberOperandId rhsId);\
++[[nodiscard]] bool emitCompareDoubleSameValueResult(CacheIRReader& reader) {\
++ NumberOperandId lhsId = reader.numberOperandId();\
++ NumberOperandId rhsId = reader.numberOperandId();\
++ return emitCompareDoubleSameValueResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitSameValueResult(ValOperandId lhsId, ValOperandId rhsId);\
++[[nodiscard]] bool emitSameValueResult(CacheIRReader& reader) {\
++ ValOperandId lhsId = reader.valOperandId();\
++ ValOperandId rhsId = reader.valOperandId();\
++ return emitSameValueResult(lhsId, rhsId);\
++}\
++\
++[[nodiscard]] bool emitIndirectTruncateInt32Result(Int32OperandId valId);\
++[[nodiscard]] bool emitIndirectTruncateInt32Result(CacheIRReader& reader) {\
++ Int32OperandId valId = reader.int32OperandId();\
++ return emitIndirectTruncateInt32Result(valId);\
++}\
++\
++[[nodiscard]] bool emitBigIntAsIntNResult(Int32OperandId bitsId, BigIntOperandId bigIntId);\
++[[nodiscard]] bool emitBigIntAsIntNResult(CacheIRReader& reader) {\
++ Int32OperandId bitsId = reader.int32OperandId();\
++ BigIntOperandId bigIntId = reader.bigIntOperandId();\
++ return emitBigIntAsIntNResult(bitsId, bigIntId);\
++}\
++\
++[[nodiscard]] bool emitBigIntAsUintNResult(Int32OperandId bitsId, BigIntOperandId bigIntId);\
++[[nodiscard]] bool emitBigIntAsUintNResult(CacheIRReader& reader) {\
++ Int32OperandId bitsId = reader.int32OperandId();\
++ BigIntOperandId bigIntId = reader.bigIntOperandId();\
++ return emitBigIntAsUintNResult(bitsId, bigIntId);\
++}\
++\
++[[nodiscard]] bool emitBailout();\
++[[nodiscard]] bool emitBailout(CacheIRReader& reader) {\
++ return emitBailout();\
++}\
++\
++[[nodiscard]] bool emitAssertRecoveredOnBailoutResult(ValOperandId valId, bool mustBeRecovered);\
++[[nodiscard]] bool emitAssertRecoveredOnBailoutResult(CacheIRReader& reader) {\
++ ValOperandId valId = reader.valOperandId();\
++ bool mustBeRecovered = reader.readBool();\
++ return emitAssertRecoveredOnBailoutResult(valId, mustBeRecovered);\
++}\
++
++
++#define CACHE_IR_TRANSPILER_OPS(_)\
++_(ReturnFromIC)\
++_(GuardToObject)\
++_(GuardIsNullOrUndefined)\
++_(GuardIsNull)\
++_(GuardIsUndefined)\
++_(GuardToBoolean)\
++_(GuardToString)\
++_(GuardToSymbol)\
++_(GuardToBigInt)\
++_(GuardIsNumber)\
++_(GuardToInt32)\
++_(GuardBooleanToInt32)\
++_(GuardToInt32Index)\
++_(Int32ToIntPtr)\
++_(GuardNumberToIntPtrIndex)\
++_(GuardToInt32ModUint32)\
++_(GuardToUint8Clamped)\
++_(GuardNonDoubleType)\
++_(GuardShape)\
++_(GuardProto)\
++_(GuardNullProto)\
++_(GuardClass)\
++_(GuardAnyClass)\
++_(HasClassResult)\
++_(CallRegExpMatcherResult)\
++_(CallRegExpSearcherResult)\
++_(CallRegExpTesterResult)\
++_(RegExpFlagResult)\
++_(CallSubstringKernelResult)\
++_(StringReplaceStringResult)\
++_(StringSplitStringResult)\
++_(RegExpPrototypeOptimizableResult)\
++_(RegExpInstanceOptimizableResult)\
++_(GetFirstDollarIndexResult)\
++_(GuardIsExtensible)\
++_(GuardIsNativeObject)\
++_(GuardIsProxy)\
++_(GuardIsNotProxy)\
++_(GuardIsNotArrayBufferMaybeShared)\
++_(GuardIsTypedArray)\
++_(GuardIsNotDOMProxy)\
++_(GuardSpecificObject)\
++_(GuardSpecificFunction)\
++_(GuardFunctionScript)\
++_(GuardSpecificAtom)\
++_(GuardSpecificSymbol)\
++_(GuardNoDenseElements)\
++_(GuardStringToIndex)\
++_(GuardStringToInt32)\
++_(GuardStringToNumber)\
++_(BooleanToNumber)\
++_(GuardHasGetterSetter)\
++_(GuardInt32IsNonNegative)\
++_(GuardIndexIsValidUpdateOrAdd)\
++_(GuardIndexGreaterThanDenseInitLength)\
++_(GuardTagNotEqual)\
++_(GuardDynamicSlotIsSpecificObject)\
++_(GuardFixedSlotValue)\
++_(GuardDynamicSlotValue)\
++_(GuardNoAllocationMetadataBuilder)\
++_(GuardFunctionHasJitEntry)\
++_(GuardFunctionHasNoJitEntry)\
++_(GuardFunctionIsNonBuiltinCtor)\
++_(GuardFunctionIsConstructor)\
++_(GuardNotClassConstructor)\
++_(GuardArrayIsPacked)\
++_(GuardArgumentsObjectFlags)\
++_(LoadObject)\
++_(LoadProto)\
++_(LoadEnclosingEnvironment)\
++_(LoadWrapperTarget)\
++_(LoadValueTag)\
++_(LoadArgumentFixedSlot)\
++_(LoadArgumentDynamicSlot)\
++_(TruncateDoubleToUInt32)\
++_(MegamorphicLoadSlotResult)\
++_(MegamorphicLoadSlotByValueResult)\
++_(MegamorphicStoreSlot)\
++_(MegamorphicSetElement)\
++_(MegamorphicHasPropResult)\
++_(LoadDOMExpandoValue)\
++_(LoadDOMExpandoValueGuardGeneration)\
++_(LoadDOMExpandoValueIgnoreGeneration)\
++_(GuardDOMExpandoMissingOrGuardShape)\
++_(StoreFixedSlot)\
++_(StoreDynamicSlot)\
++_(AddAndStoreFixedSlot)\
++_(AddAndStoreDynamicSlot)\
++_(AllocateAndStoreDynamicSlot)\
++_(StoreDenseElement)\
++_(StoreDenseElementHole)\
++_(ArrayPush)\
++_(ArrayJoinResult)\
++_(PackedArrayPopResult)\
++_(PackedArrayShiftResult)\
++_(PackedArraySliceResult)\
++_(IsArrayResult)\
++_(StoreFixedSlotUndefinedResult)\
++_(IsObjectResult)\
++_(IsPackedArrayResult)\
++_(IsCallableResult)\
++_(IsConstructorResult)\
++_(IsCrossRealmArrayConstructorResult)\
++_(IsTypedArrayResult)\
++_(IsTypedArrayConstructorResult)\
++_(ArrayBufferViewByteOffsetInt32Result)\
++_(ArrayBufferViewByteOffsetDoubleResult)\
++_(TypedArrayByteLengthInt32Result)\
++_(TypedArrayByteLengthDoubleResult)\
++_(TypedArrayElementSizeResult)\
++_(GuardHasAttachedArrayBuffer)\
++_(FinishBoundFunctionInitResult)\
++_(NewArrayIteratorResult)\
++_(NewStringIteratorResult)\
++_(NewRegExpStringIteratorResult)\
++_(ObjectCreateResult)\
++_(NewArrayFromLengthResult)\
++_(NewTypedArrayFromLengthResult)\
++_(NewTypedArrayFromArrayBufferResult)\
++_(NewTypedArrayFromArrayResult)\
++_(NewStringObjectResult)\
++_(StringFromCharCodeResult)\
++_(StringFromCodePointResult)\
++_(StringToLowerCaseResult)\
++_(StringToUpperCaseResult)\
++_(MathAbsInt32Result)\
++_(MathAbsNumberResult)\
++_(MathClz32Result)\
++_(MathSignInt32Result)\
++_(MathSignNumberResult)\
++_(MathSignNumberToInt32Result)\
++_(MathImulResult)\
++_(MathSqrtNumberResult)\
++_(MathFRoundNumberResult)\
++_(MathRandomResult)\
++_(MathHypot2NumberResult)\
++_(MathHypot3NumberResult)\
++_(MathHypot4NumberResult)\
++_(MathAtan2NumberResult)\
++_(MathFloorNumberResult)\
++_(MathCeilNumberResult)\
++_(MathTruncNumberResult)\
++_(MathFloorToInt32Result)\
++_(MathCeilToInt32Result)\
++_(MathTruncToInt32Result)\
++_(MathRoundToInt32Result)\
++_(Int32MinMax)\
++_(NumberMinMax)\
++_(Int32MinMaxArrayResult)\
++_(NumberMinMaxArrayResult)\
++_(MathFunctionNumberResult)\
++_(ObjectToStringResult)\
++_(ReflectGetPrototypeOfResult)\
++_(StoreTypedArrayElement)\
++_(AtomicsCompareExchangeResult)\
++_(AtomicsExchangeResult)\
++_(AtomicsAddResult)\
++_(AtomicsSubResult)\
++_(AtomicsAndResult)\
++_(AtomicsOrResult)\
++_(AtomicsXorResult)\
++_(AtomicsLoadResult)\
++_(AtomicsStoreResult)\
++_(AtomicsIsLockFreeResult)\
++_(CallNativeSetter)\
++_(CallScriptedSetter)\
++_(CallInlinedSetter)\
++_(CallDOMSetter)\
++_(CallSetArrayLength)\
++_(ProxySet)\
++_(ProxySetByValue)\
++_(CallAddOrUpdateSparseElementHelper)\
++_(CallInt32ToString)\
++_(CallNumberToString)\
++_(BooleanToString)\
++_(CallScriptedFunction)\
++_(CallWasmFunction)\
++_(GuardWasmArg)\
++_(CallNativeFunction)\
++_(CallDOMFunction)\
++_(CallInlinedFunction)\
++_(MetaTwoByte)\
++_(LoadFixedSlotResult)\
++_(LoadFixedSlotTypedResult)\
++_(LoadDynamicSlotResult)\
++_(LoadDenseElementResult)\
++_(LoadDenseElementHoleResult)\
++_(CallGetSparseElementResult)\
++_(LoadDenseElementExistsResult)\
++_(LoadTypedArrayElementExistsResult)\
++_(LoadDenseElementHoleExistsResult)\
++_(LoadTypedArrayElementResult)\
++_(LoadDataViewValueResult)\
++_(StoreDataViewValueResult)\
++_(LoadInt32ArrayLengthResult)\
++_(LoadInt32ArrayLength)\
++_(LoadArgumentsObjectArgResult)\
++_(LoadArgumentsObjectLengthResult)\
++_(LoadFunctionLengthResult)\
++_(LoadFunctionNameResult)\
++_(LoadArrayBufferByteLengthInt32Result)\
++_(LoadArrayBufferByteLengthDoubleResult)\
++_(LoadArrayBufferViewLengthInt32Result)\
++_(LoadArrayBufferViewLengthDoubleResult)\
++_(LoadStringCharResult)\
++_(LoadStringCharCodeResult)\
++_(LoadStringLengthResult)\
++_(FrameIsConstructingResult)\
++_(LoadEnvironmentFixedSlotResult)\
++_(LoadEnvironmentDynamicSlotResult)\
++_(LoadObjectResult)\
++_(LoadStringResult)\
++_(LoadSymbolResult)\
++_(LoadInt32Result)\
++_(LoadDoubleResult)\
++_(LoadBigIntResult)\
++_(CallScriptedGetterResult)\
++_(CallInlinedGetterResult)\
++_(CallNativeGetterResult)\
++_(CallDOMGetterResult)\
++_(ProxyGetResult)\
++_(ProxyGetByValueResult)\
++_(ProxyHasPropResult)\
++_(CallObjectHasSparseElementResult)\
++_(CallNativeGetElementResult)\
++_(GetNextMapSetEntryForIteratorResult)\
++_(LoadUndefinedResult)\
++_(LoadBooleanResult)\
++_(LoadInt32Constant)\
++_(LoadBooleanConstant)\
++_(LoadUndefined)\
++_(LoadConstantString)\
++_(LoadConstantStringResult)\
++_(LoadInstanceOfObjectResult)\
++_(LoadTypeOfObjectResult)\
++_(DoubleAddResult)\
++_(DoubleSubResult)\
++_(DoubleMulResult)\
++_(DoubleDivResult)\
++_(DoubleModResult)\
++_(DoublePowResult)\
++_(Int32AddResult)\
++_(Int32SubResult)\
++_(Int32MulResult)\
++_(Int32DivResult)\
++_(Int32ModResult)\
++_(Int32PowResult)\
++_(BigIntAddResult)\
++_(BigIntSubResult)\
++_(BigIntMulResult)\
++_(BigIntDivResult)\
++_(BigIntModResult)\
++_(BigIntPowResult)\
++_(Int32BitOrResult)\
++_(Int32BitXorResult)\
++_(Int32BitAndResult)\
++_(Int32LeftShiftResult)\
++_(Int32RightShiftResult)\
++_(Int32URightShiftResult)\
++_(Int32NotResult)\
++_(BigIntBitOrResult)\
++_(BigIntBitXorResult)\
++_(BigIntBitAndResult)\
++_(BigIntLeftShiftResult)\
++_(BigIntRightShiftResult)\
++_(BigIntNotResult)\
++_(Int32NegationResult)\
++_(DoubleNegationResult)\
++_(BigIntNegationResult)\
++_(Int32IncResult)\
++_(Int32DecResult)\
++_(DoubleIncResult)\
++_(DoubleDecResult)\
++_(BigIntIncResult)\
++_(BigIntDecResult)\
++_(LoadInt32TruthyResult)\
++_(LoadDoubleTruthyResult)\
++_(LoadStringTruthyResult)\
++_(LoadObjectTruthyResult)\
++_(LoadBigIntTruthyResult)\
++_(LoadValueTruthyResult)\
++_(LoadOperandResult)\
++_(NewPlainObjectResult)\
++_(NewArrayObjectResult)\
++_(CallStringConcatResult)\
++_(CompareStringResult)\
++_(CompareObjectResult)\
++_(CompareSymbolResult)\
++_(CompareInt32Result)\
++_(CompareDoubleResult)\
++_(CompareBigIntResult)\
++_(CompareBigIntInt32Result)\
++_(CompareBigIntNumberResult)\
++_(CompareBigIntStringResult)\
++_(CompareNullUndefinedResult)\
++_(CompareDoubleSameValueResult)\
++_(SameValueResult)\
++_(IndirectTruncateInt32Result)\
++_(BigIntAsIntNResult)\
++_(BigIntAsUintNResult)\
++_(Bailout)\
++_(AssertRecoveredOnBailoutResult)
++
++#define CACHE_IR_SPEWER_GENERATED \
++void spewReturnFromIC(CacheIRReader& reader) {\
++ spewOp(CacheOp::ReturnFromIC);\
++ spewOpEnd();\
++}\
++\
++void spewGuardToObject(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardToObject);\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardIsNullOrUndefined(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardIsNullOrUndefined);\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardIsNull(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardIsNull);\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardIsUndefined(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardIsUndefined);\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardToBoolean(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardToBoolean);\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardToString(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardToString);\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardToSymbol(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardToSymbol);\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardToBigInt(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardToBigInt);\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardIsNumber(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardIsNumber);\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardToInt32(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardToInt32);\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardBooleanToInt32(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardBooleanToInt32);\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardToInt32Index(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardToInt32Index);\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewInt32ToIntPtr(CacheIRReader& reader) {\
++ spewOp(CacheOp::Int32ToIntPtr);\
++ spewOperandId("inputId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.intPtrOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardNumberToIntPtrIndex(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardNumberToIntPtrIndex);\
++ spewOperandId("inputId", reader.numberOperandId());\
++ spewArgSeparator();\
++ spewBoolImm("supportOOB", reader.readBool());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.intPtrOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardToInt32ModUint32(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardToInt32ModUint32);\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardToUint8Clamped(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardToUint8Clamped);\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardNonDoubleType(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardNonDoubleType);\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewValueTypeImm("type", reader.valueType());\
++ spewOpEnd();\
++}\
++\
++void spewGuardShape(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardShape);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("shapeOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewGuardProto(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardProto);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("protoOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewGuardNullProto(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardNullProto);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardClass(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardClass);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewGuardClassKindImm("kind", reader.guardClassKind());\
++ spewOpEnd();\
++}\
++\
++void spewGuardAnyClass(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardAnyClass);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("claspOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewHasClassResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::HasClassResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("claspOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewCallRegExpMatcherResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallRegExpMatcherResult);\
++ spewOperandId("regexpId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("inputId", reader.stringOperandId());\
++ spewArgSeparator();\
++ spewOperandId("lastIndexId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCallRegExpSearcherResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallRegExpSearcherResult);\
++ spewOperandId("regexpId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("inputId", reader.stringOperandId());\
++ spewArgSeparator();\
++ spewOperandId("lastIndexId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCallRegExpTesterResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallRegExpTesterResult);\
++ spewOperandId("regexpId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("inputId", reader.stringOperandId());\
++ spewArgSeparator();\
++ spewOperandId("lastIndexId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewRegExpFlagResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::RegExpFlagResult);\
++ spewOperandId("regexpId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewInt32Imm("flagsMask", reader.int32Immediate());\
++ spewOpEnd();\
++}\
++\
++void spewCallSubstringKernelResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallSubstringKernelResult);\
++ spewOperandId("strId", reader.stringOperandId());\
++ spewArgSeparator();\
++ spewOperandId("beginId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("lengthId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewStringReplaceStringResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::StringReplaceStringResult);\
++ spewOperandId("strId", reader.stringOperandId());\
++ spewArgSeparator();\
++ spewOperandId("patternId", reader.stringOperandId());\
++ spewArgSeparator();\
++ spewOperandId("replacementId", reader.stringOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewStringSplitStringResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::StringSplitStringResult);\
++ spewOperandId("strId", reader.stringOperandId());\
++ spewArgSeparator();\
++ spewOperandId("separatorId", reader.stringOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewRegExpPrototypeOptimizableResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::RegExpPrototypeOptimizableResult);\
++ spewOperandId("protoId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewRegExpInstanceOptimizableResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::RegExpInstanceOptimizableResult);\
++ spewOperandId("regexpId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("protoId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGetFirstDollarIndexResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::GetFirstDollarIndexResult);\
++ spewOperandId("strId", reader.stringOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardCompartment(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardCompartment);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("globalOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewField("compartmentOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewGuardIsExtensible(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardIsExtensible);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardIsNativeObject(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardIsNativeObject);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardIsProxy(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardIsProxy);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardIsNotProxy(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardIsNotProxy);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardIsNotArrayBufferMaybeShared(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardIsNotArrayBufferMaybeShared);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardIsTypedArray(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardIsTypedArray);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardHasProxyHandler(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardHasProxyHandler);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("handlerOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewGuardIsNotDOMProxy(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardIsNotDOMProxy);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardSpecificObject(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardSpecificObject);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("expectedOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewGuardSpecificFunction(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardSpecificFunction);\
++ spewOperandId("funId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("expectedOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewField("nargsAndFlagsOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewGuardFunctionScript(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardFunctionScript);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("expectedOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewField("nargsAndFlagsOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewGuardSpecificAtom(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardSpecificAtom);\
++ spewOperandId("strId", reader.stringOperandId());\
++ spewArgSeparator();\
++ spewField("expectedOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewGuardSpecificSymbol(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardSpecificSymbol);\
++ spewOperandId("symId", reader.symbolOperandId());\
++ spewArgSeparator();\
++ spewField("expectedOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewGuardNoDenseElements(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardNoDenseElements);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardStringToIndex(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardStringToIndex);\
++ spewOperandId("strId", reader.stringOperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardStringToInt32(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardStringToInt32);\
++ spewOperandId("strId", reader.stringOperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardStringToNumber(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardStringToNumber);\
++ spewOperandId("strId", reader.stringOperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewBooleanToNumber(CacheIRReader& reader) {\
++ spewOp(CacheOp::BooleanToNumber);\
++ spewOperandId("booleanId", reader.booleanOperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardAndGetIterator(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardAndGetIterator);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("iterOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewField("enumeratorsAddrOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardHasGetterSetter(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardHasGetterSetter);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("idOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewField("getterSetterOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewGuardInt32IsNonNegative(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardInt32IsNonNegative);\
++ spewOperandId("indexId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardIndexIsValidUpdateOrAdd(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardIndexIsValidUpdateOrAdd);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardIndexGreaterThanDenseInitLength(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardIndexGreaterThanDenseInitLength);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardTagNotEqual(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardTagNotEqual);\
++ spewOperandId("lhsId", reader.valueTagOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valueTagOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardXrayExpandoShapeAndDefaultProto(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardXrayExpandoShapeAndDefaultProto);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("shapeWrapperOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewGuardXrayNoExpando(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardXrayNoExpando);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardDynamicSlotIsSpecificObject(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardDynamicSlotIsSpecificObject);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("expectedId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("slotOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewGuardFixedSlotValue(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardFixedSlotValue);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("offsetOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewField("valOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewGuardDynamicSlotValue(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardDynamicSlotValue);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("offsetOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewField("valOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewGuardNoAllocationMetadataBuilder(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardNoAllocationMetadataBuilder);\
++ spewField("builderAddrOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewGuardFunctionHasJitEntry(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardFunctionHasJitEntry);\
++ spewOperandId("funId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewBoolImm("constructing", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewGuardFunctionHasNoJitEntry(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardFunctionHasNoJitEntry);\
++ spewOperandId("funId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardFunctionIsNonBuiltinCtor(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardFunctionIsNonBuiltinCtor);\
++ spewOperandId("funId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardFunctionIsConstructor(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardFunctionIsConstructor);\
++ spewOperandId("funId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardNotClassConstructor(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardNotClassConstructor);\
++ spewOperandId("funId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardArrayIsPacked(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardArrayIsPacked);\
++ spewOperandId("arrayId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardArgumentsObjectFlags(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardArgumentsObjectFlags);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewByteImm("flags", reader.readByte());\
++ spewOpEnd();\
++}\
++\
++void spewLoadObject(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadObject);\
++ spewOperandId("resultId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("objOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewLoadProto(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadProto);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadEnclosingEnvironment(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadEnclosingEnvironment);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadWrapperTarget(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadWrapperTarget);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadValueTag(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadValueTag);\
++ spewOperandId("valId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.valueTagOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadArgumentFixedSlot(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadArgumentFixedSlot);\
++ spewOperandId("resultId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewByteImm("slotIndex", reader.readByte());\
++ spewOpEnd();\
++}\
++\
++void spewLoadArgumentDynamicSlot(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadArgumentDynamicSlot);\
++ spewOperandId("resultId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewOperandId("argcId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewByteImm("slotIndex", reader.readByte());\
++ spewOpEnd();\
++}\
++\
++void spewTruncateDoubleToUInt32(CacheIRReader& reader) {\
++ spewOp(CacheOp::TruncateDoubleToUInt32);\
++ spewOperandId("inputId", reader.numberOperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMegamorphicLoadSlotResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::MegamorphicLoadSlotResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("nameOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewMegamorphicLoadSlotByValueResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::MegamorphicLoadSlotByValueResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("idId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMegamorphicStoreSlot(CacheIRReader& reader) {\
++ spewOp(CacheOp::MegamorphicStoreSlot);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("nameOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMegamorphicSetElement(CacheIRReader& reader) {\
++ spewOp(CacheOp::MegamorphicSetElement);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("idId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewBoolImm("strict", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewMegamorphicHasPropResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::MegamorphicHasPropResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("idId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewBoolImm("hasOwn", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewLoadDOMExpandoValue(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadDOMExpandoValue);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadDOMExpandoValueGuardGeneration(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadDOMExpandoValueGuardGeneration);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("expandoAndGenerationOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewField("generationOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadDOMExpandoValueIgnoreGeneration(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadDOMExpandoValueIgnoreGeneration);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardDOMExpandoMissingOrGuardShape(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardDOMExpandoMissingOrGuardShape);\
++ spewOperandId("expandoId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewField("shapeOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewStoreFixedSlot(CacheIRReader& reader) {\
++ spewOp(CacheOp::StoreFixedSlot);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("offsetOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewStoreDynamicSlot(CacheIRReader& reader) {\
++ spewOp(CacheOp::StoreDynamicSlot);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("offsetOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewAddAndStoreFixedSlot(CacheIRReader& reader) {\
++ spewOp(CacheOp::AddAndStoreFixedSlot);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("offsetOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewField("newShapeOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewAddAndStoreDynamicSlot(CacheIRReader& reader) {\
++ spewOp(CacheOp::AddAndStoreDynamicSlot);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("offsetOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewField("newShapeOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewAllocateAndStoreDynamicSlot(CacheIRReader& reader) {\
++ spewOp(CacheOp::AllocateAndStoreDynamicSlot);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("offsetOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewField("newShapeOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewField("numNewSlotsOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewStoreDenseElement(CacheIRReader& reader) {\
++ spewOp(CacheOp::StoreDenseElement);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewStoreDenseElementHole(CacheIRReader& reader) {\
++ spewOp(CacheOp::StoreDenseElementHole);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewBoolImm("handleAdd", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewArrayPush(CacheIRReader& reader) {\
++ spewOp(CacheOp::ArrayPush);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewArrayJoinResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::ArrayJoinResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("sepId", reader.stringOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewPackedArrayPopResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::PackedArrayPopResult);\
++ spewOperandId("arrayId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewPackedArrayShiftResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::PackedArrayShiftResult);\
++ spewOperandId("arrayId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewPackedArraySliceResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::PackedArraySliceResult);\
++ spewField("templateObjectOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("arrayId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("beginId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("endId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewIsArrayResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::IsArrayResult);\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewStoreFixedSlotUndefinedResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::StoreFixedSlotUndefinedResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("offsetOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewIsObjectResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::IsObjectResult);\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewIsPackedArrayResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::IsPackedArrayResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewIsCallableResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::IsCallableResult);\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewIsConstructorResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::IsConstructorResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewIsCrossRealmArrayConstructorResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::IsCrossRealmArrayConstructorResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewIsTypedArrayResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::IsTypedArrayResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewBoolImm("isPossiblyWrapped", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewIsTypedArrayConstructorResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::IsTypedArrayConstructorResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewArrayBufferViewByteOffsetInt32Result(CacheIRReader& reader) {\
++ spewOp(CacheOp::ArrayBufferViewByteOffsetInt32Result);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewArrayBufferViewByteOffsetDoubleResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::ArrayBufferViewByteOffsetDoubleResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewTypedArrayByteLengthInt32Result(CacheIRReader& reader) {\
++ spewOp(CacheOp::TypedArrayByteLengthInt32Result);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewTypedArrayByteLengthDoubleResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::TypedArrayByteLengthDoubleResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewTypedArrayElementSizeResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::TypedArrayElementSizeResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGuardHasAttachedArrayBuffer(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardHasAttachedArrayBuffer);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewFinishBoundFunctionInitResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::FinishBoundFunctionInitResult);\
++ spewOperandId("boundId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("targetId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("argCountId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewNewArrayIteratorResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::NewArrayIteratorResult);\
++ spewField("templateObjectOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewNewStringIteratorResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::NewStringIteratorResult);\
++ spewField("templateObjectOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewNewRegExpStringIteratorResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::NewRegExpStringIteratorResult);\
++ spewField("templateObjectOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewObjectCreateResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::ObjectCreateResult);\
++ spewField("templateObjectOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewNewArrayFromLengthResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::NewArrayFromLengthResult);\
++ spewField("templateObjectOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("lengthId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewNewTypedArrayFromLengthResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::NewTypedArrayFromLengthResult);\
++ spewField("templateObjectOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("lengthId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewNewTypedArrayFromArrayBufferResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::NewTypedArrayFromArrayBufferResult);\
++ spewField("templateObjectOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("bufferId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("byteOffsetId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewOperandId("lengthId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewNewTypedArrayFromArrayResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::NewTypedArrayFromArrayResult);\
++ spewField("templateObjectOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("arrayId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewNewStringObjectResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::NewStringObjectResult);\
++ spewField("templateObjectOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("strId", reader.stringOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewStringFromCharCodeResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::StringFromCharCodeResult);\
++ spewOperandId("codeId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewStringFromCodePointResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::StringFromCodePointResult);\
++ spewOperandId("codeId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewStringToLowerCaseResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::StringToLowerCaseResult);\
++ spewOperandId("strId", reader.stringOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewStringToUpperCaseResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::StringToUpperCaseResult);\
++ spewOperandId("strId", reader.stringOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMathAbsInt32Result(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathAbsInt32Result);\
++ spewOperandId("inputId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMathAbsNumberResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathAbsNumberResult);\
++ spewOperandId("inputId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMathClz32Result(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathClz32Result);\
++ spewOperandId("inputId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMathSignInt32Result(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathSignInt32Result);\
++ spewOperandId("inputId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMathSignNumberResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathSignNumberResult);\
++ spewOperandId("inputId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMathSignNumberToInt32Result(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathSignNumberToInt32Result);\
++ spewOperandId("inputId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMathImulResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathImulResult);\
++ spewOperandId("lhsId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMathSqrtNumberResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathSqrtNumberResult);\
++ spewOperandId("inputId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMathFRoundNumberResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathFRoundNumberResult);\
++ spewOperandId("inputId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMathRandomResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathRandomResult);\
++ spewField("rngOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewMathHypot2NumberResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathHypot2NumberResult);\
++ spewOperandId("firstId", reader.numberOperandId());\
++ spewArgSeparator();\
++ spewOperandId("secondId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMathHypot3NumberResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathHypot3NumberResult);\
++ spewOperandId("firstId", reader.numberOperandId());\
++ spewArgSeparator();\
++ spewOperandId("secondId", reader.numberOperandId());\
++ spewArgSeparator();\
++ spewOperandId("thirdId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMathHypot4NumberResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathHypot4NumberResult);\
++ spewOperandId("firstId", reader.numberOperandId());\
++ spewArgSeparator();\
++ spewOperandId("secondId", reader.numberOperandId());\
++ spewArgSeparator();\
++ spewOperandId("thirdId", reader.numberOperandId());\
++ spewArgSeparator();\
++ spewOperandId("fourthId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMathAtan2NumberResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathAtan2NumberResult);\
++ spewOperandId("lhsId", reader.numberOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMathFloorNumberResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathFloorNumberResult);\
++ spewOperandId("inputId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMathCeilNumberResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathCeilNumberResult);\
++ spewOperandId("inputId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMathTruncNumberResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathTruncNumberResult);\
++ spewOperandId("inputId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMathFloorToInt32Result(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathFloorToInt32Result);\
++ spewOperandId("inputId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMathCeilToInt32Result(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathCeilToInt32Result);\
++ spewOperandId("inputId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMathTruncToInt32Result(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathTruncToInt32Result);\
++ spewOperandId("inputId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewMathRoundToInt32Result(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathRoundToInt32Result);\
++ spewOperandId("inputId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewInt32MinMax(CacheIRReader& reader) {\
++ spewOp(CacheOp::Int32MinMax);\
++ spewBoolImm("isMax", reader.readBool());\
++ spewArgSeparator();\
++ spewOperandId("firstId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("secondId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewNumberMinMax(CacheIRReader& reader) {\
++ spewOp(CacheOp::NumberMinMax);\
++ spewBoolImm("isMax", reader.readBool());\
++ spewArgSeparator();\
++ spewOperandId("firstId", reader.numberOperandId());\
++ spewArgSeparator();\
++ spewOperandId("secondId", reader.numberOperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewInt32MinMaxArrayResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::Int32MinMaxArrayResult);\
++ spewOperandId("arrayId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewBoolImm("isMax", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewNumberMinMaxArrayResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::NumberMinMaxArrayResult);\
++ spewOperandId("arrayId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewBoolImm("isMax", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewMathFunctionNumberResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::MathFunctionNumberResult);\
++ spewOperandId("inputId", reader.numberOperandId());\
++ spewArgSeparator();\
++ spewUnaryMathFunctionImm("fun", reader.unaryMathFunction());\
++ spewOpEnd();\
++}\
++\
++void spewObjectToStringResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::ObjectToStringResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewReflectGetPrototypeOfResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::ReflectGetPrototypeOfResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewStoreTypedArrayElement(CacheIRReader& reader) {\
++ spewOp(CacheOp::StoreTypedArrayElement);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewScalarTypeImm("elementType", reader.scalarType());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.intPtrOperandId());\
++ spewArgSeparator();\
++ spewRawOperandId("rhsId", reader.rawOperandId());\
++ spewArgSeparator();\
++ spewBoolImm("handleOOB", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewAtomicsCompareExchangeResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::AtomicsCompareExchangeResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.intPtrOperandId());\
++ spewArgSeparator();\
++ spewRawOperandId("expectedId", reader.rawOperandId());\
++ spewArgSeparator();\
++ spewRawOperandId("replacementId", reader.rawOperandId());\
++ spewArgSeparator();\
++ spewScalarTypeImm("elementType", reader.scalarType());\
++ spewOpEnd();\
++}\
++\
++void spewAtomicsExchangeResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::AtomicsExchangeResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.intPtrOperandId());\
++ spewArgSeparator();\
++ spewRawOperandId("valueId", reader.rawOperandId());\
++ spewArgSeparator();\
++ spewScalarTypeImm("elementType", reader.scalarType());\
++ spewOpEnd();\
++}\
++\
++void spewAtomicsAddResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::AtomicsAddResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.intPtrOperandId());\
++ spewArgSeparator();\
++ spewRawOperandId("valueId", reader.rawOperandId());\
++ spewArgSeparator();\
++ spewScalarTypeImm("elementType", reader.scalarType());\
++ spewArgSeparator();\
++ spewBoolImm("forEffect", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewAtomicsSubResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::AtomicsSubResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.intPtrOperandId());\
++ spewArgSeparator();\
++ spewRawOperandId("valueId", reader.rawOperandId());\
++ spewArgSeparator();\
++ spewScalarTypeImm("elementType", reader.scalarType());\
++ spewArgSeparator();\
++ spewBoolImm("forEffect", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewAtomicsAndResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::AtomicsAndResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.intPtrOperandId());\
++ spewArgSeparator();\
++ spewRawOperandId("valueId", reader.rawOperandId());\
++ spewArgSeparator();\
++ spewScalarTypeImm("elementType", reader.scalarType());\
++ spewArgSeparator();\
++ spewBoolImm("forEffect", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewAtomicsOrResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::AtomicsOrResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.intPtrOperandId());\
++ spewArgSeparator();\
++ spewRawOperandId("valueId", reader.rawOperandId());\
++ spewArgSeparator();\
++ spewScalarTypeImm("elementType", reader.scalarType());\
++ spewArgSeparator();\
++ spewBoolImm("forEffect", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewAtomicsXorResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::AtomicsXorResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.intPtrOperandId());\
++ spewArgSeparator();\
++ spewRawOperandId("valueId", reader.rawOperandId());\
++ spewArgSeparator();\
++ spewScalarTypeImm("elementType", reader.scalarType());\
++ spewArgSeparator();\
++ spewBoolImm("forEffect", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewAtomicsLoadResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::AtomicsLoadResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.intPtrOperandId());\
++ spewArgSeparator();\
++ spewScalarTypeImm("elementType", reader.scalarType());\
++ spewOpEnd();\
++}\
++\
++void spewAtomicsStoreResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::AtomicsStoreResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.intPtrOperandId());\
++ spewArgSeparator();\
++ spewRawOperandId("valueId", reader.rawOperandId());\
++ spewArgSeparator();\
++ spewScalarTypeImm("elementType", reader.scalarType());\
++ spewOpEnd();\
++}\
++\
++void spewAtomicsIsLockFreeResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::AtomicsIsLockFreeResult);\
++ spewOperandId("valueId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCallNativeSetter(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallNativeSetter);\
++ spewOperandId("receiverId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("setterOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewBoolImm("sameRealm", reader.readBool());\
++ spewArgSeparator();\
++ spewField("nargsAndFlagsOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewCallScriptedSetter(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallScriptedSetter);\
++ spewOperandId("receiverId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("setterOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewBoolImm("sameRealm", reader.readBool());\
++ spewArgSeparator();\
++ spewField("nargsAndFlagsOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewCallInlinedSetter(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallInlinedSetter);\
++ spewOperandId("receiverId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("setterOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewField("icScriptOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewBoolImm("sameRealm", reader.readBool());\
++ spewArgSeparator();\
++ spewField("nargsAndFlagsOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewCallDOMSetter(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallDOMSetter);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("jitInfoOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCallSetArrayLength(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallSetArrayLength);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewBoolImm("strict", reader.readBool());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewProxySet(CacheIRReader& reader) {\
++ spewOp(CacheOp::ProxySet);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("idOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewBoolImm("strict", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewProxySetByValue(CacheIRReader& reader) {\
++ spewOp(CacheOp::ProxySetByValue);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("idId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewBoolImm("strict", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewCallAddOrUpdateSparseElementHelper(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallAddOrUpdateSparseElementHelper);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("idId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewBoolImm("strict", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewCallInt32ToString(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallInt32ToString);\
++ spewOperandId("inputId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.stringOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCallNumberToString(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallNumberToString);\
++ spewOperandId("inputId", reader.numberOperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.stringOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewBooleanToString(CacheIRReader& reader) {\
++ spewOp(CacheOp::BooleanToString);\
++ spewOperandId("inputId", reader.booleanOperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.stringOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCallScriptedFunction(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallScriptedFunction);\
++ spewOperandId("calleeId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("argcId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewCallFlagsImm("flags", reader.callFlags());\
++ spewOpEnd();\
++}\
++\
++void spewCallWasmFunction(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallWasmFunction);\
++ spewOperandId("calleeId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("argcId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewCallFlagsImm("flags", reader.callFlags());\
++ spewArgSeparator();\
++ spewField("funcExportOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewField("instanceOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewGuardWasmArg(CacheIRReader& reader) {\
++ spewOp(CacheOp::GuardWasmArg);\
++ spewOperandId("argId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewWasmValTypeImm("type", reader.wasmValType());\
++ spewOpEnd();\
++}\
++\
++void spewCallNativeFunction(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallNativeFunction);\
++ spewOperandId("calleeId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("argcId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewCallFlagsImm("flags", reader.callFlags());\
++ spewArgSeparator();\
++ spewBoolImm("ignoresReturnValue", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewCallDOMFunction(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallDOMFunction);\
++ spewOperandId("calleeId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("argcId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("thisObjId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewCallFlagsImm("flags", reader.callFlags());\
++ spewOpEnd();\
++}\
++\
++void spewCallClassHook(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallClassHook);\
++ spewOperandId("calleeId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("argcId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewCallFlagsImm("flags", reader.callFlags());\
++ spewArgSeparator();\
++ spewField("targetOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewCallInlinedFunction(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallInlinedFunction);\
++ spewOperandId("calleeId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("argcId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewField("icScriptOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewCallFlagsImm("flags", reader.callFlags());\
++ spewOpEnd();\
++}\
++\
++void spewMetaTwoByte(CacheIRReader& reader) {\
++ spewOp(CacheOp::MetaTwoByte);\
++ spewField("functionObjectOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewField("templateObjectOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewLoadFixedSlotResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadFixedSlotResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("offsetOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewLoadFixedSlotTypedResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadFixedSlotTypedResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("offsetOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewValueTypeImm("type", reader.valueType());\
++ spewOpEnd();\
++}\
++\
++void spewLoadDynamicSlotResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadDynamicSlotResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("offsetOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewLoadDenseElementResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadDenseElementResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadDenseElementHoleResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadDenseElementHoleResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCallGetSparseElementResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallGetSparseElementResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadDenseElementExistsResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadDenseElementExistsResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadTypedArrayElementExistsResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadTypedArrayElementExistsResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.intPtrOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadDenseElementHoleExistsResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadDenseElementHoleExistsResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadTypedArrayElementResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadTypedArrayElementResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.intPtrOperandId());\
++ spewArgSeparator();\
++ spewScalarTypeImm("elementType", reader.scalarType());\
++ spewArgSeparator();\
++ spewBoolImm("handleOOB", reader.readBool());\
++ spewArgSeparator();\
++ spewBoolImm("forceDoubleForUint32", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewLoadDataViewValueResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadDataViewValueResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("offsetId", reader.intPtrOperandId());\
++ spewArgSeparator();\
++ spewOperandId("littleEndianId", reader.booleanOperandId());\
++ spewArgSeparator();\
++ spewScalarTypeImm("elementType", reader.scalarType());\
++ spewArgSeparator();\
++ spewBoolImm("forceDoubleForUint32", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewStoreDataViewValueResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::StoreDataViewValueResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("offsetId", reader.intPtrOperandId());\
++ spewArgSeparator();\
++ spewRawOperandId("valueId", reader.rawOperandId());\
++ spewArgSeparator();\
++ spewOperandId("littleEndianId", reader.booleanOperandId());\
++ spewArgSeparator();\
++ spewScalarTypeImm("elementType", reader.scalarType());\
++ spewOpEnd();\
++}\
++\
++void spewLoadInt32ArrayLengthResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadInt32ArrayLengthResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadInt32ArrayLength(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadInt32ArrayLength);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadArgumentsObjectArgResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadArgumentsObjectArgResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadArgumentsObjectLengthResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadArgumentsObjectLengthResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadFunctionLengthResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadFunctionLengthResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadFunctionNameResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadFunctionNameResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadArrayBufferByteLengthInt32Result(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadArrayBufferByteLengthInt32Result);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadArrayBufferByteLengthDoubleResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadArrayBufferByteLengthDoubleResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadArrayBufferViewLengthInt32Result(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadArrayBufferViewLengthInt32Result);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadArrayBufferViewLengthDoubleResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadArrayBufferViewLengthDoubleResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadStringCharResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadStringCharResult);\
++ spewOperandId("strId", reader.stringOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadStringCharCodeResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadStringCharCodeResult);\
++ spewOperandId("strId", reader.stringOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadStringLengthResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadStringLengthResult);\
++ spewOperandId("strId", reader.stringOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewFrameIsConstructingResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::FrameIsConstructingResult);\
++ spewOpEnd();\
++}\
++\
++void spewLoadEnvironmentFixedSlotResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadEnvironmentFixedSlotResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("offsetOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewLoadEnvironmentDynamicSlotResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadEnvironmentDynamicSlotResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("offsetOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewLoadObjectResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadObjectResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadStringResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadStringResult);\
++ spewOperandId("strId", reader.stringOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadSymbolResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadSymbolResult);\
++ spewOperandId("symId", reader.symbolOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadInt32Result(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadInt32Result);\
++ spewOperandId("valId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadDoubleResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadDoubleResult);\
++ spewOperandId("valId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadBigIntResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadBigIntResult);\
++ spewOperandId("valId", reader.bigIntOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCallScriptedGetterResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallScriptedGetterResult);\
++ spewOperandId("receiverId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewField("getterOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewBoolImm("sameRealm", reader.readBool());\
++ spewArgSeparator();\
++ spewField("nargsAndFlagsOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewCallInlinedGetterResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallInlinedGetterResult);\
++ spewOperandId("receiverId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewField("getterOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewField("icScriptOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewBoolImm("sameRealm", reader.readBool());\
++ spewArgSeparator();\
++ spewField("nargsAndFlagsOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewCallNativeGetterResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallNativeGetterResult);\
++ spewOperandId("receiverId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewField("getterOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewBoolImm("sameRealm", reader.readBool());\
++ spewArgSeparator();\
++ spewField("nargsAndFlagsOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewCallDOMGetterResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallDOMGetterResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("jitInfoOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewProxyGetResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::ProxyGetResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewField("idOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewProxyGetByValueResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::ProxyGetByValueResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("idId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewProxyHasPropResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::ProxyHasPropResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("idId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewBoolImm("hasOwn", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewCallObjectHasSparseElementResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallObjectHasSparseElementResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCallNativeGetElementResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallNativeGetElementResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("indexId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewGetNextMapSetEntryForIteratorResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::GetNextMapSetEntryForIteratorResult);\
++ spewOperandId("iterId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("resultArrId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewBoolImm("isMap", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewLoadUndefinedResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadUndefinedResult);\
++ spewOpEnd();\
++}\
++\
++void spewLoadBooleanResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadBooleanResult);\
++ spewBoolImm("val", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewLoadInt32Constant(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadInt32Constant);\
++ spewField("valOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadBooleanConstant(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadBooleanConstant);\
++ spewBoolImm("val", reader.readBool());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.booleanOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadUndefined(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadUndefined);\
++ spewOperandId("resultId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadConstantString(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadConstantString);\
++ spewField("strOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewOperandId("resultId", reader.stringOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadConstantStringResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadConstantStringResult);\
++ spewField("strOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewLoadInstanceOfObjectResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadInstanceOfObjectResult);\
++ spewOperandId("lhsId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewOperandId("protoId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadTypeOfObjectResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadTypeOfObjectResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewDoubleAddResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::DoubleAddResult);\
++ spewOperandId("lhsId", reader.numberOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewDoubleSubResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::DoubleSubResult);\
++ spewOperandId("lhsId", reader.numberOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewDoubleMulResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::DoubleMulResult);\
++ spewOperandId("lhsId", reader.numberOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewDoubleDivResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::DoubleDivResult);\
++ spewOperandId("lhsId", reader.numberOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewDoubleModResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::DoubleModResult);\
++ spewOperandId("lhsId", reader.numberOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewDoublePowResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::DoublePowResult);\
++ spewOperandId("lhsId", reader.numberOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewInt32AddResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::Int32AddResult);\
++ spewOperandId("lhsId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewInt32SubResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::Int32SubResult);\
++ spewOperandId("lhsId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewInt32MulResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::Int32MulResult);\
++ spewOperandId("lhsId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewInt32DivResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::Int32DivResult);\
++ spewOperandId("lhsId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewInt32ModResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::Int32ModResult);\
++ spewOperandId("lhsId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewInt32PowResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::Int32PowResult);\
++ spewOperandId("lhsId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewBigIntAddResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::BigIntAddResult);\
++ spewOperandId("lhsId", reader.bigIntOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.bigIntOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewBigIntSubResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::BigIntSubResult);\
++ spewOperandId("lhsId", reader.bigIntOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.bigIntOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewBigIntMulResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::BigIntMulResult);\
++ spewOperandId("lhsId", reader.bigIntOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.bigIntOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewBigIntDivResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::BigIntDivResult);\
++ spewOperandId("lhsId", reader.bigIntOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.bigIntOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewBigIntModResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::BigIntModResult);\
++ spewOperandId("lhsId", reader.bigIntOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.bigIntOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewBigIntPowResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::BigIntPowResult);\
++ spewOperandId("lhsId", reader.bigIntOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.bigIntOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewInt32BitOrResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::Int32BitOrResult);\
++ spewOperandId("lhsId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewInt32BitXorResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::Int32BitXorResult);\
++ spewOperandId("lhsId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewInt32BitAndResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::Int32BitAndResult);\
++ spewOperandId("lhsId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewInt32LeftShiftResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::Int32LeftShiftResult);\
++ spewOperandId("lhsId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewInt32RightShiftResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::Int32RightShiftResult);\
++ spewOperandId("lhsId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewInt32URightShiftResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::Int32URightShiftResult);\
++ spewOperandId("lhsId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewBoolImm("forceDouble", reader.readBool());\
++ spewOpEnd();\
++}\
++\
++void spewInt32NotResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::Int32NotResult);\
++ spewOperandId("inputId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewBigIntBitOrResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::BigIntBitOrResult);\
++ spewOperandId("lhsId", reader.bigIntOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.bigIntOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewBigIntBitXorResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::BigIntBitXorResult);\
++ spewOperandId("lhsId", reader.bigIntOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.bigIntOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewBigIntBitAndResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::BigIntBitAndResult);\
++ spewOperandId("lhsId", reader.bigIntOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.bigIntOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewBigIntLeftShiftResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::BigIntLeftShiftResult);\
++ spewOperandId("lhsId", reader.bigIntOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.bigIntOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewBigIntRightShiftResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::BigIntRightShiftResult);\
++ spewOperandId("lhsId", reader.bigIntOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.bigIntOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewBigIntNotResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::BigIntNotResult);\
++ spewOperandId("inputId", reader.bigIntOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewInt32NegationResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::Int32NegationResult);\
++ spewOperandId("inputId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewDoubleNegationResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::DoubleNegationResult);\
++ spewOperandId("inputId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewBigIntNegationResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::BigIntNegationResult);\
++ spewOperandId("inputId", reader.bigIntOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewInt32IncResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::Int32IncResult);\
++ spewOperandId("inputId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewInt32DecResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::Int32DecResult);\
++ spewOperandId("inputId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewDoubleIncResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::DoubleIncResult);\
++ spewOperandId("inputId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewDoubleDecResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::DoubleDecResult);\
++ spewOperandId("inputId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewBigIntIncResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::BigIntIncResult);\
++ spewOperandId("inputId", reader.bigIntOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewBigIntDecResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::BigIntDecResult);\
++ spewOperandId("inputId", reader.bigIntOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadInt32TruthyResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadInt32TruthyResult);\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadDoubleTruthyResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadDoubleTruthyResult);\
++ spewOperandId("inputId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadStringTruthyResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadStringTruthyResult);\
++ spewOperandId("strId", reader.stringOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadObjectTruthyResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadObjectTruthyResult);\
++ spewOperandId("objId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadBigIntTruthyResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadBigIntTruthyResult);\
++ spewOperandId("bigIntId", reader.bigIntOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadValueTruthyResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadValueTruthyResult);\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewLoadValueResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadValueResult);\
++ spewField("valOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewLoadOperandResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::LoadOperandResult);\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewNewPlainObjectResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::NewPlainObjectResult);\
++ spewUInt32Imm("numFixedSlots", reader.uint32Immediate());\
++ spewArgSeparator();\
++ spewUInt32Imm("numDynamicSlots", reader.uint32Immediate());\
++ spewArgSeparator();\
++ spewAllocKindImm("allocKind", reader.allocKind());\
++ spewArgSeparator();\
++ spewField("shapeOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewField("siteOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewNewArrayObjectResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::NewArrayObjectResult);\
++ spewUInt32Imm("arrayLength", reader.uint32Immediate());\
++ spewArgSeparator();\
++ spewField("shapeOffset", reader.stubOffset());\
++ spewArgSeparator();\
++ spewField("siteOffset", reader.stubOffset());\
++ spewOpEnd();\
++}\
++\
++void spewCallStringConcatResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallStringConcatResult);\
++ spewOperandId("lhsId", reader.stringOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.stringOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCallStringObjectConcatResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallStringObjectConcatResult);\
++ spewOperandId("lhsId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCallIsSuspendedGeneratorResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallIsSuspendedGeneratorResult);\
++ spewOperandId("valId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCompareStringResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CompareStringResult);\
++ spewJSOpImm("op", reader.jsop());\
++ spewArgSeparator();\
++ spewOperandId("lhsId", reader.stringOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.stringOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCompareObjectResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CompareObjectResult);\
++ spewJSOpImm("op", reader.jsop());\
++ spewArgSeparator();\
++ spewOperandId("lhsId", reader.objOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.objOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCompareSymbolResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CompareSymbolResult);\
++ spewJSOpImm("op", reader.jsop());\
++ spewArgSeparator();\
++ spewOperandId("lhsId", reader.symbolOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.symbolOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCompareInt32Result(CacheIRReader& reader) {\
++ spewOp(CacheOp::CompareInt32Result);\
++ spewJSOpImm("op", reader.jsop());\
++ spewArgSeparator();\
++ spewOperandId("lhsId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCompareDoubleResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CompareDoubleResult);\
++ spewJSOpImm("op", reader.jsop());\
++ spewArgSeparator();\
++ spewOperandId("lhsId", reader.numberOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCompareBigIntResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CompareBigIntResult);\
++ spewJSOpImm("op", reader.jsop());\
++ spewArgSeparator();\
++ spewOperandId("lhsId", reader.bigIntOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.bigIntOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCompareBigIntInt32Result(CacheIRReader& reader) {\
++ spewOp(CacheOp::CompareBigIntInt32Result);\
++ spewJSOpImm("op", reader.jsop());\
++ spewArgSeparator();\
++ spewOperandId("lhsId", reader.bigIntOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCompareBigIntNumberResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CompareBigIntNumberResult);\
++ spewJSOpImm("op", reader.jsop());\
++ spewArgSeparator();\
++ spewOperandId("lhsId", reader.bigIntOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCompareBigIntStringResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CompareBigIntStringResult);\
++ spewJSOpImm("op", reader.jsop());\
++ spewArgSeparator();\
++ spewOperandId("lhsId", reader.bigIntOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.stringOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCompareNullUndefinedResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CompareNullUndefinedResult);\
++ spewJSOpImm("op", reader.jsop());\
++ spewArgSeparator();\
++ spewBoolImm("isUndefined", reader.readBool());\
++ spewArgSeparator();\
++ spewOperandId("inputId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCompareDoubleSameValueResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::CompareDoubleSameValueResult);\
++ spewOperandId("lhsId", reader.numberOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.numberOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewSameValueResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::SameValueResult);\
++ spewOperandId("lhsId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewOperandId("rhsId", reader.valOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewIndirectTruncateInt32Result(CacheIRReader& reader) {\
++ spewOp(CacheOp::IndirectTruncateInt32Result);\
++ spewOperandId("valId", reader.int32OperandId());\
++ spewOpEnd();\
++}\
++\
++void spewBigIntAsIntNResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::BigIntAsIntNResult);\
++ spewOperandId("bitsId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("bigIntId", reader.bigIntOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewBigIntAsUintNResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::BigIntAsUintNResult);\
++ spewOperandId("bitsId", reader.int32OperandId());\
++ spewArgSeparator();\
++ spewOperandId("bigIntId", reader.bigIntOperandId());\
++ spewOpEnd();\
++}\
++\
++void spewCallPrintString(CacheIRReader& reader) {\
++ spewOp(CacheOp::CallPrintString);\
++ spewStaticStringImm("str", reinterpret_cast<char*>(reader.pointer()));\
++ spewOpEnd();\
++}\
++\
++void spewBreakpoint(CacheIRReader& reader) {\
++ spewOp(CacheOp::Breakpoint);\
++ spewOpEnd();\
++}\
++\
++void spewWrapResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::WrapResult);\
++ spewOpEnd();\
++}\
++\
++void spewBailout(CacheIRReader& reader) {\
++ spewOp(CacheOp::Bailout);\
++ spewOpEnd();\
++}\
++\
++void spewAssertRecoveredOnBailoutResult(CacheIRReader& reader) {\
++ spewOp(CacheOp::AssertRecoveredOnBailoutResult);\
++ spewOperandId("valId", reader.valOperandId());\
++ spewArgSeparator();\
++ spewBoolImm("mustBeRecovered", reader.readBool());\
++ spewOpEnd();\
++}\
++
++
++#define CACHE_IR_CLONE_GENERATED \
++void cloneReturnFromIC(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::ReturnFromIC);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardToObject(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardToObject);\
++ ValOperandId inputId = reader.valOperandId();\
++ writer.writeOperandId(inputId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardIsNullOrUndefined(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardIsNullOrUndefined);\
++ ValOperandId inputId = reader.valOperandId();\
++ writer.writeOperandId(inputId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardIsNull(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardIsNull);\
++ ValOperandId inputId = reader.valOperandId();\
++ writer.writeOperandId(inputId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardIsUndefined(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardIsUndefined);\
++ ValOperandId inputId = reader.valOperandId();\
++ writer.writeOperandId(inputId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardToBoolean(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardToBoolean);\
++ ValOperandId inputId = reader.valOperandId();\
++ writer.writeOperandId(inputId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardToString(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardToString);\
++ ValOperandId inputId = reader.valOperandId();\
++ writer.writeOperandId(inputId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardToSymbol(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardToSymbol);\
++ ValOperandId inputId = reader.valOperandId();\
++ writer.writeOperandId(inputId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardToBigInt(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardToBigInt);\
++ ValOperandId inputId = reader.valOperandId();\
++ writer.writeOperandId(inputId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardIsNumber(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardIsNumber);\
++ ValOperandId inputId = reader.valOperandId();\
++ writer.writeOperandId(inputId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardToInt32(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardToInt32);\
++ ValOperandId inputId = reader.valOperandId();\
++ writer.writeOperandId(inputId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardBooleanToInt32(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardBooleanToInt32);\
++ ValOperandId inputId = reader.valOperandId();\
++ writer.writeOperandId(inputId);\
++ Int32OperandId resultId = reader.int32OperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardToInt32Index(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardToInt32Index);\
++ ValOperandId inputId = reader.valOperandId();\
++ writer.writeOperandId(inputId);\
++ Int32OperandId resultId = reader.int32OperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneInt32ToIntPtr(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::Int32ToIntPtr);\
++ Int32OperandId inputId = reader.int32OperandId();\
++ writer.writeOperandId(inputId);\
++ IntPtrOperandId resultId = reader.intPtrOperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardNumberToIntPtrIndex(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardNumberToIntPtrIndex);\
++ NumberOperandId inputId = reader.numberOperandId();\
++ writer.writeOperandId(inputId);\
++ bool supportOOB = reader.readBool();\
++ writer.writeBoolImm(supportOOB);\
++ IntPtrOperandId resultId = reader.intPtrOperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardToInt32ModUint32(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardToInt32ModUint32);\
++ ValOperandId inputId = reader.valOperandId();\
++ writer.writeOperandId(inputId);\
++ Int32OperandId resultId = reader.int32OperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardToUint8Clamped(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardToUint8Clamped);\
++ ValOperandId inputId = reader.valOperandId();\
++ writer.writeOperandId(inputId);\
++ Int32OperandId resultId = reader.int32OperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardNonDoubleType(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardNonDoubleType);\
++ ValOperandId inputId = reader.valOperandId();\
++ writer.writeOperandId(inputId);\
++ ValueType type = reader.valueType();\
++ writer.writeValueTypeImm(type);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardShape(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardShape);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t shapeOffset = reader.stubOffset();\
++ Shape* shape = getShapeField(shapeOffset);\
++ writer.writeShapeField(shape);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardProto(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardProto);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t protoOffset = reader.stubOffset();\
++ JSObject* proto = getObjectField(protoOffset);\
++ writer.writeObjectField(proto);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardNullProto(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardNullProto);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardClass(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardClass);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ GuardClassKind kind = reader.guardClassKind();\
++ writer.writeGuardClassKindImm(kind);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardAnyClass(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardAnyClass);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t claspOffset = reader.stubOffset();\
++ const void* clasp = getRawPointerField(claspOffset);\
++ writer.writeRawPointerField(clasp);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneHasClassResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::HasClassResult);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t claspOffset = reader.stubOffset();\
++ const void* clasp = getRawPointerField(claspOffset);\
++ writer.writeRawPointerField(clasp);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneCallRegExpMatcherResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::CallRegExpMatcherResult);\
++ ObjOperandId regexpId = reader.objOperandId();\
++ writer.writeOperandId(regexpId);\
++ StringOperandId inputId = reader.stringOperandId();\
++ writer.writeOperandId(inputId);\
++ Int32OperandId lastIndexId = reader.int32OperandId();\
++ writer.writeOperandId(lastIndexId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneCallRegExpSearcherResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::CallRegExpSearcherResult);\
++ ObjOperandId regexpId = reader.objOperandId();\
++ writer.writeOperandId(regexpId);\
++ StringOperandId inputId = reader.stringOperandId();\
++ writer.writeOperandId(inputId);\
++ Int32OperandId lastIndexId = reader.int32OperandId();\
++ writer.writeOperandId(lastIndexId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneCallRegExpTesterResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::CallRegExpTesterResult);\
++ ObjOperandId regexpId = reader.objOperandId();\
++ writer.writeOperandId(regexpId);\
++ StringOperandId inputId = reader.stringOperandId();\
++ writer.writeOperandId(inputId);\
++ Int32OperandId lastIndexId = reader.int32OperandId();\
++ writer.writeOperandId(lastIndexId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneRegExpFlagResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::RegExpFlagResult);\
++ ObjOperandId regexpId = reader.objOperandId();\
++ writer.writeOperandId(regexpId);\
++ int32_t flagsMask = reader.int32Immediate();\
++ writer.writeInt32Imm(flagsMask);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneCallSubstringKernelResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::CallSubstringKernelResult);\
++ StringOperandId strId = reader.stringOperandId();\
++ writer.writeOperandId(strId);\
++ Int32OperandId beginId = reader.int32OperandId();\
++ writer.writeOperandId(beginId);\
++ Int32OperandId lengthId = reader.int32OperandId();\
++ writer.writeOperandId(lengthId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneStringReplaceStringResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::StringReplaceStringResult);\
++ StringOperandId strId = reader.stringOperandId();\
++ writer.writeOperandId(strId);\
++ StringOperandId patternId = reader.stringOperandId();\
++ writer.writeOperandId(patternId);\
++ StringOperandId replacementId = reader.stringOperandId();\
++ writer.writeOperandId(replacementId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneStringSplitStringResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::StringSplitStringResult);\
++ StringOperandId strId = reader.stringOperandId();\
++ writer.writeOperandId(strId);\
++ StringOperandId separatorId = reader.stringOperandId();\
++ writer.writeOperandId(separatorId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneRegExpPrototypeOptimizableResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::RegExpPrototypeOptimizableResult);\
++ ObjOperandId protoId = reader.objOperandId();\
++ writer.writeOperandId(protoId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneRegExpInstanceOptimizableResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::RegExpInstanceOptimizableResult);\
++ ObjOperandId regexpId = reader.objOperandId();\
++ writer.writeOperandId(regexpId);\
++ ObjOperandId protoId = reader.objOperandId();\
++ writer.writeOperandId(protoId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGetFirstDollarIndexResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GetFirstDollarIndexResult);\
++ StringOperandId strId = reader.stringOperandId();\
++ writer.writeOperandId(strId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardCompartment(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardCompartment);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t globalOffset = reader.stubOffset();\
++ JSObject* global = getObjectField(globalOffset);\
++ writer.writeObjectField(global);\
++ uint32_t compartmentOffset = reader.stubOffset();\
++ const void* compartment = getRawPointerField(compartmentOffset);\
++ writer.writeRawPointerField(compartment);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardIsExtensible(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardIsExtensible);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardIsNativeObject(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardIsNativeObject);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardIsProxy(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardIsProxy);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardIsNotProxy(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardIsNotProxy);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardIsNotArrayBufferMaybeShared(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardIsNotArrayBufferMaybeShared);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardIsTypedArray(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardIsTypedArray);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardHasProxyHandler(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardHasProxyHandler);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t handlerOffset = reader.stubOffset();\
++ const void* handler = getRawPointerField(handlerOffset);\
++ writer.writeRawPointerField(handler);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardIsNotDOMProxy(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardIsNotDOMProxy);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardSpecificObject(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardSpecificObject);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t expectedOffset = reader.stubOffset();\
++ JSObject* expected = getObjectField(expectedOffset);\
++ writer.writeObjectField(expected);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardSpecificFunction(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardSpecificFunction);\
++ ObjOperandId funId = reader.objOperandId();\
++ writer.writeOperandId(funId);\
++ uint32_t expectedOffset = reader.stubOffset();\
++ JSObject* expected = getObjectField(expectedOffset);\
++ writer.writeObjectField(expected);\
++ uint32_t nargsAndFlagsOffset = reader.stubOffset();\
++ uint32_t nargsAndFlags = getRawInt32Field(nargsAndFlagsOffset);\
++ writer.writeRawInt32Field(nargsAndFlags);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardFunctionScript(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardFunctionScript);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t expectedOffset = reader.stubOffset();\
++ BaseScript* expected = getBaseScriptField(expectedOffset);\
++ writer.writeBaseScriptField(expected);\
++ uint32_t nargsAndFlagsOffset = reader.stubOffset();\
++ uint32_t nargsAndFlags = getRawInt32Field(nargsAndFlagsOffset);\
++ writer.writeRawInt32Field(nargsAndFlags);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardSpecificAtom(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardSpecificAtom);\
++ StringOperandId strId = reader.stringOperandId();\
++ writer.writeOperandId(strId);\
++ uint32_t expectedOffset = reader.stubOffset();\
++ JSAtom* expected = getAtomField(expectedOffset);\
++ writer.writeStringField(expected);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardSpecificSymbol(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardSpecificSymbol);\
++ SymbolOperandId symId = reader.symbolOperandId();\
++ writer.writeOperandId(symId);\
++ uint32_t expectedOffset = reader.stubOffset();\
++ JS::Symbol* expected = getSymbolField(expectedOffset);\
++ writer.writeSymbolField(expected);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardNoDenseElements(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardNoDenseElements);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardStringToIndex(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardStringToIndex);\
++ StringOperandId strId = reader.stringOperandId();\
++ writer.writeOperandId(strId);\
++ Int32OperandId resultId = reader.int32OperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardStringToInt32(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardStringToInt32);\
++ StringOperandId strId = reader.stringOperandId();\
++ writer.writeOperandId(strId);\
++ Int32OperandId resultId = reader.int32OperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardStringToNumber(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardStringToNumber);\
++ StringOperandId strId = reader.stringOperandId();\
++ writer.writeOperandId(strId);\
++ NumberOperandId resultId = reader.numberOperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneBooleanToNumber(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::BooleanToNumber);\
++ BooleanOperandId booleanId = reader.booleanOperandId();\
++ writer.writeOperandId(booleanId);\
++ NumberOperandId resultId = reader.numberOperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardAndGetIterator(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardAndGetIterator);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t iterOffset = reader.stubOffset();\
++ JSObject* iter = getObjectField(iterOffset);\
++ writer.writeObjectField(iter);\
++ uint32_t enumeratorsAddrOffset = reader.stubOffset();\
++ const void* enumeratorsAddr = getRawPointerField(enumeratorsAddrOffset);\
++ writer.writeRawPointerField(enumeratorsAddr);\
++ ObjOperandId resultId = reader.objOperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardHasGetterSetter(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardHasGetterSetter);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t idOffset = reader.stubOffset();\
++ jsid id = getIdField(idOffset);\
++ writer.writeIdField(id);\
++ uint32_t getterSetterOffset = reader.stubOffset();\
++ GetterSetter* getterSetter = getGetterSetterField(getterSetterOffset);\
++ writer.writeGetterSetterField(getterSetter);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardInt32IsNonNegative(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardInt32IsNonNegative);\
++ Int32OperandId indexId = reader.int32OperandId();\
++ writer.writeOperandId(indexId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardIndexIsValidUpdateOrAdd(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardIndexIsValidUpdateOrAdd);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ Int32OperandId indexId = reader.int32OperandId();\
++ writer.writeOperandId(indexId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardIndexGreaterThanDenseInitLength(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardIndexGreaterThanDenseInitLength);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ Int32OperandId indexId = reader.int32OperandId();\
++ writer.writeOperandId(indexId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardTagNotEqual(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardTagNotEqual);\
++ ValueTagOperandId lhsId = reader.valueTagOperandId();\
++ writer.writeOperandId(lhsId);\
++ ValueTagOperandId rhsId = reader.valueTagOperandId();\
++ writer.writeOperandId(rhsId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardXrayExpandoShapeAndDefaultProto(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardXrayExpandoShapeAndDefaultProto);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t shapeWrapperOffset = reader.stubOffset();\
++ JSObject* shapeWrapper = getObjectField(shapeWrapperOffset);\
++ writer.writeObjectField(shapeWrapper);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardXrayNoExpando(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardXrayNoExpando);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardDynamicSlotIsSpecificObject(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardDynamicSlotIsSpecificObject);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ ObjOperandId expectedId = reader.objOperandId();\
++ writer.writeOperandId(expectedId);\
++ uint32_t slotOffset = reader.stubOffset();\
++ uint32_t slot = getRawInt32Field(slotOffset);\
++ writer.writeRawInt32Field(slot);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardFixedSlotValue(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardFixedSlotValue);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t offsetOffset = reader.stubOffset();\
++ uint32_t offset = getRawInt32Field(offsetOffset);\
++ writer.writeRawInt32Field(offset);\
++ uint32_t valOffset = reader.stubOffset();\
++ const Value val = getValueField(valOffset);\
++ writer.writeValueField(val);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardDynamicSlotValue(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardDynamicSlotValue);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t offsetOffset = reader.stubOffset();\
++ uint32_t offset = getRawInt32Field(offsetOffset);\
++ writer.writeRawInt32Field(offset);\
++ uint32_t valOffset = reader.stubOffset();\
++ const Value val = getValueField(valOffset);\
++ writer.writeValueField(val);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardNoAllocationMetadataBuilder(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardNoAllocationMetadataBuilder);\
++ uint32_t builderAddrOffset = reader.stubOffset();\
++ const void* builderAddr = getRawPointerField(builderAddrOffset);\
++ writer.writeRawPointerField(builderAddr);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardFunctionHasJitEntry(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardFunctionHasJitEntry);\
++ ObjOperandId funId = reader.objOperandId();\
++ writer.writeOperandId(funId);\
++ bool constructing = reader.readBool();\
++ writer.writeBoolImm(constructing);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardFunctionHasNoJitEntry(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardFunctionHasNoJitEntry);\
++ ObjOperandId funId = reader.objOperandId();\
++ writer.writeOperandId(funId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardFunctionIsNonBuiltinCtor(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardFunctionIsNonBuiltinCtor);\
++ ObjOperandId funId = reader.objOperandId();\
++ writer.writeOperandId(funId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardFunctionIsConstructor(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardFunctionIsConstructor);\
++ ObjOperandId funId = reader.objOperandId();\
++ writer.writeOperandId(funId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardNotClassConstructor(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardNotClassConstructor);\
++ ObjOperandId funId = reader.objOperandId();\
++ writer.writeOperandId(funId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardArrayIsPacked(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardArrayIsPacked);\
++ ObjOperandId arrayId = reader.objOperandId();\
++ writer.writeOperandId(arrayId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardArgumentsObjectFlags(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardArgumentsObjectFlags);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint8_t flags = reader.readByte();\
++ writer.writeByteImm(flags);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneLoadObject(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::LoadObject);\
++ ObjOperandId resultId = reader.objOperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ uint32_t objOffset = reader.stubOffset();\
++ JSObject* obj = getObjectField(objOffset);\
++ writer.writeObjectField(obj);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneLoadProto(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::LoadProto);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ ObjOperandId resultId = reader.objOperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneLoadEnclosingEnvironment(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::LoadEnclosingEnvironment);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ ObjOperandId resultId = reader.objOperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneLoadWrapperTarget(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::LoadWrapperTarget);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ ObjOperandId resultId = reader.objOperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneLoadValueTag(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::LoadValueTag);\
++ ValOperandId valId = reader.valOperandId();\
++ writer.writeOperandId(valId);\
++ ValueTagOperandId resultId = reader.valueTagOperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneLoadArgumentFixedSlot(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::LoadArgumentFixedSlot);\
++ ValOperandId resultId = reader.valOperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ uint8_t slotIndex = reader.readByte();\
++ writer.writeByteImm(slotIndex);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneLoadArgumentDynamicSlot(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::LoadArgumentDynamicSlot);\
++ ValOperandId resultId = reader.valOperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ Int32OperandId argcId = reader.int32OperandId();\
++ writer.writeOperandId(argcId);\
++ uint8_t slotIndex = reader.readByte();\
++ writer.writeByteImm(slotIndex);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneTruncateDoubleToUInt32(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::TruncateDoubleToUInt32);\
++ NumberOperandId inputId = reader.numberOperandId();\
++ writer.writeOperandId(inputId);\
++ Int32OperandId resultId = reader.int32OperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneMegamorphicLoadSlotResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::MegamorphicLoadSlotResult);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t nameOffset = reader.stubOffset();\
++ PropertyName* name = getPropertyNameField(nameOffset);\
++ writer.writeStringField(name);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneMegamorphicLoadSlotByValueResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::MegamorphicLoadSlotByValueResult);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ ValOperandId idId = reader.valOperandId();\
++ writer.writeOperandId(idId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneMegamorphicStoreSlot(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::MegamorphicStoreSlot);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t nameOffset = reader.stubOffset();\
++ PropertyName* name = getPropertyNameField(nameOffset);\
++ writer.writeStringField(name);\
++ ValOperandId rhsId = reader.valOperandId();\
++ writer.writeOperandId(rhsId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneMegamorphicSetElement(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::MegamorphicSetElement);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ ValOperandId idId = reader.valOperandId();\
++ writer.writeOperandId(idId);\
++ ValOperandId rhsId = reader.valOperandId();\
++ writer.writeOperandId(rhsId);\
++ bool strict = reader.readBool();\
++ writer.writeBoolImm(strict);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneMegamorphicHasPropResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::MegamorphicHasPropResult);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ ValOperandId idId = reader.valOperandId();\
++ writer.writeOperandId(idId);\
++ bool hasOwn = reader.readBool();\
++ writer.writeBoolImm(hasOwn);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneLoadDOMExpandoValue(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::LoadDOMExpandoValue);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ ValOperandId resultId = reader.valOperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneLoadDOMExpandoValueGuardGeneration(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::LoadDOMExpandoValueGuardGeneration);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t expandoAndGenerationOffset = reader.stubOffset();\
++ const void* expandoAndGeneration = getRawPointerField(expandoAndGenerationOffset);\
++ writer.writeRawPointerField(expandoAndGeneration);\
++ uint32_t generationOffset = reader.stubOffset();\
++ uint64_t generation = getRawInt64Field(generationOffset);\
++ writer.writeRawInt64Field(generation);\
++ ValOperandId resultId = reader.valOperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneLoadDOMExpandoValueIgnoreGeneration(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::LoadDOMExpandoValueIgnoreGeneration);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ ValOperandId resultId = reader.valOperandId();\
++ writer.newOperandId();\
++ writer.writeOperandId(resultId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneGuardDOMExpandoMissingOrGuardShape(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::GuardDOMExpandoMissingOrGuardShape);\
++ ValOperandId expandoId = reader.valOperandId();\
++ writer.writeOperandId(expandoId);\
++ uint32_t shapeOffset = reader.stubOffset();\
++ Shape* shape = getShapeField(shapeOffset);\
++ writer.writeShapeField(shape);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneStoreFixedSlot(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::StoreFixedSlot);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t offsetOffset = reader.stubOffset();\
++ uint32_t offset = getRawInt32Field(offsetOffset);\
++ writer.writeRawInt32Field(offset);\
++ ValOperandId rhsId = reader.valOperandId();\
++ writer.writeOperandId(rhsId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneStoreDynamicSlot(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::StoreDynamicSlot);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t offsetOffset = reader.stubOffset();\
++ uint32_t offset = getRawInt32Field(offsetOffset);\
++ writer.writeRawInt32Field(offset);\
++ ValOperandId rhsId = reader.valOperandId();\
++ writer.writeOperandId(rhsId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneAddAndStoreFixedSlot(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::AddAndStoreFixedSlot);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t offsetOffset = reader.stubOffset();\
++ uint32_t offset = getRawInt32Field(offsetOffset);\
++ writer.writeRawInt32Field(offset);\
++ ValOperandId rhsId = reader.valOperandId();\
++ writer.writeOperandId(rhsId);\
++ uint32_t newShapeOffset = reader.stubOffset();\
++ Shape* newShape = getShapeField(newShapeOffset);\
++ writer.writeShapeField(newShape);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneAddAndStoreDynamicSlot(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::AddAndStoreDynamicSlot);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t offsetOffset = reader.stubOffset();\
++ uint32_t offset = getRawInt32Field(offsetOffset);\
++ writer.writeRawInt32Field(offset);\
++ ValOperandId rhsId = reader.valOperandId();\
++ writer.writeOperandId(rhsId);\
++ uint32_t newShapeOffset = reader.stubOffset();\
++ Shape* newShape = getShapeField(newShapeOffset);\
++ writer.writeShapeField(newShape);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneAllocateAndStoreDynamicSlot(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::AllocateAndStoreDynamicSlot);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t offsetOffset = reader.stubOffset();\
++ uint32_t offset = getRawInt32Field(offsetOffset);\
++ writer.writeRawInt32Field(offset);\
++ ValOperandId rhsId = reader.valOperandId();\
++ writer.writeOperandId(rhsId);\
++ uint32_t newShapeOffset = reader.stubOffset();\
++ Shape* newShape = getShapeField(newShapeOffset);\
++ writer.writeShapeField(newShape);\
++ uint32_t numNewSlotsOffset = reader.stubOffset();\
++ uint32_t numNewSlots = getRawInt32Field(numNewSlotsOffset);\
++ writer.writeRawInt32Field(numNewSlots);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneStoreDenseElement(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::StoreDenseElement);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ Int32OperandId indexId = reader.int32OperandId();\
++ writer.writeOperandId(indexId);\
++ ValOperandId rhsId = reader.valOperandId();\
++ writer.writeOperandId(rhsId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneStoreDenseElementHole(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::StoreDenseElementHole);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ Int32OperandId indexId = reader.int32OperandId();\
++ writer.writeOperandId(indexId);\
++ ValOperandId rhsId = reader.valOperandId();\
++ writer.writeOperandId(rhsId);\
++ bool handleAdd = reader.readBool();\
++ writer.writeBoolImm(handleAdd);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneArrayPush(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::ArrayPush);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ ValOperandId rhsId = reader.valOperandId();\
++ writer.writeOperandId(rhsId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneArrayJoinResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::ArrayJoinResult);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ StringOperandId sepId = reader.stringOperandId();\
++ writer.writeOperandId(sepId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void clonePackedArrayPopResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::PackedArrayPopResult);\
++ ObjOperandId arrayId = reader.objOperandId();\
++ writer.writeOperandId(arrayId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void clonePackedArrayShiftResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::PackedArrayShiftResult);\
++ ObjOperandId arrayId = reader.objOperandId();\
++ writer.writeOperandId(arrayId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void clonePackedArraySliceResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::PackedArraySliceResult);\
++ uint32_t templateObjectOffset = reader.stubOffset();\
++ JSObject* templateObject = getObjectField(templateObjectOffset);\
++ writer.writeObjectField(templateObject);\
++ ObjOperandId arrayId = reader.objOperandId();\
++ writer.writeOperandId(arrayId);\
++ Int32OperandId beginId = reader.int32OperandId();\
++ writer.writeOperandId(beginId);\
++ Int32OperandId endId = reader.int32OperandId();\
++ writer.writeOperandId(endId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneIsArrayResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::IsArrayResult);\
++ ValOperandId inputId = reader.valOperandId();\
++ writer.writeOperandId(inputId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneStoreFixedSlotUndefinedResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::StoreFixedSlotUndefinedResult);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ uint32_t offsetOffset = reader.stubOffset();\
++ uint32_t offset = getRawInt32Field(offsetOffset);\
++ writer.writeRawInt32Field(offset);\
++ ValOperandId rhsId = reader.valOperandId();\
++ writer.writeOperandId(rhsId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneIsObjectResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::IsObjectResult);\
++ ValOperandId inputId = reader.valOperandId();\
++ writer.writeOperandId(inputId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneIsPackedArrayResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::IsPackedArrayResult);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneIsCallableResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::IsCallableResult);\
++ ValOperandId inputId = reader.valOperandId();\
++ writer.writeOperandId(inputId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneIsConstructorResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::IsConstructorResult);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneIsCrossRealmArrayConstructorResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::IsCrossRealmArrayConstructorResult);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneIsTypedArrayResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::IsTypedArrayResult);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ bool isPossiblyWrapped = reader.readBool();\
++ writer.writeBoolImm(isPossiblyWrapped);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneIsTypedArrayConstructorResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::IsTypedArrayConstructorResult);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneArrayBufferViewByteOffsetInt32Result(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::ArrayBufferViewByteOffsetInt32Result);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneArrayBufferViewByteOffsetDoubleResult(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::ArrayBufferViewByteOffsetDoubleResult);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneTypedArrayByteLengthInt32Result(CacheIRReader& reader, CacheIRWriter& writer) {{\
++ writer.writeOp(CacheOp::TypedArrayByteLengthInt32Result);\
++ ObjOperandId objId = reader.objOperandId();\
++ writer.writeOperandId(objId);\
++ writer.assertLengthMatches();\
++}}\
++\
++void cloneTypedArrayByteLengthDo