summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2012-03-25 08:32:05 +0200
committerIvan Maidanski <ivmai@mail.ru>2012-03-25 09:29:19 +0200
commitc1d271b8c1ea4dce12ecdf3ff0caece68be0ddf8 (patch)
tree4b6e2a209333caad7456ab239ad9f1f2e8e37c24
parente5ff6961fc86e00daf32edb8eb6edd3e12435e5e (diff)
Fix visibility of some GC internal symbols used by GCJ
(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.
-rw-r--r--allchblk.c15
-rw-r--r--blacklst.c2
-rw-r--r--include/private/gc_priv.h11
-rw-r--r--reclaim.c8
4 files changed, 25 insertions, 11 deletions
diff --git a/allchblk.c b/allchblk.c
index a404fda..fe10b03 100644
--- a/allchblk.c
+++ b/allchblk.c
@@ -48,16 +48,23 @@
# 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 */
diff --git a/blacklst.c b/blacklst.c
index 9fd0016..0312918 100644
--- a/blacklst.c
+++ b/blacklst.c
@@ -225,7 +225,7 @@ GC_INNER void GC_unpromote_black_lists(void)
* 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;
diff --git a/include/private/gc_priv.h b/include/private/gc_priv.h
index ef2650c..b42910e 100644
--- a/include/private/gc_priv.h
+++ b/include/private/gc_priv.h
@@ -1278,6 +1278,11 @@ GC_EXTERN word GC_black_list_spacing;
/* "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. */
@@ -1564,12 +1569,14 @@ void GC_register_data_segments(void);
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);
diff --git a/reclaim.c b/reclaim.c
index 405087b..44b4909 100644
--- a/reclaim.c
+++ b/reclaim.c
@@ -355,8 +355,9 @@ struct Print_stats
#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;
@@ -386,8 +387,7 @@ static int set_bits(word n)
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;