From: Nicholas Clark Date: Sun, 12 Jun 2005 21:08:33 +0000 (+0000) Subject: Shortcut chasing round strtab when we're not the last reference. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=29404ae038d75e5ffd5727a026889b0987db9cd5;p=p5sagit%2Fp5-mst-13.2.git Shortcut chasing round strtab when we're not the last reference. p4raw-id: //depot/perl@24809 --- diff --git a/hv.c b/hv.c index ae67070..1358acd 100644 --- a/hv.c +++ b/hv.c @@ -2170,6 +2170,15 @@ S_unshare_hek_or_pvn(pTHX_ const HEK *hek, const char *str, I32 len, U32 hash) /* Assert that the caller passed us a genuine (or at least consistent) shared hek */ assert (he->shared_he_he.hent_hek == hek); + + LOCK_STRTAB_MUTEX; + if (he->shared_he_he.hent_val - 1) { + --he->shared_he_he.hent_val; + UNLOCK_STRTAB_MUTEX; + return; + } + UNLOCK_STRTAB_MUTEX; + hash = HEK_HASH(hek); } else if (len < 0) { STRLEN tmplen = -len;