(Includes reverting part of commits
68b9f27,
91d5df5,
b2345fb)
* allchblk.c (GC_hblkfreelist, GC_free_bytes): Do not define array as
STATIC again but only if GC_GCJ_SUPPORT (for GNU GCJ client).
* blacklst.c (GC_is_black_listed): Do not define as GC_INNER again
(for GNU GCJ client).
* include/private/gc_priv.h (GC_is_black_listed): Likewise.
* include/private/gc_priv.h (GC_hblkfreelist): Restore removed
declaration (but only if GC_GCJ_SUPPORT).
* reclaim.c (GC_n_set_marks): Do not define as STATIC again (for GCJ);
update the comment.
# define N_HBLK_FLS (HUGE_THRESHOLD - UNIQUE_THRESHOLD)/FL_COMPRESSION \
+ UNIQUE_THRESHOLD
-STATIC struct hblk * GC_hblkfreelist[N_HBLK_FLS+1] = { 0 };
+#ifndef GC_GCJ_SUPPORT
+ STATIC
+#endif
+ struct hblk * GC_hblkfreelist[N_HBLK_FLS+1] = { 0 };
/* List of completely empty heap blocks */
/* Linked through hb_next field of */
/* header structure associated with */
- /* block. */
+ /* block. Remains externally visible */
+ /* as used by GNU GCJ currently. */
#ifndef USE_MUNMAP
- STATIC word GC_free_bytes[N_HBLK_FLS+1] = { 0 };
- /* Number of free bytes on each list. */
+#ifndef GC_GCJ_SUPPORT
+ STATIC
+#endif
+ word GC_free_bytes[N_HBLK_FLS+1] = { 0 };
+ /* Number of free bytes on each list. Remains visible to GCJ. */
/* Return the largest n such that */
/* Is GC_large_allocd_bytes + the number of free bytes on lists */
* If (h,len) is not black listed, return 0.
* Knows about the structure of the black list hash tables.
*/
-GC_INNER struct hblk * GC_is_black_listed(struct hblk *h, word len)
+struct hblk * GC_is_black_listed(struct hblk *h, word len)
{
word index = PHT_HASH((word)h);
word i;
/* "stack-blacklisted", i.e. that are */
/* problematic in the interior of an object. */
+#ifdef GC_GCJ_SUPPORT
+ extern struct hblk * GC_hblkfreelist[];
+ /* Remains visible to GNU GCJ. */
+#endif
+
#ifdef GC_DISABLE_INCREMENTAL
# define GC_incremental FALSE
/* Hopefully allow optimizer to remove some code. */
GC_add_to_black_list_stack((word)(bits))
#endif /* PRINT_BLACK_LIST */
-GC_INNER struct hblk * GC_is_black_listed(struct hblk * h, word len);
+struct hblk * GC_is_black_listed(struct hblk * h, word len);
/* If there are likely to be false references */
/* to a block starting at h of the indicated */
/* length, then return the next plausible */
/* starting location for h that might avoid */
- /* these false references. */
+ /* these false references. Remains externally */
+ /* visible as used by GNU GCJ currently. */
+
GC_INNER void GC_promote_black_lists(void);
/* Declare an end to a black listing phase. */
GC_INNER void GC_unpromote_black_lists(void);
#ifdef USE_MARK_BYTES
-/* Return the number of set mark bits in the given header */
-STATIC int GC_n_set_marks(hdr *hhdr)
+/* Return the number of set mark bits in the given header. */
+/* Remains externally visible as used by GNU GCJ currently. */
+int GC_n_set_marks(hdr *hhdr)
{
int result = 0;
int i;
return(result);
}
-/* Return the number of set mark bits in the given header */
-STATIC int GC_n_set_marks(hdr *hhdr)
+int GC_n_set_marks(hdr *hhdr)
{
int result = 0;
int i;