From 6a76e0d8b213b7174abe45a25eda1105bb2ee02e Mon Sep 17 00:00:00 2001 From: David Kastrup Date: Wed, 22 May 2013 16:52:44 +0200 Subject: [PATCH] Let Stencil::translate optimize the case of a null stencil expression --- lily/stencil.cc | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lily/stencil.cc b/lily/stencil.cc index 0a7f40205d..1657481109 100644 --- a/lily/stencil.cc +++ b/lily/stencil.cc @@ -176,9 +176,10 @@ Stencil::translate (Offset o) incr (a); } - expr_ = scm_list_n (ly_symbol2scm ("translate-stencil"), - ly_offset2scm (o), - expr_, SCM_UNDEFINED); + if (!scm_is_null (expr_)) + expr_ = scm_list_n (ly_symbol2scm ("translate-stencil"), + ly_offset2scm (o), + expr_, SCM_UNDEFINED); if (!is_empty ()) dim_.translate (o); } @@ -206,7 +207,11 @@ void Stencil::add_stencil (Stencil const &s) { SCM cs = ly_symbol2scm ("combine-stencil"); - if (scm_is_pair (expr_) + if (scm_is_null (expr_)) + expr_ = s.expr_; + else if (scm_is_null (s.expr_)) + ; + else if (scm_is_pair (expr_) && scm_is_eq (cs, scm_car (expr_))) { if (scm_is_pair (s.expr_) -- 2.39.2