From 214100d7a5d32e0e88198a4400fe7e9697f74b1a Mon Sep 17 00:00:00 2001 From: Marko Lahma Date: Tue, 28 Jan 2025 20:09:21 +0200 Subject: [PATCH] Add configurable limit for Atomics.pause iterations --- Jint/Native/Atomics/AtomicsInstance.cs | 1 + Jint/Options.cs | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/Jint/Native/Atomics/AtomicsInstance.cs b/Jint/Native/Atomics/AtomicsInstance.cs index 96b3d993f..5f8a051d7 100644 --- a/Jint/Native/Atomics/AtomicsInstance.cs +++ b/Jint/Native/Atomics/AtomicsInstance.cs @@ -53,6 +53,7 @@ private JsValue Pause(JsValue thisObject, JsValue[] arguments) ExceptionHelper.ThrowRangeError(_realm, "Invalid iteration count"); } + n = System.Math.Min(n, _engine.Options.Constraints.AtomicsMaxPause); Thread.SpinWait((int) n); } else diff --git a/Jint/Options.cs b/Jint/Options.cs index f765ac83d..25f492f4c 100644 --- a/Jint/Options.cs +++ b/Jint/Options.cs @@ -433,6 +433,11 @@ public class ConstraintOptions /// The maximum size for JavaScript array, defaults to . /// public uint MaxArraySize { get; set; } = uint.MaxValue; + + /// + /// How many iterations is Atomics.pause allowed to instruct to wait using , defaults to 10 000. + /// + public int AtomicsMaxPause { get; set; } = 10_000; } ///