added hawk::gc(), hawk::gc_set_threshold(), hawk::gc_get_threshold()
This commit is contained in:
parent
7d70005984
commit
a93beaaf55
@ -185,6 +185,7 @@ if ENABLE_STATIC_MODULE
|
|||||||
# STATIC MODULES BUILT INTO MAIN LIBRARY
|
# STATIC MODULES BUILT INTO MAIN LIBRARY
|
||||||
##################################################
|
##################################################
|
||||||
libhawk_la_SOURCES += \
|
libhawk_la_SOURCES += \
|
||||||
|
mod-hawk.c mod-hawk.h \
|
||||||
mod-math.c mod-math.h \
|
mod-math.c mod-math.h \
|
||||||
mod-str.c mod-str.h \
|
mod-str.c mod-str.h \
|
||||||
mod-sys.c mod-sys.h
|
mod-sys.c mod-sys.h
|
||||||
@ -213,6 +214,13 @@ DEPENDENCIES_MOD_COMMON = libhawk.la
|
|||||||
#pkglibdir = $(libdir)
|
#pkglibdir = $(libdir)
|
||||||
#pkglib_LTLIBRARIES =
|
#pkglib_LTLIBRARIES =
|
||||||
|
|
||||||
|
pkglib_LTLIBRARIES += libhawk-hawk.la
|
||||||
|
libhawk_hawk_la_SOURCES = mod-hawk.c mod-hawk.h
|
||||||
|
libhawk_hawk_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON)
|
||||||
|
libhawk_hawk_la_LDFLAGS = $(LDFLAGS_MOD_COMMON)
|
||||||
|
libhawk_hawk_la_LIBADD = $(LIBADD_MOD_COMMON)
|
||||||
|
libhawk_hawk_la_DEPENDENCIES = $(DEPENDENCIES_MOD_COMMON)
|
||||||
|
|
||||||
pkglib_LTLIBRARIES += libhawk-math.la
|
pkglib_LTLIBRARIES += libhawk-math.la
|
||||||
libhawk_math_la_SOURCES = mod-math.c mod-math.h
|
libhawk_math_la_SOURCES = mod-math.c mod-math.h
|
||||||
libhawk_math_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON)
|
libhawk_math_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON)
|
||||||
|
@ -100,6 +100,7 @@ host_triplet = @host@
|
|||||||
# STATIC MODULES BUILT INTO MAIN LIBRARY
|
# STATIC MODULES BUILT INTO MAIN LIBRARY
|
||||||
##################################################
|
##################################################
|
||||||
@ENABLE_STATIC_MODULE_TRUE@am__append_9 = \
|
@ENABLE_STATIC_MODULE_TRUE@am__append_9 = \
|
||||||
|
@ENABLE_STATIC_MODULE_TRUE@ mod-hawk.c mod-hawk.h \
|
||||||
@ENABLE_STATIC_MODULE_TRUE@ mod-math.c mod-math.h \
|
@ENABLE_STATIC_MODULE_TRUE@ mod-math.c mod-math.h \
|
||||||
@ENABLE_STATIC_MODULE_TRUE@ mod-str.c mod-str.h \
|
@ENABLE_STATIC_MODULE_TRUE@ mod-str.c mod-str.h \
|
||||||
@ENABLE_STATIC_MODULE_TRUE@ mod-sys.c mod-sys.h
|
@ENABLE_STATIC_MODULE_TRUE@ mod-sys.c mod-sys.h
|
||||||
@ -112,8 +113,9 @@ host_triplet = @host@
|
|||||||
|
|
||||||
#pkglibdir = $(libdir)
|
#pkglibdir = $(libdir)
|
||||||
#pkglib_LTLIBRARIES =
|
#pkglib_LTLIBRARIES =
|
||||||
@ENABLE_STATIC_MODULE_FALSE@am__append_15 = libhawk-math.la \
|
@ENABLE_STATIC_MODULE_FALSE@am__append_15 = libhawk-hawk.la \
|
||||||
@ENABLE_STATIC_MODULE_FALSE@ libhawk-str.la libhawk-sys.la
|
@ENABLE_STATIC_MODULE_FALSE@ libhawk-math.la libhawk-str.la \
|
||||||
|
@ENABLE_STATIC_MODULE_FALSE@ libhawk-sys.la
|
||||||
subdir = lib
|
subdir = lib
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \
|
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \
|
||||||
@ -163,14 +165,24 @@ am__installdirs = "$(DESTDIR)$(pkglibdir)" \
|
|||||||
"$(DESTDIR)$(pkgincludedir)"
|
"$(DESTDIR)$(pkgincludedir)"
|
||||||
LTLIBRARIES = $(pkglib_LTLIBRARIES)
|
LTLIBRARIES = $(pkglib_LTLIBRARIES)
|
||||||
am__DEPENDENCIES_1 =
|
am__DEPENDENCIES_1 =
|
||||||
am__libhawk_math_la_SOURCES_DIST = mod-math.c mod-math.h
|
am__libhawk_hawk_la_SOURCES_DIST = mod-hawk.c mod-hawk.h
|
||||||
@ENABLE_STATIC_MODULE_FALSE@am_libhawk_math_la_OBJECTS = \
|
@ENABLE_STATIC_MODULE_FALSE@am_libhawk_hawk_la_OBJECTS = \
|
||||||
@ENABLE_STATIC_MODULE_FALSE@ libhawk_math_la-mod-math.lo
|
@ENABLE_STATIC_MODULE_FALSE@ libhawk_hawk_la-mod-hawk.lo
|
||||||
libhawk_math_la_OBJECTS = $(am_libhawk_math_la_OBJECTS)
|
libhawk_hawk_la_OBJECTS = $(am_libhawk_hawk_la_OBJECTS)
|
||||||
AM_V_lt = $(am__v_lt_@AM_V@)
|
AM_V_lt = $(am__v_lt_@AM_V@)
|
||||||
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
|
||||||
am__v_lt_0 = --silent
|
am__v_lt_0 = --silent
|
||||||
am__v_lt_1 =
|
am__v_lt_1 =
|
||||||
|
libhawk_hawk_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
|
||||||
|
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
|
||||||
|
$(AM_CFLAGS) $(CFLAGS) $(libhawk_hawk_la_LDFLAGS) $(LDFLAGS) \
|
||||||
|
-o $@
|
||||||
|
@ENABLE_STATIC_MODULE_FALSE@am_libhawk_hawk_la_rpath = -rpath \
|
||||||
|
@ENABLE_STATIC_MODULE_FALSE@ $(pkglibdir)
|
||||||
|
am__libhawk_math_la_SOURCES_DIST = mod-math.c mod-math.h
|
||||||
|
@ENABLE_STATIC_MODULE_FALSE@am_libhawk_math_la_OBJECTS = \
|
||||||
|
@ENABLE_STATIC_MODULE_FALSE@ libhawk_math_la-mod-math.lo
|
||||||
|
libhawk_math_la_OBJECTS = $(am_libhawk_math_la_OBJECTS)
|
||||||
libhawk_math_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
|
libhawk_math_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
|
||||||
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
|
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
|
||||||
$(AM_CFLAGS) $(CFLAGS) $(libhawk_math_la_LDFLAGS) $(LDFLAGS) \
|
$(AM_CFLAGS) $(CFLAGS) $(libhawk_math_la_LDFLAGS) $(LDFLAGS) \
|
||||||
@ -216,13 +228,14 @@ am__libhawk_la_SOURCES_DIST = hawk.h hawk-arr.h hawk-chr.h hawk-cmn.h \
|
|||||||
utl-str.c utl-sys.c utl.c val-prv.h val.c hawk-cli.h \
|
utl-str.c utl-sys.c utl.c val-prv.h val.c hawk-cli.h \
|
||||||
hawk-fio.h hawk-mtx.h hawk-pio.h hawk-sio.h hawk-tio.h \
|
hawk-fio.h hawk-mtx.h hawk-pio.h hawk-sio.h hawk-tio.h \
|
||||||
cli-imp.h cli.c fio.c mtx.c pio.c sio.c syscall.h tio.c \
|
cli-imp.h cli.c fio.c mtx.c pio.c sio.c syscall.h tio.c \
|
||||||
std-prv.h std.c Hawk.cpp HawkStd.cpp mod-math.c mod-math.h \
|
std-prv.h std.c Hawk.cpp HawkStd.cpp mod-hawk.c mod-hawk.h \
|
||||||
mod-str.c mod-str.h mod-sys.c mod-sys.h
|
mod-math.c mod-math.h mod-str.c mod-str.h mod-sys.c mod-sys.h
|
||||||
am__objects_1 =
|
am__objects_1 =
|
||||||
am__objects_2 = $(am__objects_1)
|
am__objects_2 = $(am__objects_1)
|
||||||
@ENABLE_CXX_TRUE@am__objects_3 = libhawk_la-Hawk.lo \
|
@ENABLE_CXX_TRUE@am__objects_3 = libhawk_la-Hawk.lo \
|
||||||
@ENABLE_CXX_TRUE@ libhawk_la-HawkStd.lo
|
@ENABLE_CXX_TRUE@ libhawk_la-HawkStd.lo
|
||||||
@ENABLE_STATIC_MODULE_TRUE@am__objects_4 = libhawk_la-mod-math.lo \
|
@ENABLE_STATIC_MODULE_TRUE@am__objects_4 = libhawk_la-mod-hawk.lo \
|
||||||
|
@ENABLE_STATIC_MODULE_TRUE@ libhawk_la-mod-math.lo \
|
||||||
@ENABLE_STATIC_MODULE_TRUE@ libhawk_la-mod-str.lo \
|
@ENABLE_STATIC_MODULE_TRUE@ libhawk_la-mod-str.lo \
|
||||||
@ENABLE_STATIC_MODULE_TRUE@ libhawk_la-mod-sys.lo
|
@ENABLE_STATIC_MODULE_TRUE@ libhawk_la-mod-sys.lo
|
||||||
am_libhawk_la_OBJECTS = $(am__objects_2) libhawk_la-arr.lo \
|
am_libhawk_la_OBJECTS = $(am__objects_2) libhawk_la-arr.lo \
|
||||||
@ -260,7 +273,8 @@ am__v_at_1 =
|
|||||||
DEFAULT_INCLUDES =
|
DEFAULT_INCLUDES =
|
||||||
depcomp = $(SHELL) $(top_srcdir)/ac/depcomp
|
depcomp = $(SHELL) $(top_srcdir)/ac/depcomp
|
||||||
am__maybe_remake_depfiles = depfiles
|
am__maybe_remake_depfiles = depfiles
|
||||||
am__depfiles_remade = ./$(DEPDIR)/libhawk_la-Hawk.Plo \
|
am__depfiles_remade = ./$(DEPDIR)/libhawk_hawk_la-mod-hawk.Plo \
|
||||||
|
./$(DEPDIR)/libhawk_la-Hawk.Plo \
|
||||||
./$(DEPDIR)/libhawk_la-HawkStd.Plo \
|
./$(DEPDIR)/libhawk_la-HawkStd.Plo \
|
||||||
./$(DEPDIR)/libhawk_la-arr.Plo ./$(DEPDIR)/libhawk_la-chr.Plo \
|
./$(DEPDIR)/libhawk_la-arr.Plo ./$(DEPDIR)/libhawk_la-chr.Plo \
|
||||||
./$(DEPDIR)/libhawk_la-cli.Plo ./$(DEPDIR)/libhawk_la-dir.Plo \
|
./$(DEPDIR)/libhawk_la-cli.Plo ./$(DEPDIR)/libhawk_la-dir.Plo \
|
||||||
@ -274,6 +288,7 @@ am__depfiles_remade = ./$(DEPDIR)/libhawk_la-Hawk.Plo \
|
|||||||
./$(DEPDIR)/libhawk_la-gem.Plo ./$(DEPDIR)/libhawk_la-hawk.Plo \
|
./$(DEPDIR)/libhawk_la-gem.Plo ./$(DEPDIR)/libhawk_la-hawk.Plo \
|
||||||
./$(DEPDIR)/libhawk_la-htb.Plo ./$(DEPDIR)/libhawk_la-mb8.Plo \
|
./$(DEPDIR)/libhawk_la-htb.Plo ./$(DEPDIR)/libhawk_la-mb8.Plo \
|
||||||
./$(DEPDIR)/libhawk_la-misc.Plo \
|
./$(DEPDIR)/libhawk_la-misc.Plo \
|
||||||
|
./$(DEPDIR)/libhawk_la-mod-hawk.Plo \
|
||||||
./$(DEPDIR)/libhawk_la-mod-math.Plo \
|
./$(DEPDIR)/libhawk_la-mod-math.Plo \
|
||||||
./$(DEPDIR)/libhawk_la-mod-str.Plo \
|
./$(DEPDIR)/libhawk_la-mod-str.Plo \
|
||||||
./$(DEPDIR)/libhawk_la-mod-sys.Plo \
|
./$(DEPDIR)/libhawk_la-mod-sys.Plo \
|
||||||
@ -339,9 +354,11 @@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
|
|||||||
am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
|
am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
|
||||||
am__v_CXXLD_0 = @echo " CXXLD " $@;
|
am__v_CXXLD_0 = @echo " CXXLD " $@;
|
||||||
am__v_CXXLD_1 =
|
am__v_CXXLD_1 =
|
||||||
SOURCES = $(libhawk_math_la_SOURCES) $(libhawk_str_la_SOURCES) \
|
SOURCES = $(libhawk_hawk_la_SOURCES) $(libhawk_math_la_SOURCES) \
|
||||||
$(libhawk_sys_la_SOURCES) $(libhawk_la_SOURCES)
|
$(libhawk_str_la_SOURCES) $(libhawk_sys_la_SOURCES) \
|
||||||
DIST_SOURCES = $(am__libhawk_math_la_SOURCES_DIST) \
|
$(libhawk_la_SOURCES)
|
||||||
|
DIST_SOURCES = $(am__libhawk_hawk_la_SOURCES_DIST) \
|
||||||
|
$(am__libhawk_math_la_SOURCES_DIST) \
|
||||||
$(am__libhawk_str_la_SOURCES_DIST) \
|
$(am__libhawk_str_la_SOURCES_DIST) \
|
||||||
$(am__libhawk_sys_la_SOURCES_DIST) \
|
$(am__libhawk_sys_la_SOURCES_DIST) \
|
||||||
$(am__libhawk_la_SOURCES_DIST)
|
$(am__libhawk_la_SOURCES_DIST)
|
||||||
@ -610,6 +627,11 @@ libhawk_la_DEPENDENCIES = $(am__append_12) $(am__append_14)
|
|||||||
@ENABLE_STATIC_MODULE_FALSE@LDFLAGS_MOD_COMMON = $(LDFLAGS_ALL_COMMON)
|
@ENABLE_STATIC_MODULE_FALSE@LDFLAGS_MOD_COMMON = $(LDFLAGS_ALL_COMMON)
|
||||||
@ENABLE_STATIC_MODULE_FALSE@LIBADD_MOD_COMMON = -lhawk
|
@ENABLE_STATIC_MODULE_FALSE@LIBADD_MOD_COMMON = -lhawk
|
||||||
@ENABLE_STATIC_MODULE_FALSE@DEPENDENCIES_MOD_COMMON = libhawk.la
|
@ENABLE_STATIC_MODULE_FALSE@DEPENDENCIES_MOD_COMMON = libhawk.la
|
||||||
|
@ENABLE_STATIC_MODULE_FALSE@libhawk_hawk_la_SOURCES = mod-hawk.c mod-hawk.h
|
||||||
|
@ENABLE_STATIC_MODULE_FALSE@libhawk_hawk_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON)
|
||||||
|
@ENABLE_STATIC_MODULE_FALSE@libhawk_hawk_la_LDFLAGS = $(LDFLAGS_MOD_COMMON)
|
||||||
|
@ENABLE_STATIC_MODULE_FALSE@libhawk_hawk_la_LIBADD = $(LIBADD_MOD_COMMON)
|
||||||
|
@ENABLE_STATIC_MODULE_FALSE@libhawk_hawk_la_DEPENDENCIES = $(DEPENDENCIES_MOD_COMMON)
|
||||||
@ENABLE_STATIC_MODULE_FALSE@libhawk_math_la_SOURCES = mod-math.c mod-math.h
|
@ENABLE_STATIC_MODULE_FALSE@libhawk_math_la_SOURCES = mod-math.c mod-math.h
|
||||||
@ENABLE_STATIC_MODULE_FALSE@libhawk_math_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON)
|
@ENABLE_STATIC_MODULE_FALSE@libhawk_math_la_CPPFLAGS = $(CPPFLAGS_MOD_COMMON)
|
||||||
@ENABLE_STATIC_MODULE_FALSE@libhawk_math_la_LDFLAGS = $(LDFLAGS_MOD_COMMON)
|
@ENABLE_STATIC_MODULE_FALSE@libhawk_math_la_LDFLAGS = $(LDFLAGS_MOD_COMMON)
|
||||||
@ -710,6 +732,9 @@ clean-pkglibLTLIBRARIES:
|
|||||||
rm -f $${locs}; \
|
rm -f $${locs}; \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
libhawk-hawk.la: $(libhawk_hawk_la_OBJECTS) $(libhawk_hawk_la_DEPENDENCIES) $(EXTRA_libhawk_hawk_la_DEPENDENCIES)
|
||||||
|
$(AM_V_CCLD)$(libhawk_hawk_la_LINK) $(am_libhawk_hawk_la_rpath) $(libhawk_hawk_la_OBJECTS) $(libhawk_hawk_la_LIBADD) $(LIBS)
|
||||||
|
|
||||||
libhawk-math.la: $(libhawk_math_la_OBJECTS) $(libhawk_math_la_DEPENDENCIES) $(EXTRA_libhawk_math_la_DEPENDENCIES)
|
libhawk-math.la: $(libhawk_math_la_OBJECTS) $(libhawk_math_la_DEPENDENCIES) $(EXTRA_libhawk_math_la_DEPENDENCIES)
|
||||||
$(AM_V_CCLD)$(libhawk_math_la_LINK) $(am_libhawk_math_la_rpath) $(libhawk_math_la_OBJECTS) $(libhawk_math_la_LIBADD) $(LIBS)
|
$(AM_V_CCLD)$(libhawk_math_la_LINK) $(am_libhawk_math_la_rpath) $(libhawk_math_la_OBJECTS) $(libhawk_math_la_LIBADD) $(LIBS)
|
||||||
|
|
||||||
@ -728,6 +753,7 @@ mostlyclean-compile:
|
|||||||
distclean-compile:
|
distclean-compile:
|
||||||
-rm -f *.tab.c
|
-rm -f *.tab.c
|
||||||
|
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_hawk_la-mod-hawk.Plo@am__quote@ # am--include-marker
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-Hawk.Plo@am__quote@ # am--include-marker
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-Hawk.Plo@am__quote@ # am--include-marker
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-HawkStd.Plo@am__quote@ # am--include-marker
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-HawkStd.Plo@am__quote@ # am--include-marker
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-arr.Plo@am__quote@ # am--include-marker
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-arr.Plo@am__quote@ # am--include-marker
|
||||||
@ -748,6 +774,7 @@ distclean-compile:
|
|||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-htb.Plo@am__quote@ # am--include-marker
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-htb.Plo@am__quote@ # am--include-marker
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-mb8.Plo@am__quote@ # am--include-marker
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-mb8.Plo@am__quote@ # am--include-marker
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-misc.Plo@am__quote@ # am--include-marker
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-misc.Plo@am__quote@ # am--include-marker
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-mod-hawk.Plo@am__quote@ # am--include-marker
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-mod-math.Plo@am__quote@ # am--include-marker
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-mod-math.Plo@am__quote@ # am--include-marker
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-mod-str.Plo@am__quote@ # am--include-marker
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-mod-str.Plo@am__quote@ # am--include-marker
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-mod-sys.Plo@am__quote@ # am--include-marker
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhawk_la-mod-sys.Plo@am__quote@ # am--include-marker
|
||||||
@ -813,6 +840,13 @@ am--depfiles: $(am__depfiles_remade)
|
|||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
libhawk_hawk_la-mod-hawk.lo: mod-hawk.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhawk_hawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhawk_hawk_la-mod-hawk.lo -MD -MP -MF $(DEPDIR)/libhawk_hawk_la-mod-hawk.Tpo -c -o libhawk_hawk_la-mod-hawk.lo `test -f 'mod-hawk.c' || echo '$(srcdir)/'`mod-hawk.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhawk_hawk_la-mod-hawk.Tpo $(DEPDIR)/libhawk_hawk_la-mod-hawk.Plo
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mod-hawk.c' object='libhawk_hawk_la-mod-hawk.lo' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhawk_hawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhawk_hawk_la-mod-hawk.lo `test -f 'mod-hawk.c' || echo '$(srcdir)/'`mod-hawk.c
|
||||||
|
|
||||||
libhawk_math_la-mod-math.lo: mod-math.c
|
libhawk_math_la-mod-math.lo: mod-math.c
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhawk_math_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhawk_math_la-mod-math.lo -MD -MP -MF $(DEPDIR)/libhawk_math_la-mod-math.Tpo -c -o libhawk_math_la-mod-math.lo `test -f 'mod-math.c' || echo '$(srcdir)/'`mod-math.c
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhawk_math_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhawk_math_la-mod-math.lo -MD -MP -MF $(DEPDIR)/libhawk_math_la-mod-math.Tpo -c -o libhawk_math_la-mod-math.lo `test -f 'mod-math.c' || echo '$(srcdir)/'`mod-math.c
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhawk_math_la-mod-math.Tpo $(DEPDIR)/libhawk_math_la-mod-math.Plo
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhawk_math_la-mod-math.Tpo $(DEPDIR)/libhawk_math_la-mod-math.Plo
|
||||||
@ -1156,6 +1190,13 @@ libhawk_la-std.lo: std.c
|
|||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhawk_la-std.lo `test -f 'std.c' || echo '$(srcdir)/'`std.c
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhawk_la-std.lo `test -f 'std.c' || echo '$(srcdir)/'`std.c
|
||||||
|
|
||||||
|
libhawk_la-mod-hawk.lo: mod-hawk.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhawk_la-mod-hawk.lo -MD -MP -MF $(DEPDIR)/libhawk_la-mod-hawk.Tpo -c -o libhawk_la-mod-hawk.lo `test -f 'mod-hawk.c' || echo '$(srcdir)/'`mod-hawk.c
|
||||||
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhawk_la-mod-hawk.Tpo $(DEPDIR)/libhawk_la-mod-hawk.Plo
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mod-hawk.c' object='libhawk_la-mod-hawk.lo' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libhawk_la-mod-hawk.lo `test -f 'mod-hawk.c' || echo '$(srcdir)/'`mod-hawk.c
|
||||||
|
|
||||||
libhawk_la-mod-math.lo: mod-math.c
|
libhawk_la-mod-math.lo: mod-math.c
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhawk_la-mod-math.lo -MD -MP -MF $(DEPDIR)/libhawk_la-mod-math.Tpo -c -o libhawk_la-mod-math.lo `test -f 'mod-math.c' || echo '$(srcdir)/'`mod-math.c
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libhawk_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libhawk_la-mod-math.lo -MD -MP -MF $(DEPDIR)/libhawk_la-mod-math.Tpo -c -o libhawk_la-mod-math.lo `test -f 'mod-math.c' || echo '$(srcdir)/'`mod-math.c
|
||||||
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhawk_la-mod-math.Tpo $(DEPDIR)/libhawk_la-mod-math.Plo
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libhawk_la-mod-math.Tpo $(DEPDIR)/libhawk_la-mod-math.Plo
|
||||||
@ -1370,7 +1411,8 @@ clean-am: clean-generic clean-libtool clean-pkglibLTLIBRARIES \
|
|||||||
mostlyclean-am
|
mostlyclean-am
|
||||||
|
|
||||||
distclean: distclean-am
|
distclean: distclean-am
|
||||||
-rm -f ./$(DEPDIR)/libhawk_la-Hawk.Plo
|
-rm -f ./$(DEPDIR)/libhawk_hawk_la-mod-hawk.Plo
|
||||||
|
-rm -f ./$(DEPDIR)/libhawk_la-Hawk.Plo
|
||||||
-rm -f ./$(DEPDIR)/libhawk_la-HawkStd.Plo
|
-rm -f ./$(DEPDIR)/libhawk_la-HawkStd.Plo
|
||||||
-rm -f ./$(DEPDIR)/libhawk_la-arr.Plo
|
-rm -f ./$(DEPDIR)/libhawk_la-arr.Plo
|
||||||
-rm -f ./$(DEPDIR)/libhawk_la-chr.Plo
|
-rm -f ./$(DEPDIR)/libhawk_la-chr.Plo
|
||||||
@ -1390,6 +1432,7 @@ distclean: distclean-am
|
|||||||
-rm -f ./$(DEPDIR)/libhawk_la-htb.Plo
|
-rm -f ./$(DEPDIR)/libhawk_la-htb.Plo
|
||||||
-rm -f ./$(DEPDIR)/libhawk_la-mb8.Plo
|
-rm -f ./$(DEPDIR)/libhawk_la-mb8.Plo
|
||||||
-rm -f ./$(DEPDIR)/libhawk_la-misc.Plo
|
-rm -f ./$(DEPDIR)/libhawk_la-misc.Plo
|
||||||
|
-rm -f ./$(DEPDIR)/libhawk_la-mod-hawk.Plo
|
||||||
-rm -f ./$(DEPDIR)/libhawk_la-mod-math.Plo
|
-rm -f ./$(DEPDIR)/libhawk_la-mod-math.Plo
|
||||||
-rm -f ./$(DEPDIR)/libhawk_la-mod-str.Plo
|
-rm -f ./$(DEPDIR)/libhawk_la-mod-str.Plo
|
||||||
-rm -f ./$(DEPDIR)/libhawk_la-mod-sys.Plo
|
-rm -f ./$(DEPDIR)/libhawk_la-mod-sys.Plo
|
||||||
@ -1470,7 +1513,8 @@ install-ps-am:
|
|||||||
installcheck-am:
|
installcheck-am:
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
maintainer-clean: maintainer-clean-am
|
||||||
-rm -f ./$(DEPDIR)/libhawk_la-Hawk.Plo
|
-rm -f ./$(DEPDIR)/libhawk_hawk_la-mod-hawk.Plo
|
||||||
|
-rm -f ./$(DEPDIR)/libhawk_la-Hawk.Plo
|
||||||
-rm -f ./$(DEPDIR)/libhawk_la-HawkStd.Plo
|
-rm -f ./$(DEPDIR)/libhawk_la-HawkStd.Plo
|
||||||
-rm -f ./$(DEPDIR)/libhawk_la-arr.Plo
|
-rm -f ./$(DEPDIR)/libhawk_la-arr.Plo
|
||||||
-rm -f ./$(DEPDIR)/libhawk_la-chr.Plo
|
-rm -f ./$(DEPDIR)/libhawk_la-chr.Plo
|
||||||
@ -1490,6 +1534,7 @@ maintainer-clean: maintainer-clean-am
|
|||||||
-rm -f ./$(DEPDIR)/libhawk_la-htb.Plo
|
-rm -f ./$(DEPDIR)/libhawk_la-htb.Plo
|
||||||
-rm -f ./$(DEPDIR)/libhawk_la-mb8.Plo
|
-rm -f ./$(DEPDIR)/libhawk_la-mb8.Plo
|
||||||
-rm -f ./$(DEPDIR)/libhawk_la-misc.Plo
|
-rm -f ./$(DEPDIR)/libhawk_la-misc.Plo
|
||||||
|
-rm -f ./$(DEPDIR)/libhawk_la-mod-hawk.Plo
|
||||||
-rm -f ./$(DEPDIR)/libhawk_la-mod-math.Plo
|
-rm -f ./$(DEPDIR)/libhawk_la-mod-math.Plo
|
||||||
-rm -f ./$(DEPDIR)/libhawk_la-mod-str.Plo
|
-rm -f ./$(DEPDIR)/libhawk_la-mod-str.Plo
|
||||||
-rm -f ./$(DEPDIR)/libhawk_la-mod-sys.Plo
|
-rm -f ./$(DEPDIR)/libhawk_la-mod-sys.Plo
|
||||||
|
@ -409,10 +409,11 @@ struct hawk_rtx_t
|
|||||||
hawk_gch_t g[HAWK_GC_NUM_GENS];
|
hawk_gch_t g[HAWK_GC_NUM_GENS];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ncolls[0] - number of allocation attempt since the last gc
|
* Pressure imposed on each generation before gc is triggered
|
||||||
* ncolls[N] - nubmer of collections performed for generation N - 1.
|
* pressure[0] - number of allocation attempt since the last gc
|
||||||
|
* pressure[N] - nubmer of collections performed for generation N - 1.
|
||||||
*/
|
*/
|
||||||
hawk_oow_t ncolls[HAWK_GC_NUM_GENS + 1];
|
hawk_oow_t pressure[HAWK_GC_NUM_GENS + 1];
|
||||||
|
|
||||||
/* threshold to trigger generational collection. */
|
/* threshold to trigger generational collection. */
|
||||||
hawk_oow_t threshold[HAWK_GC_NUM_GENS];
|
hawk_oow_t threshold[HAWK_GC_NUM_GENS];
|
||||||
|
@ -3007,7 +3007,12 @@ HAWK_EXPORT void hawk_rtx_refdownval_nofree (
|
|||||||
|
|
||||||
#define HAWK_RTX_GC_GEN_FULL (HAWK_TYPE_MAX(int))
|
#define HAWK_RTX_GC_GEN_FULL (HAWK_TYPE_MAX(int))
|
||||||
#define HAWK_RTX_GC_GEN_AUTO (-1)
|
#define HAWK_RTX_GC_GEN_AUTO (-1)
|
||||||
HAWK_EXPORT void hawk_rtx_gc (
|
|
||||||
|
/*
|
||||||
|
* The hawk_rtc_gc() function triggers garbage collection.
|
||||||
|
* It returns the generation number collected and never fails
|
||||||
|
*/
|
||||||
|
HAWK_EXPORT int hawk_rtx_gc (
|
||||||
hawk_rtx_t* rtx,
|
hawk_rtx_t* rtx,
|
||||||
int gen
|
int gen
|
||||||
);
|
);
|
||||||
|
192
hawk/lib/mod-hawk.c
Normal file
192
hawk/lib/mod-hawk.c
Normal file
@ -0,0 +1,192 @@
|
|||||||
|
/*
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
Copyright (c) 2006-2019 Chung, Hyung-Hwan. All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
|
||||||
|
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||||
|
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
|
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "mod-hawk.h"
|
||||||
|
#include "hawk-prv.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
hawk::gc();
|
||||||
|
hawk::gc_set_threshold(gen)
|
||||||
|
hawk::gc_get_threshold(gen)
|
||||||
|
hawk::GC_NUM_GENS
|
||||||
|
*/
|
||||||
|
|
||||||
|
static int fnc_gc (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
||||||
|
{
|
||||||
|
hawk_int_t gen = -1;
|
||||||
|
|
||||||
|
if (hawk_rtx_getnargs(rtx) >= 1 && hawk_rtx_valtoint(rtx, hawk_rtx_getarg(rtx, 0), &gen) <= -1) gen = -1;
|
||||||
|
gen = hawk_rtx_gc(rtx, gen);
|
||||||
|
|
||||||
|
HAWK_ASSERT (HAWK_IN_QUICKINT_RANGE(gen));
|
||||||
|
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, gen));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int fnc_gc_get_threshold (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
||||||
|
{
|
||||||
|
hawk_int_t gen;
|
||||||
|
hawk_int_t threshold;
|
||||||
|
|
||||||
|
if (hawk_rtx_valtoint(rtx, hawk_rtx_getarg(rtx, 0), &gen) <= -1) gen = 0;
|
||||||
|
if (gen < 0) gen = 0;
|
||||||
|
else if (gen >= HAWK_COUNTOF(rtx->gc.g)) gen = HAWK_COUNTOF(rtx->gc.g) - 1;
|
||||||
|
|
||||||
|
threshold = rtx->gc.threshold[gen];
|
||||||
|
|
||||||
|
HAWK_ASSERT (HAWK_IN_QUICKINT_RANGE(threshold));
|
||||||
|
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, threshold));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int fnc_gc_set_threshold (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
||||||
|
{
|
||||||
|
hawk_int_t gen;
|
||||||
|
hawk_int_t threshold;
|
||||||
|
|
||||||
|
if (hawk_rtx_valtoint(rtx, hawk_rtx_getarg(rtx, 0), &gen) <= -1) gen = 0;
|
||||||
|
if (gen < 0) gen = 0;
|
||||||
|
else if (gen >= HAWK_COUNTOF(rtx->gc.g)) gen = HAWK_COUNTOF(rtx->gc.g) - 1;
|
||||||
|
|
||||||
|
if (hawk_rtx_valtoint(rtx, hawk_rtx_getarg(rtx, 1), &threshold) <= -1) threshold = -1;
|
||||||
|
|
||||||
|
if (threshold >= 0)
|
||||||
|
{
|
||||||
|
if (threshold >= HAWK_QUICKINT_MAX) threshold = HAWK_QUICKINT_MAX;
|
||||||
|
rtx->gc.threshold[gen] = threshold; /* update */
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
threshold = rtx->gc.threshold[gen]; /* no update. but retrieve the existing value */
|
||||||
|
}
|
||||||
|
|
||||||
|
HAWK_ASSERT (HAWK_IN_QUICKINT_RANGE(threshold));
|
||||||
|
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, threshold));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef struct fnctab_t fnctab_t;
|
||||||
|
struct fnctab_t
|
||||||
|
{
|
||||||
|
const hawk_ooch_t* name;
|
||||||
|
hawk_mod_sym_fnc_t info;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct inttab_t inttab_t;
|
||||||
|
struct inttab_t
|
||||||
|
{
|
||||||
|
const hawk_ooch_t* name;
|
||||||
|
hawk_mod_sym_int_t info;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define A_MAX HAWK_TYPE_MAX(int)
|
||||||
|
|
||||||
|
static fnctab_t fnctab[] =
|
||||||
|
{
|
||||||
|
/* keep this table sorted for binary search in query(). */
|
||||||
|
{ HAWK_T("gc"), { { 0, 1, HAWK_NULL }, fnc_gc, 0 } },
|
||||||
|
{ HAWK_T("gc_get_threshold"), { { 1, 1, HAWK_NULL }, fnc_gc_get_threshold, 0 } },
|
||||||
|
{ HAWK_T("gc_set_threshold"), { { 2, 2, HAWK_NULL }, fnc_gc_set_threshold, 0 } }
|
||||||
|
};
|
||||||
|
|
||||||
|
static inttab_t inttab[] =
|
||||||
|
{
|
||||||
|
/* keep this table sorted for binary search in query(). */
|
||||||
|
{ HAWK_T("GC_NUM_GENS"), { HAWK_GC_NUM_GENS } }
|
||||||
|
};
|
||||||
|
|
||||||
|
static int query (hawk_mod_t* mod, hawk_t* awk, const hawk_ooch_t* name, hawk_mod_sym_t* sym)
|
||||||
|
{
|
||||||
|
int left, right, mid, n;
|
||||||
|
|
||||||
|
left = 0; right = HAWK_COUNTOF(fnctab) - 1;
|
||||||
|
|
||||||
|
while (left <= right)
|
||||||
|
{
|
||||||
|
mid = left + (right - left) / 2;
|
||||||
|
|
||||||
|
n = hawk_comp_oocstr(fnctab[mid].name, name, 0);
|
||||||
|
if (n > 0) right = mid - 1;
|
||||||
|
else if (n < 0) left = mid + 1;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sym->type = HAWK_MOD_FNC;
|
||||||
|
sym->u.fnc = fnctab[mid].info;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
left = 0; right = HAWK_COUNTOF(inttab) - 1;
|
||||||
|
while (left <= right)
|
||||||
|
{
|
||||||
|
mid = left + (right - left) / 2;
|
||||||
|
|
||||||
|
n = hawk_comp_oocstr(inttab[mid].name, name, 0);
|
||||||
|
if (n > 0) right = mid - 1;
|
||||||
|
else if (n < 0) left = mid + 1;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sym->type = HAWK_MOD_INT;
|
||||||
|
sym->u.in = inttab[mid].info;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
hawk_seterrfmt (awk, HAWK_NULL, HAWK_ENOENT, HAWK_T("'%js' not found"), name);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TODO: proper resource management */
|
||||||
|
|
||||||
|
static int init (hawk_mod_t* mod, hawk_rtx_t* rtx)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void fini (hawk_mod_t* mod, hawk_rtx_t* rtx)
|
||||||
|
{
|
||||||
|
/* TODO: anything */
|
||||||
|
}
|
||||||
|
|
||||||
|
static void unload (hawk_mod_t* mod, hawk_t* awk)
|
||||||
|
{
|
||||||
|
/* TODO: anything */
|
||||||
|
}
|
||||||
|
|
||||||
|
int hawk_mod_hawk (hawk_mod_t* mod, hawk_t* awk)
|
||||||
|
{
|
||||||
|
mod->query = query;
|
||||||
|
mod->unload = unload;
|
||||||
|
|
||||||
|
mod->init = init;
|
||||||
|
mod->fini = fini;
|
||||||
|
/*
|
||||||
|
mod->ctx...
|
||||||
|
*/
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
43
hawk/lib/mod-hawk.h
Normal file
43
hawk/lib/mod-hawk.h
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
* $Id$
|
||||||
|
*
|
||||||
|
Copyright (c) 2006-2019 Chung, Hyung-Hwan. All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
|
||||||
|
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||||
|
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
|
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _HAWK_MOD_HAWK_H_
|
||||||
|
#define _HAWK_MOD_HAWK_H_
|
||||||
|
|
||||||
|
#include <hawk.h>
|
||||||
|
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
HAWK_EXPORT int hawk_mod_hawk (hawk_mod_t* mod, hawk_t* awk);
|
||||||
|
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -626,7 +626,7 @@ static int query (hawk_mod_t* mod, hawk_t* awk, const hawk_ooch_t* name, hawk_mo
|
|||||||
sym->u.in = inttab[mid].info;
|
sym->u.in = inttab[mid].info;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
hawk_seterrfmt (awk, HAWK_NULL, HAWK_ENOENT, HAWK_T("'%js' not found"), name);
|
hawk_seterrfmt (awk, HAWK_NULL, HAWK_ENOENT, HAWK_T("'%js' not found"), name);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -7185,6 +7185,7 @@ int hawk_putsrcoochars (hawk_t* hawk, const hawk_ooch_t* str, hawk_oow_t len)
|
|||||||
#if defined(HAWK_ENABLE_STATIC_MODULE)
|
#if defined(HAWK_ENABLE_STATIC_MODULE)
|
||||||
|
|
||||||
/* let's hardcode module information */
|
/* let's hardcode module information */
|
||||||
|
#include "mod-hawk.h"
|
||||||
#include "mod-math.h"
|
#include "mod-math.h"
|
||||||
#include "mod-str.h"
|
#include "mod-str.h"
|
||||||
#include "mod-sys.h"
|
#include "mod-sys.h"
|
||||||
@ -7209,6 +7210,7 @@ static struct
|
|||||||
int (*modload) (hawk_mod_t* mod, hawk_t* awk);
|
int (*modload) (hawk_mod_t* mod, hawk_t* awk);
|
||||||
} static_modtab[] =
|
} static_modtab[] =
|
||||||
{
|
{
|
||||||
|
{ HAWK_T("hawk"), hawk_mod_hawk },
|
||||||
{ HAWK_T("math"), hawk_mod_math },
|
{ HAWK_T("math"), hawk_mod_math },
|
||||||
#if defined(HAWK_ENABLE_MOD_MYSQL)
|
#if defined(HAWK_ENABLE_MOD_MYSQL)
|
||||||
{ HAWK_T("mysql"), hawk_mod_mysql },
|
{ HAWK_T("mysql"), hawk_mod_mysql },
|
||||||
|
@ -1039,12 +1039,12 @@ static int init_rtx (hawk_rtx_t* rtx, hawk_t* awk, hawk_rio_cbs_t* rio)
|
|||||||
rtx->gc.g[i].gc_prev = &rtx->gc.g[i];
|
rtx->gc.g[i].gc_prev = &rtx->gc.g[i];
|
||||||
|
|
||||||
/* initialize some counters */
|
/* initialize some counters */
|
||||||
rtx->gc.ncolls[i] = 0;
|
rtx->gc.pressure[i] = 0;
|
||||||
rtx->gc.threshold[i] = (HAWK_COUNTOF(rtx->gc.g) - i) * 3;
|
rtx->gc.threshold[i] = (HAWK_COUNTOF(rtx->gc.g) - i) * 10;
|
||||||
if (i == 0 && rtx->gc.threshold[i] < 100) rtx->gc.threshold[i] = 100; /* minimum threshold for gen 0 is 100 */
|
if (i == 0 && rtx->gc.threshold[i] < 100) rtx->gc.threshold[i] = 100; /* minimum threshold for gen 0 is 100 */
|
||||||
}
|
}
|
||||||
|
|
||||||
rtx->gc.ncolls[i] = 0; /* ncolls is larger than other elements by 1 in size */
|
rtx->gc.pressure[i] = 0; /* pressure is larger than other elements by 1 in size */
|
||||||
|
|
||||||
rtx->inrec.buf_pos = 0;
|
rtx->inrec.buf_pos = 0;
|
||||||
rtx->inrec.buf_len = 0;
|
rtx->inrec.buf_len = 0;
|
||||||
|
@ -335,12 +335,12 @@ static HAWK_INLINE void gc_collect_garbage_in_generation (hawk_rtx_t* rtx, int g
|
|||||||
gc_move_all_gchs (&reachable, &rtx->gc.g[newgen]);
|
gc_move_all_gchs (&reachable, &rtx->gc.g[newgen]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* [NOTE] ncolls is greater than other elements by 1 in size.
|
/* [NOTE] pressure is greater than other elements by 1 in size.
|
||||||
* i store the number of collections for gen 0 in ncolls[1].
|
* i store the number of collections for gen 0 in pressure[1].
|
||||||
* so i can avoid some comparison when doing this */
|
* so i can avoid some comparison when doing this */
|
||||||
rtx->gc.ncolls[gen + 1]++; /* number of collections done for gen */
|
rtx->gc.pressure[gen + 1]++; /* number of collections done for gen */
|
||||||
rtx->gc.ncolls[gen] = 0; /* reset the number of collections of the previous generation */
|
rtx->gc.pressure[gen] = 0; /* reset the number of collections of the previous generation */
|
||||||
rtx->gc.ncolls[0] = 0; /* reset the number of allocations since last gc. this line is redundant if gen is 0. */
|
rtx->gc.pressure[0] = 0; /* reset the number of allocations since last gc. this line is redundant if gen is 0. */
|
||||||
|
|
||||||
#if defined(DEBUG_GC)
|
#if defined(DEBUG_GC)
|
||||||
hawk_logbfmt (hawk_rtx_gethawk(rtx), HAWK_LOG_STDERR, "[GC] **ended**\n");
|
hawk_logbfmt (hawk_rtx_gethawk(rtx), HAWK_LOG_STDERR, "[GC] **ended**\n");
|
||||||
@ -355,7 +355,7 @@ static HAWK_INLINE int gc_collect_garbage_auto (hawk_rtx_t* rtx)
|
|||||||
while (i > 1)
|
while (i > 1)
|
||||||
{
|
{
|
||||||
--i;
|
--i;
|
||||||
if (rtx->gc.ncolls[i] >= rtx->gc.threshold[i])
|
if (rtx->gc.pressure[i] >= rtx->gc.threshold[i])
|
||||||
{
|
{
|
||||||
gc_collect_garbage_in_generation (rtx, i);
|
gc_collect_garbage_in_generation (rtx, i);
|
||||||
return i;
|
return i;
|
||||||
@ -366,16 +366,17 @@ static HAWK_INLINE int gc_collect_garbage_auto (hawk_rtx_t* rtx)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void hawk_rtx_gc (hawk_rtx_t* rtx, int gen)
|
int hawk_rtx_gc (hawk_rtx_t* rtx, int gen)
|
||||||
{
|
{
|
||||||
if (gen < 0)
|
if (gen < 0)
|
||||||
{
|
{
|
||||||
gc_collect_garbage_auto (rtx);
|
return gc_collect_garbage_auto (rtx);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (gen >= HAWK_COUNTOF(rtx->gc.g)) gen = HAWK_COUNTOF(rtx->gc.g) - 1;
|
if (gen >= HAWK_COUNTOF(rtx->gc.g)) gen = HAWK_COUNTOF(rtx->gc.g) - 1;
|
||||||
gc_collect_garbage_in_generation (rtx, gen);
|
gc_collect_garbage_in_generation (rtx, gen);
|
||||||
|
return gen;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -385,7 +386,7 @@ static HAWK_INLINE hawk_val_t* gc_calloc_val (hawk_rtx_t* rtx, hawk_oow_t size)
|
|||||||
hawk_gch_t* gch;
|
hawk_gch_t* gch;
|
||||||
int gc_gen = 0;
|
int gc_gen = 0;
|
||||||
|
|
||||||
if (HAWK_UNLIKELY(rtx->gc.ncolls[0] >= rtx->gc.threshold[0]))
|
if (HAWK_UNLIKELY(rtx->gc.pressure[0] >= rtx->gc.threshold[0]))
|
||||||
{
|
{
|
||||||
/* invoke generational garbage collection */
|
/* invoke generational garbage collection */
|
||||||
gc_gen = gc_collect_garbage_auto(rtx);
|
gc_gen = gc_collect_garbage_auto(rtx);
|
||||||
@ -403,7 +404,7 @@ static HAWK_INLINE hawk_val_t* gc_calloc_val (hawk_rtx_t* rtx, hawk_oow_t size)
|
|||||||
if (HAWK_UNLIKELY(!gch)) return HAWK_NULL;
|
if (HAWK_UNLIKELY(!gch)) return HAWK_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtx->gc.ncolls[0]++; /* increment of the number of allocation attempt */
|
rtx->gc.pressure[0]++; /* increment of the number of allocation attempt */
|
||||||
return hawk_gch_to_val(gch);
|
return hawk_gch_to_val(gch);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user