From: Dave Mitchell Date: Mon, 8 Jan 2007 00:06:44 +0000 (+0000) Subject: allocate op_pv strings from shared mem pool X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=ea71c68d4e9e9831b358b56d13355d1b70bedf90;p=p5sagit%2Fp5-mst-13.2.git allocate op_pv strings from shared mem pool p4raw-id: //depot/perl@29711 --- diff --git a/op.c b/op.c index 722867a..a21eb5d 100644 --- a/op.c +++ b/op.c @@ -442,7 +442,7 @@ Perl_op_clear(pTHX_ OP *o) cSVOPo->op_sv = NULL; } else { - Safefree(cPVOPo->op_pv); + PerlMemShared_free(cPVOPo->op_pv); cPVOPo->op_pv = NULL; } break; @@ -3026,7 +3026,7 @@ Perl_pmtrans(pTHX_ OP *o, OP *expr, OP *repl) else bits = 8; - Safefree(cPVOPo->op_pv); + PerlMemShared_free(cPVOPo->op_pv); cPVOPo->op_pv = NULL; cSVOPo->op_sv = (SV*)swash_init("utf8", "", listsv, bits, none); SvREFCNT_dec(listsv); @@ -3083,7 +3083,8 @@ Perl_pmtrans(pTHX_ OP *o, OP *expr, OP *repl) else if (j >= (I32)rlen) j = rlen - 1; else - cPVOPo->op_pv = (char*)Renew(tbl, 0x101+rlen-j, short); + cPVOPo->op_pv = (char*)PerlMemShared_realloc(tbl, + (0x101+rlen-j) * sizeof(short)); tbl[0x100] = (short)(rlen - j); for (i=0; i < (I32)rlen - j; i++) tbl[0x101+i] = r[j+i]; @@ -4622,7 +4623,7 @@ Perl_newLOOPEX(pTHX_ I32 type, OP *label) if (label->op_type == OP_STUB && (label->op_flags & OPf_PARENS)) o = newOP(type, OPf_SPECIAL); else { - o = newPVOP(type, 0, savepv(label->op_type == OP_CONST + o = newPVOP(type, 0, savesharedpv(label->op_type == OP_CONST ? SvPVx_nolen_const(((SVOP*)label)->op_sv) : "")); } diff --git a/toke.c b/toke.c index 049474d..87c26be 100644 --- a/toke.c +++ b/toke.c @@ -11008,7 +11008,7 @@ S_scan_trans(pTHX_ char *start) } no_more: - Newx(tbl, complement&&!del?258:256, short); + tbl = PerlMemShared_calloc(complement&&!del?258:256, sizeof(short)); o = newPVOP(OP_TRANS, 0, (char*)tbl); o->op_private &= ~OPpTRANS_ALL; o->op_private |= del|squash|complement|