diff options
author | Father Chrysostomos <sprout@cpan.org> | 2011-07-14 21:49:08 -0700 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2011-07-14 21:49:39 -0700 |
commit | eebd3bc0dfa10c5d80023c98a5e80dc4fb6689ca (patch) | |
tree | 2585d5a81ae97c0fa2dfdb5fcd1b459533634c33 /cop.h | |
parent | fe3772c388e259ff8210505dc7e865853c277e69 (diff) | |
download | perl-eebd3bc0dfa10c5d80023c98a5e80dc4fb6689ca.tar.gz |
Change was_lvalue_sub back to X; spell out the only use of it
OK, now I understand what’s happening.
If there is a public macro (PUSHSUB) that contains a call to a pri-
vate function (was_lvalue_sub), that function has to be exported, so
that non-core code can call it. But if it is marked X, there is no
was_lvalue_sub shorthand macro visible to non-core code, so when the
PUSHSUB macro is expanded in such code, the was_lvalue_sub(...) bit
becomes a call to the function literally named was_lvalue_sub, as
opposed to Perl_lvalue_sub (and is compiled that way on forgiving
platforms). Making it A makes that macro available to non-core code,
but also implies that it is available for direct use by extensions,
which is not the case with was_lvalue_sub.
So, this commit makes it X again, but spells it out in PUSHSUB, so
there is no need for the function’s macro to be available when
PUSHSUB is expanded.
Hence, there is no need for the was_lvalue_sub macro to exist, so this
commit also removes it.
See also these three commits:
c73b0699db
7b70e81778
777d901444
Diffstat (limited to 'cop.h')
-rw-r--r-- | cop.h | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -640,7 +640,7 @@ struct block_format { (PL_op->op_flags & OPf_WANT) \ ? OPpENTERSUB_LVAL_MASK \ : !(PL_op->op_private & OPpENTERSUB_LVAL_MASK) \ - ? 0 : was_lvalue_sub(); \ + ? 0 : Perl_was_lvalue_sub(aTHX); \ PUSHSUB_BASE(cx) \ cx->blk_u16 = PL_op->op_private & \ (phlags|OPpENTERSUB_DEREF); \ |