2
0

MaxStatementsConstraint.cs 686 B

12345678910111213141516171819202122232425262728293031
  1. using Jint.Runtime;
  2. namespace Jint.Constraints;
  3. public sealed class MaxStatementsConstraint : Constraint
  4. {
  5. private int _statementsCount;
  6. internal MaxStatementsConstraint(int maxStatements)
  7. {
  8. MaxStatements = maxStatements;
  9. }
  10. /// <summary>
  11. /// The maximum configured amount of statements to allow during engine evaluation.
  12. /// </summary>
  13. public int MaxStatements { get; set; }
  14. public override void Check()
  15. {
  16. if (MaxStatements > 0 && ++_statementsCount > MaxStatements)
  17. {
  18. Throw.StatementsCountOverflowException();
  19. }
  20. }
  21. public override void Reset()
  22. {
  23. _statementsCount = 0;
  24. }
  25. }