94 |
+ extra_items * sizeof (SCM_STACKITEM); |
+ extra_items * sizeof (SCM_STACKITEM); |
95 |
|
|
96 |
#ifdef __ia64__ |
#ifdef __ia64__ |
97 |
bytes_free += continuation->backing_store_size; |
scm_gc_free (continuation->backing_store, continuation->backing_store_size, |
98 |
scm_must_free (continuation->backing_store); |
"continuation backing store"); |
99 |
#endif /* __ia64__ */ |
#endif /* __ia64__ */ |
100 |
scm_must_free (continuation); |
scm_gc_free (continuation, bytes_free, "continuation"); |
101 |
return bytes_free; |
return 0; |
102 |
} |
} |
103 |
|
|
104 |
static int |
static int |
146 |
SCM_ENTER_A_SECTION; |
SCM_ENTER_A_SECTION; |
147 |
SCM_FLUSH_REGISTER_WINDOWS; |
SCM_FLUSH_REGISTER_WINDOWS; |
148 |
stack_size = scm_stack_size (rootcont->base); |
stack_size = scm_stack_size (rootcont->base); |
149 |
continuation = scm_must_malloc (sizeof (scm_t_contregs) |
continuation = scm_gc_malloc (sizeof (scm_t_contregs) |
150 |
+ (stack_size - 1) * sizeof (SCM_STACKITEM), |
+ (stack_size - 1) * sizeof (SCM_STACKITEM), |
151 |
FUNC_NAME); |
"continuation"); |
152 |
continuation->num_stack_items = stack_size; |
continuation->num_stack_items = stack_size; |
153 |
continuation->dynenv = scm_dynwinds; |
continuation->dynenv = scm_dynwinds; |
154 |
continuation->throw_value = SCM_EOL; |
continuation->throw_value = SCM_EOL; |
174 |
(unsigned long) __libc_ia64_register_backing_store_base; |
(unsigned long) __libc_ia64_register_backing_store_base; |
175 |
continuation->backing_store = NULL; |
continuation->backing_store = NULL; |
176 |
continuation->backing_store = |
continuation->backing_store = |
177 |
scm_must_malloc (continuation->backing_store_size, FUNC_NAME); |
scm_gc_malloc (continuation->backing_store_size, |
178 |
|
"continuation backing store"); |
179 |
memcpy (continuation->backing_store, |
memcpy (continuation->backing_store, |
180 |
(void *) __libc_ia64_register_backing_store_base, |
(void *) __libc_ia64_register_backing_store_base, |
181 |
continuation->backing_store_size); |
continuation->backing_store_size); |