]> git.donarmstrong.com Git - lilypond.git/commitdiff
swap up and down fa head
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Thu, 28 Jul 2005 12:07:31 +0000 (12:07 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Thu, 28 Jul 2005 12:07:31 +0000 (12:07 +0000)
ChangeLog
VERSION
config.make.in
configure.in
lily/GNUmakefile
lily/ly-module.cc
lily/main.cc
mf/feta-bolletjes.mf

index 38b97d122106fe132ff389c30baee472720a65a0..224c0b1558d181d437748250818e8bcebf9f5fe9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2005-07-28  Han-Wen Nienhuys  <hanwen@xs4all.nl>
+
+       * mf/feta-bolletjes.mf: swap up and down fa head
+       
+2005-07-25  Han-Wen Nienhuys  <hanwen@xs4all.nl>
+
+       * lily/main.cc (setup_guile_env): backport: tweak GC settings to
+       improve performance.
+       (setup_guile_env): set init heap sizes to 16/1 mb. Decreases
+       number of segments.
+
+       * lily/ly-module.cc (LY_DEFINE): backport:
+       ly_clear_anonymous_modules(). Kludge to plug memory leak in GUILE. 
+
 2005-07-21  Han-Wen Nienhuys  <hanwen@xs4all.nl>
 
        * scm/output-lib.scm (tablature-stem-attachment-function): stem
diff --git a/VERSION b/VERSION
index 64f8a589aefb6b036c2b8d0c9205047d5ca3fc15..4dbc56432810550be8c3bbe218dd7a2bd6ae3093 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,6 +1,6 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
 MINOR_VERSION=6
-PATCH_LEVEL=1
+PATCH_LEVEL=2
 MY_PATCH_LEVEL=
 
index 32fd87e39017fafffd2f739788024828992e00d5..004c597be69d797aa6a3f78eb468602d8c61ba29 100644 (file)
@@ -111,3 +111,5 @@ WINDRES = @WINDRES@
 YACC = @YACC@
 ZIP = @ZIP@
 FLEXLEXER_PATH = @FLEXLEXER_PATH@
+
+LINK_GXX_STATICALLY = @LINK_GXX_STATICALLY@
index 98890053fde6297c836ef6d2d366b92a48558809..470440da47f30fc3a28bed9568bb5906c2259ec8 100644 (file)
@@ -32,6 +32,13 @@ AC_ARG_ENABLE(relocation,
     [  --enable-relocation     compile with dynamic relocation.  Default: off],
     [reloc_b=$enableval])
 
+
+AC_SUBST(LINK_GXX_STATICALLY)
+LINK_GXX_STATICALLY=no
+AC_ARG_ENABLE(static-gxx,
+    [  --enable-static-gxx     link libstdc++.a statically. Default: off],
+    [LINK_GXX_STATICALLY=$enableval])
+    
 # must come before any header checks
 STEPMAKE_COMPILE
 
index 6bf022fc80e57235afaec6de44c70bdbfd83712e..36c52f7c1be864a30cacfb3ced291946c9f487a6 100644 (file)
@@ -19,6 +19,10 @@ ifeq ($(HAVE_LIBKPATHSEA_SO),no)
 MODULE_LDFLAGS+= $(KPATHSEA_LIBS)
 endif
 
+ifeq ($(LINK_GXX_STATICALLY),yes)
+MODULE_LDFLAGS += -L$(outdir) -static-libgcc
+endif
+
 
 # for profiling, link guile statically:
 #
@@ -46,6 +50,15 @@ ETAGS_FLAGS += --regex='{c++}/^LY_DEFINE *([^"]*"\([^"]+\)"/\1/'
 
 default:
 
+
+$(outdir)/libstdc++.a: 
+       ln -s `$(CXX) -print-file-name=libstdc++.a` $(outdir)/
+
+ifeq ($(LINK_GXX_STATICALLY),yes)
+$(outdir)/lilypond: $(outdir)/libstdc++.a
+endif
+
+
 # force these: Make can't know these have to be generated in advance
 $(outdir)/lily-parser.o: $(outdir)/parser.hh
 $(outdir)/lily-lexer.o: $(outdir)/parser.hh $(outdir)/FlexLexer.h
index 7d613fcdd8ad87251ff29bacb433f05c515026c3..5f3628928899ce4072a96a4ea8d9bb78bc7c273e 100644 (file)
 #include "warn.hh"
 #include "main.hh"
 #include "string.hh"
+#include "protected-scm.hh"
+
+#define MODULE_GC_KLUDGE
+
+#ifdef MODULE_GC_KLUDGE
+Protected_scm anonymous_modules = SCM_EOL;
+
+#endif
+
+LY_DEFINE(ly_clear_anonymous_modules, "ly:clear-anonymous-modules",
+         0, 0, 0, (),
+         "Plug a GUILE 1.6 and 1.7 memory leak by breaking a weak reference "
+         "pointer cycle explicitly."
+         )
+{
+#ifdef MODULE_GC_KLUDGE
+  for (SCM s = anonymous_modules;
+       scm_is_pair (s);
+       s = scm_cdr (s))
+    {
+      SCM module = scm_car (s);
+      SCM closure = SCM_MODULE_EVAL_CLOSURE(module);
+      SCM prop = scm_procedure_property (closure, ly_symbol2scm ("module")); 
+
+      if (ly_is_module (prop))
+       {
+         scm_set_procedure_property_x (closure, ly_symbol2scm ("module"),
+                                       SCM_BOOL_F);
+       }
+    }
+
+  anonymous_modules = SCM_EOL;
+#endif
+
+  return SCM_UNSPECIFIED;
+}
+
+
 
 #define FUNC_NAME __FUNCTION__
 
@@ -35,6 +73,11 @@ ly_make_anonymous_module (bool safe)
       SCM proc = ly_lily_module_constant ("make-safe-lilypond-module");
       mod = scm_call_0 (proc);
     }
+
+#ifdef MODULE_GC_KLUDGE
+  anonymous_modules = scm_cons (mod, anonymous_modules);
+#endif
+  
   return mod;
 }
 
index 1efd32303b8239b252de73c015080d8c1712b714..7574ca0082cc5e04d55e2cdbb5c43f32a2bff366 100644 (file)
@@ -726,11 +726,35 @@ parse_argv (int argc, char **argv)
     }
 }
 
+void
+setup_guile_env ()
+{
+  char * yield = getenv ("LILYPOND_GC_YIELD");
+  bool overwrite = true;
+  if (!yield)
+    {
+      yield = "70";
+      overwrite = false;
+    }
+  
+  setenv ("GUILE_MIN_YIELD_1", yield, overwrite);
+  setenv ("GUILE_MIN_YIELD_2", yield, overwrite);
+  setenv ("GUILE_MIN_YIELD_MALLOC", yield, overwrite);
+
+
+  char *mb16 = "16777216";
+  char *mb1 = "1048576";
+  
+  setenv ("SCM_DEFAULT_INIT_HEAP_SIZE_1", mb16, 0);
+  setenv ("SCM_DEFAULT_INIT_HEAP_SIZE_2", mb1, 0);
+}
+
 int
 main (int argc, char **argv)
 {
   setup_localisation ();
   setup_paths (argv[0]);
+  setup_guile_env ();
   parse_argv (argc, argv);
   if (isatty (STDIN_FILENO))
     identify (stderr);
index 3cf3559ac8853783e1e0caad15cd5f7d21ea1d8b..959046e90dd0a6eb97f9ce0603e3de6154c52fd6 100644 (file)
@@ -1190,14 +1190,14 @@ def draw_fa_head (expr width_factor) =
 enddef;
 
 
-fet_beginchar ("Whole fa up head", "d0fa");
+fet_beginchar ("Whole fa up head", "u0fa");
        draw_fa_head (1.8);
        fill p_up_out;
        unfill p_up_in;
 fet_endchar;
 
 
-fet_beginchar ("Whole fa down head", "u0fa");
+fet_beginchar ("Whole fa down head", "d0fa");
        draw_fa_head (1.8);
        fill p_down_out;
        unfill p_down_in;