forked from robovm/bdwgc
-
Notifications
You must be signed in to change notification settings - Fork 3
/
ChangeLog
8689 lines (7853 loc) · 398 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
== [7.5.0] (development) ==
* Add API function to set/modify GC log file descriptor (Unix).
* Add alloc_size attribute to GC_generic_malloc.
* Added instructions to README.md for building from git.
* Allow to force GC_dump_regularly set on at compilation.
* Change 'cord' no-argument functions declaration style to ANSI C.
* Define ROUNDUP_PAGESIZE, ROUNDUP_GRANULE_SIZE macros (code refactoring).
* Define public GC_GENERIC_OR_SPECIAL_MALLOC and GC_get_kind_and_size.
* Eliminate redundant *flh check for null in GC_allocobj.
* GC_scratch_alloc code refactoring (and WARN message improvement).
* Group all compact fields of GC_arrays to fit in single page.
* Improve documentation for disappearing links in gc.h.
* Make heap growth more conservative after GC_gcollect_and_unmap call.
* New macro (GC_ALWAYS_MULTITHREADED) to set multi-threaded mode implicitly.
* Refine description in README how to build from source repository.
* Remove 'opp' local variable in GC_malloc_X.
* Remove hb_large_block field (use 1 extra bit of hb_flags instead).
* Remove obsolete BACKING_STORE_ALIGNMENT/DISPLACEMENT macros for Linux/IA64.
* Remove redundant casts in GC_generic_or_special_malloc and similar.
* Use magic header on objects to improve disclaim_test.
Also, includes 7.4.2 changes.
== [7.4.2] 2014-06-03 ==
* Add config option to use STGRTMIN-based signals for thread suspend/resume.
* Allow parallel mark to be enabled on powerpc-linux systems.
* Check for Fujitsu compiler in builtin_unwind logic (enable FX10/K-Computer).
* Fix 'Array subscript is above array bounds' GCC warning in GC_new_kind/proc.
* Fix 'attribute declaration must precede definition' warning (clang-3.1).
* Fix (enable) Cygwin-64 build.
* Fix GC_finalized_malloc failure on disclaim_test.
* Fix GC_sig_suspend initialization when non-constant SIGRTMIN used.
* Fix MS VC redefinition warning for functions declared with GC_ATTR_MALLOC.
* Fix TEXT() usage for concatenated strings in GC_CreateLogFile (Win32).
* Fix data roots registration for Android/x86 and NDK ARM 'gold' linker.
* Fix find stackbottom on BlueGene P/Q systems.
* Fix machdep .lo files path in configure (SPARC, IA-64).
* Fix ok_init assignment (missing cast) in GC_new_kind_inner.
* Fix typos in names in AUTHORS and ChangeLog files.
* Remove barrett_diagram file duplicated by tree.html.
* Remove non-existing DISCARD_WORDS from GC data structure ASCII diagram.
* Restore contribution information for ancient releases in ChangeLog.
Also, includes 7.2f changes.
== [7.4.0] 2013-11-17 ==
* Add 'bytes reclaimed' counters to public GC_prof_stats_s.
* Add AArch64 (64-bit ARM) target support.
* Add GC_LONG_REFS_NOT_NEEDED ifdefs to exclude long link functionality.
* Add GC_get_prof_stats[_unsafe]() to GC public API.
* Add GC_push_all/conditional() to GC public API.
* Add assertion on number_of_objs to GC_extend_size_map.
* Add assertion to GC_enable() ensuring no counter underflow.
* Add assertion to LOCK definition that lock is not already held.
* Add assertion to LONG_MULT and remove useless assert in PUSH_CONTENTS_HDR.
* Add double-lock assertion to GC_acquire_mark_lock.
* Add manual POSIX fork handling support (Android).
* Add note about 'pkg-config' solving problem with autoconf 2.68 or older.
* Add public GC_set/get_abort_func to replace default GC_on_abort.
* Add public GC_start_mark_threads() to allow parallel marker in fork child.
* Add public setter and getter for GC_push_other_roots.
* Add support of Android logger.
* Add tests for GC_register/move/unregister_long_link.
* Add thread suspend/resume signals public setters (POSIX threads).
* Added long weakref support.
* Adjust GC_dont_expand/gc/precollect and GC_print_stats type to match gc.h.
* Adjust README.md title and references to doc .html files in it.
* Adjust build scripts to enable additional test library in staticrootstest.
* Adjust logged messages in start_mark_threads and GC_thr_init.
* Adjust printf format specifiers in GC_print_trace.
* Allow not to rely on __data_start value (Linux).
* Allow pthread_kill error code logging in GC_suspend/resume (debugging).
* Allow to compile GC_inner_start_routine aside from extra/gc.c.
* Allow to omit libc atexit() call.
* Avoid LOCK/UNLOCK hard-coding in gc_locks.h for PS3 target.
* Better document GC_warn_proc in gc.h.
* Call GC_on_abort (with NULL argument) on exit(1).
* Call GC_stats/verbose_log_printf instead of GC_log_printf if print_stats.
* Change policy regarding version numbers ("micro" part instead of "alpha").
* Changed C99-style designated init of GC_dl_hashtbl struct to use C89-style.
* Check GC_base result in GC_print_all_smashed_proc.
* Check that SIG_SUSPEND and SIG_THR_RESTART are different (Pthreads).
* Check traceable_allocator.allocate result before dereference in test_cpp.
* Code refactoring of GC_x_printf (move shared code to macro).
* Convert readme to markdown.
* Default to use libc_stack_end in single-threaded GC on glibc targets.
* Define GC_VSNPRINTF internal macro in misc.c (code refactoring).
* Define functions in darwin_semaphore.h as inline instead of static.
* Define old_bus_handler static variable only if used (Unix).
* Detect dladdr() presence by configure.
* Disable find-leak GC_gcollect on GC abnormal EXIT.
* Do not define _setjmp/_longjmp macros in mach_dep.c.
* Do not duplicate android_log_write output to GC log file (Android).
* Do not include sigcontext.h if NO_SIGCONTEXT_H (Linux).
* Do not set GC_lock_holder by call_with_alloc_lock if assertions disabled.
* Do not use pthread_getattr_np if NO_PTHREAD_GETATTR_NP specified.
* Elaborate comment on dependencies in autogen.sh.
* Eliminate 'cast from int to pointer' warning in GC_exclude_static_roots.
* Eliminate 'missing exception specification' warning in gc_cpp.cc (Clang).
* Eliminate 'uninitialized variable use' warning in test_printf (cord).
* Eliminate 'unused result' compiler warning in main() of test_cpp.
* Eliminate 'unused value' compiler warning in GC_stop_world (Pthreads).
* Eliminate 'unused variable' compiler warning in start_mark_threads (HP/UX).
* Eliminate Clang warning for GC_pthread_exit attribute.
* Eliminate GCC warning about uninitialized 'hhdr' in GC_allochblk_nth.
* Eliminate GCC warning in GC_get_main_stack_base (OpenBSD).
* Eliminate GCC warnings in setjmp_t.c, test_cpp and cord 'de' app.
* Eliminate GC_first_nonempty atomic value reload in GC_mark_local assertion.
* Eliminate SIGBUS-related dead code in GC_write_fault_handler (Linux).
* Eliminate warning and simplify expression in GC_init_explicit_typing.
* Enable 'force GC at every GC_malloc' debug-related functionality.
* Enable on-demand debug logging in GC_FindTopOfStack (Darwin).
* Enable prefetch operations by default (GCC 3.0+).
* Enable staticrootstest for the case of GC shared library build.
* Enable thread-local allocation support for Clang on Cygwin.
* Explicitly specify that Darwin, Linux and Solaris platforms have dladdr.
* Fix ABORT definition for mingw32ce (WinCE).
* Fix AM_CONFIG_HEADER in configure for autoconf-2.69-1.
* Fix GC_CreateThread and GC_beginthreadex definition for Cygwin.
* Fix GC_INIT_CONF_ROOTS in gc.h for Android.
* Fix GC_INLINE definition to comply with ISO C90 standard (GCC).
* Fix GC_remove_all_threads_but_me for Android (fork support).
* Fix debug_register_displacement calls from GC_debug_generic_malloc_inner.
* Fix dyn_load.c compilation for Android 4.3.
* Fix make disclaim_test to link with new GNU ld linking rules.
* Improve GC error printing atomicity in GC_debug_X and GC_print_obj.
* Improve GC output atomicity in GC_print_obj, GC_print_all_errors.
* Improve debug-only messages of add/remove_roots and init_linux_data_start.
* Improve fork test logging in gctest.
* Improve logged messages about heap size and usage.
* Improve logging for Android differentiating messages by log level.
* Improve staticrootstest (add global data to library, add lib w/o GC_INIT).
* Improve staticrootstest checks (tests).
* Include "config.h" instead of "private/config.h" on HAVE_CONFIG_H.
* Include proper header file in 'tools' for configuration macros.
* Include pthread_np.h from pthread_stop_world.c on OpenBSD.
* Log error messages to stderr instead of stdout in tests.
* Make GC_generic_malloc_ignore_off_page() public.
* Make GC_mark_lock_holder variable static.
* Make GC_print_trace always thread-safe and remove 'lock' argument.
* Mark GC_started_thread_while_stopped() as GC_INNER.
* Minimize code duplication in GC_mark_and_push.
* Move 'include setjmp.h' from mach_dep.c to gc_priv.h.
* Move GC_OPENBSD_UTHREADS definition to private/gcconfig.h (OpenBSD).
* Move GC_get_suspend/thr_restart_signal to misc.c for NaCl and OpenBSD.
* Move LOCK/UNLOCK from GC_unregister_disappearing_link_inner outer.
* Port BDWGC to Android/x86.
* Postpone the suspend signal in GC_dirty_init only if used to stop world.
* Prepend '#' symbol to GC number in logged messages.
* Prevent POSIX fork if mprotect_thread is started (Darwin).
* Prevent abort on GC_err/warn_printf write failure.
* Prevent misleading AC_MSG_ERROR/AS_IF errors reported in configure.ac.
* Put gc_cpp symbols into 'boehmgc' namespace if GC_NAMESPACE defined.
* Recognize GC_DONT_GC macro in gc.h (causes GC_INIT to turn off GC).
* Recognize GC_SIG_SUSPEND and GC_SIG_THR_RESTART tuning macros in gc.h.
* Redirect WRITE to __android_log_write if GC_ANDROID_LOG (Android).
* Refine comment of GC_is_heap_ptr and GC_thread_is_registered in gc.h.
* Register dynamic libraries via dl_iterate_phdr on Android and OpenBSD.
* Remove DebugBreak on WriteFile failure (Win32).
* Remove GC_BUILD definition from build scripts.
* Remove abort on open log failure from GC_write (Win32).
* Remove configure.ac outdated revision number.
* Remove nested EXPECT in GC_core_finalized_malloc.
* Remove nested always-false ifdef for HPUX and FREEBSD.
* Remove redundant GC_err_printf before abort.
* Remove unused UTHREAD_SP_OFFSET macro (OpenBSD).
* Rename subthread_create to subthreadcreate_test (Makefile).
* Replace GC_COND_LOG_PRINTF calls with WARN for allocation failure messages.
* Replace GC_log/err_printf() followed by ABORT with ABORT_ARGn().
* Replace GC_stats_log_printf with GC_DBG/INFOLOG_PRINTF.
* Replace SIG_SUSPEND/THR_RESTART macros to variables in pthread_stop_world.
* Replace Win32 GC_delete_gc_thread with GC_delete_gc_thread_no_free.
* Replace conditional GC_log_printf calls with GC_COND/VERBOSE_LOG_PRINTF.
* Replace sprintf with defensive snprintf.
* Replace var-args GC_noop with GC_noop6 (to eliminate Clang warning).
* Simplify LOCK/UNLOCK macro definition for static code analysis tools.
* Specify GC_malloc result is unused in some tests.
* Specify GC_pthread_join result is unused in threadkey_test.
* Specify LT_INIT in configure.ac.
* Start of port to QNX.
* Support rthreads introduced in OpenBSD 5.2+.
* Suppress 'GC_dont_gc deprecated' warning in gc.h if GC_DONT_GC.
* Tag GC malloc routines with alloc_size attribute for Clang 3.2+.
* Test NO_WRAP_MARK_SOME macro to suppress WRAP_MARK_SOME-specific code.
* Turn off GC_LOOP_ON_ABORT functionality if GC compiled with NO_DEBUGGING.
* Turn on world-stop delay logging at debug level by default for Android.
* Use EXPECT in GC_COND/VERBOSE_LOG_PRINTF.
* Use GC_log_printf for logging instead of GC_[err_]printf.
* Use compiler TLS for Android NDK gcc/arm.
* Use memcpy (BCOPY) instead of strcpy (to suppress GCC warning).
* Use pthread API to operate thread-local data on Linux if no compiler TLS.
* Workaround 'ELF_DATA/EM_ALPHA redefined' warning in Android linker.h.
* Workaround 'unresolved __tls_get_addr' error for Android NDK Clang.
Also, includes 7.2e, 7.2d, 7.2c, 7.2b changes.
== [7.3alpha2] 2012-05-11 ==
* Add 'const' qualifier to pointer argument of some API functions.
* Add GC_UNDERSCORE_STDCALL, UNICODE macro templates to configure (Win32).
* Add GC_get_thr_restart_signal, GC_thread_is_registered to GC API.
* Add GC_is_heap_ptr, GC_move_disappearing_link to GC API.
* Add SHORT_DBG_HDRS macro template to configure.
* Add Symbian port to mainline (porting done by Djamel Magri).
* Add TODO file.
* Add assertion ensuring proper alignment of 'pushed' GC symbols.
* Add assertion in GC_getspecific on qtid.
* Add assertion to GC_incremental_protection_needs, refine documentation.
* Add assertion to check GC_large_free_bytes by GC_finish_collection.
* Add configure option to compile all library .c files into single gc.o.
* Add cordtest to make check.
* Add disclaim callbacks for efficient finalization (ENABLE_DISCLAIM).
* Add finalization.html to 'doc' folder.
* Add javaxfc.h to the installation set of GC header files (configure).
* Add on-heap-resize event notification to API.
* Adjust GC_log_printf format specifiers (regarding signed/unsigned long).
* Adjust GC_requested_heapsize on GC_init if GC_INITIAL_HEAP_SIZE given.
* Allow GC_exclude_static_roots() region start to be unaligned.
* Allow Win32 DllMain chaining on the client side.
* Allow to exclude finalization support by GC_NO_FINALIZATION macro.
* Allow to get memory via Win32 VirtualAlloc (USE_WINALLOC) on Cygwin.
* Avoid unnecessary GC_find_limit invocation if GC_no_dls.
* Avoid use of deprecated GC_dont_gc and GC_stackbottom in gctest.
* Cast pointers to word (instead of unsigned long) in specific.h.
* Changed the order in autogen.sh so ltmain exists in time for automake.
* Declare privately and use handy GC_base_C() for constant object pointers.
* Define GC_DLL if DLL_EXPORT at GC build (for Cygwin/MinGW).
* Define GC_READ_ENV_FILE in configure for WinCE unless gc-debug is off.
* Do not compile backgraph.c unless configure '--enable-gc-debug'.
* Do not compile pthread_stop_world.c for Cygwin/Darwin (configure).
* Do not install ancient new_gc_alloc.h broken for modern STL (configure).
* Enable GC_MIN_MARKERS to set minimal number of pthread-based markers.
* Enable PARALLEL_MARK and THREAD_LOCAL_ALLOC for FreeBSD in configure.
* Enable parallel mark by default in configure (Darwin/Linux/Solaris/Win32).
* Export GC_is_marked, GC_clear/set_mark_bit (for mark-bit manipulation).
* Extend thread-related debug messages.
* Fix 'configure --enable-cplusplus' for Cygwin/MinGW.
* Fix DATASTART (and other minor improvements) for NaCl target.
* Fix GC_setspecific to prevent garbage collection inside.
* Fix compiler warning in cordtest.
* Fix minor warnings reported by GCC with '-pedantic' option.
* Fix static data roots registration on Android (if GC is shared).
* Implement GC_get_stack_base for Darwin for single-threaded mode.
* Improve GC_allochblk algorithm of block splitting when unmapping enabled.
* Improve GC_collect_or_expand algorithm for many finalizers registered case.
* In tests, print a message in case a test is a no-op.
* Instruct configure to hide internal libgc.so symbols if supported by GCC.
* Log amount of unmapped memory (if enabled) on marking-for-collection.
* Make __data_start a weak symbol to allow loading modules on mips.
* Move "cord" library tests to "cord/tests" folder.
* Move asm machine-dependent files to "src" folder.
* Move build tools sources to "tools" folder.
* Move cord_pos.h to public headers folder.
* Open log file in APPEND mode on Win32 (similar that on Unix/Cygwin).
* Optimize some functions by moving pthread_self calls out of LOCK section.
* Place only major per-release changes description to ChangeLog (this file).
* Prevent compiler warnings in GC_FindTopOfStack and GC_ports (Darwin).
* Recognize GC_LOG_TO_FILE_ALWAYS macro to log to 'gc.log' by default.
* Remove all auto-generated files from the repo.
* Remove binary icon file for de_win.
* Remove cordtest from "cord" library.
* Remove duplicate MacOS_Test_config.h file.
* Remove gc_amiga_redirects.h (included internally) from public headers.
* Remove obsolete Makefile.DLL (superseded by Cygwin/MinGW configure).
* Remove obsolete unused asm files for ALPHA, HPUX, SGI, RS6000, ULTRIX.
* Remove unsupported MMAP_STACKS (specific to Solaris threads).
* Remove unused ancient SILENT, __STDC__, NO_SIGNALS macros.
* Replace ARGSUSED comment-based annotation with GCC 'unused' attribute.
* Replace GC_ms_entry declaration with opaque definition for public API.
* Replace long GC_markers global variable with int GC_markers_m1.
* Replace pointer relational comparisons with non-pointer ones.
* Replace printf PRIxMAX specifier with '%p' for thread id debug output.
* Require autoconf 2.61 instead of v2.64.
* Simplify autogen.sh (use autoreconf).
* Split GC_abort with GC_on_abort and abort() invoked from ABORT.
* Support GC_ATTR_MALLOC for MS VisualStudio.
* Tag auxiliary malloc-like API functions with 'malloc' attribute.
* Tag deprecated variables in GC API.
* Tag must-be-non-null arguments of GC API functions.
* Turn on "extra" GCC warnings.
* Turn on unused-parameter checking for GCC.
* Update AUTHORS file.
* Use EXPECT for checking various 'initialized' boolean variables.
* Use USE_COMPILER_TLS on Cygwin.
* Use pthread_key for thread-local storage on FreeBSD.
* Use union of AO_t and word to favor strict-aliasing compiler optimization.
Also, includes 7.2 changes.
== [7.2f] 2014-06-03 ==
* Fix 'Bad signal in suspend_handler' abort on FreeBSD-9.2.
* Fix 'source file in a subdirectory' Automake warnings.
* Fix ABORT message in GC_restart_handler.
* Fix ADD_DEFINITION in CMakeLists.txt for kFreeBSD.
* Fix CMakeLists.txt: do not override CMAKE_OSX_ARCHITECTURES.
* Fix GC_alloc_large by bumping GC_collect_at_heapsize in GC_add_to_heap.
* Fix GC_scratch_last_end_ptr update on GC_scratch_alloc failure.
* Fix GET_MEM argument rounding in GC_scratch_alloc and similar.
* Fix PARALLEL_MARK for Windows 7+.
* Fix build (broken by fenv.h inclusion) on Linux/x86_64 under uClibc.
* Fix crash when using GC_malloc_many() as first allocation call.
* Fix mark stack excessive growth during parallel mark.
* Fix or remove broken URLs in documentation.
* Fix out-of-memory case in new_back_edges, push_in_progress (backgraph).
* Fix typo in GC_collect_or_expand comment.
* Fix typos in GC overview file, gc_config_macros.h, gc_cpp.h, README.changes.
* Regenerate configure files by automake 1.14.1, libtool 2.4.2.418.
* Update emails/links due to project site and ML transition.
== [7.2e] 2013-11-10 ==
* Add weak attribute to avoid __data_start undefined messages (s390x).
* Add weak stubs for pthread_cancel API.
* Adjust 'pthread_[un]register_cancel undefined ref' workaround (Pthreads).
* Append _test suffix to 'initsecondarythread' binary file names.
* Enable PARALLEL_MARK and THREAD_LOCAL_ALLOC for FreeBSD in configure.
* Fix 'stack section' pointer passed to push_all_stack_sections (Pthreads).
* Fix GC_CreateThread 'dwStackSize' argument type for Win64.
* Fix GC_PTHREAD_PTRVAL definition for GC_PTHREADS_PARAMARK (Win32).
* Fix GC_clear_stack by declaring 'dummy' local array as volatile.
* Fix GC_get_stack_base assembly code (Cygwin/Clang).
* Fix GC_malloc_explicitly_typed_ignore_off_page for large allocations.
* Fix GC_marker_Id elements initialization (WinCE).
* Fix GC_print_trace missing unlock.
* Fix GC_unix_mmap_get_mem for open of /dev/zero failure.
* Fix GC_win32_free_heap compilation error for Cygwin.
* Fix GC_win32_free_heap to prevent memory leak if USE_GLOBAL_ALLOC.
* Fix Win32 GC_write preventing potential infinite recursion at abort.
* Fix assertion violation in GC_mark_from prefetch loop.
* Fix collection of objects referenced only from GC_mark_stack_X variables.
* Fix dwSize argument of VirtualFree call in detect_GetWriteWatch (Win32).
* Fix heap sections overflow for Win32/Cygwin with enabled parallel marker.
* Fix min_bytes_allocd preventing potential infinite loop in GC_allocobj.
* Fix missing tabs in SMakefile.amiga file.
* Fix null-pointer dereference in CORD_substr_closure.
* Fix old_segv/bus_act variables initialization for FreeBSD.
* Fix potential double fclose in test_extras (cordtest).
* Fix pthread_attr_t resource leak in pthread_create.
* Fix race in GC_print_all_errors regarding GC_leaked.
* Fix sizeof in GC_push_thread_structures.
* Fix stackbottom/stack_end assignment in GC_call_with_gc_active.
* Fix tests makefile to link with new GNU ld linking rules.
* Fix typos in comments and documentation.
* Fix unportable '==' test operators in configure.
* Fix vsprintf_args cleanup in CORD_vsprintf.
* Merge FreeBSD New ports collection for boehm-gc v7.2d.
* Replace GC_DBG_RA with GC_DBG_EXTRAS macro.
* Replace deprecated [CXX]INCLUDES to AM_C[PP]FLAGS in configure.ac file.
* Use __builtin_extract_return_addr in GC_RETURN_ADDR_PARENT (gcc/x86).
== [7.2d] 2012-08-09 ==
* Fix GC_call_with_stack_base to prevent its tail-call optimization.
* Fix all address-of-dummy operations by using GC_approx_sp() instead.
* Fix stop_info.stack_ptr assignment in GC_suspend_all for OpenBSD.
* Fix test_cpp (ensure the collector recognizes pointers to interiors).
* Fix thread-related tests for pthreads-w32.
* test_cpp: Fix WinMain to prevent SEGV if zero arguments passed (MinGW).
== [7.2c] 2012-06-11 ==
* Fix CORD_cat_char_star to prevent SEGV in case of out-of-memory.
* Fix GC_FirstDLOpenedLinkMap() for NetBSD 6 release.
* Fix GC_scratch_alloc and GC_get_maps invocations to prevent SEGV.
* Fix visibility of GC_clear/set_mark_bit (unhide symbols).
* Fix visibility of GC_push_all/conditional, GC_push_other_roots symbols.
== [7.2b] 2012-05-23 ==
* Fix assertion in GC_malloc_[atomic_]uncollectable (THREADS case only).
== [7.2] 2012-05-11 ==
* Abort in GC_thr_init on pthread_atfork failure (POSIX threads).
* Add GC_WIN32_PTHREADS target in configure.
* Add GC_is_disabled new function to GC API.
* Add info that getcontext() resets FPE mask no longer on Linux/x86_64.
* Add public GC_set_handle_fork to control forked child handling support.
* Add realloc_test.c test.
* Add support for Hexagon target.
* Add thread-safe GC_get_heap_usage_safe to GC API.
* Change GC_check_fl_marks prototype and implementation.
* Check pthread_create/join result in test.
* Define GC_DLL (in configure) if building only dynamic libraries.
* Define NO_DEBUGGING (in configure) if "--disable-gc-debug" is set.
* Disable incremental mode on Darwin if fork handling requested.
* Enable parallel marker in configure for Solaris.
* Fix "comparison of signed and unsigned values" compiler warnings.
* Fix 'volatile' keyword placement in GC_SysVGetDataStart.
* Fix ALIGNMENT, CPP_WORDSZ, GC_GRANULE_BYTES/WORDS for x32 target.
* Fix GC_READ_ENV_FILE code for Cygwin.
* Fix GC_add_roots_inner for Mac OS X (align segment start).
* Fix GC_check_fl_marks regarding concurrent access.
* Fix GC_finalizer_nested size to workaround alignment problem in Watcom.
* Fix GC_find_limit_with_bound to always reset fault handler on return.
* Fix GC_init static assertion for clang/x64 (Darwin).
* Fix GC_init[_lib_bounds] and GC_get_main_stack_base for malloc redirection.
* Fix GC_push_all/selected boundaries check.
* Fix GC_register_my_thread marking thread as detached (Cygwin/pthreads-w32).
* Fix GC_remove_all_threads_but_me to cleanup thread-specific data storage.
* Fix GC_restart_handler to preserve errno if needed.
* Fix GC_root_size update in GC_add_roots_inner (Win32).
* Fix GC_unregister_my_thread to ensure no ongoing incremental GC (Win32).
* Fix GC_with_callee_saves_pushed for clang (disable __builtin_unwind_init).
* Fix calloc, GC_generic_malloc to check for allocation size overflows.
* Fix compiler warning in GC_dyld_image_add/remove (Darwin).
* Fix configure --enable-cplusplus make install.
* Fix configure to disable GCC aliasing optimization unless forced to.
* Fix duplicate definitions in gcconfig.h for NetBSD.
* Fix fork() support on Cygwin and Darwin targets.
* Fix gc.h compatibility regression regarding GC_PTR, GC_I_HIDE_POINTERS.
* Fix gc_cpp.cc for Cygwin (remove duplicate function definition).
* Fix gcconfig.h to define USE_GET_STACKBASE_FOR_MAIN for Android.
* Fix gcconfig.h to handle mips64-linux target.
* Fix gctest (for Win32) to avoid GC_print_stats internal variable usage.
* Fix mach_dep.c to include sys/ucontext.h on Mac OS X 10.6.
* Fix tests to check GC_malloc result for NULL (out-of-memory).
* Fix thread model in configure for MinGW ("win32" instead of "posix").
* Fix various warnings reported by LINT-like tools.
* Fix visibility of some GC internal symbols used by GNU GCJ currently.
* Port some thread tests to Win32.
* Refine API GC setters and getter comments regarding locking.
* Refine GC_stackbottom description in gc.h.
* Remove duplicate calls in GC_register_dynamic_libraries.
* Remove locking in API GC_get_bytes_since_gc and friends.
* Remove newly-added GC_get_heap_size/free_bytes_inner from API.
* Remove some local variables that are unused.
* Support multi-threading for RTEMS target.
* Use global GC_noop_sink variable in GC_noop1 to suppress compiler warning.
* Use pkg-config to pick up libatomic_ops, etc.
* Workaround some Linux/arm kernels bug to get correct GC_nprocs value.
== [7.2alpha6] 2011-06-14 ==
* configure_atomic_ops.sh: Remove.
* Makefile.direct (dist gc.tar): Remove configure_atomic_ops.sh.
* Makefile.am (EXTRA_DIST): Add autogen.sh.
* NT_STATIC_THREADS_MAKEFILE (.cpp.obj): Remove duplicate .cpp
filename passed.
* NT_X64_THREADS_MAKEFILE (.cpp.obj): Use lowercase file
extension.
* NT_X64_STATIC_THREADS_MAKEFILE (.cpp.obj): Likewise.
* NT_MAKEFILE (.cpp.obj): Likewise.
* alloc.c (GC_add_current_malloc_heap, GC_build_back_graph,
GC_traverse_back_graph): Move prototype to gc_priv.h.
* checksums.c (GC_page_was_ever_dirty): Likewise.
* dbg_mlc.c (GC_default_print_heap_obj_proc): Likewise.
* dyn_load.c (GC_parse_map_entry, GC_get_maps,
GC_segment_is_thread_stack, GC_roots_present, GC_is_heap_base,
GC_get_next_stack): Likewise.
* finalize.c (GC_reset_finalizer_nested,
GC_check_finalizer_nested): Likewise.
* gcj_mlc.c (GC_start_debugging, GC_store_debug_info): Likewise.
* malloc.c (GC_extend_size_map, GC_text_mapping): Likewise.
* mark_rts.c (GC_mark_thread_local_free_lists): Likewise.
* misc.c (GC_register_main_static_data, GC_init_win32,
GC_setpagesize, GC_init_linux_data_start,
GC_set_and_save_fault_handler, GC_init_dyld, GC_init_netbsd_elf,
GC_initialize_offsets, GC_bl_init, GC_do_blocking_inner,
GC_bl_init_no_interiors): Likewise.
* os_dep.c (GC_greatest_stack_base_below, GC_push_all_stacks):
Likewise.
* reclaim.c (GC_check_leaked): Likewise.
* win32_threads.c (GC_gww_dirty_init): Likewise.
* darwin_stop_world.c (GC_is_mach_marker, GC_mprotect_stop,
GC_mprotect_resume): Move prototype to darwin_stop_world.h.
* pthread_support.c (GC_FindTopOfStack): Likewise.
* dyn_load.c (GC_cond_add_roots): Merge adjacent definitions.
* mark.c (GC_page_was_ever_dirty): Remove (as already declared).
* mark_rts.c (GC_roots_present): Change return type to void
pointer (to match the prototype); return NULL instead of FALSE.
* mark_rts.c (GC_add_roots_inner): Cast GC_roots_present() result.
* os_dep.c (NEED_PROC_MAPS): Move definition to gcconfig.h.
* os_dep.c (GC_write_fault_handler): Make STATIC.
* os_dep.c (GC_set_write_fault_handler): New function (only if
GC_WIN32_THREADS).
* pthread_start.c (GC_start_rtn_prepare_thread,
GC_thread_exit_proc): Move prototype to pthread_support.h.
* pthread_support.c (GC_nacl_initialize_gc_thread,
GC_nacl_shutdown_gc_thread, GC_unblock_gc_signals):
Likewise.
* pthread_support.c (GC_stop_init): Move prototype to
pthread_stop_world.h.
* win32_threads.c (GC_write_fault_handler): Remove prototype.
* win32_threads.c (GC_register_my_thread_inner): Call
GC_set_write_fault_handler instead of SetUnhandledExceptionFilter
(only if MPROTECT_VDB).
* doc/README.win32: Add information about DMC.
* include/private/gc_priv.h (GC_set_write_fault_handler): New
prototype (only if GC_WIN32_THREADS and MPROTECT_VDB).
* misc.c (vsnprintf): Redirect to vsprintf() if NO_VSNPRINTF.
* win32_threads.c (GC_unregister_my_thread): Use KNOWN_FINISHED()
instead of FINISHED macro.
* tests/test.c (check_heap_stats): Round up max_heap_sz value for
Win32 (same as for USE_MMAP).
* tests/test.c (check_heap_stats): Adjust printf format specifier
for max_heap_sz; cast max_heap_sz accordingly.
* doc/README.solaris2: Add note.
* configure.ac (SOLARIS25_PROC_VDB_BUG_FIXED): Don't define for
Solaris/x86 2.10+.
* tests/threadkey_test.c (SKIP_THREADKEY_TEST): Skip the test if
defined; explicitly define for some targets.
* mark.c (GC_dirty): Add prototype (only if MANUAL_VDB).
* stubborn.c (GC_dirty): Likewise.
* include/private/gcconfig.h (GWW_VDB, MPROTECT_VDB, PCR_VDB,
PROC_VDB): Undefine if MANUAL_VDB.
* include/private/gcconfig.h (DEFAULT_VDB): Don't define if
MANUAL_VDB.
* os_dep.c (async_set_pht_entry_from_index): Define for
MANUAL_VDB.
* os_dep.c (GC_read_dirty): Set GC_dirty_maintained only if
success; if ioctl() failed then just print warning instead of
aborting.
* include/private/gc_priv.h (GC_ASSERT): Use "%d" (instead of %ld)
for line number printing.
* os_dep.c (GC_read_dirty): Add debug logging if DEBUG_DIRTY_BITS
(for PROC_VDB only); print errors via GC_err_printf; rename "ps"
and "np" local variables to npages and pagesize, respectively;
remove "current_addr" local variable.
* os_dep.c (GC_get_main_stack_base): Convert to GC_get_stack_base
for BeOS and OS/2; define HAVE_GET_STACK_BASE.
* os_dep.c (GET_MAIN_STACKBASE_SPECIAL): Define when a specific
GC_get_main_stack_base implementation is defined.
* os_dep.c (GC_get_main_stack_base): Define that based on
GC_get_stack_base() in a single place (only if
GET_MAIN_STACKBASE_SPECIAL is unset); check GC_get_stack_base()
result.
* mark.c (GC_push_selected): Remove "push_fn" argument (use
GC_push_all directly); update the documentation.
* mark.c (GC_push_conditional): Simplify the code (for better
readability).
* mark.c (alloc_mark_stack): Use FALSE/TRUE (instead of 0/1) for
boolean local variables.
* doc/README.macros (GC_PREFER_MPROTECT_VDB): Update.
* os_dep.c (GC_page_was_dirty, GC_page_was_ever_dirty,
GC_remove_protection): Define for GWW_VDB and PROC_VDB in a single
place.
* os_dep.c (GC_page_was_dirty, GC_page_was_ever_dirty): Compute
PHT_HASH(h) only once (store result to a local variable).
* doc/README.solaris2: Update.
* include/private/gcconfig.h (end, InitStackBottom): Declare
extern variable for RTEMS.
* include/private/gcconfig.h (DATASTART, DATAEND, STACKBOTTOM):
Update (for RTEMS).
* include/private/gcconfig.h (DATAEND): Fix a typo in the macro
name (for RTEMS).
* tests/test.c (CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER):
Replace with CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER (for RTEMS).
* include/private/gcconfig.h (MPROTECT_VDB): Enable for Solaris in
single-threaded environment.
* include/private/gcconfig.h (MPROTECT_VDB): Undefine if PROC_VDB.
* tests/test.c (NUMBER_ROUND_UP): New macro.
* tests/test.c (check_heap_stats): Round up total expected heap
size to the nearest 4 MiB bound.
* tests/test.c (check_heap_stats): Print the current and expected
heap sizes in case of failure.
* checksums.c (GC_check_blocks, GC_check_dirty): Do log printing
only if GC_print_stats; print errors using GC_err_printf.
* checksums.c (GC_check_blocks): Join adjacent printf() calls into
a single one.
* pthread_support.c (pthread_join): Add assertion (check thread is
finished).
* pthread_support.c (GC_register_my_thread): Don't detach the
thread if invoked from the thread destructor.
* win32_threads.c (GC_register_my_thread): Likewise.
* win32_threads.c (GC_unregister_my_thread): Don't delete the
thread (just set FINISHED) if the thread is not detached (only if
GC_PTHREADS); add assertion (check the thread is not finished).
* tests/threadkey_test.c (main): Join some created threads.
* pthread_support.c (GC_delete_gc_thread): Rename "gc_id" local
variable to "t".
* win32_threads.c (GC_delete_gc_thread): Likewise.
* pthread_support.c (pthread_join, pthread_detach,
pthread_cancel): Rename "thread_gc_id" local variable to "t".
* win32_threads.c (GC_pthread_detach): Likewise.
* win32_threads.c (GC_delete_gc_thread): Remove "gc_nvid" local
variable.
* win32_threads.c (GC_pthread_join): Rename "joinee" local
variable to "t".
* pthread_stop_world.c (pthread_sigmask): Undefine even if not
DEBUG_THREADS.
* pthread_stop_world.c (GC_unblock_gc_signals): New function (only
if GC_EXPLICIT_SIGNALS_UNBLOCK).
* pthread_support.c (GC_unblock_gc_signals): New prototype.
* pthread_support.c (GC_register_my_thread_inner,
GC_register_my_thread): Call GC_unblock_gc_signals (only if
GC_EXPLICIT_SIGNALS_UNBLOCK); add comment.
* include/private/gcconfig.h (GC_EXPLICIT_SIGNALS_UNBLOCK): New
macro.
* pthread_stop_world.c (GC_suspend_handler_inner): Remove "dummy",
"sig" local variables; rename my_thread local variable to "self".
* tests/threadkey_test.c (LIMIT): Use smaller value (don't create
more than 30 in parallel by default).
* tests/threadkey_test.c (key_once, main): Work around for Solaris
PTHREAD_ONCE_INIT.
* tests/threadkey_test.c (LIMIT): Use smaller value for Solaris.
* dyn_load.c (GC_FirstDLOpenedLinkMap): Remove unused "r" local
variable.
* pthread_support.c (GC_unregister_my_thread_inner): Revert back
GC_remove_specific invocation; add a comment.
* include/private/thread_local_alloc.h (GC_remove_specific):
Revert back.
* specific.c (slow_getspecific): Cast qtid to AO_t.
* include/private/specific.h (key_create, setspecific,
remove_specific): Remove "extern" keyword.
* include/private/specific.h (getspecific): Change type of "qtid"
local variable to unsigned long.
* pthread_support.c (GC_check_tls): Fix "#endif" comment.
* include/gc.h (GC_REDIRECT_TO_LOCAL): Remove deprecated comment.
* include/private/thread_local_alloc.h (THREAD_LOCAL_ALLOC):
Remove redundant test of the macro.
* backgraph.c (add_edge): Recognize DEBUG_PRINT_BIG_N_EDGES macro.
* os_dep.c (GC_set_and_save_fault_handler): Recognize
SIGACTION_FLAGS_NODEFER_HACK macro.
* pthread_support.c (mark_mutex): Recognize GLIBC_2_1_MUTEX_HACK
macro.
* pthread_support.c (GC_acquire_mark_lock): Remove commented out
code.
* include/private/gc_priv.h (SUNOS5SIGS): Don't include
sys/siginfo.h on Linux.
* include/private/gcconfig.h (FORCE_WRITE_PREFETCH): New macro
recognized, force PREFETCH_FOR_WRITE to be defined on x86.
* include/private/gcconfig.h (USE_HPUX_FIXED_STACKBOTTOM): New
macro recognized (for HP/UX).
* os_dep.c (GC_gww_page_was_ever_dirty): Fix comment (for
GWW_VDB).
* os_dep.c (GC_dirty_init): Use memset() for GC_written_pages
resetting (for PROC_VDB).
* tests/threadkey_test.c: New file.
* tests/tests.am (TESTS, check_PROGRAMS): Add 'threadkey_test'.
* tests/tests.am (threadkey_test_SOURCES, threadkey_test_LDADD):
New variable.
* pthread_support.c (GC_unregister_my_thread_inner): Don't call
GC_remove_specific.
* include/private/thread_local_alloc.h (GC_remove_specific):
Remove (since it is empty for all targets).
* pthread_support.c (GC_record_stack_base): New inline function.
* win32_threads.c (GC_record_stack_base): Likewise.
* pthread_support.c (GC_register_my_thread_inner): Invoke
GC_record_stack_base.
* win32_threads.c (GC_register_my_thread_inner): Likewise.
* pthread_support.c (GC_register_my_thread): If thread is FINISHED
then call GC_record_stack_base, clear FINISHED, initialize
thread-local list and return success.
* win32_threads.c (GC_register_my_thread): Likewise.
* include/gc.h (GC_register_my_thread): Update documentation.
* include/private/thread_local_alloc.h (GC_thread_key): Likewise.
* thread_local_alloc.c (GC_malloc, GC_malloc_atomic): Join
adjacent "#ifdef".
* thread_local_alloc.c (GC_malloc_atomic): Call
GC_core_malloc_atomic (instead of GC_core_malloc).
* pthread_start.c (GC_start_rtn_prepare_thread): Change return
type to GC_thread.
* pthread_start.c (GC_inner_start_routine): Pass the current
thread descriptor to pthread_cleanup_push (same as in
win32_threads.c).
* pthread_stop_world.c (GC_push_all_stacks): Rename "me" local
variable to "self".
* win32_threads.c (GC_push_all_stacks): Likewise.
* pthread_stop_world.c (GC_suspend_all, GC_start_world): Rename
"my_thread" local variable to "self".
* pthread_support.c (GC_unregister_my_thread_inner): New static
function.
* pthread_support.c (GC_unregister_my_thread,
GC_thread_exit_proc): Use GC_unregister_my_thread_inner.
* win32_threads.c (GC_register_my_thread, GC_unregister_my_thread,
GC_do_blocking_inner): Rename "t" local variable to "thread_id".
* win32_threads.c (GC_wait_marker, GC_notify_all_marker): Rename
"id" local variable to "thread_id".
* pthread_support.c (GC_unregister_my_thread): Call pthread_self
only once.
* win32_threads.c (GC_pthread_start_inner): Likewise.
* pthread_support.c (GC_unregister_my_thread): Add debug output.
* win32_threads.c (GC_unregister_my_thread): Likewise.
* pthread_support.c (GC_register_my_thread,
GC_start_rtn_prepare_thread): Rename "my_pthread" local variable
to "self".
* include/gc.h (GC_HIDE_POINTER, GC_REVEAL_POINTER): Define
unconditionally (do not test GC_I_HIDE_POINTERS); update the
comment.
* include/gc.h (HIDE_POINTER, REVEAL_POINTER): Define as alias to
GC_HIDE/REVEAL_POINTER, respectively.
* include/private/gc_pmark.h (GC_I_HIDE_POINTERS): Do not define.
* include/private/gc_priv.h (GC_I_HIDE_POINTERS): Likewise.
* include/gc.h (GC_register_my_thread): Refine the comment.
* include/gc_inline.h (GC_MALLOC_WORDS, GC_CONS): Add missing
parentheses.
* include/gc_typed.h (GC_get_bit, GC_set_bit,
GC_CALLOC_EXPLICITLY_TYPED): Likewise.
* include/private/gcconfig.h (NO_GETCONTEXT): Add missing ')'.
* include/private/gcconfig.h (NO_GETCONTEXT): Do not use
getcontext(2) on m68k because it is not implemented there.
* alloc.c (GC_clear_a_few_frames): Use BZERO().
* mark_rts.c (GC_clear_roots, GC_rebuild_root_index): Likewise.
* reclaim.c (GC_start_reclaim): Likewise.
* blacklst.c (total_stack_black_listed): Remove "len" local
variable.
* dbg_mlc.c (GC_generate_random_valid_address): Replace "for"
statement with "do-while" one.
* dyn_load.c (GC_register_dynamic_libraries,
GC_register_dynlib_callback): Remove redundant parentheses.
* cord/cordxtra.c (CORD_from_file_lazy_inner): Suppress
"unused result" compiler warning for fread().
* os_dep.c (GC_write_fault_handler): Break when in_allocd_block
is set to true.
* dbg_mlc.c (GC_has_other_debug_info): Change return type to int;
return -1 if the object has (or had) debugging info but was
marked deallocated.
* include/private/dbg_mlc.h (GC_has_other_debug_info): Likewise.
* dbg_mlc.c (GC_has_other_debug_info): Update documentation;
remove "ohdr" local variable.
* dbg_mlc.c (GC_debug_free): Don't call GC_free if the object has
probably been deallocated.
* dbg_mlc.c (GC_debug_free): Don't actually free the object even
in the leak-finding mode if GC_findleak_delay_free.
* dbg_mlc.c (GC_check_leaked): New function (only unless
SHORT_DBG_HDRS).
* doc/README.environment (GC_FINDLEAK_DELAY_FREE): Document.
* doc/README.macros (GC_FINDLEAK_DELAY_FREE): Likewise.
* include/private/dbg_mlc.h (START_FLAG, END_FLAG): Use GC_WORD_C
on 64-bit architectures.
* include/private/dbg_mlc.h (NOT_MARKED): Remove redundant
parentheses.
* include/private/dbg_mlc.h (GC_HAS_DEBUG_INFO): Update (due to
GC_has_other_debug_info change).
* include/private/gc_priv.h (GC_findleak_delay_free): New global
variable declaration (unless SHORT_DBG_HDRS).
* misc.c (GC_findleak_delay_free): New global variable; recognize
GC_FINDLEAK_DELAY_FREE.
* misc.c (GC_init): Recognize GC_FINDLEAK_DELAY_FREE environment
variable (unless SHORT_DBG_HDRS).
* reclaim.c (GC_check_leaked): Declare (unless SHORT_DBG_HDRS).
* reclaim.c (GC_add_leaked): Don't add the object to leaked list
if marked as deallocated.
* dbg_mlc.c (GC_has_other_debug_info): Fix punctuation in the
comment.
* dbg_mlc.c (GC_FREED_MEM_MARKER): New macro.
* dbg_mlc.c (GC_debug_free): Use GC_FREED_MEM_MARKER.
* dbg_mlc.c (GC_smashed): Refine documentation.
* mark.c (GC_push_selected): Change dirty_fn return type to
GC_bool.
* os_dep.c (GC_page_was_ever_dirty): Make GC_INNER.
* reclaim.c (GC_reclaim_small_nonempty_block): Remove "kind"
local variable.
* reclaim.c (GC_reclaim_block): Pass true constant to
GC_reclaim_small_nonempty_block (instead of report_if_found).
* doc/README.autoconf: Update; fix a typo.
* include/private/gcconfig.h (GC_WORD_C): New macro.
* dbg_mlc.c (GC_store_debug_info_inner): Cast "linenum".
* dbg_mlc.c (GC_check_annotated_obj): Fix punctuation in the
comment.
* dbg_mlc.c (GC_print_smashed_obj): Add (and print) "msg"
argument.
* dbg_mlc.c (GC_debug_free, GC_print_all_smashed_proc): Pass
message to GC_print_smashed_obj.
* dbg_mlc.c (GC_debug_free): Call GC_size once.
* dbg_mlc.c (GC_debug_realloc): Calculate old_sz only if
allocation succeeded; remove unnecessary check for object is
smashed (since this is done in GC_debug_free); remove "clobbered"
local variable.
* dbg_mlc.c (GC_store_debug_info_inner, GC_store_debug_info):
Rename "integer" argument to "linenum"; change the type of the
argument to int.
* gcj_mlc.c (GC_store_debug_info): Likewise.
* dbg_mlc.c (GET_OH_LINENUM): New macro.
* dbg_mlc.c (GC_print_obj, GC_print_smashed_obj): Use
GET_OH_LINENUM; adjust print format specifier.
* dbg_mlc.c (GC_debug_malloc, GC_debug_malloc_ignore_off_page,
GC_debug_malloc_atomic_ignore_off_page,
GC_debug_generic_malloc_inner,
GC_debug_generic_malloc_inner_ignore_off_page,
GC_debug_malloc_stubborn, GC_debug_malloc_atomic,
GC_debug_malloc_uncollectable,
GC_debug_malloc_atomic_uncollectable): Remove unnecessary cast of
"i".
* gcj_mlc.c (GC_debug_gcj_malloc): Likewise.
* os_dep.c (GC_linux_stack_base): Rename to
GC_linux_main_stack_base.
* os_dep.c (GC_freebsd_stack_base): Rename to
GC_freebsd_main_stack_base; adjust error message.
* pthread_stop_world.c (GC_stop_init): Use GC_SEM_INIT_PSHARED
as an argument for sem_init().
* pthread_support.c (pthread_create): Likewise.
* pthread_support.c (pthread_create): Abort in case sem_init()
fails.
* include/private/gc_priv.h (GC_SEM_INIT_PSHARED): Define.
* tests/initsecondarythread.c: Include gcconfig.h; call GC_INIT
from main() if it should be done from the primordial thread only.
* alloc.c: Don't include sys/types.h for ArmCC.
* dyn_load.c: Likewise.
* os_dep.c: Likewise.
* mach_dep.c (_setjmp, _longjmp): Redirect to setjmp/longjmp for
ArmCC.
* mark.c (GC_noop): Define specially for ArmCC.
* include/private/gc_priv.h (GC_noop): Likewise.
* misc.c (GC_init): Don't test pointers comparison for ArmCC.
* misc.c: Don't include unistd.h for ArmCC.
* os_dep.c (pages_executable): Rename to GC_pages_executable;
make STATIC.
* os_dep.c (GC_unix_mmap_get_mem): Don't define for ArmCC.
* ptr_chck.c (GC_is_visible): Explicitly cast
(GC_DS_PER_OBJECT-GC_INDIR_PER_OBJ_BIAS) to word (to suppress
a compiler warning).
* include/private/gcconfig.h: Recognize __arm.
* include/private/gcconfig.h (HBLKPTR): Define for ArmCC.
* include/private/gcconfig.h (HBLKPTR): Add parentheses for
"bytes" argument.
* pthread_support.c (GC_get_nprocs): Don't define for Android.
* pthread_support.c (GC_dummy_thread_local): Don't test
GC_LINUX_THREADS.
* include/gc_config_macros.h (GC_ADD_CALLER, GC_RETURN_ADDR):
Define for Android.
* mach_dep.c (NO_GETCONTEXT): Move to gcconfig.h.
* os_dep.c (GC_write_fault_handler): Don't include ucontext.h if
NO_GETCONTEXT.
* include/private/gcconfig.h (GETPAGESIZE): Define as a sysconf
call for Android.
* include/private/gc_locks.h (WIN32_LEAN_AND_MEAN, NOSERVICE):
Define before including windows.h.
* include/private/gc_priv.h (WIN32_LEAN_AND_MEAN, NOSERVICE):
Likewise.
* include/private/thread_local_alloc.h (WIN32_LEAN_AND_MEAN,
NOSERVICE): Likewise.
* include/private/gc_priv.h (MS_TIME_DIFF): Avoid floating-point
arithmetics; add a comment.
* mark.c (GC_clear_hdr_marks): Don't test USE_MARK_BYTES.
* extra/setjmp_t.c (main): Don't test USE_MARK_BITS.
* include/private/gc_pmark.h (SET_MARK_BIT_EXIT_IF_SET): Likewise.
* include/private/gc_pmark.h (SET_MARK_BIT_EXIT_IF_SET): Remove
"mark_byte" local variable.
* include/private/gc_pmark.h (OR_WORD_EXIT_IF_SET): Add a comment
about that AO_or() is not used by GC unless USE_MARK_BITS
explicitly set.
* include/private/gc_priv.h (OR_WORD): Likewise.
* include/private/gc_pmark.h (INCR_MARKS): Remove trailing ';',
add parentheses.
* include/private/gc_priv.h (ONES): Define before use by
MAKE_COOLER.
* include/private/gc_priv.h (MARK_BITS_SZ): Define where used.
* include/private/gc_priv.h (OR_WORD): Don't define if
USE_MARK_BYTES.
* include/private/gcconfig.h (USE_MARK_BYTES); Remove duplicate
definition; simplify expression.
* os_dep.c (GC_get_maps): Always close the file.
* pthread_support.c (GC_get_nprocs): Likewise.
* os_dep.c (READ): Define similarly across the file (without
parameters).
* pthread_support.c (GC_get_nprocs): Use signed int type for "i"
and "len" local variables (since read() may return -1).
* include/private/gc_pmark.h (LONG_MULT): Add prefix/suffix
double underscore; add "volatile" for asm.
* include/private/gc_pmark.h (LONG_MULT): Add missing
parentheses.
* include/private/gc_priv.h (OR_WORD): Likewise.
* include/private/gc_priv.h (OR_WORD): Remove unnecessary brackets
and ';' symbol.
* os_dep.c (GC_get_stack_base): Implement for Android (same as
for Linux).
* pthread_support.c (GC_get_nprocs): Return 1 (instead of -1) if
failed to open "stat" file (not to issue a warning twice); update
the comment.
* pthread_support.c (GC_thr_init): Call sysconf() on Android to
get the number of CPUs.
* include/private/gc_priv.h (_GNU_SOURCE): Revert one of the
recent patches regarding this macro as the macro should be set
(to 1) before including any other system header.
* doc/README.environment (GC_INITIAL_HEAP_SIZE,
GC_MAXIMUM_HEAP_SIZE): Update.
* misc.c (GC_parse_mem_size_arg): Allow 'k', 'M', 'G' suffixes in
heap size specifier; return 0 if not a valid one.
* include/gc_cpp.h: Explicitly define inline one-argument delete
operator for Cygwin (as a workaround).
* tests/test_cpp.cc (main): Suppress compiler warnings about
"assigned value is unused".
* misc.c (GC_parse_mem_size_arg): New function.
* misc.c (GC_init): Use GC_parse_mem_size_arg().
* pthread_stop_world.c (tkill): Declare for Android.
* include/private/gc_priv.h (_GNU_SOURCE): Include features.h
first (except for NaCl) and then define the macro to 1 if not yet.
* tests/tests.am (TESTS, check_PROGRAMS): Add
'initsecondarythread'.
* tests/tests.am (initsecondarythread_SOURCES,
initsecondarythread_LDADD): New variable.
* dbg_mlc.c (GC_store_debug_info_inner): Always define; add
"const" to its string argument.
* dbg_mlc.c (GC_store_debug_info): Call GC_store_debug_info_inner.
* dbg_mlc.c (GC_debug_free): Set GC_have_errors in case of
smashed or previously deallocated found.
* dbg_mlc.c (GC_check_heap_block): Replace while loop with a for
one.
* reclaim.c (GC_reclaim_check): Likewise.
* dbg_mlc.c (GC_check_heap_proc): Remove redundant cast to word.
* os_dep.c (GC_get_stack_base): Don't initialize
stackbase_main_self/ss_sp on Solaris if thr_main() is zero (thus
calling GC_INIT() from a non-primordial thread is possible now).
* reclaim.c (GC_add_leaked): Turn into an inline one.
* reclaim.c (GC_reclaim_small_nonempty_block):
Change report_if_found type from int/word to boolean.
* include/private/gc_priv.h (GC_start_reclaim): Likewise.
* include/private/gc_priv.h (set_mark_bit_from_hdr,
clear_mark_bit_from_hdr): Place closing parenthesis properly.
* os_dep.c (GC_get_main_stack_base): Try to use
pthread_attr_getstack first for Linux if THREADS.
* doc/README.macros (USE_GET_STACKBASE_FOR_MAIN): Adjust text
alignment.
* dbg_mlc.c (GC_generate_random_backtrace_no_gc): Fix a message
typo.
* dbg_mlc.c (GC_debug_malloc): Add a comment (about zero size).
* dbg_mlc.c (GC_strdup): Call GC_err_printf instead of WARN (in
case of NULL argument).
* dbg_mlc.c (GC_free): In case of NULL argument, just return
(without any warning printed); eliminate "uncollectable" local
variable.
* configure.ac (THREADDLLIBS): Use alternate thread library on
Solaris 8.
* configure.ac (need_atomic_ops_asm): Set to true only for SPARC
Solaris.
* configure.ac: Don't use libdl on mips-sgi-irix6.
* mach_dep.c (NO_GETCONTEXT); Define for RTEMS.
* mach_dep.c (GC_with_callee_saves_pushed): Don't call
__builtin_unwind_init() for RTEMS; use setjmp() without the
leading underscore (for RTEMS).
* tests/test.c (BIG): Use smaller value for RTEMS.
* tests/test.c (main): Customize for RTEMS.