summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2025-04-25 11:15:37 +0900
committerNobuyoshi Nakada <nobu.nakada@gmail.com>2025-06-23 20:03:48 +0900
commitaf6b98f7a25670cb569f6da59904b3c05482b16e (patch)
tree572e427f5424f20ef548598e7f94942e61957158 /internal
parentc6dd07d66fa469d963d3771e001d45c462f413e3 (diff)
Make the critical level an enum
Diffstat (limited to 'internal')
-rw-r--r--internal/error.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/internal/error.h b/internal/error.h
index 5d53f96b8e..de189698b8 100644
--- a/internal/error.h
+++ b/internal/error.h
@@ -241,4 +241,11 @@ rb_typeddata_is_instance_of_inline(VALUE obj, const rb_data_type_t *data_type)
return RB_TYPE_P(obj, T_DATA) && RTYPEDDATA_P(obj) && (RTYPEDDATA_TYPE(obj) == data_type);
}
+typedef enum {
+ rb_stack_overflow_prevention = 0, // VM stack overflow or about to machine stack overflow
+ rb_stack_overflow_signal = 1, // machine stack overflow but may be recoverable
+ rb_stack_overflow_fatal = 2, // fatal machine stack overflow
+} ruby_stack_overflow_critical_level;
+NORETURN(void rb_ec_stack_overflow(struct rb_execution_context_struct *ec, ruby_stack_overflow_critical_level crit));
+
#endif /* INTERNAL_ERROR_H */