diff options
author | hboehm <hboehm> | 2009-06-13 00:00:06 +0000 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2011-07-26 21:06:45 +0400 |
commit | 4faed82e614d119f649a5e1dcfac2174f06d59a8 (patch) | |
tree | eb0580dc2d507b1cf5b79f3f1ec757bee0556390 /gcj_mlc.c | |
parent | f9c7d77d0cff9d52082a422052cab1480fda858d (diff) | |
download | bdwgc-4faed82e614d119f649a5e1dcfac2174f06d59a8.tar.gz |
2009-06-12 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Ivan Maidanski)
diff98_cvs(resembling diff3, diff27, diff59, diff61, diff66,
diff73 partly)
* dbg_mlc.c (GC_print_smashed_obj): Convert a group of printf()
calls into a single one (for output atomicity).
* typd_mlc.c (GC_calloc_explicitly_typed): Don't declare and use
GC_finalization_failures variable; check the result of
GC_general_register_disappearing_link() (for lack of memory)
instead.
* finalize.c (GC_finalization_failures): Remove unused global
variable.
* finalize.c (GC_general_register_disappearing_link,
GC_general_register_disappearing_link): Don't update the value of
GC_finalization_failures (since unused).
* include/private/gc_pmark.h (PUSH_ONE_CHECKED_STACK,
GC_PUSH_ONE_STACK, GC_PUSH_ONE_HEAP): The first parameter is of
word type now (as FIXUP_POINTER requires numeric argument).
* finalize.c (GC_ignore_self_finalize_mark_proc): GC_PUSH_ONE_HEAP
requires the first parameter of word type.
* mark.c (PUSH_GRANULE): Ditto.
* mark.c (GC_push_one, GC_push_all_eager): Ditto (for
GC_PUSH_ONE_STACK).
* finalize.c (GC_finalize_all): Call GC_invoke_finalizers() or
GC_finalizer_notifier directly, instead
of GC_INVOKE_FINALIZERS() to prevent infinite looping.
* include/javaxfc.h: Clarify GC_finalize_all comment.
* gcj_mlc.c: Include gc_pmark.h before "ifdef GC_GCJ_SUPPORT" (not
after) for configuration information.
* gcj_mlc.c (GC_gcj_malloc_ignore_off_page): Add comment.
* gcj_mlc.c (GC_gcj_malloc_ignore_off_page): Check "op" local
variable for NULL before dereferencing it, return GC_oom_fn() in
this case.
* typd_mlc.c (GC_malloc_explicitly_typed,
GC_malloc_explicitly_typed_ignore_off_page): Transform the code to
suppress compiler warning (for uninitialized "lg" variable).
Diffstat (limited to 'gcj_mlc.c')
-rw-r--r-- | gcj_mlc.c | 19 |
1 files changed, 12 insertions, 7 deletions
@@ -14,6 +14,8 @@ */ /* Boehm, July 31, 1995 5:02 pm PDT */ +#include "private/gc_pmark.h" /* includes gc_priv.h */ + #ifdef GC_GCJ_SUPPORT /* @@ -35,7 +37,6 @@ * 2) FASTLOCK is not a significant win. */ -#include "private/gc_pmark.h" /* includes gc_priv.h */ #include "gc_gcj.h" #include "private/dbg_mlc.h" @@ -208,6 +209,7 @@ GC_API void * GC_CALL GC_debug_gcj_malloc(size_t lb, return (GC_store_debug_info(result, (word)lb, s, (word)i)); } +/* There is no THREAD_LOCAL_ALLOC for GC_gcj_malloc_ignore_off_page(). */ GC_API void * GC_CALL GC_gcj_malloc_ignore_off_page(size_t lb, void * ptr_to_struct_containing_descr) { @@ -223,22 +225,25 @@ GC_API void * GC_CALL GC_gcj_malloc_ignore_off_page(size_t lb, if( (op = *opp) == 0 ) { maybe_finalize(); op = (ptr_t)GENERAL_MALLOC_IOP(lb, GC_gcj_kind); - /* lg = GC_size_map[lb]; */ /* May have been uninitialized. */ + if (0 == op) { + UNLOCK(); + return(GC_oom_fn(lb)); + } } else { *opp = obj_link(op); GC_bytes_allocd += GRANULES_TO_BYTES(lg); } - *(void **)op = ptr_to_struct_containing_descr; - UNLOCK(); } else { LOCK(); maybe_finalize(); op = (ptr_t)GENERAL_MALLOC_IOP(lb, GC_gcj_kind); - if (0 != op) { - *(void **)op = ptr_to_struct_containing_descr; + if (0 == op) { + UNLOCK(); + return(GC_oom_fn(lb)); } - UNLOCK(); } + *(void **)op = ptr_to_struct_containing_descr; + UNLOCK(); return((void *) op); } |