This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Wrap long pod lines in B::Op_private for real
[perl5.git] / lib / B / Op_private.pm
CommitLineData
f3574cc6
DM
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 !!!!!!!
00fdc80f
FC
11# This file is built by regen/opcode.pl from data in
12# regen/op_private and pod embedded in regen/opcode.pl.
f3574cc6
DM
13# Any changes made here will be lost!
14
15=head1 NAME
16
17B::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
34This module provides three global hashes:
35
36 %B::Op_private::bits
37 %B::Op_private::defines
38 %B::Op_private::labels
39
40which contain information about the per-op meanings of the bits in the
41op_private field.
42
43=head2 C<%bits>
44
45This is indexed by op name and then bit number (0..7). For single bit flags,
46it returns the name of the define (if any) for that bit:
47
48 $B::Op_private::bits{aelem}{7} eq 'OPpLVAL_INTRO';
49
50For bit fields, it returns a hash ref containing details about the field.
51The same reference will be returned for all bit positions that make
52up the bit field; so for example these both return the same hash ref:
53
54 $bitfield = $B::Op_private::bits{aelem}{5};
55 $bitfield = $B::Op_private::bits{aelem}{6};
56
57The general format of this hash ref is
58
59 {
60 # The bit range and mask; these are always present.
61 bitmin => 5,
62 bitmax => 6,
63 bitmask => 0x60,
64
65 # (The remaining keys are optional)
66
67 # The names of any defines that were requested:
68 mask_def => 'OPpFOO_MASK',
69 baseshift_def => 'OPpFOO_SHIFT',
70 bitcount_def => 'OPpFOO_BITS',
71
72 # If present, Concise etc will display the value with a 'FOO='
cdb679b6
FC
73 # prefix. If it equals '-', then Concise will treat the bit
74 # field as raw bits and not try to interpret it.
f3574cc6
DM
75 label => 'FOO',
76
2febb45a
FC
77 # If present, specifies the names of some defines and the
78 # display labels that are used to assign meaning to particu-
79 # lar integer values within the bit field; e.g. 3 is dis-
80 # played as 'C'.
f3574cc6
DM
81 enum => [ qw(
82 1 OPpFOO_A A
83 2 OPpFOO_B B
84 3 OPpFOO_C C
85 )],
86
87 };
88
89
90=head2 C<%defines>
91
92This gives the value of every C<OPp> define, e.g.
93
94 $B::Op_private::defines{OPpLVAL_INTRO} == 128;
95
96=head2 C<%labels>
97
98This gives the short display label for each define, as used by C<B::Concise>
99and C<perl -Dx>, e.g.
100
101 $B::Op_private::labels{OPpLVAL_INTRO} eq 'LVINTRO';
102
103If the label equals '-', then Concise will treat the bit as a raw bit and
104not try to display it symbolically.
105
106=cut
107
108package B::Op_private;
109
110our %bits;
111
112$bits{$_}{3} = 'OPpENTERSUB_AMPER' for qw(entersub rv2cv);
113$bits{$_}{4} = 'OPpENTERSUB_DB' for qw(entersub rv2cv);
114$bits{$_}{2} = 'OPpENTERSUB_HASTARG' for qw(entersub rv2cv);
115$bits{$_}{6} = 'OPpFLIP_LINENUM' for qw(flip flop);
116$bits{$_}{1} = 'OPpFT_ACCESS' for qw(fteexec fteread ftewrite ftrexec ftrread ftrwrite);
117$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);
118$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);
119$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);
120$bits{$_}{1} = 'OPpGREP_LEX' for qw(grepstart grepwhile mapstart mapwhile);
121$bits{$_}{6} = 'OPpHINT_M_VMSISH_STATUS' for qw(dbstate nextstate);
122$bits{$_}{7} = 'OPpHINT_M_VMSISH_TIME' for qw(dbstate nextstate);
123$bits{$_}{1} = 'OPpHINT_STRICT_REFS' for qw(entersub rv2av rv2cv rv2gv rv2hv rv2sv);
124$bits{$_}{5} = 'OPpHUSH_VMSISH' for qw(dbstate nextstate);
125$bits{$_}{2} = 'OPpITER_REVERSED' for qw(enteriter iter);
126$bits{$_}{7} = 'OPpLVALUE' for qw(leave leaveloop);
127$bits{$_}{4} = 'OPpLVAL_DEFER' for qw(aelem helem);
128$bits{$_}{7} = 'OPpLVAL_INTRO' for qw(aelem aslice cond_expr delete enteriter entersub gvsv helem hslice list padav padhv padrange padsv pos pushmark rv2av rv2gv rv2hv rv2sv substr vec);
129$bits{$_}{3} = 'OPpMAYBE_LVSUB' for qw(aassign aelem aslice av2arylen helem hslice keys kvaslice kvhslice padav padhv pos rkeys rv2av rv2gv rv2hv substr vec);
130$bits{$_}{6} = 'OPpMAYBE_TRUEBOOL' for qw(padhv rv2hv);
131$bits{$_}{7} = 'OPpOFFBYONE' for qw(caller runcv wantarray);
132$bits{$_}{5} = 'OPpOPEN_IN_CRLF' for qw(backtick open);
133$bits{$_}{4} = 'OPpOPEN_IN_RAW' for qw(backtick open);
134$bits{$_}{7} = 'OPpOPEN_OUT_CRLF' for qw(backtick open);
135$bits{$_}{6} = 'OPpOPEN_OUT_RAW' for qw(backtick open);
136$bits{$_}{4} = 'OPpOUR_INTRO' for qw(enteriter gvsv rv2av rv2hv rv2sv);
137$bits{$_}{4} = 'OPpPAD_STATE' for qw(padav padhv padsv pushmark);
138$bits{$_}{7} = 'OPpPV_IS_UTF8' for qw(dump goto last next redo);
139$bits{$_}{6} = 'OPpREFCOUNTED' for qw(leave leaveeval leavesub leavesublv leavewrite);
140$bits{$_}{6} = 'OPpRUNTIME' for qw(match pushre qr subst substcont);
141$bits{$_}{2} = 'OPpSLICEWARNING' for qw(aslice hslice padav padhv rv2av rv2hv);
142$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_negate i_postdec i_postinc i_subtract index int kill left_shift length link log match mkdir modulo multiply oct ord pow push rand rename right_shift rindex rmdir schomp setpgrp setpriority sin sleep sqrt srand stringify subst subtract symlink system time trans transr unlink unshift utime wait waitpid);
143$bits{$_}{5} = 'OPpTRANS_COMPLEMENT' for qw(trans transr);
144$bits{$_}{7} = 'OPpTRANS_DELETE' for qw(trans transr);
145$bits{$_}{0} = 'OPpTRANS_FROM_UTF' for qw(trans transr);
146$bits{$_}{6} = 'OPpTRANS_GROWS' for qw(trans transr);
147$bits{$_}{2} = 'OPpTRANS_IDENTICAL' for qw(trans transr);
148$bits{$_}{3} = 'OPpTRANS_SQUASH' for qw(trans transr);
149$bits{$_}{1} = 'OPpTRANS_TO_UTF' for qw(trans transr);
150$bits{$_}{5} = 'OPpTRUEBOOL' for qw(padhv rv2hv);
151
152my @bf = (
153 {
154 label => '-',
155 mask_def => 'OPpARG1_MASK',
156 bitmin => 0,
157 bitmax => 0,
158 bitmask => 1,
159 },
160 {
161 label => '-',
162 mask_def => 'OPpARG2_MASK',
163 bitmin => 0,
164 bitmax => 1,
165 bitmask => 3,
166 },
167 {
168 label => '-',
169 mask_def => 'OPpARG3_MASK',
170 bitmin => 0,
171 bitmax => 2,
172 bitmask => 7,
173 },
174 {
175 label => '-',
176 mask_def => 'OPpARG4_MASK',
177 bitmin => 0,
178 bitmax => 3,
179 bitmask => 15,
180 },
181 {
182 label => '-',
183 mask_def => 'OPpPADRANGE_COUNTMASK',
184 bitcount_def => 'OPpPADRANGE_COUNTSHIFT',
185 bitmin => 0,
186 bitmax => 6,
187 bitmask => 127,
188 },
189 {
190 label => '-',
191 bitmin => 0,
192 bitmax => 7,
193 bitmask => 255,
194 },
195 {
196 mask_def => 'OPpDEREF',
197 bitmin => 5,
198 bitmax => 6,
199 bitmask => 96,
200 enum => [
201 1, 'OPpDEREF_AV', 'DREFAV',
202 2, 'OPpDEREF_HV', 'DREFHV',
203 3, 'OPpDEREF_SV', 'DREFSV',
204 ],
205 },
206);
207
208@{$bits{aassign}}{6,1,0} = ('OPpASSIGN_COMMON', $bf[1], $bf[1]);
209$bits{abs}{0} = $bf[0];
210@{$bits{accept}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
211@{$bits{add}}{1,0} = ($bf[1], $bf[1]);
212$bits{aeach}{0} = $bf[0];
213@{$bits{aelem}}{6,5,1,0} = ($bf[6], $bf[6], $bf[1], $bf[1]);
214@{$bits{aelemfast}}{7,6,5,4,3,2,1,0} = ($bf[5], $bf[5], $bf[5], $bf[5], $bf[5], $bf[5], $bf[5], $bf[5]);
215@{$bits{aelemfast_lex}}{7,6,5,4,3,2,1,0} = ($bf[5], $bf[5], $bf[5], $bf[5], $bf[5], $bf[5], $bf[5], $bf[5]);
216$bits{akeys}{0} = $bf[0];
217$bits{alarm}{0} = $bf[0];
218$bits{and}{0} = $bf[0];
219$bits{andassign}{0} = $bf[0];
220@{$bits{anonhash}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
221@{$bits{anonlist}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
222@{$bits{atan2}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
223$bits{av2arylen}{0} = $bf[0];
224$bits{avalues}{0} = $bf[0];
225$bits{backtick}{0} = $bf[0];
226@{$bits{bind}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
227@{$bits{binmode}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
228@{$bits{bit_and}}{1,0} = ($bf[1], $bf[1]);
229@{$bits{bit_or}}{1,0} = ($bf[1], $bf[1]);
230@{$bits{bit_xor}}{1,0} = ($bf[1], $bf[1]);
231@{$bits{bless}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
232@{$bits{caller}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
233@{$bits{chdir}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
234@{$bits{chmod}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
235$bits{chomp}{0} = $bf[0];
236$bits{chop}{0} = $bf[0];
237@{$bits{chown}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
238$bits{chr}{0} = $bf[0];
239$bits{chroot}{0} = $bf[0];
240@{$bits{close}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
241$bits{closedir}{0} = $bf[0];
242$bits{complement}{0} = $bf[0];
243@{$bits{concat}}{1,0} = ($bf[1], $bf[1]);
244$bits{cond_expr}{0} = $bf[0];
245@{$bits{connect}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
246@{$bits{const}}{6,4,3,2,1} = ('OPpCONST_BARE', 'OPpCONST_ENTERED', 'OPpCONST_STRICT', 'OPpCONST_SHORTCIRCUIT', 'OPpCONST_NOVER');
247@{$bits{coreargs}}{7,6,1,0} = ('OPpCOREARGS_PUSHMARK', 'OPpCOREARGS_SCALARMOD', 'OPpCOREARGS_DEREF2', 'OPpCOREARGS_DEREF1');
248$bits{cos}{0} = $bf[0];
249@{$bits{crypt}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
250$bits{dbmclose}{0} = $bf[0];
251@{$bits{dbmopen}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
252$bits{defined}{0} = $bf[0];
253@{$bits{delete}}{6,0} = ('OPpSLICE', $bf[0]);
254@{$bits{die}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
255@{$bits{divide}}{1,0} = ($bf[1], $bf[1]);
256$bits{dofile}{0} = $bf[0];
257$bits{dor}{0} = $bf[0];
258$bits{dorassign}{0} = $bf[0];
259$bits{dump}{0} = $bf[0];
260$bits{each}{0} = $bf[0];
261@{$bits{entereval}}{5,4,3,2,1,0} = ('OPpEVAL_RE_REPARSING', 'OPpEVAL_COPHH', 'OPpEVAL_BYTES', 'OPpEVAL_UNICODE', 'OPpEVAL_HAS_HH', $bf[0]);
262$bits{entergiven}{0} = $bf[0];
263$bits{enteriter}{3} = 'OPpITER_DEF';
264@{$bits{entersub}}{6,5,0} = ($bf[6], $bf[6], 'OPpENTERSUB_INARGS');
265$bits{entertry}{0} = $bf[0];
266$bits{enterwhen}{0} = $bf[0];
267@{$bits{enterwrite}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
268@{$bits{eof}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
269@{$bits{eq}}{1,0} = ($bf[1], $bf[1]);
270@{$bits{exec}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
271@{$bits{exists}}{6,0} = ('OPpEXISTS_SUB', $bf[0]);
272@{$bits{exit}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
273$bits{exp}{0} = $bf[0];
274$bits{fc}{0} = $bf[0];
275@{$bits{fcntl}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
276@{$bits{fileno}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
277$bits{flip}{0} = $bf[0];
278@{$bits{flock}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
279$bits{flop}{0} = $bf[0];
280@{$bits{formline}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
281$bits{ftatime}{0} = $bf[0];
282$bits{ftbinary}{0} = $bf[0];
283$bits{ftblk}{0} = $bf[0];
284$bits{ftchr}{0} = $bf[0];
285$bits{ftctime}{0} = $bf[0];
286$bits{ftdir}{0} = $bf[0];
287$bits{fteexec}{0} = $bf[0];
288$bits{fteowned}{0} = $bf[0];
289$bits{fteread}{0} = $bf[0];
290$bits{ftewrite}{0} = $bf[0];
291$bits{ftfile}{0} = $bf[0];
292$bits{ftis}{0} = $bf[0];
293$bits{ftlink}{0} = $bf[0];
294$bits{ftmtime}{0} = $bf[0];
295$bits{ftpipe}{0} = $bf[0];
296$bits{ftrexec}{0} = $bf[0];
297$bits{ftrowned}{0} = $bf[0];
298$bits{ftrread}{0} = $bf[0];
299$bits{ftrwrite}{0} = $bf[0];
300$bits{ftsgid}{0} = $bf[0];
301$bits{ftsize}{0} = $bf[0];
302$bits{ftsock}{0} = $bf[0];
303$bits{ftsuid}{0} = $bf[0];
304$bits{ftsvtx}{0} = $bf[0];
305$bits{fttext}{0} = $bf[0];
306$bits{fttty}{0} = $bf[0];
307$bits{ftzero}{0} = $bf[0];
308@{$bits{ge}}{1,0} = ($bf[1], $bf[1]);
309@{$bits{gelem}}{1,0} = ($bf[1], $bf[1]);
310@{$bits{getc}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
311$bits{getpeername}{0} = $bf[0];
312@{$bits{getpgrp}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
313@{$bits{getpriority}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
314$bits{getsockname}{0} = $bf[0];
315$bits{ggrgid}{0} = $bf[0];
316$bits{ggrnam}{0} = $bf[0];
317@{$bits{ghbyaddr}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
318$bits{ghbyname}{0} = $bf[0];
319@{$bits{glob}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
320@{$bits{gmtime}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
321@{$bits{gnbyaddr}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
322$bits{gnbyname}{0} = $bf[0];
323$bits{goto}{0} = $bf[0];
324$bits{gpbyname}{0} = $bf[0];
325@{$bits{gpbynumber}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
326$bits{gpwnam}{0} = $bf[0];
327$bits{gpwuid}{0} = $bf[0];
328$bits{grepwhile}{0} = $bf[0];
329@{$bits{gsbyname}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
330@{$bits{gsbyport}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
331@{$bits{gsockopt}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
332@{$bits{gt}}{1,0} = ($bf[1], $bf[1]);
333$bits{gv}{5} = 'OPpEARLY_CV';
334@{$bits{helem}}{6,5,1,0} = ($bf[6], $bf[6], $bf[1], $bf[1]);
335$bits{hex}{0} = $bf[0];
336@{$bits{i_add}}{1,0} = ($bf[1], $bf[1]);
337@{$bits{i_divide}}{1,0} = ($bf[1], $bf[1]);
338@{$bits{i_eq}}{1,0} = ($bf[1], $bf[1]);
339@{$bits{i_ge}}{1,0} = ($bf[1], $bf[1]);
340@{$bits{i_gt}}{1,0} = ($bf[1], $bf[1]);
341@{$bits{i_le}}{1,0} = ($bf[1], $bf[1]);
342@{$bits{i_lt}}{1,0} = ($bf[1], $bf[1]);
343@{$bits{i_modulo}}{1,0} = ($bf[1], $bf[1]);
344@{$bits{i_multiply}}{1,0} = ($bf[1], $bf[1]);
345@{$bits{i_ncmp}}{1,0} = ($bf[1], $bf[1]);
346@{$bits{i_ne}}{1,0} = ($bf[1], $bf[1]);
347$bits{i_negate}{0} = $bf[0];
348$bits{i_postdec}{0} = $bf[0];
349$bits{i_postinc}{0} = $bf[0];
350$bits{i_predec}{0} = $bf[0];
351$bits{i_preinc}{0} = $bf[0];
352@{$bits{i_subtract}}{1,0} = ($bf[1], $bf[1]);
353@{$bits{index}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
354$bits{int}{0} = $bf[0];
355@{$bits{ioctl}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
356@{$bits{join}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
357$bits{keys}{0} = $bf[0];
358@{$bits{kill}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
359$bits{last}{0} = $bf[0];
360$bits{lc}{0} = $bf[0];
361$bits{lcfirst}{0} = $bf[0];
362@{$bits{le}}{1,0} = ($bf[1], $bf[1]);
363$bits{leaveeval}{0} = $bf[0];
364$bits{leavegiven}{0} = $bf[0];
365@{$bits{leaveloop}}{1,0} = ($bf[1], $bf[1]);
366$bits{leavesub}{0} = $bf[0];
367$bits{leavesublv}{0} = $bf[0];
368$bits{leavewhen}{0} = $bf[0];
369$bits{leavewrite}{0} = $bf[0];
370@{$bits{left_shift}}{1,0} = ($bf[1], $bf[1]);
371$bits{length}{0} = $bf[0];
372@{$bits{link}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
373$bits{list}{6} = 'OPpLIST_GUESSED';
374@{$bits{listen}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
375$bits{localtime}{0} = $bf[0];
376$bits{lock}{0} = $bf[0];
377$bits{log}{0} = $bf[0];
378@{$bits{lslice}}{1,0} = ($bf[1], $bf[1]);
379$bits{lstat}{0} = $bf[0];
380@{$bits{lt}}{1,0} = ($bf[1], $bf[1]);
381$bits{mapwhile}{0} = $bf[0];
382$bits{method}{0} = $bf[0];
383@{$bits{mkdir}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
384@{$bits{modulo}}{1,0} = ($bf[1], $bf[1]);
385@{$bits{msgctl}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
386@{$bits{msgget}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
387@{$bits{msgrcv}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
388@{$bits{msgsnd}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
389@{$bits{multiply}}{1,0} = ($bf[1], $bf[1]);
390@{$bits{ncmp}}{1,0} = ($bf[1], $bf[1]);
391@{$bits{ne}}{1,0} = ($bf[1], $bf[1]);
392$bits{negate}{0} = $bf[0];
393$bits{next}{0} = $bf[0];
394$bits{not}{0} = $bf[0];
395$bits{oct}{0} = $bf[0];
396$bits{once}{0} = $bf[0];
397@{$bits{open}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
398@{$bits{open_dir}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
399$bits{or}{0} = $bf[0];
400$bits{orassign}{0} = $bf[0];
401$bits{ord}{0} = $bf[0];
402@{$bits{pack}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
403@{$bits{padrange}}{6,5,4,3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4], $bf[4], $bf[4], $bf[4]);
404@{$bits{padsv}}{6,5} = ($bf[6], $bf[6]);
405@{$bits{pipe_op}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
406$bits{pop}{0} = $bf[0];
407$bits{pos}{0} = $bf[0];
408$bits{postdec}{0} = $bf[0];
409$bits{postinc}{0} = $bf[0];
410@{$bits{pow}}{1,0} = ($bf[1], $bf[1]);
411$bits{predec}{0} = $bf[0];
412$bits{preinc}{0} = $bf[0];
413$bits{prototype}{0} = $bf[0];
414@{$bits{push}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
415$bits{quotemeta}{0} = $bf[0];
416@{$bits{rand}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
417$bits{range}{0} = $bf[0];
418$bits{reach}{0} = $bf[0];
419@{$bits{read}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
420$bits{readdir}{0} = $bf[0];
421$bits{readline}{0} = $bf[0];
422$bits{readlink}{0} = $bf[0];
423@{$bits{recv}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
424$bits{redo}{0} = $bf[0];
425$bits{ref}{0} = $bf[0];
426$bits{refgen}{0} = $bf[0];
427$bits{regcmaybe}{0} = $bf[0];
428$bits{regcomp}{0} = $bf[0];
429$bits{regcreset}{0} = $bf[0];
430@{$bits{rename}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
431@{$bits{repeat}}{6,1,0} = ('OPpREPEAT_DOLIST', $bf[1], $bf[1]);
432$bits{require}{0} = $bf[0];
433@{$bits{reset}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
434@{$bits{reverse}}{3,0} = ('OPpREVERSE_INPLACE', $bf[0]);
435$bits{rewinddir}{0} = $bf[0];
436@{$bits{right_shift}}{1,0} = ($bf[1], $bf[1]);
437@{$bits{rindex}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
438$bits{rkeys}{0} = $bf[0];
439$bits{rmdir}{0} = $bf[0];
440$bits{rv2av}{0} = $bf[0];
441@{$bits{rv2cv}}{7,6,0} = ('OPpENTERSUB_NOPAREN', 'OPpMAY_RETURN_CONSTANT', $bf[0]);
442@{$bits{rv2gv}}{6,5,4,2,0} = ($bf[6], $bf[6], 'OPpALLOW_FAKE', 'OPpDONT_INIT_GV', $bf[0]);
443$bits{rv2hv}{0} = $bf[0];
444@{$bits{rv2sv}}{6,5,0} = ($bf[6], $bf[6], $bf[0]);
445$bits{rvalues}{0} = $bf[0];
446@{$bits{sassign}}{7,6,1,0} = ('OPpASSIGN_CV_TO_GV', 'OPpASSIGN_BACKWARDS', $bf[1], $bf[1]);
447$bits{scalar}{0} = $bf[0];
448$bits{schomp}{0} = $bf[0];
449$bits{schop}{0} = $bf[0];
450@{$bits{scmp}}{1,0} = ($bf[1], $bf[1]);
451@{$bits{seek}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
452@{$bits{seekdir}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
453@{$bits{select}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
454@{$bits{semctl}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
455@{$bits{semget}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
456@{$bits{semop}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
457@{$bits{send}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
458@{$bits{seq}}{1,0} = ($bf[1], $bf[1]);
459@{$bits{setpgrp}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
460@{$bits{setpriority}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
461@{$bits{sge}}{1,0} = ($bf[1], $bf[1]);
462@{$bits{sgt}}{1,0} = ($bf[1], $bf[1]);
463$bits{shift}{0} = $bf[0];
464@{$bits{shmctl}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
465@{$bits{shmget}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
466@{$bits{shmread}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
467@{$bits{shmwrite}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
468$bits{shostent}{0} = $bf[0];
469@{$bits{shutdown}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
470$bits{sin}{0} = $bf[0];
471@{$bits{sle}}{1,0} = ($bf[1], $bf[1]);
472@{$bits{sleep}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
473@{$bits{slt}}{1,0} = ($bf[1], $bf[1]);
474@{$bits{smartmatch}}{1,0} = ($bf[1], $bf[1]);
475@{$bits{sne}}{1,0} = ($bf[1], $bf[1]);
476$bits{snetent}{0} = $bf[0];
477@{$bits{socket}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
478@{$bits{sockpair}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
479@{$bits{sort}}{6,5,4,3,2,1,0} = ('OPpSORT_STABLE', 'OPpSORT_QSORT', 'OPpSORT_DESCEND', 'OPpSORT_INPLACE', 'OPpSORT_REVERSE', 'OPpSORT_INTEGER', 'OPpSORT_NUMERIC');
480@{$bits{splice}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
481$bits{split}{7} = 'OPpSPLIT_IMPLIM';
482@{$bits{sprintf}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
483$bits{sprotoent}{0} = $bf[0];
484$bits{sqrt}{0} = $bf[0];
485@{$bits{srand}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
486$bits{srefgen}{0} = $bf[0];
487@{$bits{sselect}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
488$bits{sservent}{0} = $bf[0];
489@{$bits{ssockopt}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
490$bits{stat}{0} = $bf[0];
491@{$bits{stringify}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
492$bits{study}{0} = $bf[0];
493$bits{substcont}{0} = $bf[0];
494@{$bits{substr}}{4,2,1,0} = ('OPpSUBSTR_REPL_FIRST', $bf[2], $bf[2], $bf[2]);
495@{$bits{subtract}}{1,0} = ($bf[1], $bf[1]);
496@{$bits{symlink}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
497@{$bits{syscall}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
498@{$bits{sysopen}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
499@{$bits{sysread}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
500@{$bits{sysseek}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
501@{$bits{system}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
502@{$bits{syswrite}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
503@{$bits{tell}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
504$bits{telldir}{0} = $bf[0];
505@{$bits{tie}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
506$bits{tied}{0} = $bf[0];
507@{$bits{truncate}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
508$bits{uc}{0} = $bf[0];
509$bits{ucfirst}{0} = $bf[0];
510@{$bits{umask}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
511$bits{undef}{0} = $bf[0];
512@{$bits{unlink}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
513@{$bits{unpack}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
514@{$bits{unshift}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
515$bits{untie}{0} = $bf[0];
516@{$bits{utime}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
517$bits{values}{0} = $bf[0];
518@{$bits{vec}}{1,0} = ($bf[1], $bf[1]);
519@{$bits{waitpid}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
520@{$bits{warn}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
521@{$bits{xor}}{1,0} = ($bf[1], $bf[1]);
522
523
524our %defines = (
525 OPpALLOW_FAKE => 16,
526 OPpARG1_MASK => 1,
527 OPpARG2_MASK => 3,
528 OPpARG3_MASK => 7,
529 OPpARG4_MASK => 15,
530 OPpASSIGN_BACKWARDS => 64,
531 OPpASSIGN_COMMON => 64,
532 OPpASSIGN_CV_TO_GV => 128,
533 OPpCONST_BARE => 64,
534 OPpCONST_ENTERED => 16,
535 OPpCONST_NOVER => 2,
536 OPpCONST_SHORTCIRCUIT => 4,
537 OPpCONST_STRICT => 8,
538 OPpCOREARGS_DEREF1 => 1,
539 OPpCOREARGS_DEREF2 => 2,
540 OPpCOREARGS_PUSHMARK => 128,
541 OPpCOREARGS_SCALARMOD => 64,
542 OPpDEREF => 96,
543 OPpDEREF_AV => 32,
544 OPpDEREF_HV => 64,
545 OPpDEREF_SV => 96,
546 OPpDONT_INIT_GV => 4,
547 OPpEARLY_CV => 32,
548 OPpENTERSUB_AMPER => 8,
549 OPpENTERSUB_DB => 16,
550 OPpENTERSUB_HASTARG => 4,
551 OPpENTERSUB_INARGS => 1,
552 OPpENTERSUB_NOPAREN => 128,
553 OPpEVAL_BYTES => 8,
554 OPpEVAL_COPHH => 16,
555 OPpEVAL_HAS_HH => 2,
556 OPpEVAL_RE_REPARSING => 32,
557 OPpEVAL_UNICODE => 4,
558 OPpEXISTS_SUB => 64,
559 OPpFLIP_LINENUM => 64,
560 OPpFT_ACCESS => 2,
561 OPpFT_AFTER_t => 16,
562 OPpFT_STACKED => 4,
563 OPpFT_STACKING => 8,
564 OPpGREP_LEX => 2,
565 OPpHINT_M_VMSISH_STATUS => 64,
566 OPpHINT_M_VMSISH_TIME => 128,
567 OPpHINT_STRICT_REFS => 2,
568 OPpHUSH_VMSISH => 32,
569 OPpITER_DEF => 8,
570 OPpITER_REVERSED => 4,
571 OPpLIST_GUESSED => 64,
572 OPpLVALUE => 128,
573 OPpLVAL_DEFER => 16,
574 OPpLVAL_INTRO => 128,
575 OPpMAYBE_LVSUB => 8,
576 OPpMAYBE_TRUEBOOL => 64,
577 OPpMAY_RETURN_CONSTANT => 64,
578 OPpOFFBYONE => 128,
579 OPpOPEN_IN_CRLF => 32,
580 OPpOPEN_IN_RAW => 16,
581 OPpOPEN_OUT_CRLF => 128,
582 OPpOPEN_OUT_RAW => 64,
583 OPpOUR_INTRO => 16,
584 OPpPADRANGE_COUNTMASK => 127,
585 OPpPADRANGE_COUNTSHIFT => 7,
586 OPpPAD_STATE => 16,
587 OPpPV_IS_UTF8 => 128,
588 OPpREFCOUNTED => 64,
589 OPpREPEAT_DOLIST => 64,
590 OPpREVERSE_INPLACE => 8,
591 OPpRUNTIME => 64,
592 OPpSLICE => 64,
593 OPpSLICEWARNING => 4,
594 OPpSORT_DESCEND => 16,
595 OPpSORT_INPLACE => 8,
596 OPpSORT_INTEGER => 2,
597 OPpSORT_NUMERIC => 1,
598 OPpSORT_QSORT => 32,
599 OPpSORT_REVERSE => 4,
600 OPpSORT_STABLE => 64,
601 OPpSPLIT_IMPLIM => 128,
602 OPpSUBSTR_REPL_FIRST => 16,
603 OPpTARGET_MY => 16,
604 OPpTRANS_COMPLEMENT => 32,
605 OPpTRANS_DELETE => 128,
606 OPpTRANS_FROM_UTF => 1,
607 OPpTRANS_GROWS => 64,
608 OPpTRANS_IDENTICAL => 4,
609 OPpTRANS_SQUASH => 8,
610 OPpTRANS_TO_UTF => 2,
611 OPpTRUEBOOL => 32,
612);
613
614our %labels = (
615 OPpALLOW_FAKE => 'FAKE',
616 OPpASSIGN_BACKWARDS => 'BKWARD',
617 OPpASSIGN_COMMON => 'COMMON',
618 OPpASSIGN_CV_TO_GV => 'CV2GV',
619 OPpCONST_BARE => 'BARE',
620 OPpCONST_ENTERED => 'ENTERED',
621 OPpCONST_NOVER => 'NOVER',
622 OPpCONST_SHORTCIRCUIT => 'SHORT',
623 OPpCONST_STRICT => 'STRICT',
624 OPpCOREARGS_DEREF1 => 'DEREF1',
625 OPpCOREARGS_DEREF2 => 'DEREF2',
626 OPpCOREARGS_PUSHMARK => 'MARK',
627 OPpCOREARGS_SCALARMOD => '$MOD',
628 OPpDEREF_AV => 'DREFAV',
629 OPpDEREF_HV => 'DREFHV',
630 OPpDEREF_SV => 'DREFSV',
631 OPpDONT_INIT_GV => 'NOINIT',
632 OPpEARLY_CV => 'EARLYCV',
633 OPpENTERSUB_AMPER => 'AMPER',
634 OPpENTERSUB_DB => 'DBG',
635 OPpENTERSUB_HASTARG => 'TARG',
636 OPpENTERSUB_INARGS => 'INARGS',
637 OPpENTERSUB_NOPAREN => 'NO()',
638 OPpEVAL_BYTES => 'BYTES',
639 OPpEVAL_COPHH => 'COPHH',
640 OPpEVAL_HAS_HH => 'HAS_HH',
c486bd5c 641 OPpEVAL_RE_REPARSING => 'REPARSE',
f3574cc6
DM
642 OPpEVAL_UNICODE => 'UNI',
643 OPpEXISTS_SUB => 'SUB',
644 OPpFLIP_LINENUM => 'LINENUM',
645 OPpFT_ACCESS => 'FTACCESS',
646 OPpFT_AFTER_t => 'FTAFTERt',
647 OPpFT_STACKED => 'FTSTACKED',
648 OPpFT_STACKING => 'FTSTACKING',
649 OPpGREP_LEX => 'GREPLEX',
650 OPpHINT_M_VMSISH_STATUS => 'VMSISH_STATUS',
651 OPpHINT_M_VMSISH_TIME => 'VMSISH_TIME',
c486bd5c 652 OPpHINT_STRICT_REFS => 'STRICT',
f3574cc6 653 OPpHUSH_VMSISH => 'HUSH',
c486bd5c 654 OPpITER_DEF => 'DEF',
f3574cc6
DM
655 OPpITER_REVERSED => 'REVERSED',
656 OPpLIST_GUESSED => 'GUESSED',
657 OPpLVALUE => 'LV',
658 OPpLVAL_DEFER => 'LVDEFER',
659 OPpLVAL_INTRO => 'LVINTRO',
660 OPpMAYBE_LVSUB => 'LVSUB',
661 OPpMAYBE_TRUEBOOL => 'BOOL?',
662 OPpMAY_RETURN_CONSTANT => 'CONST',
663 OPpOFFBYONE => '+1',
664 OPpOPEN_IN_CRLF => 'INCR',
665 OPpOPEN_IN_RAW => 'INBIN',
666 OPpOPEN_OUT_CRLF => 'OUTCR',
667 OPpOPEN_OUT_RAW => 'OUTBIN',
668 OPpOUR_INTRO => 'OURINTR',
669 OPpPAD_STATE => 'STATE',
670 OPpPV_IS_UTF8 => 'UTF',
671 OPpREFCOUNTED => 'REFC',
672 OPpREPEAT_DOLIST => 'DOLIST',
673 OPpREVERSE_INPLACE => 'INPLACE',
674 OPpRUNTIME => 'RTIME',
675 OPpSLICE => 'SLICE',
676 OPpSLICEWARNING => 'SLICEWARN',
677 OPpSORT_DESCEND => 'DESC',
678 OPpSORT_INPLACE => 'INPLACE',
679 OPpSORT_INTEGER => 'INT',
680 OPpSORT_NUMERIC => 'NUM',
681 OPpSORT_QSORT => 'QSORT',
682 OPpSORT_REVERSE => 'REV',
683 OPpSORT_STABLE => 'STABLE',
684 OPpSPLIT_IMPLIM => 'IMPLIM',
685 OPpSUBSTR_REPL_FIRST => 'REPL1ST',
686 OPpTARGET_MY => 'TARGMY',
687 OPpTRANS_COMPLEMENT => 'COMPL',
688 OPpTRANS_DELETE => 'DEL',
689 OPpTRANS_FROM_UTF => '<UTF',
690 OPpTRANS_GROWS => 'GROWS',
691 OPpTRANS_IDENTICAL => 'IDENT',
692 OPpTRANS_SQUASH => 'SQUASH',
693 OPpTRANS_TO_UTF => '>UTF',
694 OPpTRUEBOOL => 'BOOL',
695);
696
697# ex: set ro: