summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2010-11-02 15:38:31 +0000
committerNicholas Clark <nick@ccl4.org>2010-11-02 15:38:31 +0000
commit9f8bf29815397e529be92022542fb51ea86d3fd5 (patch)
tree7e2c01c89710f5daabe869b239901feceb4a5b61
parent9f39b4f19b0088633249b846695908092673b0e0 (diff)
downloadperl-9f8bf29815397e529be92022542fb51ea86d3fd5.tar.gz
Expand AMG_CALLun_var() into all its users, and eliminate it.
Aside from the 2 callers where it can be replaced with AMG_CALLun(). AMG_CALLun_var was only used in core.
-rw-r--r--gv.c3
-rw-r--r--pp.c4
-rw-r--r--pp.h12
3 files changed, 10 insertions, 9 deletions
diff --git a/gv.c b/gv.c
index ab431777ee..f43706c7b2 100644
--- a/gv.c
+++ b/gv.c
@@ -1934,7 +1934,8 @@ Perl_try_amagic_un(pTHX_ int method, int flags) {
SvGETMAGIC(arg);
- if (SvAMAGIC(arg) && (tmpsv = AMG_CALLun_var(arg,method))) {
+ if (SvAMAGIC(arg) && (tmpsv = amagic_call(arg, &PL_sv_undef, method,
+ AMGf_noright | AMGf_unary))) {
if (flags & AMGf_set) {
SETs(tmpsv);
}
diff --git a/pp.c b/pp.c
index 4e4555546f..de72d4e21c 100644
--- a/pp.c
+++ b/pp.c
@@ -4651,8 +4651,8 @@ PP(pp_rkeys)
SvGETMAGIC(sv);
if (SvAMAGIC(sv)) {
/* N.B.: AMG macros return sv if no overloading is found */
- SV *maybe_hv = AMG_CALLun_var(sv,to_hv_amg);
- SV *maybe_av = AMG_CALLun_var(sv,to_av_amg);
+ SV *maybe_hv = AMG_CALLun(sv,to_hv);
+ SV *maybe_av = AMG_CALLun(sv,to_av);
if ( maybe_hv != sv && maybe_av != sv ) {
Perl_ck_warner(aTHX_ packWARN(WARN_AMBIGUOUS), "%s",
Perl_form(aTHX_ "Ambiguous overloaded argument to %s resolved as %%{}",
diff --git a/pp.h b/pp.h
index d6d70d5037..8c7967c887 100644
--- a/pp.h
+++ b/pp.h
@@ -425,10 +425,8 @@ Does not use C<TARG>. See also C<XPUSHu>, C<mPUSHu> and C<PUSHu>.
return NORMAL; \
} STMT_END
-#define AMG_CALLun_var(sv,meth_enum) amagic_call(sv,&PL_sv_undef, \
- meth_enum,AMGf_noright | AMGf_unary)
-#define AMG_CALLun(sv,meth) AMG_CALLun_var(sv,CAT2(meth,_amg))
-
+#define AMG_CALLun(sv,meth) \
+ amagic_call(sv,&PL_sv_undef, CAT2(meth,_amg), AMGf_noright | AMGf_unary)
#define tryAMAGICunTARGET(meth, shift) \
STMT_START { \
@@ -440,7 +438,8 @@ Does not use C<TARG>. See also C<XPUSHu>, C<mPUSHu> and C<PUSHu>.
SV *tmpsv; \
SV *arg= sp[shift]; \
if (SvAMAGIC(arg) && \
- (tmpsv=AMG_CALLun_var(arg,CAT2(meth,_amg)))) { \
+ (tmpsv = amagic_call(arg, &PL_sv_undef, CAT2(meth,_amg), \
+ AMGf_noright | AMGf_unary))) { \
SPAGAIN; \
sp += shift; \
sv_setsv(TARG, tmpsv); \
@@ -456,7 +455,8 @@ Does not use C<TARG>. See also C<XPUSHu>, C<mPUSHu> and C<PUSHu>.
SV *arg = *sp; \
am_again: \
if (SvAMAGIC(arg) && \
- (tmpsv=AMG_CALLun_var(arg,(meth_enum)))) { \
+ (tmpsv = amagic_call(arg, &PL_sv_undef, meth_enum, \
+ AMGf_noright | AMGf_unary))) { \
SPAGAIN; \
sv = tmpsv; \
if (!SvROK(tmpsv)) \