From 8925d0fa89d17db45c83e201bdffbc09ad87080f Mon Sep 17 00:00:00 2001 From: Marko Lahma Date: Tue, 28 Jan 2025 20:17:43 +0200 Subject: [PATCH] Add configurable limit for Atomics.pause iterations (#2047) --- 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..291dba411 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.MaxAtomicsPauseIterations); Thread.SpinWait((int) n); } else diff --git a/Jint/Options.cs b/Jint/Options.cs index f765ac83d..e1fb551cd 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 MaxAtomicsPauseIterations { get; set; } = 10_000; } ///