diff options
author | Artur Bergman <sky@nanisky.com> | 2003-02-02 23:38:40 +0000 |
---|---|---|
committer | Artur Bergman <sky@nanisky.com> | 2003-02-02 23:38:40 +0000 |
commit | 3848b9623cf7b0bd4a28a02073a51953b168b7a6 (patch) | |
tree | e9eff7653c42c82a44862ff4200441a635942c49 | |
parent | 6bcd9130d180dcc5fa05ebcff16b88ac3339b31d (diff) | |
download | perl-3848b9623cf7b0bd4a28a02073a51953b168b7a6.tar.gz |
Move SvPVIV out of ->op_sv of METHOD_NAMED into the pad, fixes
threading issue. Should perhaps be a PVOP to save memory, but then
we have nowhere to store the hash of the function!
p4raw-id: //depot/perl@18640
-rw-r--r-- | dump.c | 2 | ||||
-rw-r--r-- | op.c | 1 | ||||
-rw-r--r-- | pp_hot.c | 2 |
3 files changed, 3 insertions, 2 deletions
@@ -643,7 +643,7 @@ Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, OP *o) break; case OP_CONST: case OP_METHOD_NAMED: - Perl_dump_indent(aTHX_ level, file, "SV = %s\n", SvPEEK(cSVOPo->op_sv)); + Perl_dump_indent(aTHX_ level, file, "SV = %s\n", SvPEEK(cSVOPo_sv)); break; case OP_SETSTATE: case OP_NEXTSTATE: @@ -6080,6 +6080,7 @@ Perl_peep(pTHX_ register OP *o) if (cSVOPo->op_private & OPpCONST_STRICT) no_bareword_allowed(o); #ifdef USE_ITHREADS + case OP_METHOD_NAMED: /* Relocate sv to the pad for thread safety. * Despite being a "constant", the SV is written to, * for reference counts, sv_upgrade() etc. */ @@ -2818,7 +2818,7 @@ PP(pp_method) PP(pp_method_named) { dSP; - SV* sv = cSVOP->op_sv; + SV* sv = cSVOP_sv; U32 hash = SvUVX(sv); XPUSHs(method_common(sv, &hash)); |