The attached patch replaces some code with the equivalent macro.
--
Rick Delaney
[EMAIL PROTECTED]
diff -rpuN perl-current/doio.c perl-current-dev/doio.c
--- perl-current/doio.c 2005-08-10 05:41:12.0 -0400
+++ perl-current-dev/doio.c 2005-08-22 12:03:52.703777956 -0400
@@ -1308,8 +1308,7 @@ Perl_do_print(pTHX_ register SV *sv, Per
return TRUE;
case SVt_IV:
if (SvIOK(sv)) {
- if (SvGMAGICAL(sv))
- mg_get(sv);
+ SvGETMAGIC(sv);
if (SvIsUV(sv))
PerlIO_printf(fp, %UVuf, (UV)SvUVX(sv));
else
diff -rpuN perl-current/pp.c perl-current-dev/pp.c
--- perl-current/pp.c 2005-08-06 12:23:11.0 -0400
+++ perl-current-dev/pp.c 2005-08-22 12:29:32.020914765 -0400
@@ -505,8 +505,8 @@ PP(pp_ref)
const char *pv;
SV * const sv = POPs;
-if (sv SvGMAGICAL(sv))
- mg_get(sv);
+if (sv)
+ SvGETMAGIC(sv);
if (!sv || !SvROK(sv))
RETPUSHNO;
@@ -755,8 +755,7 @@ PP(pp_defined)
RETPUSHYES;
break;
default:
- if (SvGMAGICAL(sv))
- mg_get(sv);
+ SvGETMAGIC(sv);
if (SvOK(sv))
RETPUSHYES;
}
@@ -1384,8 +1383,7 @@ PP(pp_repeat)
{
register IV count;
dPOPss;
-if (SvGMAGICAL(sv))
-mg_get(sv);
+SvGETMAGIC(sv);
if (SvIOKp(sv)) {
if (SvUOK(sv)) {
const UV uv = SvUV(sv);
@@ -2223,8 +2221,8 @@ PP(pp_bit_and)
dSP; dATARGET; tryAMAGICbin(band,opASSIGN);
{
dPOPTOPssrl;
- if (SvGMAGICAL(left)) mg_get(left);
- if (SvGMAGICAL(right)) mg_get(right);
+ SvGETMAGIC(left);
+ SvGETMAGIC(right);
if (SvNIOKp(left) || SvNIOKp(right)) {
if (PL_op-op_private HINT_INTEGER) {
const IV i = SvIV_nomg(left) SvIV_nomg(right);
@@ -2248,8 +2246,8 @@ PP(pp_bit_xor)
dSP; dATARGET; tryAMAGICbin(bxor,opASSIGN);
{
dPOPTOPssrl;
- if (SvGMAGICAL(left)) mg_get(left);
- if (SvGMAGICAL(right)) mg_get(right);
+ SvGETMAGIC(left);
+ SvGETMAGIC(right);
if (SvNIOKp(left) || SvNIOKp(right)) {
if (PL_op-op_private HINT_INTEGER) {
const IV i = (USE_LEFT(left) ? SvIV_nomg(left) : 0) ^
SvIV_nomg(right);
@@ -2273,8 +2271,8 @@ PP(pp_bit_or)
dSP; dATARGET; tryAMAGICbin(bor,opASSIGN);
{
dPOPTOPssrl;
- if (SvGMAGICAL(left)) mg_get(left);
- if (SvGMAGICAL(right)) mg_get(right);
+ SvGETMAGIC(left);
+ SvGETMAGIC(right);
if (SvNIOKp(left) || SvNIOKp(right)) {
if (PL_op-op_private HINT_INTEGER) {
const IV i = (USE_LEFT(left) ? SvIV_nomg(left) : 0) |
SvIV_nomg(right);
@@ -2299,8 +2297,7 @@ PP(pp_negate)
{
dTOPss;
const int flags = SvFLAGS(sv);
- if (SvGMAGICAL(sv))
- mg_get(sv);
+ SvGETMAGIC(sv);
if ((flags SVf_IOK) || ((flags (SVp_IOK | SVp_NOK)) == SVp_IOK)) {
/* It's publicly an integer, or privately an integer-not-float */
oops_its_an_int:
@@ -2376,8 +2373,7 @@ PP(pp_complement)
dSP; dTARGET; tryAMAGICun(compl);
{
dTOPss;
- if (SvGMAGICAL(sv))
- mg_get(sv);
+ SvGETMAGIC(sv);
if (SvNIOKp(sv)) {
if (PL_op-op_private HINT_INTEGER) {
const IV i = ~SvIV_nomg(sv);
diff -rpuN perl-current/pp_ctl.c perl-current-dev/pp_ctl.c
--- perl-current/pp_ctl.c 2005-08-22 11:16:26.0 -0400
+++ perl-current-dev/pp_ctl.c 2005-08-22 12:33:56.412387458 -0400
@@ -1126,10 +1126,8 @@ PP(pp_flop)
if (GIMME == G_ARRAY) {
dPOPPOPssrl;
- if (SvGMAGICAL(left))
- mg_get(left);
- if (SvGMAGICAL(right))
- mg_get(right);
+ SvGETMAGIC(left);
+ SvGETMAGIC(right);
if (RANGE_IS_NUMERIC(left,right)) {
register IV i, j;
@@ -1543,8 +1541,7 @@ PP(pp_dorassign)
RETURN;
break;
default:
- if (SvGMAGICAL(sv))
- mg_get(sv);
+ SvGETMAGIC(sv);
if (SvOK(sv))
RETURN;
}
diff -rpuN perl-current/pp_hot.c perl-current-dev/pp_hot.c
--- perl-current/pp_hot.c 2005-07-20 05:37:43.0 -0400
+++ perl-current-dev/pp_hot.c 2005-08-22 12:38:52.632212515 -0400
@@ -169,8 +169,7 @@ PP(pp_concat)
}
else { /* TARG == left */
STRLEN llen;
- if (SvGMAGICAL(left))
- mg_get(left); /* or mg_get(left) may happen here */
+ SvGETMAGIC(left); /* or mg_get(left) may happen here */
if (!SvOK(TARG))
sv_setpvn(left, , 0);
(void)SvPV_nomg_const(left, llen);/* Needed to set UTF8 flag */
@@ -350,8 +349,7 @@ PP(pp_dor)
RETURN;
break;
default:
- if (SvGMAGICAL(sv))
- mg_get(sv);
+ SvGETMAGIC(sv);
if (SvOK(sv))
RETURN;
}
@@ -2914,8 +2912,7 @@ PP(pp_aelem)
void
Perl_vivify_ref(pTHX_ SV *sv, U32 to_what)
{
-if