1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-02 21:10:27 +02:00

* srcprop.c (scm_finish_srcprop): Bugfix: update ptr.

(scm_init_srcprop): Adjusted size of initial source-whash.  Name
changes: tc16_srcprops --> scm_tc16_srcprops, _scm_make_srcprops
--> scm_make_srcprops
This commit is contained in:
Mikael Djurfeldt 1996-09-18 19:36:29 +00:00
parent 7e763bfcba
commit 5c5549cbca

View file

@ -49,6 +49,7 @@
#include "alist.h" #include "alist.h"
#include "debug.h" #include "debug.h"
#include "hashtab.h" #include "hashtab.h"
#include "hash.h"
#include "weaks.h" #include "weaks.h"
#include "srcprop.h" #include "srcprop.h"
@ -72,7 +73,7 @@ SCM scm_i_copy;
static SCM scm_i_breakpoint, scm_i_line, scm_i_column; static SCM scm_i_breakpoint, scm_i_line, scm_i_column;
static SCM scm_i_filename; static SCM scm_i_filename;
long tc16_srcprops; long scm_tc16_srcprops;
static scm_srcprops_chunk *srcprops_chunklist = 0; static scm_srcprops_chunk *srcprops_chunklist = 0;
static scm_srcprops *srcprops_freelist = 0; static scm_srcprops *srcprops_freelist = 0;
@ -127,10 +128,10 @@ static scm_smobfuns srcpropssmob =
#ifdef __STDC__ #ifdef __STDC__
SCM SCM
_scm_make_srcprops (int line, int col, SCM filename, SCM copy, SCM plist) scm_make_srcprops (int line, int col, SCM filename, SCM copy, SCM plist)
#else #else
SCM SCM
_scm_make_srcprops (line, col, filename, copy, plist) scm_make_srcprops (line, col, filename, copy, plist)
int line; int line;
int col; int col;
SCM filename; SCM filename;
@ -161,7 +162,7 @@ _scm_make_srcprops (line, col, filename, copy, plist)
srcprops_freelist = (scm_srcprops *) &ptr[1]; srcprops_freelist = (scm_srcprops *) &ptr[1];
} }
SCM_NEWCELL (ans); SCM_NEWCELL (ans);
SCM_CAR (ans) = tc16_srcprops; SCM_CAR (ans) = scm_tc16_srcprops;
ptr->pos = SRCPROPMAKPOS (line, col); ptr->pos = SRCPROPMAKPOS (line, col);
ptr->fname = filename; ptr->fname = filename;
ptr->copy = copy; ptr->copy = copy;
@ -292,13 +293,13 @@ scm_set_source_property_x (obj, key, datum)
CLEARSRCPROPBRK (SCM_NIMP (p) && SRCPROPSP (p) CLEARSRCPROPBRK (SCM_NIMP (p) && SRCPROPSP (p)
? p ? p
: SCM_WHASHSET (scm_source_whash, h, : SCM_WHASHSET (scm_source_whash, h,
_scm_make_srcprops (0, 0, SCM_UNDEFINED, scm_make_srcprops (0, 0, SCM_UNDEFINED,
SCM_UNDEFINED, p))); SCM_UNDEFINED, p)));
else else
SETSRCPROPBRK (SCM_NIMP (p) && SRCPROPSP (p) SETSRCPROPBRK (SCM_NIMP (p) && SRCPROPSP (p)
? p ? p
: SCM_WHASHSET (scm_source_whash, h, : SCM_WHASHSET (scm_source_whash, h,
_scm_make_srcprops (0, 0, SCM_UNDEFINED, scm_make_srcprops (0, 0, SCM_UNDEFINED,
SCM_UNDEFINED, p))); SCM_UNDEFINED, p)));
else if (scm_i_line == key) else if (scm_i_line == key)
{ {
@ -306,7 +307,7 @@ scm_set_source_property_x (obj, key, datum)
SETSRCPROPLINE (p, datum); SETSRCPROPLINE (p, datum);
else else
SCM_WHASHSET (scm_source_whash, h, SCM_WHASHSET (scm_source_whash, h,
_scm_make_srcprops (datum, 0, SCM_UNDEFINED, SCM_UNDEFINED, p)); scm_make_srcprops (datum, 0, SCM_UNDEFINED, SCM_UNDEFINED, p));
} }
else if (scm_i_column == key) else if (scm_i_column == key)
{ {
@ -314,21 +315,21 @@ scm_set_source_property_x (obj, key, datum)
SETSRCPROPCOL (p, datum); SETSRCPROPCOL (p, datum);
else else
SCM_WHASHSET (scm_source_whash, h, SCM_WHASHSET (scm_source_whash, h,
_scm_make_srcprops (0, datum, SCM_UNDEFINED, SCM_UNDEFINED, p)); scm_make_srcprops (0, datum, SCM_UNDEFINED, SCM_UNDEFINED, p));
} }
else if (scm_i_filename == key) else if (scm_i_filename == key)
{ {
if (SCM_NIMP (p) && SRCPROPSP (p)) if (SCM_NIMP (p) && SRCPROPSP (p))
SRCPROPFNAME (p) = datum; SRCPROPFNAME (p) = datum;
else else
SCM_WHASHSET (scm_source_whash, h, _scm_make_srcprops (0, 0, datum, SCM_UNDEFINED, p)); SCM_WHASHSET (scm_source_whash, h, scm_make_srcprops (0, 0, datum, SCM_UNDEFINED, p));
} }
else if (scm_i_filename == key) else if (scm_i_filename == key)
{ {
if (SCM_NIMP (p) && SRCPROPSP (p)) if (SCM_NIMP (p) && SRCPROPSP (p))
SRCPROPCOPY (p) = datum; SRCPROPCOPY (p) = datum;
else else
SCM_WHASHSET (scm_source_whash, h, _scm_make_srcprops (0, 0, SCM_UNDEFINED, datum, p)); SCM_WHASHSET (scm_source_whash, h, scm_make_srcprops (0, 0, SCM_UNDEFINED, datum, p));
} }
else else
SCM_WHASHSET (scm_source_whash, h, scm_acons (key, datum, p)); SCM_WHASHSET (scm_source_whash, h, scm_acons (key, datum, p));
@ -343,8 +344,8 @@ void
scm_init_srcprop () scm_init_srcprop ()
#endif #endif
{ {
tc16_srcprops = scm_newsmob (&srcpropssmob); scm_tc16_srcprops = scm_newsmob (&srcpropssmob);
scm_source_whash = scm_make_weak_key_hash_table (SCM_MAKINUM (255)); scm_source_whash = scm_make_weak_key_hash_table (SCM_MAKINUM (2047));
scm_i_filename = SCM_CAR (scm_sysintern ("filename", SCM_UNDEFINED)); scm_i_filename = SCM_CAR (scm_sysintern ("filename", SCM_UNDEFINED));
scm_i_copy = SCM_CAR (scm_sysintern ("copy", SCM_UNDEFINED)); scm_i_copy = SCM_CAR (scm_sysintern ("copy", SCM_UNDEFINED));
@ -366,5 +367,6 @@ scm_finish_srcprop ()
free ((char *) ptr); free ((char *) ptr);
scm_mallocated -= sizeof (scm_srcprops_chunk) scm_mallocated -= sizeof (scm_srcprops_chunk)
+ sizeof (scm_srcprops) * (SRCPROPS_CHUNKSIZE - 1); + sizeof (scm_srcprops) * (SRCPROPS_CHUNKSIZE - 1);
ptr = next;
} }
} }