… | |
… | |
1982 | slf_restore.op_ppaddr = pp_restore; |
1982 | slf_restore.op_ppaddr = pp_restore; |
1983 | slf_restore.op_first = PL_op; |
1983 | slf_restore.op_first = PL_op; |
1984 | |
1984 | |
1985 | slf_ax = ax - 1; /* undo the ax++ inside dAXMARK */ |
1985 | slf_ax = ax - 1; /* undo the ax++ inside dAXMARK */ |
1986 | |
1986 | |
|
|
1987 | if (PL_op->op_flags & OPf_STACKED) |
|
|
1988 | { |
1987 | if (items > slf_arga) |
1989 | if (items > slf_arga) |
1988 | { |
1990 | { |
1989 | slf_arga = items; |
1991 | slf_arga = items; |
1990 | free (slf_argv); |
1992 | free (slf_argv); |
1991 | slf_argv = malloc (slf_arga * sizeof (SV *)); |
1993 | slf_argv = malloc (slf_arga * sizeof (SV *)); |
1992 | } |
1994 | } |
1993 | |
1995 | |
1994 | slf_argc = items; |
1996 | slf_argc = items; |
1995 | |
1997 | |
1996 | for (i = 0; i < items; ++i) |
1998 | for (i = 0; i < items; ++i) |
1997 | slf_argv [i] = SvREFCNT_inc (arg [i]); |
1999 | slf_argv [i] = SvREFCNT_inc (arg [i]); |
|
|
2000 | } |
|
|
2001 | else |
|
|
2002 | slf_argc = 0; |
1998 | |
2003 | |
1999 | PL_op->op_ppaddr = pp_slf; |
2004 | PL_op->op_ppaddr = pp_slf; |
2000 | PL_op->op_type = OP_CUSTOM; /* maybe we should leave it at entersub? */ |
2005 | PL_op->op_type = OP_CUSTOM; /* maybe we should leave it at entersub? */ |
2001 | |
2006 | |
2002 | PL_op = (OP *)&slf_restore; |
2007 | PL_op = (OP *)&slf_restore; |