diff options
author | Sergey Skvortsov <unknown> | 2005-01-17 09:02:33 +0000 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2005-05-03 07:36:17 +0000 |
commit | 557b887a4219c4f375c8d0bd3219fb4da7bbc7ff (patch) | |
tree | 75c13d81d3d4b0d11ba054c3963cc5e4bad4f930 /XSUB.h | |
parent | 0630166f39b2fc31415e8078cd74fafef99606af (diff) | |
download | perl-557b887a4219c4f375c8d0bd3219fb4da7bbc7ff.tar.gz |
[perl #33809] optimize macro dXSARGS
From: Sergey Skvortsov (via RT) <perlbug-followup@perl.org>
Message-ID: <rt-3.0.11-33809-105714.16.4209917806492@perl.org>
p4raw-id: //depot/perl@24372
Diffstat (limited to 'XSUB.h')
-rw-r--r-- | XSUB.h | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -54,6 +54,10 @@ C<xsubpp>. Sets up the C<ax> variable. This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>. +=for apidoc Ams||dAXMARK +Sets up the C<ax> variable and stack marker variable C<mark>. +This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>. + =for apidoc Ams||dITEMS Sets up the C<items> variable. This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>. @@ -97,11 +101,14 @@ is a lexical $_ in scope. #define dAX I32 ax = MARK - PL_stack_base + 1 +#define dAXMARK \ + I32 ax = POPMARK; \ + register SV **mark = PL_stack_base + ax++ + #define dITEMS I32 items = SP - MARK #define dXSARGS \ - dSP; dMARK; \ - dAX; dITEMS + dSP; dAXMARK; dITEMS #define dXSTARG SV * targ = ((PL_op->op_private & OPpENTERSUB_HASTARG) \ ? PAD_SV(PL_op->op_targ) : sv_newmortal()) |