aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/Execution/Stack.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Execution/Stack.php')
-rw-r--r--src/Execution/Stack.php8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/Execution/Stack.php b/src/Execution/Stack.php
index 424f8c6..6d2a2aa 100644
--- a/src/Execution/Stack.php
+++ b/src/Execution/Stack.php
@@ -30,6 +30,9 @@ final class Stack
public function pushFrame(Frame $frame): void
{
+ if ($this->getCallStackLimit() <= count($this->frames)) {
+ throw new StackOverflowException();
+ }
$this->push($frame);
$this->frames[] = $frame;
$this->currentFrame = $frame;
@@ -179,6 +182,11 @@ final class Stack
return $this->currentFrame;
}
+ public function getCallStackLimit(): int
+ {
+ return 1024;
+ }
+
private function push(int|float|Ref|Frame|Label $entry): void
{
$this->entries[] = $entry;