From 24d8e5ad5b33a62b7f512373eb698bcabaae4e1b Mon Sep 17 00:00:00 2001
From: Tooru Fujisawa <arai_a@mac.com>
Date: Tue, 21 Sep 2021 18:45:20 +0000
Subject: [PATCH] Bug 1688791 - Part 9: Remove stencil/script char from
 GetScriptTranscodingBuildId. r=tcampbell

Differential Revision: https://phabricator.services.mozilla.com/D121275
---
 js/src/vm/Xdr.cpp | 39 +++++----------------------------------
 1 file changed, 5 insertions(+), 34 deletions(-)

diff --git a/js/src/vm/Xdr.cpp b/js/src/vm/Xdr.cpp
index 5ead18940228d..6a1a33df4371e 100644
--- a/js/src/vm/Xdr.cpp
+++ b/js/src/vm/Xdr.cpp
@@ -176,14 +176,8 @@ XDRResult XDRState<mode>::codeCharsZ(XDRTranscodeString<char16_t>& buffer) {
   return XDRCodeCharsZ(this, buffer);
 }
 
-enum class XDRFormatType : uint8_t {
-  UseOption,
-  JSScript,
-  Stencil,
-};
-
-static bool GetScriptTranscodingBuildId(XDRFormatType formatType,
-                                        JS::BuildIdCharVector* buildId) {
+JS_PUBLIC_API bool JS::GetScriptTranscodingBuildId(
+    JS::BuildIdCharVector* buildId) {
   MOZ_ASSERT(buildId->empty());
   MOZ_ASSERT(GetBuildId);
 
@@ -205,36 +199,13 @@ static bool GetScriptTranscodingBuildId(XDRFormatType formatType,
   buildId->infallibleAppend(sizeof(uintptr_t) == 4 ? '4' : '8');
   buildId->infallibleAppend(MOZ_LITTLE_ENDIAN() ? 'l' : 'b');
 
-  // '0': Stencil
-  // '1': JSScript.
-  char formatChar = '0';
-  switch (formatType) {
-    case XDRFormatType::UseOption:
-      // If off-thread parse global isn't used for single script decoding,
-      // we use stencil XDR instead of JSScript XDR.
-      formatChar = js::UseOffThreadParseGlobal() ? '1' : '0';
-      break;
-    case XDRFormatType::JSScript:
-      formatChar = '1';
-      break;
-    case XDRFormatType::Stencil:
-      formatChar = '0';
-      break;
-  }
-  buildId->infallibleAppend(formatChar);
-
   return true;
 }
 
-JS_PUBLIC_API bool JS::GetScriptTranscodingBuildId(
-    JS::BuildIdCharVector* buildId) {
-  return GetScriptTranscodingBuildId(XDRFormatType::UseOption, buildId);
-}
-
 template <XDRMode mode>
-static XDRResult VersionCheck(XDRState<mode>* xdr, XDRFormatType formatType) {
+static XDRResult VersionCheck(XDRState<mode>* xdr) {
   JS::BuildIdCharVector buildId;
-  if (!GetScriptTranscodingBuildId(formatType, &buildId)) {
+  if (!JS::GetScriptTranscodingBuildId(&buildId)) {
     ReportOutOfMemory(xdr->cx());
     return xdr->fail(JS::TranscodeResult::Throw);
   }
@@ -281,7 +252,7 @@ static XDRResult XDRStencilHeader(
   // The XDR-Stencil header is inserted at beginning of buffer, but it is
   // computed at the end the incremental-encoding process.
 
-  MOZ_TRY(VersionCheck(xdr, XDRFormatType::Stencil));
+  MOZ_TRY(VersionCheck(xdr));
   MOZ_TRY(ScriptSource::XDR(xdr, maybeOptions, source));
 
   return Ok();
-- 
GitLab