aboutsummaryrefslogtreecommitdiffstats
path: root/vm_core.h
diff options
context:
space:
mode:
Diffstat (limited to 'vm_core.h')
-rw-r--r--vm_core.h27
1 files changed, 23 insertions, 4 deletions
diff --git a/vm_core.h b/vm_core.h
index 8cc48bc00d..87076f3e08 100644
--- a/vm_core.h
+++ b/vm_core.h
@@ -393,8 +393,30 @@ typedef struct rb_vm_struct {
struct RArray at_exit;
VALUE *defined_strings;
+
+ /* params */
+ struct { /* size in byte */
+ size_t thread_vm_stack_size;
+ size_t thread_machine_stack_size;
+ size_t fiber_vm_stack_size;
+ size_t fiber_machine_stack_size;
+ } default_params;
} rb_vm_t;
+/* default values */
+
+#define RUBY_VM_SIZE_ALIGN 4096
+
+#define RUBY_VM_THREAD_VM_STACK_SIZE ( 32 * 1024 * sizeof(VALUE)) /* 128 KB or 256 KB */
+#define RUBY_VM_THREAD_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE)) /* 8 KB or 16 KB */
+#define RUBY_VM_THREAD_MACHINE_STACK_SIZE ( 128 * 1024 * sizeof(VALUE)) /* 512 KB or 1024 KB */
+#define RUBY_VM_THREAD_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE)) /* 64 KB or 128 KB */
+
+#define RUBY_VM_FIBER_VM_STACK_SIZE ( 16 * 1024 * sizeof(VALUE)) /* 64 KB or 128 KB */
+#define RUBY_VM_FIBER_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE)) /* 8 KB or 16 KB */
+#define RUBY_VM_FIBER_MACHINE_STACK_SIZE ( 64 * 1024 * sizeof(VALUE)) /* 256 KB or 512 KB */
+#define RUBY_VM_FIBER_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE)) /* 64 KB or 128 KB */
+
#ifndef VM_DEBUG_BP_CHECK
#define VM_DEBUG_BP_CHECK 1
#endif
@@ -469,7 +491,7 @@ typedef struct rb_thread_struct {
/* execution information */
VALUE *stack; /* must free, must mark */
- unsigned long stack_size;
+ size_t stack_size; /* size in word (byte size / sizeof(VALUE)) */
rb_control_frame_t *cfp;
int safe_level;
int raised_flag;
@@ -620,9 +642,6 @@ RUBY_EXTERN VALUE rb_mRubyVMFrozenCore;
#pragma GCC visibility pop
#endif
-/* each thread has this size stack : 128KB */
-#define RUBY_VM_THREAD_STACK_SIZE (128 * 1024)
-
#define GetProcPtr(obj, ptr) \
GetCoreDataFromValue((obj), rb_proc_t, (ptr))