From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- js/src/jsapi-tests/testFrontendCompileStencil.cpp | 69 +++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 js/src/jsapi-tests/testFrontendCompileStencil.cpp (limited to 'js/src/jsapi-tests/testFrontendCompileStencil.cpp') diff --git a/js/src/jsapi-tests/testFrontendCompileStencil.cpp b/js/src/jsapi-tests/testFrontendCompileStencil.cpp new file mode 100644 index 0000000000..ba29b5aea2 --- /dev/null +++ b/js/src/jsapi-tests/testFrontendCompileStencil.cpp @@ -0,0 +1,69 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* 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/. */ + +#include "mozilla/RefPtr.h" +#include "mozilla/Utf8.h" + +#include + +#include "frontend/FrontendContext.h" // js::FrontendContext +#include "js/CompileOptions.h" +#include "js/experimental/CompileScript.h" +#include "js/SourceText.h" +#include "js/Stack.h" +#include "jsapi-tests/tests.h" +#include "util/NativeStack.h" // js::GetNativeStackBase + +using namespace JS; + +BEGIN_FRONTEND_TEST(testFrontendContextCompileGlobalScriptToStencil) { + JS::FrontendContext* fc = JS::NewFrontendContext(); + CHECK(fc); + + static constexpr JS::NativeStackSize stackSize = 128 * sizeof(size_t) * 1024; + + JS::SetNativeStackQuota(fc, stackSize); + +#ifndef __wasi__ + CHECK(fc->stackLimit() == + JS::GetNativeStackLimit(js::GetNativeStackBase(), stackSize - 1)); +#endif + + JS::PrefableCompileOptions prefableOptions; + JS::CompileOptions options(prefableOptions); + + { + const char source[] = "var a = 10;"; + + JS::SourceText srcBuf; + CHECK( + srcBuf.init(fc, source, strlen(source), JS::SourceOwnership::Borrowed)); + JS::CompilationStorage compileStorage; + RefPtr stencil = + JS::CompileGlobalScriptToStencil(fc, options, srcBuf, compileStorage); + CHECK(stencil); + CHECK(compileStorage.hasInput()); + } + + { + const char16_t source[] = u"var a = 10;"; + + JS::SourceText srcBuf; + CHECK(srcBuf.init(fc, source, std::char_traits::length(source), + JS::SourceOwnership::Borrowed)); + JS::CompilationStorage compileStorage; + RefPtr stencil = + JS::CompileGlobalScriptToStencil(fc, options, srcBuf, compileStorage); + CHECK(stencil); + CHECK(compileStorage.hasInput()); + } + + JS::DestroyFrontendContext(fc); + + return true; +} + +END_TEST(testFrontendContextCompileGlobalScriptToStencil) -- cgit v1.2.3