Skip to content

Commit 36925d9

Browse files
ruzFather Chrysostomos
authored and
Father Chrysostomos
committed
change magic_methcall to use SV with shared hash value
Perl_magic_methcall is not public API, so there is no need to add another function and we can just change function's arguments.
1 parent a38ab47 commit 36925d9

File tree

6 files changed

+29
-30
lines changed

6 files changed

+29
-30
lines changed

av.c

+6-6
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ Perl_av_extend(pTHX_ AV *av, I32 key)
7676
if (mg) {
7777
SV *arg1 = sv_newmortal();
7878
sv_setiv(arg1, (IV)(key + 1));
79-
Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, "EXTEND", G_DISCARD, 1,
79+
Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(EXTEND), G_DISCARD, 1,
8080
arg1);
8181
return;
8282
}
@@ -561,7 +561,7 @@ Perl_av_push(pTHX_ AV *av, SV *val)
561561
Perl_croak_no_modify();
562562

563563
if ((mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied))) {
564-
Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, "PUSH", G_DISCARD, 1,
564+
Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(PUSH), G_DISCARD, 1,
565565
val);
566566
return;
567567
}
@@ -593,7 +593,7 @@ Perl_av_pop(pTHX_ AV *av)
593593
if (SvREADONLY(av))
594594
Perl_croak_no_modify();
595595
if ((mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied))) {
596-
retval = Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, "POP", 0, 0);
596+
retval = Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(POP), 0, 0);
597597
if (retval)
598598
retval = newSVsv(retval);
599599
return retval;
@@ -655,7 +655,7 @@ Perl_av_unshift(pTHX_ AV *av, I32 num)
655655
Perl_croak_no_modify();
656656

657657
if ((mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied))) {
658-
Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, "UNSHIFT",
658+
Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(UNSHIFT),
659659
G_DISCARD | G_UNDEF_FILL, num);
660660
return;
661661
}
@@ -719,7 +719,7 @@ Perl_av_shift(pTHX_ AV *av)
719719
if (SvREADONLY(av))
720720
Perl_croak_no_modify();
721721
if ((mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied))) {
722-
retval = Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, "SHIFT", 0, 0);
722+
retval = Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(SHIFT), 0, 0);
723723
if (retval)
724724
retval = newSVsv(retval);
725725
return retval;
@@ -792,7 +792,7 @@ Perl_av_fill(pTHX_ AV *av, I32 fill)
792792
if ((mg = SvTIED_mg((const SV *)av, PERL_MAGIC_tied))) {
793793
SV *arg1 = sv_newmortal();
794794
sv_setiv(arg1, (IV)(fill + 1));
795-
Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, "STORESIZE", G_DISCARD,
795+
Perl_magic_methcall(aTHX_ MUTABLE_SV(av), mg, SV_CONST(STORESIZE), G_DISCARD,
796796
1, arg1);
797797
return;
798798
}

embed.fnc

+3-3
Original file line numberDiff line numberDiff line change
@@ -819,7 +819,7 @@ p |int |magic_set_all_env|NN SV* sv|NN MAGIC* mg
819819
p |U32 |magic_sizepack |NN SV* sv|NN MAGIC* mg
820820
p |int |magic_wipepack |NN SV* sv|NN MAGIC* mg
821821
pod |SV* |magic_methcall |NN SV *sv|NN const MAGIC *mg \
822-
|NN const char *meth|U32 flags \
822+
|NN SV *meth|U32 flags \
823823
|U32 argc|...
824824
Ap |void |markstack_grow
825825
#if defined(USE_LOCALE_COLLATE)
@@ -1788,9 +1788,9 @@ sM |void |clear_placeholders |NN HV *hv|U32 items
17881788

17891789
#if defined(PERL_IN_MG_C)
17901790
s |void |save_magic |I32 mgs_ix|NN SV *sv
1791-
-s |int |magic_methpack |NN SV *sv|NN const MAGIC *mg|NN const char *meth
1791+
-s |int |magic_methpack |NN SV *sv|NN const MAGIC *mg|NN SV *meth
17921792
s |SV* |magic_methcall1|NN SV *sv|NN const MAGIC *mg \
1793-
|NN const char *meth|U32 flags \
1793+
|NN SV *meth|U32 flags \
17941794
|int n|NULLOK SV *val
17951795
s |void |restore_magic |NULLOK const void *p
17961796
s |void |unwind_handler_stack|NULLOK const void *p

mg.c

+14-15
Original file line numberDiff line numberDiff line change
@@ -1704,7 +1704,7 @@ Returns the SV (if any) returned by the method, or NULL on failure.
17041704
*/
17051705

17061706
SV*
1707-
Perl_magic_methcall(pTHX_ SV *sv, const MAGIC *mg, const char *meth, U32 flags,
1707+
Perl_magic_methcall(pTHX_ SV *sv, const MAGIC *mg, SV *meth, U32 flags,
17081708
U32 argc, ...)
17091709
{
17101710
dVAR;
@@ -1745,10 +1745,10 @@ Perl_magic_methcall(pTHX_ SV *sv, const MAGIC *mg, const char *meth, U32 flags,
17451745
}
17461746
PUTBACK;
17471747
if (flags & G_DISCARD) {
1748-
call_method(meth, G_SCALAR|G_DISCARD|G_METHOD_NAMED);
1748+
call_sv(meth, G_SCALAR|G_DISCARD|G_METHOD_NAMED);
17491749
}
17501750
else {
1751-
if (call_method(meth, G_SCALAR|G_METHOD_NAMED))
1751+
if (call_sv(meth, G_SCALAR|G_METHOD_NAMED))
17521752
ret = *PL_stack_sp--;
17531753
}
17541754
POPSTACK;
@@ -1758,11 +1758,10 @@ Perl_magic_methcall(pTHX_ SV *sv, const MAGIC *mg, const char *meth, U32 flags,
17581758
return ret;
17591759
}
17601760

1761-
17621761
/* wrapper for magic_methcall that creates the first arg */
17631762

17641763
STATIC SV*
1765-
S_magic_methcall1(pTHX_ SV *sv, const MAGIC *mg, const char *meth, U32 flags,
1764+
S_magic_methcall1(pTHX_ SV *sv, const MAGIC *mg, SV *meth, U32 flags,
17661765
int n, SV *val)
17671766
{
17681767
dVAR;
@@ -1788,7 +1787,7 @@ S_magic_methcall1(pTHX_ SV *sv, const MAGIC *mg, const char *meth, U32 flags,
17881787
}
17891788

17901789
STATIC int
1791-
S_magic_methpack(pTHX_ SV *sv, const MAGIC *mg, const char *meth)
1790+
S_magic_methpack(pTHX_ SV *sv, const MAGIC *mg, SV *meth)
17921791
{
17931792
dVAR;
17941793
SV* ret;
@@ -1808,7 +1807,7 @@ Perl_magic_getpack(pTHX_ SV *sv, MAGIC *mg)
18081807

18091808
if (mg->mg_type == PERL_MAGIC_tiedelem)
18101809
mg->mg_flags |= MGf_GSKIP;
1811-
magic_methpack(sv,mg,"FETCH");
1810+
magic_methpack(sv,mg,SV_CONST(FETCH));
18121811
return 0;
18131812
}
18141813

@@ -1840,7 +1839,7 @@ Perl_magic_setpack(pTHX_ SV *sv, MAGIC *mg)
18401839
else
18411840
val = sv;
18421841

1843-
magic_methcall1(sv, mg, "STORE", G_DISCARD, 2, val);
1842+
magic_methcall1(sv, mg, SV_CONST(STORE), G_DISCARD, 2, val);
18441843
return 0;
18451844
}
18461845

@@ -1850,7 +1849,7 @@ Perl_magic_clearpack(pTHX_ SV *sv, MAGIC *mg)
18501849
PERL_ARGS_ASSERT_MAGIC_CLEARPACK;
18511850

18521851
if (mg->mg_type == PERL_MAGIC_tiedscalar) return 0;
1853-
return magic_methpack(sv,mg,"DELETE");
1852+
return magic_methpack(sv,mg,SV_CONST(DELETE));
18541853
}
18551854

18561855

@@ -1863,7 +1862,7 @@ Perl_magic_sizepack(pTHX_ SV *sv, MAGIC *mg)
18631862

18641863
PERL_ARGS_ASSERT_MAGIC_SIZEPACK;
18651864

1866-
retsv = magic_methcall1(sv, mg, "FETCHSIZE", 0, 1, NULL);
1865+
retsv = magic_methcall1(sv, mg, SV_CONST(FETCHSIZE), 0, 1, NULL);
18671866
if (retsv) {
18681867
retval = SvIV(retsv)-1;
18691868
if (retval < -1)
@@ -1879,7 +1878,7 @@ Perl_magic_wipepack(pTHX_ SV *sv, MAGIC *mg)
18791878

18801879
PERL_ARGS_ASSERT_MAGIC_WIPEPACK;
18811880

1882-
Perl_magic_methcall(aTHX_ sv, mg, "CLEAR", G_DISCARD, 0);
1881+
Perl_magic_methcall(aTHX_ sv, mg, SV_CONST(CLEAR), G_DISCARD, 0);
18831882
return 0;
18841883
}
18851884

@@ -1891,8 +1890,8 @@ Perl_magic_nextpack(pTHX_ SV *sv, MAGIC *mg, SV *key)
18911890

18921891
PERL_ARGS_ASSERT_MAGIC_NEXTPACK;
18931892

1894-
ret = SvOK(key) ? Perl_magic_methcall(aTHX_ sv, mg, "NEXTKEY", 0, 1, key)
1895-
: Perl_magic_methcall(aTHX_ sv, mg, "FIRSTKEY", 0, 0);
1893+
ret = SvOK(key) ? Perl_magic_methcall(aTHX_ sv, mg, SV_CONST(NEXTKEY), 0, 1, key)
1894+
: Perl_magic_methcall(aTHX_ sv, mg, SV_CONST(FIRSTKEY), 0, 0);
18961895
if (ret)
18971896
sv_setsv(key,ret);
18981897
return 0;
@@ -1903,7 +1902,7 @@ Perl_magic_existspack(pTHX_ SV *sv, const MAGIC *mg)
19031902
{
19041903
PERL_ARGS_ASSERT_MAGIC_EXISTSPACK;
19051904

1906-
return magic_methpack(sv,mg,"EXISTS");
1905+
return magic_methpack(sv,mg,SV_CONST(EXISTS));
19071906
}
19081907

19091908
SV *
@@ -1929,7 +1928,7 @@ Perl_magic_scalarpack(pTHX_ HV *hv, MAGIC *mg)
19291928
}
19301929

19311930
/* there is a SCALAR method that we can call */
1932-
retval = Perl_magic_methcall(aTHX_ MUTABLE_SV(hv), mg, "SCALAR", 0, 0);
1931+
retval = Perl_magic_methcall(aTHX_ MUTABLE_SV(hv), mg, SV_CONST(SCALAR), 0, 0);
19331932
if (!retval)
19341933
retval = &PL_sv_undef;
19351934
return retval;

pp.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -5153,7 +5153,7 @@ PP(pp_unshift)
51535153
PUSHMARK(MARK);
51545154
PUTBACK;
51555155
ENTER_with_name("call_UNSHIFT");
5156-
call_method("UNSHIFT",G_SCALAR|G_DISCARD|G_METHOD_NAMED);
5156+
call_sv(SV_CONST(UNSHIFT),G_SCALAR|G_DISCARD|G_METHOD_NAMED);
51575157
LEAVE_with_name("call_UNSHIFT");
51585158
SPAGAIN;
51595159
}
@@ -5711,7 +5711,7 @@ PP(pp_split)
57115711
else {
57125712
PUTBACK;
57135713
ENTER_with_name("call_PUSH");
5714-
call_method("PUSH",G_SCALAR|G_DISCARD|G_METHOD_NAMED);
5714+
call_sv(SV_CONST(PUSH),G_SCALAR|G_DISCARD|G_METHOD_NAMED);
57155715
LEAVE_with_name("call_PUSH");
57165716
SPAGAIN;
57175717
if (gimme == G_ARRAY) {

proto.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -2280,7 +2280,7 @@ PERL_CALLCONV int Perl_magic_killbackrefs(pTHX_ SV *sv, MAGIC *mg)
22802280
#define PERL_ARGS_ASSERT_MAGIC_KILLBACKREFS \
22812281
assert(sv); assert(mg)
22822282

2283-
PERL_CALLCONV SV* Perl_magic_methcall(pTHX_ SV *sv, const MAGIC *mg, const char *meth, U32 flags, U32 argc, ...)
2283+
PERL_CALLCONV SV* Perl_magic_methcall(pTHX_ SV *sv, const MAGIC *mg, SV *meth, U32 flags, U32 argc, ...)
22842284
__attribute__nonnull__(pTHX_1)
22852285
__attribute__nonnull__(pTHX_2)
22862286
__attribute__nonnull__(pTHX_3);
@@ -5771,14 +5771,14 @@ STATIC char* S_stdize_locale(pTHX_ char* locs)
57715771
# endif
57725772
#endif
57735773
#if defined(PERL_IN_MG_C)
5774-
STATIC SV* S_magic_methcall1(pTHX_ SV *sv, const MAGIC *mg, const char *meth, U32 flags, int n, SV *val)
5774+
STATIC SV* S_magic_methcall1(pTHX_ SV *sv, const MAGIC *mg, SV *meth, U32 flags, int n, SV *val)
57755775
__attribute__nonnull__(pTHX_1)
57765776
__attribute__nonnull__(pTHX_2)
57775777
__attribute__nonnull__(pTHX_3);
57785778
#define PERL_ARGS_ASSERT_MAGIC_METHCALL1 \
57795779
assert(sv); assert(mg); assert(meth)
57805780

5781-
STATIC int S_magic_methpack(pTHX_ SV *sv, const MAGIC *mg, const char *meth)
5781+
STATIC int S_magic_methpack(pTHX_ SV *sv, const MAGIC *mg, SV *meth)
57825782
__attribute__nonnull__(pTHX_1)
57835783
__attribute__nonnull__(pTHX_2)
57845784
__attribute__nonnull__(pTHX_3);

util.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -1340,7 +1340,7 @@ Perl_write_to_stderr(pTHX_ SV* msv)
13401340
if (PL_stderrgv && SvREFCNT(PL_stderrgv)
13411341
&& (io = GvIO(PL_stderrgv))
13421342
&& (mg = SvTIED_mg((const SV *)io, PERL_MAGIC_tiedscalar)))
1343-
Perl_magic_methcall(aTHX_ MUTABLE_SV(io), mg, "PRINT",
1343+
Perl_magic_methcall(aTHX_ MUTABLE_SV(io), mg, SV_CONST(PRINT),
13441344
G_SCALAR | G_DISCARD | G_WRITING_TO_STDERR, 1, msv);
13451345
else {
13461346
#ifdef USE_SFIO

0 commit comments

Comments
 (0)