where.h (struct _ffewhere_file_): Mark GTY.

* where.h (struct _ffewhere_file_): Mark GTY.
	(ffewhere_file_kill): Remove prototype.
	* where.c: Include ggc.h.
	(struct _ffewhere_ll_, struct _ffewhere_root_ll_): Mark GTY.
	(ffewhere_root_ll_): Ditto.  Change type from struct
	_ffewhere_root_ll_ to struct _ffewhere_root_ll_*.  All uses
	changed.
	(ffewhere_file_kill): Remove.
	(ffewhere_file_new): Use GC to allocate ffewhereFile objects.
	(ffewhere_file_set): Use GC to allocate ffewhereLL_ objects.
	(ffewhere_init_1): Use GC to allocate ffewhere_root_ll_ sentinel.
	Include gt-f-where.h.
	* lex.c (ffelex_current_wf_, ffelex_include_wherefile_): Mark GTY.
	Include gt-f-lex.h.
	* std.c (ffestd_S3P4): Don't call ffewhere_file_kill.
	* config-lang.in (gtfiles): Add f/where.h f/where.c and f/lex.c.
	* Make-lang.in (gt-f-lex.h gt-f-where.h): Add to dependents of
	s-gtype.
	(f/lex.o): Depend on gt-f-lex.h.
	(f/where.o): Depend on gt-f-where.h.

From-SVN: r56502
This commit is contained in:
Hans-Peter Nilsson 2002-08-22 02:20:43 +00:00 committed by Hans-Peter Nilsson
parent 44ddc79ad2
commit d7704f76d2
7 changed files with 56 additions and 45 deletions

View File

@ -1,3 +1,26 @@
2002-08-22 Hans-Peter Nilsson <hp@bitrange.com>
* where.h (struct _ffewhere_file_): Mark GTY.
(ffewhere_file_kill): Remove prototype.
* where.c: Include ggc.h.
(struct _ffewhere_ll_, struct _ffewhere_root_ll_): Mark GTY.
(ffewhere_root_ll_): Ditto. Change type from struct
_ffewhere_root_ll_ to struct _ffewhere_root_ll_*. All uses
changed.
(ffewhere_file_kill): Remove.
(ffewhere_file_new): Use GC to allocate ffewhereFile objects.
(ffewhere_file_set): Use GC to allocate ffewhereLL_ objects.
(ffewhere_init_1): Use GC to allocate ffewhere_root_ll_ sentinel.
Include gt-f-where.h.
* lex.c (ffelex_current_wf_, ffelex_include_wherefile_): Mark GTY.
Include gt-f-lex.h.
* std.c (ffestd_S3P4): Don't call ffewhere_file_kill.
* config-lang.in (gtfiles): Add f/where.h f/where.c and f/lex.c.
* Make-lang.in (gt-f-lex.h gt-f-where.h): Add to dependents of
s-gtype.
(f/lex.o): Depend on gt-f-lex.h.
(f/where.o): Depend on gt-f-where.h.
Tue Aug 20 16:49:40 2002 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* where.c (ffewhere_track): Remove impossible if-then clause.

View File

@ -137,7 +137,7 @@ f/fini.o:
$(HOST_CC) $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) \
-c $(srcdir)/f/fini.c $(OUTPUT_OPTION)
gt-f-com.h gt-f-ste.h gtype-f.h : s-gtype; @true
gt-f-lex.h gt-f-where.h gt-f-com.h gt-f-ste.h gtype-f.h : s-gtype; @true
#
# Build hooks:
@ -414,7 +414,7 @@ f/lex.o: f/lex.c f/proj.h $(CONFIG_H) $(SYSTEM_H) f/top.h f/malloc.h f/where.h \
f/bld-op.def f/bit.h f/info.h f/info-b.def f/info-k.def f/info-w.def \
f/target.h f/lex.h f/type.h f/intrin.h f/intrin.def f/lab.h f/symbol.h \
f/symbol.def f/equiv.h f/storag.h f/global.h f/name.h f/src.h flags.h \
debug.h input.h toplev.h output.h $(GGC_H)
debug.h input.h toplev.h output.h $(GGC_H) gt-f-lex.h
f/malloc.o: f/malloc.c f/proj.h $(CONFIG_H) $(SYSTEM_H) f/malloc.h
f/name.o: f/name.c f/proj.h $(CONFIG_H) $(SYSTEM_H) f/bad.h f/bad.def f/where.h \
glimits.h f/top.h f/malloc.h f/name.h f/global.h f/info.h f/info-b.def \
@ -529,4 +529,4 @@ f/top.o: f/top.c f/proj.h $(CONFIG_H) $(SYSTEM_H) f/top.h f/malloc.h f/where.h \
f/type.o: f/type.c f/proj.h $(CONFIG_H) $(SYSTEM_H) f/type.h f/malloc.h
f/version.o: f/version.c f/version.h
f/where.o: f/where.c f/proj.h $(CONFIG_H) $(SYSTEM_H) f/where.h glimits.h f/top.h \
f/malloc.h f/lex.h $(GGC_H)
f/malloc.h f/lex.h $(GGC_H) gt-f-where.h

View File

@ -1,5 +1,5 @@
# Top level configure fragment for GNU FORTRAN.
# Copyright (C) 1995, 1996, 1997, 2000, 2001 Free Software Foundation, Inc.
# Copyright (C) 1995, 1996, 1997, 2000, 2001, 2002 Free Software Foundation, Inc.
#This file is part of GNU Fortran.
@ -33,4 +33,4 @@ stagestuff="g77\$(exeext) g77-cross\$(exeext) f771\$(exeext)"
target_libs=target-libf2c
gtfiles="\$(srcdir)/f/com.c \$(srcdir)/f/com.h \$(srcdir)/f/ste.c"
gtfiles="\$(srcdir)/f/com.c \$(srcdir)/f/com.h \$(srcdir)/f/ste.c \$(srcdir)/f/where.h \$(srcdir)/f/where.c \$(srcdir)/f/lex.c"

View File

@ -93,7 +93,7 @@ static ffelexType ffelex_first_char_[256];
/* The wf argument of the most recent active ffelex_file_(fixed,free)
function. */
static ffewhereFile ffelex_current_wf_;
static GTY (()) ffewhereFile ffelex_current_wf_;
/* TRUE if an INCLUDE statement can be processed (ffelex_set_include
can be called). */
@ -106,7 +106,7 @@ static bool ffelex_set_include_;
/* Information on the pending INCLUDE file. */
static FILE *ffelex_include_file_;
static bool ffelex_include_free_form_;
static ffewhereFile ffelex_include_wherefile_;
static GTY(()) ffewhereFile ffelex_include_wherefile_;
/* Current master line count. */
static ffewhereLineNumber ffelex_linecount_current_;
@ -4634,3 +4634,5 @@ ffelex_token_use (ffelexToken t)
t->uses++;
return t;
}
#include "gt-f-lex.h"

View File

@ -1,5 +1,5 @@
/* std.c -- Implementation File (module.c template V1.0)
Copyright (C) 1995, 1996, 2000 Free Software Foundation, Inc.
Copyright (C) 1995, 1996, 2000, 2002 Free Software Foundation, Inc.
Contributed by James Craig Burley.
This file is part of GNU Fortran.
@ -4774,9 +4774,7 @@ ffestd_S3P4 (ffebld filename)
fi = ffecom_open_include (ffewhere_file_name (wf),
ffelex_token_where_line (ffesta_tokens[0]),
ffelex_token_where_column (ffesta_tokens[0]));
if (fi == NULL)
ffewhere_file_kill (wf);
else
if (fi != NULL)
ffelex_set_include (wf, (ffelex_token_type (ffesta_tokens[0])
== FFELEX_typeNAME), fi);
}

View File

@ -1,5 +1,5 @@
/* where.c -- Implementation File (module.c template V1.0)
Copyright (C) 1995 Free Software Foundation, Inc.
Copyright (C) 1995, 2002 Free Software Foundation, Inc.
Contributed by James Craig Burley.
This file is part of GNU Fortran.
@ -33,6 +33,7 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "where.h"
#include "lex.h"
#include "malloc.h"
#include "ggc.h"
/* Externals defined here. */
@ -52,7 +53,7 @@ typedef struct _ffewhere_ll_ *ffewhereLL_;
/* Internal structure definitions. */
struct _ffewhere_ll_
struct _ffewhere_ll_ GTY (())
{
ffewhereLL_ next;
ffewhereLL_ previous;
@ -61,7 +62,7 @@ struct _ffewhere_ll_
ffewhereLineNumber offset; /* User-desired offset (usually 1). */
};
struct _ffewhere_root_ll_
struct _ffewhere_root_ll_ GTY (())
{
ffewhereLL_ first;
ffewhereLL_ last;
@ -76,7 +77,7 @@ struct _ffewhere_root_line_
/* Static objects accessed by functions in this module. */
static struct _ffewhere_root_ll_ ffewhere_root_ll_;
static GTY (()) struct _ffewhere_root_ll_ *ffewhere_root_ll_;
static struct _ffewhere_root_line_ ffewhere_root_line_;
/* Static functions (internal). */
@ -94,10 +95,10 @@ ffewhere_ll_lookup_ (ffewhereLineNumber ln)
ffewhereLL_ ll;
if (ln == 0)
return ffewhere_root_ll_.first;
return ffewhere_root_ll_->first;
for (ll = ffewhere_root_ll_.last;
ll != (ffewhereLL_) &ffewhere_root_ll_.first;
for (ll = ffewhere_root_ll_->last;
ll != (ffewhereLL_) &ffewhere_root_ll_->first;
ll = ll->previous)
{
if (ll->line_no <= ln)
@ -108,30 +109,13 @@ ffewhere_ll_lookup_ (ffewhereLineNumber ln)
return NULL;
}
/* Kill file object.
Note that this object must not have been passed in a call
to any other ffewhere function except ffewhere_file_name and
ffewhere_file_namelen. */
void
ffewhere_file_kill (ffewhereFile wf)
{
malloc_kill_ks (ffe_pool_file (), wf,
offsetof (struct _ffewhere_file_, text)
+ wf->length + 1);
}
/* Create file object. */
ffewhereFile
ffewhere_file_new (const char *name, size_t length)
{
ffewhereFile wf;
wf = malloc_new_ks (ffe_pool_file (), "ffewhereFile",
offsetof (struct _ffewhere_file_, text)
+ length + 1);
wf = ggc_alloc (offsetof (struct _ffewhere_file_, text) + length + 1);
wf->length = length;
memcpy (&wf->text[0], name, length);
wf->text[length] = '\0';
@ -147,10 +131,9 @@ void
ffewhere_file_set (ffewhereFile wf, bool have_num, ffewhereLineNumber ln)
{
ffewhereLL_ ll;
ll = malloc_new_kp (ffe_pool_file (), "ffewhereLL_", sizeof (*ll));
ll->next = (ffewhereLL_) &ffewhere_root_ll_.first;
ll->previous = ffewhere_root_ll_.last;
ll = ggc_alloc (sizeof (*ll));
ll->next = (ffewhereLL_) &ffewhere_root_ll_->first;
ll->previous = ffewhere_root_ll_->last;
ll->next->previous = ll;
ll->previous->next = ll;
if (wf == NULL)
@ -184,8 +167,12 @@ ffewhere_init_1 ()
= (ffewhereLine) &ffewhere_root_line_.first;
ffewhere_root_line_.none = 0;
ffewhere_root_ll_.first = ffewhere_root_ll_.last
= (ffewhereLL_) &ffewhere_root_ll_.first;
/* The sentinel is (must be) GGC-allocated. It is accessed as a
struct _ffewhere_ll_/ffewhereLL_ though its type contains just the
first two fields (layout-wise). */
ffewhere_root_ll_ = ggc_alloc_cleared (sizeof (struct _ffewhere_ll_));
ffewhere_root_ll_->first = ffewhere_root_ll_->last
= (ffewhereLL_) &ffewhere_root_ll_->first;
}
/* Return the textual content of the line. */
@ -529,3 +516,5 @@ ffewhere_track_kill (ffewhereLine wrl, ffewhereColumn wrc UNUSED,
}
}
}
#include "gt-f-where.h"

View File

@ -1,5 +1,5 @@
/* where.h -- Public #include File (module.h template V1.0)
Copyright (C) 1995 Free Software Foundation, Inc.
Copyright (C) 1995, 2002 Free Software Foundation, Inc.
Contributed by James Craig Burley.
This file is part of GNU Fortran.
@ -65,7 +65,7 @@ typedef unsigned int ffewhereUses_;
/* Structure definitions. */
struct _ffewhere_file_
struct _ffewhere_file_ GTY (())
{
size_t length;
char text[1];
@ -87,7 +87,6 @@ extern struct _ffewhere_line_ ffewhere_unknown_line_;
/* Declare functions with prototypes. */
void ffewhere_file_kill (ffewhereFile wf);
ffewhereFile ffewhere_file_new (const char *name, size_t length);
void ffewhere_file_set (ffewhereFile wf, bool have_num, ffewhereLineNumber ln);
void ffewhere_init_1 (void);