about summary refs log tree commit diff
path: root/src/rt/rust_env.cpp
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-01-11 12:37:09 -0800
committerBrian Anderson <banderson@mozilla.com>2012-01-11 13:57:11 -0800
commit94c389a25bde3f86f25e45b2a31d09bf72d8deeb (patch)
tree0247627ef16661479947540d67f4d89d1d115468 /src/rt/rust_env.cpp
parentc00ec5f9c936639ec2fd9291cd484afa56aa24c8 (diff)
downloadrust-94c389a25bde3f86f25e45b2a31d09bf72d8deeb.tar.gz
rust-94c389a25bde3f86f25e45b2a31d09bf72d8deeb.zip
rt: Add RUST_MAX_STACK env var with 8MB default
Closes #1489
Diffstat (limited to 'src/rt/rust_env.cpp')
-rw-r--r--src/rt/rust_env.cpp19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/rt/rust_env.cpp b/src/rt/rust_env.cpp
index b220c459c0b..bdec4c28435 100644
--- a/src/rt/rust_env.cpp
+++ b/src/rt/rust_env.cpp
@@ -8,6 +8,7 @@
 // The environment variables that the runtime knows about
 #define RUST_THREADS "RUST_THREADS"
 #define RUST_MIN_STACK "RUST_MIN_STACK"
+#define RUST_MAX_STACK "RUST_MAX_STACK"
 #define RUST_LOG "RUST_LOG"
 #define CHECK_CLAIMS "CHECK_CLAIMS"
 #define DETAILED_LEAKS "DETAILED_LEAKS"
@@ -69,15 +70,26 @@ get_num_threads()
 
 static size_t
 get_min_stk_size() {
-    char *stack_size = getenv(RUST_MIN_STACK);
-    if(stack_size) {
-        return strtol(stack_size, NULL, 0);
+    char *minsz = getenv(RUST_MIN_STACK);
+    if(minsz) {
+        return strtol(minsz, NULL, 0);
     }
     else {
         return 0x300;
     }
 }
 
+static size_t
+get_max_stk_size() {
+    char *maxsz = getenv(RUST_MAX_STACK);
+    if (maxsz) {
+	return strtol(maxsz, NULL, 0);
+    }
+    else {
+	return 1024*1024*8;
+    }
+}
+
 static char*
 copyenv(const char* name) {
     char *envvar = getenv(name);
@@ -99,6 +111,7 @@ load_env() {
 
     env->num_sched_threads = (size_t)get_num_threads();
     env->min_stack_size = get_min_stk_size();
+    env->max_stack_size = get_max_stk_size();
     env->logspec = copyenv(RUST_LOG);
     env->check_claims = getenv(CHECK_CLAIMS) != NULL;
     env->detailed_leaks = getenv(DETAILED_LEAKS) != NULL;