"Fossies" - the Fresh Open Source Software Archive

Member "install-tl-20200916/tlpkg/tlperl/lib/B/Op_private.pm" (7 Mar 2020, 38553 Bytes) of package /windows/misc/install-tl.zip:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Perl source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 # -*- buffer-read-only: t -*-
    2 #
    3 #    lib/B/Op_private.pm
    4 #
    5 #    Copyright (C) 2014 by Larry Wall and others
    6 #
    7 #    You may distribute under the terms of either the GNU General Public
    8 #    License or the Artistic License, as specified in the README file.
    9 #
   10 # !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
   11 # This file is built by regen/opcode.pl from data in
   12 # regen/op_private and pod embedded in regen/opcode.pl.
   13 # Any changes made here will be lost!
   14 
   15 =head1 NAME
   16 
   17 B::Op_private - OP op_private flag definitions
   18 
   19 =head1 SYNOPSIS
   20 
   21     use B::Op_private;
   22 
   23     # flag details for bit 7 of OP_AELEM's op_private:
   24     my $name  = $B::Op_private::bits{aelem}{7}; # OPpLVAL_INTRO
   25     my $value = $B::Op_private::defines{$name}; # 128
   26     my $label = $B::Op_private::labels{$name};  # LVINTRO
   27 
   28     # the bit field at bits 5..6 of OP_AELEM's op_private:
   29     my $bf  = $B::Op_private::bits{aelem}{6};
   30     my $mask = $bf->{bitmask}; # etc
   31 
   32 =head1 DESCRIPTION
   33 
   34 This module provides four global hashes:
   35 
   36     %B::Op_private::bits
   37     %B::Op_private::defines
   38     %B::Op_private::labels
   39     %B::Op_private::ops_using
   40 
   41 which contain information about the per-op meanings of the bits in the
   42 op_private field.
   43 
   44 =head2 C<%bits>
   45 
   46 This is indexed by op name and then bit number (0..7). For single bit flags,
   47 it returns the name of the define (if any) for that bit:
   48 
   49    $B::Op_private::bits{aelem}{7} eq 'OPpLVAL_INTRO';
   50 
   51 For bit fields, it returns a hash ref containing details about the field.
   52 The same reference will be returned for all bit positions that make
   53 up the bit field; so for example these both return the same hash ref:
   54 
   55     $bitfield = $B::Op_private::bits{aelem}{5};
   56     $bitfield = $B::Op_private::bits{aelem}{6};
   57 
   58 The general format of this hash ref is
   59 
   60     {
   61         # The bit range and mask; these are always present.
   62         bitmin        => 5,
   63         bitmax        => 6,
   64         bitmask       => 0x60,
   65 
   66         # (The remaining keys are optional)
   67 
   68         # The names of any defines that were requested:
   69         mask_def      => 'OPpFOO_MASK',
   70         baseshift_def => 'OPpFOO_SHIFT',
   71         bitcount_def  => 'OPpFOO_BITS',
   72 
   73         # If present, Concise etc will display the value with a 'FOO='
   74         # prefix. If it equals '-', then Concise will treat the bit
   75         # field as raw bits and not try to interpret it.
   76         label         => 'FOO',
   77 
   78         # If present, specifies the names of some defines and the
   79         # display labels that are used to assign meaning to particu-
   80         # lar integer values within the bit field; e.g. 3 is dis-
   81         # played as 'C'.
   82         enum          => [ qw(
   83                              1   OPpFOO_A  A
   84                              2   OPpFOO_B  B
   85                              3   OPpFOO_C  C
   86                          )],
   87 
   88     };
   89 
   90 
   91 =head2 C<%defines>
   92 
   93 This gives the value of every C<OPp> define, e.g.
   94 
   95     $B::Op_private::defines{OPpLVAL_INTRO} == 128;
   96 
   97 =head2 C<%labels>
   98 
   99 This gives the short display label for each define, as used by C<B::Concise>
  100 and C<perl -Dx>, e.g.
  101 
  102     $B::Op_private::labels{OPpLVAL_INTRO} eq 'LVINTRO';
  103 
  104 If the label equals '-', then Concise will treat the bit as a raw bit and
  105 not try to display it symbolically.
  106 
  107 =head2 C<%ops_using>
  108 
  109 For each define, this gives a reference to an array of op names that use
  110 the flag.
  111 
  112     @ops_using_lvintro = @{ $B::Op_private::ops_using{OPp_LVAL_INTRO} };
  113 
  114 =cut
  115 
  116 package B::Op_private;
  117 
  118 our %bits;
  119 
  120 
  121 our $VERSION = "5.030001";
  122 
  123 $bits{$_}{3} = 'OPpENTERSUB_AMPER' for qw(entersub rv2cv);
  124 $bits{$_}{6} = 'OPpENTERSUB_DB' for qw(entersub rv2cv);
  125 $bits{$_}{2} = 'OPpENTERSUB_HASTARG' for qw(entersub rv2cv);
  126 $bits{$_}{6} = 'OPpFLIP_LINENUM' for qw(flip flop);
  127 $bits{$_}{1} = 'OPpFT_ACCESS' for qw(fteexec fteread ftewrite ftrexec ftrread ftrwrite);
  128 $bits{$_}{4} = 'OPpFT_AFTER_t' for qw(ftatime ftbinary ftblk ftchr ftctime ftdir fteexec fteowned fteread ftewrite ftfile ftis ftlink ftmtime ftpipe ftrexec ftrowned ftrread ftrwrite ftsgid ftsize ftsock ftsuid ftsvtx fttext fttty ftzero);
  129 $bits{$_}{2} = 'OPpFT_STACKED' for qw(ftatime ftbinary ftblk ftchr ftctime ftdir fteexec fteowned fteread ftewrite ftfile ftis ftlink ftmtime ftpipe ftrexec ftrowned ftrread ftrwrite ftsgid ftsize ftsock ftsuid ftsvtx fttext fttty ftzero);
  130 $bits{$_}{3} = 'OPpFT_STACKING' for qw(ftatime ftbinary ftblk ftchr ftctime ftdir fteexec fteowned fteread ftewrite ftfile ftis ftlink ftmtime ftpipe ftrexec ftrowned ftrread ftrwrite ftsgid ftsize ftsock ftsuid ftsvtx fttext fttty ftzero);
  131 $bits{$_}{1} = 'OPpHINT_STRICT_REFS' for qw(entersub multideref rv2av rv2cv rv2gv rv2hv rv2sv);
  132 $bits{$_}{5} = 'OPpHUSH_VMSISH' for qw(dbstate nextstate);
  133 $bits{$_}{6} = 'OPpINDEX_BOOLNEG' for qw(index rindex);
  134 $bits{$_}{1} = 'OPpITER_REVERSED' for qw(enteriter iter);
  135 $bits{$_}{7} = 'OPpLVALUE' for qw(leave leaveloop);
  136 $bits{$_}{6} = 'OPpLVAL_DEFER' for qw(aelem helem multideref);
  137 $bits{$_}{7} = 'OPpLVAL_INTRO' for qw(aelem aslice cond_expr delete enteriter entersub gvsv helem hslice list lvavref lvref lvrefslice multiconcat multideref padav padhv padrange padsv pushmark refassign rv2av rv2gv rv2hv rv2sv split);
  138 $bits{$_}{2} = 'OPpLVREF_ELEM' for qw(lvref refassign);
  139 $bits{$_}{3} = 'OPpLVREF_ITER' for qw(lvref refassign);
  140 $bits{$_}{3} = 'OPpMAYBE_LVSUB' for qw(aassign aelem akeys aslice av2arylen avhvswitch helem hslice keys kvaslice kvhslice multideref padav padhv pos rv2av rv2gv rv2hv substr values vec);
  141 $bits{$_}{4} = 'OPpMAYBE_TRUEBOOL' for qw(padhv ref rv2hv);
  142 $bits{$_}{7} = 'OPpOFFBYONE' for qw(caller runcv wantarray);
  143 $bits{$_}{5} = 'OPpOPEN_IN_CRLF' for qw(backtick open);
  144 $bits{$_}{4} = 'OPpOPEN_IN_RAW' for qw(backtick open);
  145 $bits{$_}{7} = 'OPpOPEN_OUT_CRLF' for qw(backtick open);
  146 $bits{$_}{6} = 'OPpOPEN_OUT_RAW' for qw(backtick open);
  147 $bits{$_}{6} = 'OPpOUR_INTRO' for qw(enteriter gvsv rv2av rv2hv rv2sv split);
  148 $bits{$_}{6} = 'OPpPAD_STATE' for qw(lvavref lvref padav padhv padsv pushmark refassign);
  149 $bits{$_}{7} = 'OPpPV_IS_UTF8' for qw(dump goto last next redo);
  150 $bits{$_}{6} = 'OPpREFCOUNTED' for qw(leave leaveeval leavesub leavesublv leavewrite);
  151 $bits{$_}{2} = 'OPpSLICEWARNING' for qw(aslice hslice padav padhv rv2av rv2hv);
  152 $bits{$_}{4} = 'OPpTARGET_MY' for qw(abs add atan2 chdir chmod chomp chown chr chroot concat cos crypt divide exec exp flock getpgrp getppid getpriority hex i_add i_divide i_modulo i_multiply i_subtract index int kill left_shift length link log mkdir modulo multiconcat multiply nbit_and nbit_or nbit_xor ncomplement oct ord pow push rand rename right_shift rindex rmdir schomp scomplement setpgrp setpriority sin sleep sqrt srand stringify subtract symlink system time unlink unshift utime wait waitpid);
  153 $bits{$_}{5} = 'OPpTRANS_COMPLEMENT' for qw(trans transr);
  154 $bits{$_}{7} = 'OPpTRANS_DELETE' for qw(trans transr);
  155 $bits{$_}{0} = 'OPpTRANS_FROM_UTF' for qw(trans transr);
  156 $bits{$_}{6} = 'OPpTRANS_GROWS' for qw(trans transr);
  157 $bits{$_}{2} = 'OPpTRANS_IDENTICAL' for qw(trans transr);
  158 $bits{$_}{3} = 'OPpTRANS_SQUASH' for qw(trans transr);
  159 $bits{$_}{1} = 'OPpTRANS_TO_UTF' for qw(trans transr);
  160 $bits{$_}{5} = 'OPpTRUEBOOL' for qw(grepwhile index length padav padhv pos ref rindex rv2av rv2hv subst);
  161 
  162 my @bf = (
  163     {
  164         label     => '-',
  165         mask_def  => 'OPpARG1_MASK',
  166         bitmin    => 0,
  167         bitmax    => 0,
  168         bitmask   => 1,
  169     },
  170     {
  171         label     => '-',
  172         mask_def  => 'OPpARG2_MASK',
  173         bitmin    => 0,
  174         bitmax    => 1,
  175         bitmask   => 3,
  176     },
  177     {
  178         label     => 'offset',
  179         mask_def  => 'OPpAVHVSWITCH_MASK',
  180         bitmin    => 0,
  181         bitmax    => 1,
  182         bitmask   => 3,
  183     },
  184     {
  185         label     => '-',
  186         mask_def  => 'OPpARG3_MASK',
  187         bitmin    => 0,
  188         bitmax    => 2,
  189         bitmask   => 7,
  190     },
  191     {
  192         label     => '-',
  193         mask_def  => 'OPpARG4_MASK',
  194         bitmin    => 0,
  195         bitmax    => 3,
  196         bitmask   => 15,
  197     },
  198     {
  199         label     => 'range',
  200         mask_def  => 'OPpPADRANGE_COUNTMASK',
  201         bitcount_def => 'OPpPADRANGE_COUNTSHIFT',
  202         bitmin    => 0,
  203         bitmax    => 6,
  204         bitmask   => 127,
  205     },
  206     {
  207         label     => 'key',
  208         bitmin    => 0,
  209         bitmax    => 7,
  210         bitmask   => 255,
  211     },
  212     {
  213         mask_def  => 'OPpARGELEM_MASK',
  214         bitmin    => 1,
  215         bitmax    => 2,
  216         bitmask   => 6,
  217         enum      => [
  218             0, 'OPpARGELEM_SV', 'SV',
  219             1, 'OPpARGELEM_AV', 'AV',
  220             2, 'OPpARGELEM_HV', 'HV',
  221         ],
  222     },
  223     {
  224         mask_def  => 'OPpDEREF',
  225         bitmin    => 4,
  226         bitmax    => 5,
  227         bitmask   => 48,
  228         enum      => [
  229             1, 'OPpDEREF_AV', 'DREFAV',
  230             2, 'OPpDEREF_HV', 'DREFHV',
  231             3, 'OPpDEREF_SV', 'DREFSV',
  232         ],
  233     },
  234     {
  235         mask_def  => 'OPpLVREF_TYPE',
  236         bitmin    => 4,
  237         bitmax    => 5,
  238         bitmask   => 48,
  239         enum      => [
  240             0, 'OPpLVREF_SV', 'SV',
  241             1, 'OPpLVREF_AV', 'AV',
  242             2, 'OPpLVREF_HV', 'HV',
  243             3, 'OPpLVREF_CV', 'CV',
  244         ],
  245     },
  246 );
  247 
  248 @{$bits{aassign}}{6,5,4,2,1,0} = ('OPpASSIGN_COMMON_SCALAR', 'OPpASSIGN_COMMON_RC1', 'OPpASSIGN_COMMON_AGG', 'OPpASSIGN_TRUEBOOL', $bf[1], $bf[1]);
  249 $bits{abs}{0} = $bf[0];
  250 @{$bits{accept}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  251 @{$bits{add}}{1,0} = ($bf[1], $bf[1]);
  252 $bits{aeach}{0} = $bf[0];
  253 @{$bits{aelem}}{5,4,1,0} = ($bf[8], $bf[8], $bf[1], $bf[1]);
  254 @{$bits{aelemfast}}{7,6,5,4,3,2,1,0} = ($bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6]);
  255 @{$bits{aelemfast_lex}}{7,6,5,4,3,2,1,0} = ($bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6]);
  256 $bits{akeys}{0} = $bf[0];
  257 $bits{alarm}{0} = $bf[0];
  258 $bits{and}{0} = $bf[0];
  259 $bits{andassign}{0} = $bf[0];
  260 $bits{anonconst}{0} = $bf[0];
  261 @{$bits{anonhash}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  262 @{$bits{anonlist}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  263 $bits{argcheck}{0} = $bf[0];
  264 $bits{argdefelem}{0} = $bf[0];
  265 @{$bits{argelem}}{2,1,0} = ($bf[7], $bf[7], $bf[0]);
  266 @{$bits{atan2}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  267 $bits{av2arylen}{0} = $bf[0];
  268 $bits{avalues}{0} = $bf[0];
  269 @{$bits{avhvswitch}}{1,0} = ($bf[2], $bf[2]);
  270 $bits{backtick}{0} = $bf[0];
  271 @{$bits{bind}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  272 @{$bits{binmode}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  273 @{$bits{bit_and}}{1,0} = ($bf[1], $bf[1]);
  274 @{$bits{bit_or}}{1,0} = ($bf[1], $bf[1]);
  275 @{$bits{bit_xor}}{1,0} = ($bf[1], $bf[1]);
  276 @{$bits{bless}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  277 @{$bits{caller}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  278 @{$bits{chdir}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  279 @{$bits{chmod}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  280 $bits{chomp}{0} = $bf[0];
  281 $bits{chop}{0} = $bf[0];
  282 @{$bits{chown}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  283 $bits{chr}{0} = $bf[0];
  284 $bits{chroot}{0} = $bf[0];
  285 @{$bits{close}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  286 $bits{closedir}{0} = $bf[0];
  287 $bits{complement}{0} = $bf[0];
  288 @{$bits{concat}}{6,1,0} = ('OPpCONCAT_NESTED', $bf[1], $bf[1]);
  289 $bits{cond_expr}{0} = $bf[0];
  290 @{$bits{connect}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  291 @{$bits{const}}{6,4,3,2,1} = ('OPpCONST_BARE', 'OPpCONST_ENTERED', 'OPpCONST_STRICT', 'OPpCONST_SHORTCIRCUIT', 'OPpCONST_NOVER');
  292 @{$bits{coreargs}}{7,6,1,0} = ('OPpCOREARGS_PUSHMARK', 'OPpCOREARGS_SCALARMOD', 'OPpCOREARGS_DEREF2', 'OPpCOREARGS_DEREF1');
  293 $bits{cos}{0} = $bf[0];
  294 @{$bits{crypt}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  295 $bits{dbmclose}{0} = $bf[0];
  296 @{$bits{dbmopen}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  297 $bits{defined}{0} = $bf[0];
  298 @{$bits{delete}}{6,5,0} = ('OPpSLICE', 'OPpKVSLICE', $bf[0]);
  299 @{$bits{die}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  300 @{$bits{divide}}{1,0} = ($bf[1], $bf[1]);
  301 $bits{dofile}{0} = $bf[0];
  302 $bits{dor}{0} = $bf[0];
  303 $bits{dorassign}{0} = $bf[0];
  304 $bits{dump}{0} = $bf[0];
  305 $bits{each}{0} = $bf[0];
  306 @{$bits{entereval}}{5,4,3,2,1,0} = ('OPpEVAL_RE_REPARSING', 'OPpEVAL_COPHH', 'OPpEVAL_BYTES', 'OPpEVAL_UNICODE', 'OPpEVAL_HAS_HH', $bf[0]);
  307 $bits{entergiven}{0} = $bf[0];
  308 $bits{enteriter}{3} = 'OPpITER_DEF';
  309 @{$bits{entersub}}{5,4,0} = ($bf[8], $bf[8], 'OPpENTERSUB_INARGS');
  310 $bits{entertry}{0} = $bf[0];
  311 $bits{enterwhen}{0} = $bf[0];
  312 @{$bits{enterwrite}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  313 @{$bits{eof}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  314 @{$bits{eq}}{1,0} = ($bf[1], $bf[1]);
  315 @{$bits{exec}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  316 @{$bits{exists}}{6,0} = ('OPpEXISTS_SUB', $bf[0]);
  317 @{$bits{exit}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  318 $bits{exp}{0} = $bf[0];
  319 $bits{fc}{0} = $bf[0];
  320 @{$bits{fcntl}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  321 @{$bits{fileno}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  322 $bits{flip}{0} = $bf[0];
  323 @{$bits{flock}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  324 $bits{flop}{0} = $bf[0];
  325 @{$bits{formline}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  326 $bits{ftatime}{0} = $bf[0];
  327 $bits{ftbinary}{0} = $bf[0];
  328 $bits{ftblk}{0} = $bf[0];
  329 $bits{ftchr}{0} = $bf[0];
  330 $bits{ftctime}{0} = $bf[0];
  331 $bits{ftdir}{0} = $bf[0];
  332 $bits{fteexec}{0} = $bf[0];
  333 $bits{fteowned}{0} = $bf[0];
  334 $bits{fteread}{0} = $bf[0];
  335 $bits{ftewrite}{0} = $bf[0];
  336 $bits{ftfile}{0} = $bf[0];
  337 $bits{ftis}{0} = $bf[0];
  338 $bits{ftlink}{0} = $bf[0];
  339 $bits{ftmtime}{0} = $bf[0];
  340 $bits{ftpipe}{0} = $bf[0];
  341 $bits{ftrexec}{0} = $bf[0];
  342 $bits{ftrowned}{0} = $bf[0];
  343 $bits{ftrread}{0} = $bf[0];
  344 $bits{ftrwrite}{0} = $bf[0];
  345 $bits{ftsgid}{0} = $bf[0];
  346 $bits{ftsize}{0} = $bf[0];
  347 $bits{ftsock}{0} = $bf[0];
  348 $bits{ftsuid}{0} = $bf[0];
  349 $bits{ftsvtx}{0} = $bf[0];
  350 $bits{fttext}{0} = $bf[0];
  351 $bits{fttty}{0} = $bf[0];
  352 $bits{ftzero}{0} = $bf[0];
  353 @{$bits{ge}}{1,0} = ($bf[1], $bf[1]);
  354 @{$bits{gelem}}{1,0} = ($bf[1], $bf[1]);
  355 @{$bits{getc}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  356 $bits{getpeername}{0} = $bf[0];
  357 @{$bits{getpgrp}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  358 @{$bits{getpriority}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  359 $bits{getsockname}{0} = $bf[0];
  360 $bits{ggrgid}{0} = $bf[0];
  361 $bits{ggrnam}{0} = $bf[0];
  362 @{$bits{ghbyaddr}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  363 $bits{ghbyname}{0} = $bf[0];
  364 @{$bits{glob}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  365 @{$bits{gmtime}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  366 @{$bits{gnbyaddr}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  367 $bits{gnbyname}{0} = $bf[0];
  368 $bits{goto}{0} = $bf[0];
  369 $bits{gpbyname}{0} = $bf[0];
  370 @{$bits{gpbynumber}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  371 $bits{gpwnam}{0} = $bf[0];
  372 $bits{gpwuid}{0} = $bf[0];
  373 $bits{grepstart}{0} = $bf[0];
  374 $bits{grepwhile}{0} = $bf[0];
  375 @{$bits{gsbyname}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  376 @{$bits{gsbyport}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  377 @{$bits{gsockopt}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  378 @{$bits{gt}}{1,0} = ($bf[1], $bf[1]);
  379 $bits{gv}{5} = 'OPpEARLY_CV';
  380 @{$bits{helem}}{5,4,1,0} = ($bf[8], $bf[8], $bf[1], $bf[1]);
  381 $bits{hex}{0} = $bf[0];
  382 @{$bits{i_add}}{1,0} = ($bf[1], $bf[1]);
  383 @{$bits{i_divide}}{1,0} = ($bf[1], $bf[1]);
  384 @{$bits{i_eq}}{1,0} = ($bf[1], $bf[1]);
  385 @{$bits{i_ge}}{1,0} = ($bf[1], $bf[1]);
  386 @{$bits{i_gt}}{1,0} = ($bf[1], $bf[1]);
  387 @{$bits{i_le}}{1,0} = ($bf[1], $bf[1]);
  388 @{$bits{i_lt}}{1,0} = ($bf[1], $bf[1]);
  389 @{$bits{i_modulo}}{1,0} = ($bf[1], $bf[1]);
  390 @{$bits{i_multiply}}{1,0} = ($bf[1], $bf[1]);
  391 @{$bits{i_ncmp}}{1,0} = ($bf[1], $bf[1]);
  392 @{$bits{i_ne}}{1,0} = ($bf[1], $bf[1]);
  393 $bits{i_negate}{0} = $bf[0];
  394 $bits{i_postdec}{0} = $bf[0];
  395 $bits{i_postinc}{0} = $bf[0];
  396 $bits{i_predec}{0} = $bf[0];
  397 $bits{i_preinc}{0} = $bf[0];
  398 @{$bits{i_subtract}}{1,0} = ($bf[1], $bf[1]);
  399 @{$bits{index}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  400 $bits{int}{0} = $bf[0];
  401 @{$bits{ioctl}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  402 @{$bits{join}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  403 $bits{keys}{0} = $bf[0];
  404 @{$bits{kill}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  405 $bits{last}{0} = $bf[0];
  406 $bits{lc}{0} = $bf[0];
  407 $bits{lcfirst}{0} = $bf[0];
  408 @{$bits{le}}{1,0} = ($bf[1], $bf[1]);
  409 $bits{leaveeval}{0} = $bf[0];
  410 $bits{leavegiven}{0} = $bf[0];
  411 @{$bits{leaveloop}}{1,0} = ($bf[1], $bf[1]);
  412 $bits{leavesub}{0} = $bf[0];
  413 $bits{leavesublv}{0} = $bf[0];
  414 $bits{leavewhen}{0} = $bf[0];
  415 $bits{leavewrite}{0} = $bf[0];
  416 @{$bits{left_shift}}{1,0} = ($bf[1], $bf[1]);
  417 $bits{length}{0} = $bf[0];
  418 @{$bits{link}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  419 $bits{list}{6} = 'OPpLIST_GUESSED';
  420 @{$bits{listen}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  421 $bits{localtime}{0} = $bf[0];
  422 $bits{lock}{0} = $bf[0];
  423 $bits{log}{0} = $bf[0];
  424 @{$bits{lslice}}{1,0} = ($bf[1], $bf[1]);
  425 $bits{lstat}{0} = $bf[0];
  426 @{$bits{lt}}{1,0} = ($bf[1], $bf[1]);
  427 $bits{lvavref}{0} = $bf[0];
  428 @{$bits{lvref}}{5,4,0} = ($bf[9], $bf[9], $bf[0]);
  429 $bits{mapstart}{0} = $bf[0];
  430 $bits{mapwhile}{0} = $bf[0];
  431 $bits{method}{0} = $bf[0];
  432 $bits{method_named}{0} = $bf[0];
  433 $bits{method_redir}{0} = $bf[0];
  434 $bits{method_redir_super}{0} = $bf[0];
  435 $bits{method_super}{0} = $bf[0];
  436 @{$bits{mkdir}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  437 @{$bits{modulo}}{1,0} = ($bf[1], $bf[1]);
  438 @{$bits{msgctl}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  439 @{$bits{msgget}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  440 @{$bits{msgrcv}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  441 @{$bits{msgsnd}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  442 @{$bits{multiconcat}}{6,5,3,0} = ('OPpMULTICONCAT_APPEND', 'OPpMULTICONCAT_FAKE', 'OPpMULTICONCAT_STRINGIFY', $bf[0]);
  443 @{$bits{multideref}}{5,4,0} = ('OPpMULTIDEREF_DELETE', 'OPpMULTIDEREF_EXISTS', $bf[0]);
  444 @{$bits{multiply}}{1,0} = ($bf[1], $bf[1]);
  445 @{$bits{nbit_and}}{1,0} = ($bf[1], $bf[1]);
  446 @{$bits{nbit_or}}{1,0} = ($bf[1], $bf[1]);
  447 @{$bits{nbit_xor}}{1,0} = ($bf[1], $bf[1]);
  448 @{$bits{ncmp}}{1,0} = ($bf[1], $bf[1]);
  449 $bits{ncomplement}{0} = $bf[0];
  450 @{$bits{ne}}{1,0} = ($bf[1], $bf[1]);
  451 $bits{negate}{0} = $bf[0];
  452 $bits{next}{0} = $bf[0];
  453 $bits{not}{0} = $bf[0];
  454 $bits{oct}{0} = $bf[0];
  455 $bits{once}{0} = $bf[0];
  456 @{$bits{open}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  457 @{$bits{open_dir}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  458 $bits{or}{0} = $bf[0];
  459 $bits{orassign}{0} = $bf[0];
  460 $bits{ord}{0} = $bf[0];
  461 @{$bits{pack}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  462 $bits{padhv}{0} = 'OPpPADHV_ISKEYS';
  463 @{$bits{padrange}}{6,5,4,3,2,1,0} = ($bf[5], $bf[5], $bf[5], $bf[5], $bf[5], $bf[5], $bf[5]);
  464 @{$bits{padsv}}{5,4} = ($bf[8], $bf[8]);
  465 @{$bits{pipe_op}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  466 $bits{pop}{0} = $bf[0];
  467 $bits{pos}{0} = $bf[0];
  468 $bits{postdec}{0} = $bf[0];
  469 $bits{postinc}{0} = $bf[0];
  470 @{$bits{pow}}{1,0} = ($bf[1], $bf[1]);
  471 $bits{predec}{0} = $bf[0];
  472 $bits{preinc}{0} = $bf[0];
  473 $bits{prototype}{0} = $bf[0];
  474 @{$bits{push}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  475 $bits{quotemeta}{0} = $bf[0];
  476 @{$bits{rand}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  477 $bits{range}{0} = $bf[0];
  478 @{$bits{read}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  479 $bits{readdir}{0} = $bf[0];
  480 $bits{readline}{0} = $bf[0];
  481 $bits{readlink}{0} = $bf[0];
  482 @{$bits{recv}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  483 $bits{redo}{0} = $bf[0];
  484 $bits{ref}{0} = $bf[0];
  485 @{$bits{refassign}}{5,4,1,0} = ($bf[9], $bf[9], $bf[1], $bf[1]);
  486 $bits{refgen}{0} = $bf[0];
  487 $bits{regcmaybe}{0} = $bf[0];
  488 $bits{regcomp}{0} = $bf[0];
  489 $bits{regcreset}{0} = $bf[0];
  490 @{$bits{rename}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  491 @{$bits{repeat}}{6,1,0} = ('OPpREPEAT_DOLIST', $bf[1], $bf[1]);
  492 $bits{require}{0} = $bf[0];
  493 @{$bits{reset}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  494 @{$bits{reverse}}{3,0} = ('OPpREVERSE_INPLACE', $bf[0]);
  495 $bits{rewinddir}{0} = $bf[0];
  496 @{$bits{right_shift}}{1,0} = ($bf[1], $bf[1]);
  497 @{$bits{rindex}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  498 $bits{rmdir}{0} = $bf[0];
  499 $bits{rv2av}{0} = $bf[0];
  500 @{$bits{rv2cv}}{7,5,0} = ('OPpENTERSUB_NOPAREN', 'OPpMAY_RETURN_CONSTANT', $bf[0]);
  501 @{$bits{rv2gv}}{6,5,4,2,0} = ('OPpALLOW_FAKE', $bf[8], $bf[8], 'OPpDONT_INIT_GV', $bf[0]);
  502 $bits{rv2hv}{0} = 'OPpRV2HV_ISKEYS';
  503 @{$bits{rv2sv}}{5,4,0} = ($bf[8], $bf[8], $bf[0]);
  504 @{$bits{sassign}}{7,6,1,0} = ('OPpASSIGN_CV_TO_GV', 'OPpASSIGN_BACKWARDS', $bf[1], $bf[1]);
  505 @{$bits{sbit_and}}{1,0} = ($bf[1], $bf[1]);
  506 @{$bits{sbit_or}}{1,0} = ($bf[1], $bf[1]);
  507 @{$bits{sbit_xor}}{1,0} = ($bf[1], $bf[1]);
  508 $bits{scalar}{0} = $bf[0];
  509 $bits{schomp}{0} = $bf[0];
  510 $bits{schop}{0} = $bf[0];
  511 @{$bits{scmp}}{1,0} = ($bf[1], $bf[1]);
  512 $bits{scomplement}{0} = $bf[0];
  513 @{$bits{seek}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  514 @{$bits{seekdir}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  515 @{$bits{select}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  516 @{$bits{semctl}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  517 @{$bits{semget}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  518 @{$bits{semop}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  519 @{$bits{send}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  520 @{$bits{seq}}{1,0} = ($bf[1], $bf[1]);
  521 @{$bits{setpgrp}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  522 @{$bits{setpriority}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  523 @{$bits{sge}}{1,0} = ($bf[1], $bf[1]);
  524 @{$bits{sgt}}{1,0} = ($bf[1], $bf[1]);
  525 $bits{shift}{0} = $bf[0];
  526 @{$bits{shmctl}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  527 @{$bits{shmget}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  528 @{$bits{shmread}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  529 @{$bits{shmwrite}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  530 $bits{shostent}{0} = $bf[0];
  531 @{$bits{shutdown}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  532 $bits{sin}{0} = $bf[0];
  533 @{$bits{sle}}{1,0} = ($bf[1], $bf[1]);
  534 @{$bits{sleep}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  535 @{$bits{slt}}{1,0} = ($bf[1], $bf[1]);
  536 @{$bits{smartmatch}}{1,0} = ($bf[1], $bf[1]);
  537 @{$bits{sne}}{1,0} = ($bf[1], $bf[1]);
  538 $bits{snetent}{0} = $bf[0];
  539 @{$bits{socket}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  540 @{$bits{sockpair}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  541 @{$bits{sort}}{7,6,4,3,2,1,0} = ('OPpSORT_UNSTABLE', 'OPpSORT_STABLE', 'OPpSORT_DESCEND', 'OPpSORT_INPLACE', 'OPpSORT_REVERSE', 'OPpSORT_INTEGER', 'OPpSORT_NUMERIC');
  542 @{$bits{splice}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  543 @{$bits{split}}{4,3,2} = ('OPpSPLIT_ASSIGN', 'OPpSPLIT_LEX', 'OPpSPLIT_IMPLIM');
  544 @{$bits{sprintf}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  545 $bits{sprotoent}{0} = $bf[0];
  546 $bits{sqrt}{0} = $bf[0];
  547 @{$bits{srand}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  548 $bits{srefgen}{0} = $bf[0];
  549 @{$bits{sselect}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  550 $bits{sservent}{0} = $bf[0];
  551 @{$bits{ssockopt}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  552 $bits{stat}{0} = $bf[0];
  553 @{$bits{stringify}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  554 $bits{study}{0} = $bf[0];
  555 $bits{substcont}{0} = $bf[0];
  556 @{$bits{substr}}{4,2,1,0} = ('OPpSUBSTR_REPL_FIRST', $bf[3], $bf[3], $bf[3]);
  557 @{$bits{subtract}}{1,0} = ($bf[1], $bf[1]);
  558 @{$bits{symlink}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  559 @{$bits{syscall}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  560 @{$bits{sysopen}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  561 @{$bits{sysread}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  562 @{$bits{sysseek}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  563 @{$bits{system}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  564 @{$bits{syswrite}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  565 @{$bits{tell}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  566 $bits{telldir}{0} = $bf[0];
  567 @{$bits{tie}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  568 $bits{tied}{0} = $bf[0];
  569 @{$bits{truncate}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  570 $bits{uc}{0} = $bf[0];
  571 $bits{ucfirst}{0} = $bf[0];
  572 @{$bits{umask}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  573 $bits{undef}{0} = $bf[0];
  574 @{$bits{unlink}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  575 @{$bits{unpack}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  576 @{$bits{unshift}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  577 $bits{untie}{0} = $bf[0];
  578 @{$bits{utime}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  579 $bits{values}{0} = $bf[0];
  580 @{$bits{vec}}{1,0} = ($bf[1], $bf[1]);
  581 @{$bits{waitpid}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  582 @{$bits{warn}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
  583 @{$bits{xor}}{1,0} = ($bf[1], $bf[1]);
  584 
  585 
  586 our %defines = (
  587     OPpALLOW_FAKE            =>  64,
  588     OPpARG1_MASK             =>   1,
  589     OPpARG2_MASK             =>   3,
  590     OPpARG3_MASK             =>   7,
  591     OPpARG4_MASK             =>  15,
  592     OPpARGELEM_AV            =>   2,
  593     OPpARGELEM_HV            =>   4,
  594     OPpARGELEM_MASK          =>   6,
  595     OPpARGELEM_SV            =>   0,
  596     OPpASSIGN_BACKWARDS      =>  64,
  597     OPpASSIGN_COMMON_AGG     =>  16,
  598     OPpASSIGN_COMMON_RC1     =>  32,
  599     OPpASSIGN_COMMON_SCALAR  =>  64,
  600     OPpASSIGN_CV_TO_GV       => 128,
  601     OPpASSIGN_TRUEBOOL       =>   4,
  602     OPpAVHVSWITCH_MASK       =>   3,
  603     OPpCONCAT_NESTED         =>  64,
  604     OPpCONST_BARE            =>  64,
  605     OPpCONST_ENTERED         =>  16,
  606     OPpCONST_NOVER           =>   2,
  607     OPpCONST_SHORTCIRCUIT    =>   4,
  608     OPpCONST_STRICT          =>   8,
  609     OPpCOREARGS_DEREF1       =>   1,
  610     OPpCOREARGS_DEREF2       =>   2,
  611     OPpCOREARGS_PUSHMARK     => 128,
  612     OPpCOREARGS_SCALARMOD    =>  64,
  613     OPpDEREF                 =>  48,
  614     OPpDEREF_AV              =>  16,
  615     OPpDEREF_HV              =>  32,
  616     OPpDEREF_SV              =>  48,
  617     OPpDONT_INIT_GV          =>   4,
  618     OPpEARLY_CV              =>  32,
  619     OPpENTERSUB_AMPER        =>   8,
  620     OPpENTERSUB_DB           =>  64,
  621     OPpENTERSUB_HASTARG      =>   4,
  622     OPpENTERSUB_INARGS       =>   1,
  623     OPpENTERSUB_NOPAREN      => 128,
  624     OPpEVAL_BYTES            =>   8,
  625     OPpEVAL_COPHH            =>  16,
  626     OPpEVAL_HAS_HH           =>   2,
  627     OPpEVAL_RE_REPARSING     =>  32,
  628     OPpEVAL_UNICODE          =>   4,
  629     OPpEXISTS_SUB            =>  64,
  630     OPpFLIP_LINENUM          =>  64,
  631     OPpFT_ACCESS             =>   2,
  632     OPpFT_AFTER_t            =>  16,
  633     OPpFT_STACKED            =>   4,
  634     OPpFT_STACKING           =>   8,
  635     OPpHINT_STRICT_REFS      =>   2,
  636     OPpHUSH_VMSISH           =>  32,
  637     OPpINDEX_BOOLNEG         =>  64,
  638     OPpITER_DEF              =>   8,
  639     OPpITER_REVERSED         =>   2,
  640     OPpKVSLICE               =>  32,
  641     OPpLIST_GUESSED          =>  64,
  642     OPpLVALUE                => 128,
  643     OPpLVAL_DEFER            =>  64,
  644     OPpLVAL_INTRO            => 128,
  645     OPpLVREF_AV              =>  16,
  646     OPpLVREF_CV              =>  48,
  647     OPpLVREF_ELEM            =>   4,
  648     OPpLVREF_HV              =>  32,
  649     OPpLVREF_ITER            =>   8,
  650     OPpLVREF_SV              =>   0,
  651     OPpLVREF_TYPE            =>  48,
  652     OPpMAYBE_LVSUB           =>   8,
  653     OPpMAYBE_TRUEBOOL        =>  16,
  654     OPpMAY_RETURN_CONSTANT   =>  32,
  655     OPpMULTICONCAT_APPEND    =>  64,
  656     OPpMULTICONCAT_FAKE      =>  32,
  657     OPpMULTICONCAT_STRINGIFY  =>   8,
  658     OPpMULTIDEREF_DELETE     =>  32,
  659     OPpMULTIDEREF_EXISTS     =>  16,
  660     OPpOFFBYONE              => 128,
  661     OPpOPEN_IN_CRLF          =>  32,
  662     OPpOPEN_IN_RAW           =>  16,
  663     OPpOPEN_OUT_CRLF         => 128,
  664     OPpOPEN_OUT_RAW          =>  64,
  665     OPpOUR_INTRO             =>  64,
  666     OPpPADHV_ISKEYS          =>   1,
  667     OPpPADRANGE_COUNTMASK    => 127,
  668     OPpPADRANGE_COUNTSHIFT   =>   7,
  669     OPpPAD_STATE             =>  64,
  670     OPpPV_IS_UTF8            => 128,
  671     OPpREFCOUNTED            =>  64,
  672     OPpREPEAT_DOLIST         =>  64,
  673     OPpREVERSE_INPLACE       =>   8,
  674     OPpRV2HV_ISKEYS          =>   1,
  675     OPpSLICE                 =>  64,
  676     OPpSLICEWARNING          =>   4,
  677     OPpSORT_DESCEND          =>  16,
  678     OPpSORT_INPLACE          =>   8,
  679     OPpSORT_INTEGER          =>   2,
  680     OPpSORT_NUMERIC          =>   1,
  681     OPpSORT_REVERSE          =>   4,
  682     OPpSORT_STABLE           =>  64,
  683     OPpSORT_UNSTABLE         => 128,
  684     OPpSPLIT_ASSIGN          =>  16,
  685     OPpSPLIT_IMPLIM          =>   4,
  686     OPpSPLIT_LEX             =>   8,
  687     OPpSUBSTR_REPL_FIRST     =>  16,
  688     OPpTARGET_MY             =>  16,
  689     OPpTRANS_COMPLEMENT      =>  32,
  690     OPpTRANS_DELETE          => 128,
  691     OPpTRANS_FROM_UTF        =>   1,
  692     OPpTRANS_GROWS           =>  64,
  693     OPpTRANS_IDENTICAL       =>   4,
  694     OPpTRANS_SQUASH          =>   8,
  695     OPpTRANS_TO_UTF          =>   2,
  696     OPpTRUEBOOL              =>  32,
  697 );
  698 
  699 our %labels = (
  700     OPpALLOW_FAKE            => 'FAKE',
  701     OPpARGELEM_AV            => 'AV',
  702     OPpARGELEM_HV            => 'HV',
  703     OPpARGELEM_SV            => 'SV',
  704     OPpASSIGN_BACKWARDS      => 'BKWARD',
  705     OPpASSIGN_COMMON_AGG     => 'COM_AGG',
  706     OPpASSIGN_COMMON_RC1     => 'COM_RC1',
  707     OPpASSIGN_COMMON_SCALAR  => 'COM_SCALAR',
  708     OPpASSIGN_CV_TO_GV       => 'CV2GV',
  709     OPpASSIGN_TRUEBOOL       => 'BOOL',
  710     OPpCONCAT_NESTED         => 'NESTED',
  711     OPpCONST_BARE            => 'BARE',
  712     OPpCONST_ENTERED         => 'ENTERED',
  713     OPpCONST_NOVER           => 'NOVER',
  714     OPpCONST_SHORTCIRCUIT    => 'SHORT',
  715     OPpCONST_STRICT          => 'STRICT',
  716     OPpCOREARGS_DEREF1       => 'DEREF1',
  717     OPpCOREARGS_DEREF2       => 'DEREF2',
  718     OPpCOREARGS_PUSHMARK     => 'MARK',
  719     OPpCOREARGS_SCALARMOD    => '$MOD',
  720     OPpDEREF_AV              => 'DREFAV',
  721     OPpDEREF_HV              => 'DREFHV',
  722     OPpDEREF_SV              => 'DREFSV',
  723     OPpDONT_INIT_GV          => 'NOINIT',
  724     OPpEARLY_CV              => 'EARLYCV',
  725     OPpENTERSUB_AMPER        => 'AMPER',
  726     OPpENTERSUB_DB           => 'DBG',
  727     OPpENTERSUB_HASTARG      => 'TARG',
  728     OPpENTERSUB_INARGS       => 'INARGS',
  729     OPpENTERSUB_NOPAREN      => 'NO()',
  730     OPpEVAL_BYTES            => 'BYTES',
  731     OPpEVAL_COPHH            => 'COPHH',
  732     OPpEVAL_HAS_HH           => 'HAS_HH',
  733     OPpEVAL_RE_REPARSING     => 'REPARSE',
  734     OPpEVAL_UNICODE          => 'UNI',
  735     OPpEXISTS_SUB            => 'SUB',
  736     OPpFLIP_LINENUM          => 'LINENUM',
  737     OPpFT_ACCESS             => 'FTACCESS',
  738     OPpFT_AFTER_t            => 'FTAFTERt',
  739     OPpFT_STACKED            => 'FTSTACKED',
  740     OPpFT_STACKING           => 'FTSTACKING',
  741     OPpHINT_STRICT_REFS      => 'STRICT',
  742     OPpHUSH_VMSISH           => 'HUSH',
  743     OPpINDEX_BOOLNEG         => 'NEG',
  744     OPpITER_DEF              => 'DEF',
  745     OPpITER_REVERSED         => 'REVERSED',
  746     OPpKVSLICE               => 'KVSLICE',
  747     OPpLIST_GUESSED          => 'GUESSED',
  748     OPpLVALUE                => 'LV',
  749     OPpLVAL_DEFER            => 'LVDEFER',
  750     OPpLVAL_INTRO            => 'LVINTRO',
  751     OPpLVREF_AV              => 'AV',
  752     OPpLVREF_CV              => 'CV',
  753     OPpLVREF_ELEM            => 'ELEM',
  754     OPpLVREF_HV              => 'HV',
  755     OPpLVREF_ITER            => 'ITER',
  756     OPpLVREF_SV              => 'SV',
  757     OPpMAYBE_LVSUB           => 'LVSUB',
  758     OPpMAYBE_TRUEBOOL        => 'BOOL?',
  759     OPpMAY_RETURN_CONSTANT   => 'CONST',
  760     OPpMULTICONCAT_APPEND    => 'APPEND',
  761     OPpMULTICONCAT_FAKE      => 'FAKE',
  762     OPpMULTICONCAT_STRINGIFY  => 'STRINGIFY',
  763     OPpMULTIDEREF_DELETE     => 'DELETE',
  764     OPpMULTIDEREF_EXISTS     => 'EXISTS',
  765     OPpOFFBYONE              => '+1',
  766     OPpOPEN_IN_CRLF          => 'INCR',
  767     OPpOPEN_IN_RAW           => 'INBIN',
  768     OPpOPEN_OUT_CRLF         => 'OUTCR',
  769     OPpOPEN_OUT_RAW          => 'OUTBIN',
  770     OPpOUR_INTRO             => 'OURINTR',
  771     OPpPADHV_ISKEYS          => 'KEYS',
  772     OPpPAD_STATE             => 'STATE',
  773     OPpPV_IS_UTF8            => 'UTF',
  774     OPpREFCOUNTED            => 'REFC',
  775     OPpREPEAT_DOLIST         => 'DOLIST',
  776     OPpREVERSE_INPLACE       => 'INPLACE',
  777     OPpRV2HV_ISKEYS          => 'KEYS',
  778     OPpSLICE                 => 'SLICE',
  779     OPpSLICEWARNING          => 'SLICEWARN',
  780     OPpSORT_DESCEND          => 'DESC',
  781     OPpSORT_INPLACE          => 'INPLACE',
  782     OPpSORT_INTEGER          => 'INT',
  783     OPpSORT_NUMERIC          => 'NUM',
  784     OPpSORT_REVERSE          => 'REV',
  785     OPpSORT_STABLE           => 'STABLE',
  786     OPpSORT_UNSTABLE         => 'UNSTABLE',
  787     OPpSPLIT_ASSIGN          => 'ASSIGN',
  788     OPpSPLIT_IMPLIM          => 'IMPLIM',
  789     OPpSPLIT_LEX             => 'LEX',
  790     OPpSUBSTR_REPL_FIRST     => 'REPL1ST',
  791     OPpTARGET_MY             => 'TARGMY',
  792     OPpTRANS_COMPLEMENT      => 'COMPL',
  793     OPpTRANS_DELETE          => 'DEL',
  794     OPpTRANS_FROM_UTF        => '<UTF',
  795     OPpTRANS_GROWS           => 'GROWS',
  796     OPpTRANS_IDENTICAL       => 'IDENT',
  797     OPpTRANS_SQUASH          => 'SQUASH',
  798     OPpTRANS_TO_UTF          => '>UTF',
  799     OPpTRUEBOOL              => 'BOOL',
  800 );
  801 
  802 
  803 our %ops_using = (
  804     OPpALLOW_FAKE            => [qw(rv2gv)],
  805     OPpASSIGN_BACKWARDS      => [qw(sassign)],
  806     OPpASSIGN_COMMON_AGG     => [qw(aassign)],
  807     OPpCONCAT_NESTED         => [qw(concat)],
  808     OPpCONST_BARE            => [qw(const)],
  809     OPpCOREARGS_DEREF1       => [qw(coreargs)],
  810     OPpEARLY_CV              => [qw(gv)],
  811     OPpENTERSUB_AMPER        => [qw(entersub rv2cv)],
  812     OPpENTERSUB_INARGS       => [qw(entersub)],
  813     OPpENTERSUB_NOPAREN      => [qw(rv2cv)],
  814     OPpEVAL_BYTES            => [qw(entereval)],
  815     OPpEXISTS_SUB            => [qw(exists)],
  816     OPpFLIP_LINENUM          => [qw(flip flop)],
  817     OPpFT_ACCESS             => [qw(fteexec fteread ftewrite ftrexec ftrread ftrwrite)],
  818     OPpFT_AFTER_t            => [qw(ftatime ftbinary ftblk ftchr ftctime ftdir fteexec fteowned fteread ftewrite ftfile ftis ftlink ftmtime ftpipe ftrexec ftrowned ftrread ftrwrite ftsgid ftsize ftsock ftsuid ftsvtx fttext fttty ftzero)],
  819     OPpHINT_STRICT_REFS      => [qw(entersub multideref rv2av rv2cv rv2gv rv2hv rv2sv)],
  820     OPpHUSH_VMSISH           => [qw(dbstate nextstate)],
  821     OPpINDEX_BOOLNEG         => [qw(index rindex)],
  822     OPpITER_DEF              => [qw(enteriter)],
  823     OPpITER_REVERSED         => [qw(enteriter iter)],
  824     OPpKVSLICE               => [qw(delete)],
  825     OPpLIST_GUESSED          => [qw(list)],
  826     OPpLVALUE                => [qw(leave leaveloop)],
  827     OPpLVAL_DEFER            => [qw(aelem helem multideref)],
  828     OPpLVAL_INTRO            => [qw(aelem aslice cond_expr delete enteriter entersub gvsv helem hslice list lvavref lvref lvrefslice multiconcat multideref padav padhv padrange padsv pushmark refassign rv2av rv2gv rv2hv rv2sv split)],
  829     OPpLVREF_ELEM            => [qw(lvref refassign)],
  830     OPpMAYBE_LVSUB           => [qw(aassign aelem akeys aslice av2arylen avhvswitch helem hslice keys kvaslice kvhslice multideref padav padhv pos rv2av rv2gv rv2hv substr values vec)],
  831     OPpMAYBE_TRUEBOOL        => [qw(padhv ref rv2hv)],
  832     OPpMULTICONCAT_APPEND    => [qw(multiconcat)],
  833     OPpMULTIDEREF_DELETE     => [qw(multideref)],
  834     OPpOFFBYONE              => [qw(caller runcv wantarray)],
  835     OPpOPEN_IN_CRLF          => [qw(backtick open)],
  836     OPpOUR_INTRO             => [qw(enteriter gvsv rv2av rv2hv rv2sv split)],
  837     OPpPADHV_ISKEYS          => [qw(padhv)],
  838     OPpPAD_STATE             => [qw(lvavref lvref padav padhv padsv pushmark refassign)],
  839     OPpPV_IS_UTF8            => [qw(dump goto last next redo)],
  840     OPpREFCOUNTED            => [qw(leave leaveeval leavesub leavesublv leavewrite)],
  841     OPpREPEAT_DOLIST         => [qw(repeat)],
  842     OPpREVERSE_INPLACE       => [qw(reverse)],
  843     OPpRV2HV_ISKEYS          => [qw(rv2hv)],
  844     OPpSLICEWARNING          => [qw(aslice hslice padav padhv rv2av rv2hv)],
  845     OPpSORT_DESCEND          => [qw(sort)],
  846     OPpSPLIT_ASSIGN          => [qw(split)],
  847     OPpSUBSTR_REPL_FIRST     => [qw(substr)],
  848     OPpTARGET_MY             => [qw(abs add atan2 chdir chmod chomp chown chr chroot concat cos crypt divide exec exp flock getpgrp getppid getpriority hex i_add i_divide i_modulo i_multiply i_subtract index int kill left_shift length link log mkdir modulo multiconcat multiply nbit_and nbit_or nbit_xor ncomplement oct ord pow push rand rename right_shift rindex rmdir schomp scomplement setpgrp setpriority sin sleep sqrt srand stringify subtract symlink system time unlink unshift utime wait waitpid)],
  849     OPpTRANS_COMPLEMENT      => [qw(trans transr)],
  850     OPpTRUEBOOL              => [qw(grepwhile index length padav padhv pos ref rindex rv2av rv2hv subst)],
  851 );
  852 
  853 $ops_using{OPpASSIGN_COMMON_RC1} = $ops_using{OPpASSIGN_COMMON_AGG};
  854 $ops_using{OPpASSIGN_COMMON_SCALAR} = $ops_using{OPpASSIGN_COMMON_AGG};
  855 $ops_using{OPpASSIGN_CV_TO_GV} = $ops_using{OPpASSIGN_BACKWARDS};
  856 $ops_using{OPpASSIGN_TRUEBOOL} = $ops_using{OPpASSIGN_COMMON_AGG};
  857 $ops_using{OPpCONST_ENTERED} = $ops_using{OPpCONST_BARE};
  858 $ops_using{OPpCONST_NOVER} = $ops_using{OPpCONST_BARE};
  859 $ops_using{OPpCONST_SHORTCIRCUIT} = $ops_using{OPpCONST_BARE};
  860 $ops_using{OPpCONST_STRICT} = $ops_using{OPpCONST_BARE};
  861 $ops_using{OPpCOREARGS_DEREF2} = $ops_using{OPpCOREARGS_DEREF1};
  862 $ops_using{OPpCOREARGS_PUSHMARK} = $ops_using{OPpCOREARGS_DEREF1};
  863 $ops_using{OPpCOREARGS_SCALARMOD} = $ops_using{OPpCOREARGS_DEREF1};
  864 $ops_using{OPpDONT_INIT_GV} = $ops_using{OPpALLOW_FAKE};
  865 $ops_using{OPpENTERSUB_DB} = $ops_using{OPpENTERSUB_AMPER};
  866 $ops_using{OPpENTERSUB_HASTARG} = $ops_using{OPpENTERSUB_AMPER};
  867 $ops_using{OPpEVAL_COPHH} = $ops_using{OPpEVAL_BYTES};
  868 $ops_using{OPpEVAL_HAS_HH} = $ops_using{OPpEVAL_BYTES};
  869 $ops_using{OPpEVAL_RE_REPARSING} = $ops_using{OPpEVAL_BYTES};
  870 $ops_using{OPpEVAL_UNICODE} = $ops_using{OPpEVAL_BYTES};
  871 $ops_using{OPpFT_STACKED} = $ops_using{OPpFT_AFTER_t};
  872 $ops_using{OPpFT_STACKING} = $ops_using{OPpFT_AFTER_t};
  873 $ops_using{OPpLVREF_ITER} = $ops_using{OPpLVREF_ELEM};
  874 $ops_using{OPpMAY_RETURN_CONSTANT} = $ops_using{OPpENTERSUB_NOPAREN};
  875 $ops_using{OPpMULTICONCAT_FAKE} = $ops_using{OPpMULTICONCAT_APPEND};
  876 $ops_using{OPpMULTICONCAT_STRINGIFY} = $ops_using{OPpMULTICONCAT_APPEND};
  877 $ops_using{OPpMULTIDEREF_EXISTS} = $ops_using{OPpMULTIDEREF_DELETE};
  878 $ops_using{OPpOPEN_IN_RAW} = $ops_using{OPpOPEN_IN_CRLF};
  879 $ops_using{OPpOPEN_OUT_CRLF} = $ops_using{OPpOPEN_IN_CRLF};
  880 $ops_using{OPpOPEN_OUT_RAW} = $ops_using{OPpOPEN_IN_CRLF};
  881 $ops_using{OPpSLICE} = $ops_using{OPpKVSLICE};
  882 $ops_using{OPpSORT_INPLACE} = $ops_using{OPpSORT_DESCEND};
  883 $ops_using{OPpSORT_INTEGER} = $ops_using{OPpSORT_DESCEND};
  884 $ops_using{OPpSORT_NUMERIC} = $ops_using{OPpSORT_DESCEND};
  885 $ops_using{OPpSORT_REVERSE} = $ops_using{OPpSORT_DESCEND};
  886 $ops_using{OPpSORT_STABLE} = $ops_using{OPpSORT_DESCEND};
  887 $ops_using{OPpSORT_UNSTABLE} = $ops_using{OPpSORT_DESCEND};
  888 $ops_using{OPpSPLIT_IMPLIM} = $ops_using{OPpSPLIT_ASSIGN};
  889 $ops_using{OPpSPLIT_LEX} = $ops_using{OPpSPLIT_ASSIGN};
  890 $ops_using{OPpTRANS_DELETE} = $ops_using{OPpTRANS_COMPLEMENT};
  891 $ops_using{OPpTRANS_FROM_UTF} = $ops_using{OPpTRANS_COMPLEMENT};
  892 $ops_using{OPpTRANS_GROWS} = $ops_using{OPpTRANS_COMPLEMENT};
  893 $ops_using{OPpTRANS_IDENTICAL} = $ops_using{OPpTRANS_COMPLEMENT};
  894 $ops_using{OPpTRANS_SQUASH} = $ops_using{OPpTRANS_COMPLEMENT};
  895 $ops_using{OPpTRANS_TO_UTF} = $ops_using{OPpTRANS_COMPLEMENT};
  896 
  897 # ex: set ro: