rt: Fix scalability problem with big stacks on 32 bit

This commit is contained in:
Patrick Walton
2013-04-05 11:55:43 -07:00
parent 2dbe20a561
commit ca8e99fd78
6 changed files with 131 additions and 6 deletions
+4
View File
@@ -13,6 +13,8 @@
#include "vg/valgrind.h"
#include "vg/memcheck.h"
#include <cstdio>
#ifdef _LP64
const uintptr_t canary_value = 0xABCDABCDABCDABCD;
#else
@@ -61,6 +63,7 @@ create_stack(memory_region *region, size_t sz) {
stk_seg *stk = (stk_seg *)region->malloc(total_sz, "stack");
memset(stk, 0, sizeof(stk_seg));
stk->end = (uintptr_t) &stk->data[sz];
stk->is_big = 0;
add_stack_canary(stk);
register_valgrind_stack(stk);
return stk;
@@ -78,6 +81,7 @@ create_exchange_stack(rust_exchange_alloc *exchange, size_t sz) {
stk_seg *stk = (stk_seg *)exchange->malloc(total_sz);
memset(stk, 0, sizeof(stk_seg));
stk->end = (uintptr_t) &stk->data[sz];
stk->is_big = 0;
add_stack_canary(stk);
register_valgrind_stack(stk);
return stk;