tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit bb017f6943c433dbefa67cdb66701c12a70cb02c
parent e0a049677e878643cf7bd6ff909fc408639dae9e
Author: Tooru Fujisawa <arai_a@mac.com>
Date:   Tue, 21 Oct 2025 15:14:56 +0000

Bug 1991370 - Part 1: Add FrontendContext-based EncodeStencil. r=bthrall

Differential Revision: https://phabricator.services.mozilla.com/D266622

Diffstat:
Mjs/public/experimental/JSStencil.h | 3+++
Mjs/src/frontend/StencilXdr.cpp | 14++++++++++++--
Mjs/src/frontend/StencilXdr.h | 4++++
3 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/js/public/experimental/JSStencil.h b/js/public/experimental/JSStencil.h @@ -207,6 +207,9 @@ namespace JS { extern JS_PUBLIC_API TranscodeResult EncodeStencil(JSContext* cx, Stencil* stencil, TranscodeBuffer& buffer); +extern JS_PUBLIC_API TranscodeResult EncodeStencil(JS::FrontendContext* fc, + Stencil* stencil, + TranscodeBuffer& buffer); // Deserialize data and create a new Stencil. extern JS_PUBLIC_API TranscodeResult diff --git a/js/src/frontend/StencilXdr.cpp b/js/src/frontend/StencilXdr.cpp @@ -1486,11 +1486,15 @@ static JS::TranscodeResult EncodeStencilImpl( JS::TranscodeResult JS::EncodeStencil(JSContext* cx, JS::Stencil* stencil, JS::TranscodeBuffer& buffer) { AutoReportFrontendContext fc(cx); + return JS::EncodeStencil(&fc, stencil, buffer); +} +JS::TranscodeResult JS::EncodeStencil(FrontendContext* fc, JS::Stencil* stencil, + JS::TranscodeBuffer& buffer) { const CompilationStencil* initial; UniquePtr<CompilationStencil> merged; if (stencil->canLazilyParse()) { - merged.reset(stencil->getMerged(&fc)); + merged.reset(stencil->getMerged(fc)); if (!merged) { return TranscodeResult::Throw; } @@ -1499,7 +1503,7 @@ JS::TranscodeResult JS::EncodeStencil(JSContext* cx, JS::Stencil* stencil, initial = stencil->getInitial(); } - return EncodeStencilImpl(&fc, initial, buffer); + return EncodeStencilImpl(fc, initial, buffer); } JS::TranscodeResult js::EncodeStencil(JSContext* cx, @@ -1509,6 +1513,12 @@ JS::TranscodeResult js::EncodeStencil(JSContext* cx, return EncodeStencilImpl(&fc, stencil, buffer); } +JS::TranscodeResult js::EncodeStencil(FrontendContext* fc, + frontend::CompilationStencil* stencil, + JS::TranscodeBuffer& buffer) { + return EncodeStencilImpl(fc, stencil, buffer); +} + XDRResult XDRStencilDecoder::codeStencil( const JS::ReadOnlyDecodeOptions& options, frontend::CompilationStencil& stencil) { diff --git a/js/src/frontend/StencilXdr.h b/js/src/frontend/StencilXdr.h @@ -218,6 +218,10 @@ JS::TranscodeResult EncodeStencil(JSContext* cx, frontend::CompilationStencil* stencil, JS::TranscodeBuffer& buffer); +JS::TranscodeResult EncodeStencil(JS::FrontendContext* fc, + frontend::CompilationStencil* stencil, + JS::TranscodeBuffer& buffer); + JS::TranscodeResult DecodeStencil(JS::FrontendContext* fc, const JS::ReadOnlyDecodeOptions& options, const JS::TranscodeRange& range,