diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2014-07-13 12:18:16 +0400 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2014-07-13 12:29:48 +0400 |
commit | 4eaea0afad5dfd31d1d800138f5afaca1925c775 (patch) | |
tree | 72c42c450fc3219ec259763c0695ddea15aaa0b2 /alloc.c | |
parent | 7d2905e01d7f9831353e1f034aea3692e71f96fc (diff) | |
download | bdwgc-4eaea0afad5dfd31d1d800138f5afaca1925c775.tar.gz |
Code refactoring of Emscripten platform support (single-threaded)
* alloc.c (min_bytes_allocd): Test STACK_NOT_SCANNED macro instead
of __EMSCRIPTEN__ (stack size to scan is zero if STACK_NOT_SCANNED).
* include/private/gcconfig.h (ALIGNMENT): Remove duplicate definition
for _EMSCRIPTEN__.
* include/private/gcconfig.h (STACK_NOT_SCANNED): New macro defined
for __EMSCRIPTEN__ target (in addition to OS_TYPE, CPP_WORDSZ,
ALIGNMENT, DATASTART, DATAEND).
* mach_dep.c (GC_push_regs): Test STACK_NOT_SCANNED macro instead
of __EMSCRIPTEN__ (push nothing if STACK_NOT_SCANNED).
* mark_rts.c (GC_push_roots): Test STACK_NOT_SCANNED macro instead
of __EMSCRIPTEN__ (do not call GC_push_regs_and_stack if
STACK_NOT_SCANNED); mark cold_gc_frame argument as potentially unused.
* misc.c (GC_clear_stack): Test STACK_NOT_SCANNED macro instead
of __EMSCRIPTEN__ (do not clear stack if STACK_NOT_SCANNED).
* misc.c (GC_clear_stack): Reformat code.
Diffstat (limited to 'alloc.c')
-rw-r--r-- | alloc.c | 8 |
1 files changed, 3 insertions, 5 deletions
@@ -202,15 +202,13 @@ GC_API GC_stop_func GC_CALL GC_get_stop_func(void) static word min_bytes_allocd(void) { word result; -# ifdef __EMSCRIPTEN__ +# ifdef STACK_NOT_SCANNED word stack_size = 0; -# else -# ifdef STACK_GROWS_UP +# elif defined(STACK_GROWS_UP) word stack_size = GC_approx_sp() - GC_stackbottom; /* GC_stackbottom is used only for a single-threaded case. */ -# else +# else word stack_size = GC_stackbottom - GC_approx_sp(); -# endif # endif word total_root_size; /* includes double stack size, */ |