Ivan Maidanski [Sun, 22 Jun 2014 16:49:01 +0000 (20:49 +0400)]
Fix vsprintf_args initialization/cleanup in CORD_vsprintf for EMX
* cord/cordprnt.c (CORD_vsprintf): Do not use va_copy and va_end if
EMX (as the primitives are missing).
Ivan Maidanski [Sun, 22 Jun 2014 16:30:55 +0000 (20:30 +0400)]
Update TODO file (regarding Makefile.dj, build_atomic_ops.sh)
Ivan Maidanski [Sun, 22 Jun 2014 16:26:02 +0000 (20:26 +0400)]
Fix EMX_MAKEFILE (adjust path to header files, add -I option)
* EMX_MAKEFILE: Remove comment about renaming to Makefile.
* EMX_MAKEFILE (CFLAGS, SPECIALCFLAGS): Add "-I include" option.
* EMX_MAKEFILE (CXXFLAGS): New variable (set to CFLAGS value).
* EMX_MAKEFILE (CORD_INCLUDE_FILES, test.o, setjmp_test.exe): Adjust
path to gc.h.
* EMX_MAKEFILE (SHELL): Remove special variable (not needed for EMX).
* EMX_MAKEFILE (test.o): Adjust path to dependencies (gc_priv.h,
gc_hdrs.h, gcconfig.h, gc_typed.h).
* EMX_MAKEFILE (gc_cpp.o, c++): Adjust path to gc_cpp.h.
* EMX_MAKEFILE (gc_cpp.o): Use CXXFLAGS value instead of "-O".
* EMX_MAKEFILE (c++): Do not copy gc_cpp.h to "include" folder.
Ivan Maidanski [Sun, 22 Jun 2014 08:40:10 +0000 (12:40 +0400)]
Fix 'implicit declaration of vsnprintf' GCC warning (if strict ANSI mode)
* cord/tests/cordtest.c (GC_SNPRINTF): Redirect to sprintf also in
case of __STRICT_ANSI__ (i.e., if -ansi compiler option specified).
* misc.c (GC_VSNPRINTF): Redirect to vsprintf also in case of
__STRICT_ANSI__.
Ivan Maidanski [Sat, 21 Jun 2014 17:06:27 +0000 (21:06 +0400)]
Fix 'cord' headers path in EMX_MAKEFILE and README.QUICK
* EMX_MAKEFILE (CORD_INCLUDE_FILES): Replace cord/*.h files with
include/*.h ones (all "cord" header files moved in gc4.8).
* EMX_MAKEFILE (cords): Do not copy cord/*.h files to "include"
folder.
* README.QUICK: Replace cord/cord.h with include/cord.h; move sentence
about cord.h to the relevant paragraph.
Ivan Maidanski [Wed, 18 Jun 2014 23:29:19 +0000 (03:29 +0400)]
Remove Makefile.dj (and README.dj) in favor of configure (DJGPP)
* Makefile.am (EXTRA_DIST): Remove Makefile.dj entry.
* Makefile.direct (OTHER_MAKEFILES): Likewise.
* Makefile.direct (DOC_FILES): Remove doc/README.dj entry.
* doc/doc.am (dist_pkgdata_DATA): Likewise.
* Makefile.dj: Remove file ("configure" is to be used to build libgc,
no special options needed).
* doc/README.dj: Likewise.
Ivan Maidanski [Wed, 18 Jun 2014 23:04:28 +0000 (03:04 +0400)]
Fix unresolved vsnprintf in misc.c and snprintf in cordtest (DJGPP, VC)
* cord/tests/cordtest.c (GC_SNPRINTF, GC_SNPRINTF_BUFSZ_ARG): New
macro to workaround snprintf() missing in DJGPP and MS VC.
* cord/tests/cordtest.c (test_printf): Replace snprintf() with
GC_SNPRINTF and GC_SNPRINTF_BUFSZ_ARG.
* misc.c (GC_VSNPRINTF): Test DJGPP instead of NO_VSNPRINTF; refine
comment.
Ivan Maidanski [Tue, 17 Jun 2014 20:11:11 +0000 (00:11 +0400)]
Remove build_atomic_ops.sh
* Makefile.am (EXTRA_DIST): Remove build_atomic_ops.sh,
build_atomic_ops.sh.cygwin entries.
* Makefile.direct (OTHER_MAKEFILES): Likewise.
* Makefile.direct (AO_SRC_DIR): Update comment.
* Makefile.direct (AO_INSTALL_DIR): Remove variable.
* Makefile.direct (CFLAGS_EXTRA): New variable (empty by default).
* Makefile.direct (CFLAGS, SPECIALCFLAGS): Replace
"$(AO_INSTALL_DIR)/include" with "$(AO_SRC_DIR)/src" include folder.
* Makefile.direct (CFLAGS): Add $(CFLAGS_EXTRA).
* Makefile.direct (OBJS): Add atomic_ops.o, atomic_ops_sysdeps.o
entries.
* Makefile.direct (AO_INSTALL_DIR): Remove rule (build essential .o
files of libatomic_ops directly instead of configure and make).
* Makefile.direct (atomic_ops.o, atomic_ops_sysdeps.o): Add rule.
* Makefile.direct (tests/test.o, setjmp_test): Remove dependency on
$(AO_INSTALL_DIR).
* Makefile.direct (gc.a): Do not copy contents of libatomic_ops.a to
gc.a.
* Makefile.direct (sunos5gc.so): Do not link with libatomic_ops.a.
* Makefile.direct (gc.tar): Do not make libatomic_ops.
* build_atomic_ops.sh: Remove file.
* build_atomic_ops.sh.cygwin: Likewise.
Ivan Maidanski [Sun, 15 Jun 2014 07:39:12 +0000 (11:39 +0400)]
Fix signedness of char values passed to isspace, iscntrl, isxdigit
(eliminate 'array subscript has type char' GCC warning)
* cord/tests/de_win.c (WinMain, plain_chars, control_chars): Cast char
value to unsigned char when passed to isspace(), iscntrl().
* os_dep.c (GC_parse_map_entry): Change type of "start_start",
"end_start", "maj_dev_start", "p" local variables from char* to
unsgined char* (as isspace(), isxdigit() expect non-negative values);
insert casts between char* and unsigned char* where needed.
* os_dep.c (GC_parse_map_entry): Remove "endp" local variable (use "p"
variable directly instead).
Ivan Maidanski [Sat, 14 Jun 2014 16:30:42 +0000 (20:30 +0400)]
Eliminate warnings detected by Cppcheck in cord de[_win]
* cord/tests/de.c (prune_map): Remove redundant first check of map for
NULL (as "map" variable has already been dereferenced at the point of
the check).
* cord/tests/de.c (replace_line): Do not define "len" local variable
if not used; eliminate duplicate CORD_len(s) call.
* cord/tests/de_win.c (WndProc): Cast char_width and char_height
global variables to unsigned int in division of unsigned xpos, ypos
local variables.
Ivan Maidanski [Sat, 14 Jun 2014 16:11:54 +0000 (20:11 +0400)]
Fix 'redundant assignment to itself' Cppcheck warning in GC_scratch_alloc
* headers.c (GC_scratch_alloc): Do not reassign "bytes_to_get" local
variable to avoid compiler warning in case of ROUNDUP_PAGESIZE_IF_MMAP
is a no-op (i.e., assign bytes_to_get only once directly to a rounded
value).
Ivan Maidanski [Sat, 14 Jun 2014 15:55:15 +0000 (19:55 +0400)]
Fix 'variable unused' warning in GC_save_callers
* os_dep.c (GC_save_callers): Do not declare "i" local variable unless
it is used.
Ivan Maidanski [Sat, 14 Jun 2014 15:28:09 +0000 (19:28 +0400)]
Eliminate side effect in assertion condition in disclaim_bench
(code refactoring)
* tests/disclaim_bench.c (testobj_finalize): Move "i" field increment
out of assertion condition; replace increment with assignment.
Ivan Maidanski [Fri, 13 Jun 2014 14:22:30 +0000 (18:22 +0400)]
Fix file descriptor resource leak in GC_register_data_segments (OS/2)
* os_dep.c (GC_register_data_segments): Call fclose(myexefile) on
return (only if OS2).
Ivan Maidanski [Thu, 12 Jun 2014 07:25:01 +0000 (11:25 +0400)]
Do not put libatomic_ops to gc.tar by Makefile.direct
* Makefile.direct (dist gc.tar): Do not add libatomic_ops to gc.tar.
Ivan Maidanski [Thu, 12 Jun 2014 07:17:46 +0000 (11:17 +0400)]
Remove dependency on 'Makefile' in Makefile.direct/dj
* Makefile.direct (dyn_load_sunos53.o, gc_cpp.o, threadlibs): Remove
dependency on Makefile; remove comment.
* Makefile.dj (dyn_load_sunos53.o, gc_cpp.o, threadlibs): Likewise.
* Makefile.direct (Makefile): Remove rule.
* Makefile.direct (gc.tar): Do not include Makefile.
Ivan Maidanski [Mon, 9 Jun 2014 22:25:31 +0000 (02:25 +0400)]
Fix 'illegal option -xassembler-with-cpp' error (Oracle SunCC)
* Makefile.am (ASM_CPP_OPTIONS): Move comment to configure.ac.
* Makefile.am (COMPILER_XLC): Rename to ASM_WITH_CPP_UNSUPPORTED.
* configure.ac (COMPILER_XLC): Likewise.
* configure.ac (compiler_suncc): New variable (set to "yes" if Solaris
Sun C compiler).
* configure.ac (ASM_WITH_CPP_UNSUPPORTED): Define not only for
compiler_xlc but also for compiler_suncc.
Ivan Maidanski [Sun, 8 Jun 2014 13:24:17 +0000 (17:24 +0400)]
Fix CFLAGS in configure regarding -O flag passing to SunCC compiler
* configure.ac (CFLAGS): Add -O flag if Solaris SunCC (i.e., not GCC)
regardless of threads support (i.e., even in case it is off).
Ivan Maidanski [Wed, 4 Jun 2014 19:35:09 +0000 (23:35 +0400)]
Update ChangeLog file (related to 7.5.0)
Ivan Maidanski [Mon, 2 Jun 2014 22:23:10 +0000 (02:23 +0400)]
Update ChangeLog file
Ivan Maidanski [Sat, 31 May 2014 09:40:23 +0000 (13:40 +0400)]
Fix 'op_sz variable unused' warning in GC_core_finalized_malloc
(fix commit 2a3cef3)
* fnlz_mlc.c (GC_core_finalized_malloc): Remove "op_sz" local variable.
Bruce Hoult [Thu, 29 May 2014 06:16:50 +0000 (18:16 +1200)]
Fix crash when using GC_malloc_many() as first allocation call
* mallocx.c (GC_CALL GC_generic_malloc_many): Do not dereference
ok_reclaim_list if it is NULL.
Petter Urkedal [Sun, 25 May 2014 13:57:03 +0000 (15:57 +0200)]
Fix GC_finalized_malloc failure on disclaim_test
(revert part of commit 63fd11d)
The finalizer closure is placed in the first word in order to use the
lower bits to distinguish live objects from objects on the free list.
The downside of this is that we need one-word offset interior pointers,
and that GC_base does not return the start of the user region.
* fnlz_mlc.c (GC_finalized_disclaim): Move finalizer closure for
finalized object kinds back to the start of objects.
* fnlz_mlc.c (GC_init_finalized_malloc): Call
GC_register_displacement_inner() as GC_finalized_malloc returns
displaced pointer.
* fnlz_mlc.c (GC_core_finalized_malloc, GC_finalized_malloc): Store
fclos in first word of created object (instead of the last word);
return pointer to object displaced by 1 word.
Petter Urkedal [Mon, 19 May 2014 20:36:55 +0000 (22:36 +0200)]
Use magic header on objects to improve disclaim_test
* tests/disclaim_test.c (my_assert): Call fflush().
* tests/disclaim_test.c (pair_s): Replace is_valid with "magic" field.
* tests/disclaim_test.c (pair_magic): New const static variable.
* tests/disclaim_test.c (is_pair): New function.
* tests/disclaim_test.c (pair_dct, pair_new): Set "magic" field and
use is_pair() instead of is_valid for assertion checking.
Ivan Maidanski [Thu, 29 May 2014 19:32:45 +0000 (23:32 +0400)]
Fix PARALLEL_MARK for Windows 7+
(revert part of commit f1b257a)
* doc/README.macros (DONT_USE_SIGNALANDWAIT): Remove.
* win32_threads.c (DONT_USE_SIGNALANDWAIT, GC_mark_mutex_waitcnt,
SignalObjectAndWait_type, signalObjectAndWait_func): Likewise.
* win32_threads.c (GC_marker_cv, GC_mark_thread, start_mark_threads,
GC_mark_mutex_state, GC_acquire_mark_lock, GC_release_mark_lock,
GC_wait_marker, GC_notify_all_marker, GC_thr_init): Do not check
DONT_USE_SIGNALANDWAIT macro (assume it is always on as multi-core
marker based on NT SignalObjectAndWait is broken in Windows 7+ leading
to a deadlock sometimes because the function is no longer atomic).
Ivan Maidanski [Wed, 28 May 2014 20:46:21 +0000 (00:46 +0400)]
Fix 'Array subscript is above array bounds' GCC warning in GC_new_kind/proc
* misc.c (GC_new_kind_inner, GC_new_proc_inner): Move ABORT call so
that to be immediately followed by return (to workaround
"array subscript is above array bounds" warning reported by MinGW
GCC 4.5.2); do not increase elements count in case of overflow.
Ivan Maidanski [Wed, 28 May 2014 17:59:47 +0000 (21:59 +0400)]
.gitignore: Ignore all .deps, .dirstamp
Ivan Maidanski [Mon, 26 May 2014 20:07:32 +0000 (00:07 +0400)]
Update TODO (Android 'gold' linker issue fixed in b746e63)
Ivan Maidanski [Sun, 25 May 2014 20:09:56 +0000 (00:09 +0400)]
Update ChangeLog file (related to 7.5.0)
Ivan Maidanski [Sun, 25 May 2014 20:03:39 +0000 (00:03 +0400)]
Update ChangeLog file
Ivan Maidanski [Thu, 22 May 2014 22:17:26 +0000 (02:17 +0400)]
Update AUTHORS file
Bernd Edlinger [Thu, 22 May 2014 21:53:21 +0000 (01:53 +0400)]
Fix (enable) Cygwin-64 build
* include/gc.h (GC_DATASTART, GC_DATAEND): Define for Cygwin-64.
* include/private/gcconfig.h (X86_64): Likewise.
* include/private/gcconfig.h (OS_TYPE, DATASTART, DATAEND, STACK_GRAN,
NEED_FIND_LIMIT, USE_MMAP_ANON): Define for Cygwin-64 (code copied
from Cygwin-32 block).
* os_dep.c (GC_get_stack_base): Get the stack base for Cygwin-64
(implementation based on NtCurrentTeb call).
Ivan Maidanski [Thu, 22 May 2014 20:21:23 +0000 (00:21 +0400)]
Fix 'source file in a subdirectory' Automake warnings
* configure.ac (AM_INIT_AUTOMAKE): Enable subdir-objects (to avoid
future incompatibilities as "cord" and "tests" source files are in
subdirectories).
Ivan Maidanski [Sun, 18 May 2014 07:37:01 +0000 (11:37 +0400)]
Refine description in README how to build from source repository
Ivan Maidanski [Sun, 18 May 2014 06:53:16 +0000 (23:53 -0700)]
Merge pull request #44 from jric/master
Added instructions to README.md for building from git.
Ivan Maidanski [Sat, 17 May 2014 15:01:45 +0000 (19:01 +0400)]
Merge branch 'ancient-releases'
Hans Boehm [Thu, 6 May 2004 00:00:00 +0000 (00:00 +0000)]
gc6.3alpha6 tarball import
Ivan Maidanski [Sat, 17 May 2014 14:52:39 +0000 (18:52 +0400)]
Merge tag 'gc6_3alpha5' into ancient-releases
Hans Boehm [Thu, 5 Jun 2003 00:00:00 +0000 (00:00 +0000)]
gc6.2alpha6 tarball import
Hans Boehm [Wed, 14 May 2003 00:00:00 +0000 (00:00 +0000)]
gc6.2alpha5 tarball import
Hans Boehm [Mon, 10 Mar 2003 00:00:00 +0000 (00:00 +0000)]
gc6.2alpha4 tarball import
Hans Boehm [Thu, 30 Jan 2003 00:00:00 +0000 (00:00 +0000)]
gc6.2alpha3 tarball import
Ivan Maidanski [Sat, 17 May 2014 14:37:27 +0000 (18:37 +0400)]
Merge tag 'gc6_1' into ancient-releases
Hans Boehm [Thu, 20 Dec 2001 00:00:00 +0000 (00:00 +0000)]
gc6.1alpha2 tarball import
Hans Boehm [Sat, 22 Sep 2001 00:00:00 +0000 (00:00 +0000)]
gc6.1alpha1 tarball import
Ivan Maidanski [Sat, 17 May 2014 14:30:04 +0000 (18:30 +0400)]
Merge tag 'gc6_0' into ancient-releases
Hans Boehm [Fri, 15 Jun 2001 00:00:00 +0000 (00:00 +0000)]
gc6.0alpha8 tarball import
Hans Boehm [Tue, 26 Sep 2000 00:00:00 +0000 (00:00 +0000)]
gc6.0alpha3 tarball import
Ivan Maidanski [Sat, 17 May 2014 14:10:33 +0000 (18:10 +0400)]
Merge tag 'gc5_3' into ancient-releases
Hans Boehm [Sat, 30 Oct 1999 00:00:00 +0000 (00:00 +0000)]
gc5.0alpha4 tarball import
Ivan Maidanski [Sat, 17 May 2014 13:59:17 +0000 (17:59 +0400)]
Merge tag 'gc5_0alpha3' into ancient-releases
Hans Boehm [Fri, 23 Jul 1999 00:00:00 +0000 (00:00 +0000)]
gc5.0alpha2 tarball import
Hans Boehm [Wed, 30 Jun 1999 00:00:00 +0000 (00:00 +0000)]
gc5.0alpha1 tarball import
Ivan Maidanski [Sat, 17 May 2014 13:51:17 +0000 (17:51 +0400)]
Merge tag 'gc4_14' into ancient-releases
Hans Boehm [Fri, 26 Mar 1999 00:00:00 +0000 (00:00 +0000)]
gc4.14alpha2 tarball import
Ivan Maidanski [Sat, 17 May 2014 13:45:17 +0000 (17:45 +0400)]
Merge tag 'gc4_14alpha1' into ancient-releases
Hans Boehm [Tue, 8 Dec 1998 00:00:00 +0000 (00:00 +0000)]
gc4.13alpha3 tarball import
Hans Boehm [Sat, 8 Aug 1998 00:00:00 +0000 (00:00 +0000)]
gc4.13alpha2 tarball import
Hans Boehm [Tue, 17 Feb 1998 00:00:00 +0000 (00:00 +0000)]
gc4.13alpha1 tarball import
Ivan Maidanski [Sat, 17 May 2014 13:33:41 +0000 (17:33 +0400)]
Merge tag 'gc4_12' into ancient-releases
Hans Boehm [Mon, 12 Feb 1996 00:00:00 +0000 (00:00 +0000)]
gc4.9 tarball import
Ivan Maidanski [Sat, 17 May 2014 13:27:33 +0000 (17:27 +0400)]
Merge tag 'gc4_8' into ancient-releases
Hans Boehm [Sat, 18 Nov 1995 00:00:00 +0000 (00:00 +0000)]
gc4.7 tarball import
Hans Boehm [Thu, 9 Nov 1995 00:00:00 +0000 (00:00 +0000)]
gc4.6 tarball import
Hans Boehm [Wed, 14 Jun 1995 00:00:00 +0000 (00:00 +0000)]
gc4.5 tarball import
Hans Boehm [Sat, 18 Feb 1995 00:00:00 +0000 (00:00 +0000)]
gc4.4 tarball import
Hans Boehm [Fri, 23 Dec 1994 00:00:00 +0000 (00:00 +0000)]
gc4.3 tarball import
Hans Boehm [Wed, 3 Aug 1994 00:00:00 +0000 (00:00 +0000)]
gc4.2 tarball import
Ivan Maidanski [Sat, 17 May 2014 13:04:42 +0000 (17:04 +0400)]
Merge tag 'gc4_1' into ancient-releases
Hans Boehm [Thu, 7 Apr 1994 00:00:00 +0000 (00:00 +0000)]
gc4.0 tarball import
Hans Boehm [Tue, 15 Mar 1994 00:00:00 +0000 (00:00 +0000)]
gc3.7 tarball import
Hans Boehm [Fri, 14 Jan 1994 00:00:00 +0000 (00:00 +0000)]
gc3.6 tarball import
Hans Boehm [Sat, 2 Oct 1993 00:00:00 +0000 (00:00 +0000)]
gc3.3 tarball import
Hans Boehm [Tue, 27 Apr 1993 00:00:00 +0000 (00:00 +0000)]
gc2.6 tarball import
Hans Boehm [Tue, 26 Jan 1993 00:00:00 +0000 (00:00 +0000)]
gc-2.4 tarball import
Hans Boehm [Wed, 29 Jan 1992 00:00:00 +0000 (00:00 +0000)]
gc1.9 tarball import
Ivan Maidanski [Fri, 16 May 2014 19:31:38 +0000 (23:31 +0400)]
Fix typos in ChangeLog (in items for ancient GC releases)
* ChangeLog: Fix typos ("nonexistent", "to", "posting", "bit rot",
"likely", "flaky").
* ChangeLog: Fix typos in surname (Juan Jose Garcia-Ripoll,
Paolo Molaro, Andreas Tobler).
* ChangeLog: Fix incorrect article ("a finalizable").
Ivan Maidanski [Thu, 15 May 2014 22:25:18 +0000 (02:25 +0400)]
Update AUTHORS file (add more persons mentioned in ChangeLog)
Ivan Maidanski [Thu, 15 May 2014 22:21:00 +0000 (02:21 +0400)]
Restore contribution information for ancient releases in ChangeLog
(revert part of commit ba8ef9e)
Ivan Maidanski [Thu, 15 May 2014 18:35:25 +0000 (22:35 +0400)]
Update AUTHORS file (specify email for some more contributors)
Ivan Maidanski [Thu, 15 May 2014 17:41:21 +0000 (21:41 +0400)]
Fix typo in person name in gc_cpp.h comment
* include/gc_cpp.h: Fix typo in surname (John Ellis) in comment.
Ivan Maidanski [Thu, 15 May 2014 17:30:10 +0000 (21:30 +0400)]
Update Xerox FTP host name in overview.html
* doc/overview.html: Update FTP host name (ftp.parc.xerox.com).
Joshua Richardson [Tue, 13 May 2014 17:20:17 +0000 (10:20 -0700)]
Added instructions to README.md for building from git.
Ivan Maidanski [Mon, 12 May 2014 04:48:59 +0000 (08:48 +0400)]
ChangeLog: Add information about ancient release dates
Ivan Maidanski [Fri, 9 May 2014 11:28:38 +0000 (15:28 +0400)]
Remove duplicate entry and non-contributor persons from AUTHORS file
(remove entries occasionally leaked from GCC and Mono downstreams;
revert part of commits
e1dc74a7,
b23e1c8a,
8747eb89)
Ivan Maidanski [Sat, 3 May 2014 20:30:13 +0000 (00:30 +0400)]
Update AUTHORS file (specify email for most contributors)
Ivan Maidanski [Sat, 3 May 2014 18:50:50 +0000 (22:50 +0400)]
Fix typos in names in AUTHORS and ChangeLog files
* AUTHORS: Fix typo in surname (Bryce McKinlay, Slava Sysoltsev).
* ChangeLog: Likewise.
* AUTHORS: Fix typo in name or surname (Philip Brown, Rutger Ovidius).
* AUTHORS: Place surname after 1st name (Tommaso Tagliapietra).
* AUTHORS: Remove computer system name (Harris NightHawk).
Ivan Maidanski [Sat, 3 May 2014 05:47:50 +0000 (09:47 +0400)]
Update AUTHORS file
Ivan Maidanski [Fri, 2 May 2014 19:51:21 +0000 (23:51 +0400)]
Remove obsolete BACKING_STORE_ALIGNMENT/DISPLACEMENT macros for Linux/IA64
* include/private/gcconfig.h (BACKING_STORE_ALIGNMENT,
BACKING_STORE_DISPLACEMENT): Remove unused macro for linux/ia64;
update adjacent comment.
Ivan Maidanski [Sun, 27 Apr 2014 06:36:21 +0000 (10:36 +0400)]
Fix machdep .lo files path in configure (SPARC, IA-64)
* configure.ac (machdep): Remove "src/" path prefix for .lo files
(sparc_netbsd_mach_dep, sparc_mach_dep, ia64_save_regs_in_stack).
Baruch Siach [Sat, 26 Apr 2014 17:50:07 +0000 (21:50 +0400)]
Fix build (broken by fenv.h inclusion) on Linux/x86_64 under uClibc
* include/private/gcconfig.h (GETCONTEXT_FPU_EXCMASK_BUG): Do not
define for uClibc, as it may not have fenv.h.
Ivan Maidanski [Tue, 22 Apr 2014 22:04:11 +0000 (02:04 +0400)]
Fix TEXT() usage for concatenated strings in GC_CreateLogFile (Win32)
* misc.c (GC_CreateLogFile): Use TEXT() for each of concatenated
literals (fix "concatenating mismatched strings" error if UNICODE
defined).
Ivan Maidanski [Tue, 22 Apr 2014 21:28:32 +0000 (01:28 +0400)]
Fix MS VC redefinition warning for functions declared with GC_ATTR_MALLOC
* dbg_mlc.c (GC_debug_malloc, GC_debug_malloc_ignore_off_page,
GC_debug_malloc_atomic_ignore_off_page, GC_debug_malloc_stubborn,
GC_debug_malloc_atomic, GC_debug_strdup, GC_debug_strndup,
GC_debug_wcsdup, GC_debug_malloc_uncollectable,
GC_debug_malloc_atomic_uncollectable,
GC_debug_generic_or_special_malloc, GC_debug_malloc_replacement): Add
GC_ATTR_MALLOC attribute to API function definition (to avoid MS VC
warning about redefinition of a symbol previously declared with
__declspec).
* fnlz_mlc.c (GC_finalized_malloc): Likewise.
* gcj_mlc.c (GC_gcj_malloc, GC_debug_gcj_malloc,
GC_gcj_malloc_ignore_off_page): Likewise.
* malloc.c (GC_generic_malloc, GC_malloc_atomic, GC_malloc,
GC_malloc_uncollectable): Likewise.
* mallocx.c (GC_generic_or_special_malloc,
GC_generic_malloc_ignore_off_page, GC_malloc_ignore_off_page,
GC_malloc_atomic_ignore_off_page, GC_malloc_many, GC_memalign,
GC_malloc_atomic_uncollectable, GC_strdup, GC_strndup, GC_wcsdup):
Likewise.
* stubborn.c (GC_malloc_stubborn): Likewise.
* thread_local_alloc.c (GC_malloc, GC_malloc_atomic, GC_gcj_malloc):
Likewise.
* typd_mlc.c (GC_malloc_explicitly_typed,
GC_malloc_explicitly_typed_ignore_off_page,
GC_calloc_explicitly_typed): Likewise.
Ivan Maidanski [Mon, 31 Mar 2014 22:07:05 +0000 (02:07 +0400)]
Fix a typo in gc_config_macros.h comment (redundant "an" article)
* include/gc_config_macros.h (GC_ADD_CALLER): Fix a typo in comment
(redundant "an" article).
Ivan Maidanski [Mon, 31 Mar 2014 21:25:18 +0000 (01:25 +0400)]
GC_scratch_alloc code refactoring (and WARN message improvement)
* headers.c (GC_scratch_alloc): Remove "register" keyword for "result"
local variable; replace tail recursion with a loop; adjust and add
comments.
* headers.c (GC_scratch_alloc): Adjust message and output requested
allocation size in WARN().
* include/private/gc_priv.h (_GC_arrays._scratch_last_end_ptr):
Improve comment.
Ivan Maidanski [Sun, 30 Mar 2014 17:05:35 +0000 (21:05 +0400)]
Fix GC_scratch_last_end_ptr update on GC_scratch_alloc failure
* headers.c (GC_scratch_alloc): Do not update GC_scratch_last_end_ptr
if allocation failed ("result" variable is NULL).
Ivan Maidanski [Sun, 30 Mar 2014 08:53:48 +0000 (12:53 +0400)]
Fix out-of-memory case in new_back_edges, push_in_progress (backgraph)
* backgraph.c (new_back_edges): Abort if not enough memory.
* backgraph.c (push_in_progress): Prevent null pointer dereference in
BCOPY() if allocation failed (due to not enough memory).
Ivan Maidanski [Sun, 30 Mar 2014 08:31:49 +0000 (12:31 +0400)]
Fix GET_MEM argument rounding in GC_scratch_alloc and similar
(Prevent abort in GC_unix_mmap_get_mem if the allocation size is not
a multiple of a page size.)
* backgraph.c (new_back_edges, push_in_progress): Use
ROUNDUP_PAGESIZE_IF_MMAP() to adjust GET_MEM() argument (when needed).
* headers.c (GC_scratch_alloc): Likewise.
* misc.c (GC_envfile_init): Likewise.
* include/private/gc_priv.h (ROUNDUP_PAGESIZE_IF_MMAP): New macro.
* include/private/gcconfig.h (MMAP_SUPPORTED): Move definition from
os_dep.c (as needed for ROUNDUP_PAGESIZE_IF_MMAP() definition).
* include/private/gcconfig.h (GET_MEM): Refine comment (regarding its
argument).
Ivan Maidanski [Sun, 30 Mar 2014 07:24:12 +0000 (11:24 +0400)]
Define ROUNDUP_PAGESIZE, ROUNDUP_GRANULE_SIZE macros (code refactoring)
* alloc.c (GC_expand_hp_inner): Use ROUNDUP_PAGESIZE().
* checksums.c (GC_record_fault, GC_was_faulted): Likewise.
* os_dep.c (GC_unix_mmap_get_mem, GC_wince_get_mem, GC_unmap_start,
GC_remove_protection): Likewise.
* headers.c (GC_scratch_alloc): Use ROUNDUP_GRANULE_SIZE().
* malloc.c (GC_alloc_large): Likewise.
* mallocx.c (GC_malloc_many): Likewise.
* headers.c (GC_scratch_alloc): Use ROUNDUP_PAGESIZE() (only if
USE_MMAP).
* include/private/gc_priv.h (ROUNDUP_GRANULE_SIZE, ROUNDUP_PAGESIZE):
Define macro to round up a value to a multiple of a granule or a page,
respectively.
Ivan Maidanski [Mon, 10 Mar 2014 16:04:58 +0000 (20:04 +0400)]
Define public GC_GENERIC_OR_SPECIAL_MALLOC and GC_get_kind_and_size
* dbg_mlc.c (GC_debug_generic_malloc,
GC_debug_generic_or_special_malloc): New function.
* mallocx.c (GC_get_kind_and_size): Likewise.
* tests/test.c (test_generic_malloc_or_special): Likewise.
* include/gc_mark.h (GC_generic_or_special_malloc,
GC_debug_generic_or_special_malloc, GC_get_kind_and_size): New API
prototype.
* include/gc_mark.h (GC_GENERIC_OR_SPECIAL_MALLOC): New public macro.
* mallocx.c (GC_generic_or_special_malloc): Turn into API function.
* tests/test.c (reverse_test_inner, run_one_test): Invoke
test_generic_malloc_or_special (to test GC_GENERIC_OR_SPECIAL_MALLOC
and GC_get_kind_and_size).