Commit | Line | Data |
---|---|---|
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 | ||
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 | ||
dc1230de | 34 | This module provides four global hashes: |
f3574cc6 DM |
35 | |
36 | %B::Op_private::bits | |
37 | %B::Op_private::defines | |
38 | %B::Op_private::labels | |
dc1230de | 39 | %B::Op_private::ops_using |
f3574cc6 DM |
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=' | |
cdb679b6 FC |
74 | # prefix. If it equals '-', then Concise will treat the bit |
75 | # field as raw bits and not try to interpret it. | |
f3574cc6 DM |
76 | label => 'FOO', |
77 | ||
2febb45a FC |
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'. | |
f3574cc6 DM |
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 | ||
dc1230de FC |
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 | ||
f3574cc6 DM |
114 | =cut |
115 | ||
116 | package B::Op_private; | |
117 | ||
118 | our %bits; | |
119 | ||
99275276 | 120 | |
e31034da | 121 | our $VERSION = "5.021008"; |
99275276 | 122 | |
f3574cc6 | 123 | $bits{$_}{3} = 'OPpENTERSUB_AMPER' for qw(entersub rv2cv); |
9e209402 | 124 | $bits{$_}{6} = 'OPpENTERSUB_DB' for qw(entersub rv2cv); |
f3574cc6 DM |
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} = 'OPpGREP_LEX' for qw(grepstart grepwhile mapstart mapwhile); | |
fedf30e1 | 132 | $bits{$_}{1} = 'OPpHINT_STRICT_REFS' for qw(entersub multideref rv2av rv2cv rv2gv rv2hv rv2sv); |
f3574cc6 DM |
133 | $bits{$_}{5} = 'OPpHUSH_VMSISH' for qw(dbstate nextstate); |
134 | $bits{$_}{2} = 'OPpITER_REVERSED' for qw(enteriter iter); | |
135 | $bits{$_}{7} = 'OPpLVALUE' for qw(leave leaveloop); | |
fedf30e1 DM |
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 multideref padav padhv padrange padsv pushmark refassign rv2av rv2gv rv2hv rv2sv); | |
6102323a | 138 | $bits{$_}{2} = 'OPpLVREF_ELEM' for qw(lvref refassign); |
5a36b2c0 | 139 | $bits{$_}{3} = 'OPpLVREF_ITER' for qw(lvref refassign); |
fedf30e1 | 140 | $bits{$_}{3} = 'OPpMAYBE_LVSUB' for qw(aassign aelem aslice av2arylen helem hslice keys kvaslice kvhslice multideref padav padhv pos rkeys rv2av rv2gv rv2hv substr vec); |
9e209402 | 141 | $bits{$_}{4} = 'OPpMAYBE_TRUEBOOL' for qw(padhv rv2hv); |
f3574cc6 DM |
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); | |
9e209402 FC |
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); | |
f3574cc6 DM |
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{$_}{6} = 'OPpRUNTIME' for qw(match pushre qr subst substcont); | |
152 | $bits{$_}{2} = 'OPpSLICEWARNING' for qw(aslice hslice padav padhv rv2av rv2hv); | |
33de0f79 | 153 | $bits{$_}{4} = 'OPpTARGET_MY' for qw(abs add atan2 chdir chmod chomp chown chr chroot complement concat cos crypt divide exec exp flock getpgrp getppid getpriority hex i_add i_divide i_modulo i_multiply i_ncmp i_subtract index int kill left_shift length link log match mkdir modulo multiply oct ord pow push rand rename repeat right_shift rindex rmdir schomp scmp setpgrp setpriority sin sleep split sqrt srand stringify subst subtract symlink system time trans transr unlink unshift utime vec wait waitpid); |
f3574cc6 DM |
154 | $bits{$_}{5} = 'OPpTRANS_COMPLEMENT' for qw(trans transr); |
155 | $bits{$_}{7} = 'OPpTRANS_DELETE' for qw(trans transr); | |
156 | $bits{$_}{0} = 'OPpTRANS_FROM_UTF' for qw(trans transr); | |
157 | $bits{$_}{6} = 'OPpTRANS_GROWS' for qw(trans transr); | |
158 | $bits{$_}{2} = 'OPpTRANS_IDENTICAL' for qw(trans transr); | |
159 | $bits{$_}{3} = 'OPpTRANS_SQUASH' for qw(trans transr); | |
160 | $bits{$_}{1} = 'OPpTRANS_TO_UTF' for qw(trans transr); | |
161 | $bits{$_}{5} = 'OPpTRUEBOOL' for qw(padhv rv2hv); | |
162 | ||
163 | my @bf = ( | |
164 | { | |
165 | label => '-', | |
166 | mask_def => 'OPpARG1_MASK', | |
167 | bitmin => 0, | |
168 | bitmax => 0, | |
169 | bitmask => 1, | |
170 | }, | |
171 | { | |
172 | label => '-', | |
173 | mask_def => 'OPpARG2_MASK', | |
174 | bitmin => 0, | |
175 | bitmax => 1, | |
176 | bitmask => 3, | |
177 | }, | |
178 | { | |
179 | label => '-', | |
180 | mask_def => 'OPpARG3_MASK', | |
181 | bitmin => 0, | |
182 | bitmax => 2, | |
183 | bitmask => 7, | |
184 | }, | |
185 | { | |
186 | label => '-', | |
187 | mask_def => 'OPpARG4_MASK', | |
188 | bitmin => 0, | |
189 | bitmax => 3, | |
190 | bitmask => 15, | |
191 | }, | |
192 | { | |
193 | label => '-', | |
194 | mask_def => 'OPpPADRANGE_COUNTMASK', | |
195 | bitcount_def => 'OPpPADRANGE_COUNTSHIFT', | |
196 | bitmin => 0, | |
197 | bitmax => 6, | |
198 | bitmask => 127, | |
199 | }, | |
200 | { | |
201 | label => '-', | |
202 | bitmin => 0, | |
203 | bitmax => 7, | |
204 | bitmask => 255, | |
205 | }, | |
206 | { | |
207 | mask_def => 'OPpDEREF', | |
9e209402 FC |
208 | bitmin => 4, |
209 | bitmax => 5, | |
210 | bitmask => 48, | |
f3574cc6 DM |
211 | enum => [ |
212 | 1, 'OPpDEREF_AV', 'DREFAV', | |
213 | 2, 'OPpDEREF_HV', 'DREFHV', | |
214 | 3, 'OPpDEREF_SV', 'DREFSV', | |
215 | ], | |
216 | }, | |
7aa5b458 FC |
217 | { |
218 | mask_def => 'OPpLVREF_TYPE', | |
9e209402 FC |
219 | bitmin => 4, |
220 | bitmax => 5, | |
221 | bitmask => 48, | |
7aa5b458 FC |
222 | enum => [ |
223 | 0, 'OPpLVREF_SV', 'SV', | |
224 | 1, 'OPpLVREF_AV', 'AV', | |
225 | 2, 'OPpLVREF_HV', 'HV', | |
226 | 3, 'OPpLVREF_CV', 'CV', | |
227 | ], | |
228 | }, | |
f3574cc6 DM |
229 | ); |
230 | ||
231 | @{$bits{aassign}}{6,1,0} = ('OPpASSIGN_COMMON', $bf[1], $bf[1]); | |
232 | $bits{abs}{0} = $bf[0]; | |
233 | @{$bits{accept}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
234 | @{$bits{add}}{1,0} = ($bf[1], $bf[1]); | |
235 | $bits{aeach}{0} = $bf[0]; | |
9e209402 | 236 | @{$bits{aelem}}{5,4,1,0} = ($bf[6], $bf[6], $bf[1], $bf[1]); |
f3574cc6 DM |
237 | @{$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]); |
238 | @{$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]); | |
239 | $bits{akeys}{0} = $bf[0]; | |
240 | $bits{alarm}{0} = $bf[0]; | |
241 | $bits{and}{0} = $bf[0]; | |
242 | $bits{andassign}{0} = $bf[0]; | |
243 | @{$bits{anonhash}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
244 | @{$bits{anonlist}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
245 | @{$bits{atan2}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
246 | $bits{av2arylen}{0} = $bf[0]; | |
247 | $bits{avalues}{0} = $bf[0]; | |
248 | $bits{backtick}{0} = $bf[0]; | |
249 | @{$bits{bind}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
250 | @{$bits{binmode}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
251 | @{$bits{bit_and}}{1,0} = ($bf[1], $bf[1]); | |
252 | @{$bits{bit_or}}{1,0} = ($bf[1], $bf[1]); | |
253 | @{$bits{bit_xor}}{1,0} = ($bf[1], $bf[1]); | |
254 | @{$bits{bless}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
255 | @{$bits{caller}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
256 | @{$bits{chdir}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
257 | @{$bits{chmod}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
258 | $bits{chomp}{0} = $bf[0]; | |
259 | $bits{chop}{0} = $bf[0]; | |
260 | @{$bits{chown}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
261 | $bits{chr}{0} = $bf[0]; | |
262 | $bits{chroot}{0} = $bf[0]; | |
263 | @{$bits{close}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
264 | $bits{closedir}{0} = $bf[0]; | |
265 | $bits{complement}{0} = $bf[0]; | |
266 | @{$bits{concat}}{1,0} = ($bf[1], $bf[1]); | |
267 | $bits{cond_expr}{0} = $bf[0]; | |
268 | @{$bits{connect}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
269 | @{$bits{const}}{6,4,3,2,1} = ('OPpCONST_BARE', 'OPpCONST_ENTERED', 'OPpCONST_STRICT', 'OPpCONST_SHORTCIRCUIT', 'OPpCONST_NOVER'); | |
270 | @{$bits{coreargs}}{7,6,1,0} = ('OPpCOREARGS_PUSHMARK', 'OPpCOREARGS_SCALARMOD', 'OPpCOREARGS_DEREF2', 'OPpCOREARGS_DEREF1'); | |
271 | $bits{cos}{0} = $bf[0]; | |
272 | @{$bits{crypt}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
273 | $bits{dbmclose}{0} = $bf[0]; | |
274 | @{$bits{dbmopen}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
275 | $bits{defined}{0} = $bf[0]; | |
276 | @{$bits{delete}}{6,0} = ('OPpSLICE', $bf[0]); | |
277 | @{$bits{die}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
278 | @{$bits{divide}}{1,0} = ($bf[1], $bf[1]); | |
279 | $bits{dofile}{0} = $bf[0]; | |
280 | $bits{dor}{0} = $bf[0]; | |
281 | $bits{dorassign}{0} = $bf[0]; | |
282 | $bits{dump}{0} = $bf[0]; | |
283 | $bits{each}{0} = $bf[0]; | |
284 | @{$bits{entereval}}{5,4,3,2,1,0} = ('OPpEVAL_RE_REPARSING', 'OPpEVAL_COPHH', 'OPpEVAL_BYTES', 'OPpEVAL_UNICODE', 'OPpEVAL_HAS_HH', $bf[0]); | |
285 | $bits{entergiven}{0} = $bf[0]; | |
286 | $bits{enteriter}{3} = 'OPpITER_DEF'; | |
9e209402 | 287 | @{$bits{entersub}}{5,4,0} = ($bf[6], $bf[6], 'OPpENTERSUB_INARGS'); |
f3574cc6 DM |
288 | $bits{entertry}{0} = $bf[0]; |
289 | $bits{enterwhen}{0} = $bf[0]; | |
290 | @{$bits{enterwrite}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
291 | @{$bits{eof}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
292 | @{$bits{eq}}{1,0} = ($bf[1], $bf[1]); | |
293 | @{$bits{exec}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
294 | @{$bits{exists}}{6,0} = ('OPpEXISTS_SUB', $bf[0]); | |
295 | @{$bits{exit}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
296 | $bits{exp}{0} = $bf[0]; | |
297 | $bits{fc}{0} = $bf[0]; | |
298 | @{$bits{fcntl}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
299 | @{$bits{fileno}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
300 | $bits{flip}{0} = $bf[0]; | |
301 | @{$bits{flock}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
302 | $bits{flop}{0} = $bf[0]; | |
303 | @{$bits{formline}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
304 | $bits{ftatime}{0} = $bf[0]; | |
305 | $bits{ftbinary}{0} = $bf[0]; | |
306 | $bits{ftblk}{0} = $bf[0]; | |
307 | $bits{ftchr}{0} = $bf[0]; | |
308 | $bits{ftctime}{0} = $bf[0]; | |
309 | $bits{ftdir}{0} = $bf[0]; | |
310 | $bits{fteexec}{0} = $bf[0]; | |
311 | $bits{fteowned}{0} = $bf[0]; | |
312 | $bits{fteread}{0} = $bf[0]; | |
313 | $bits{ftewrite}{0} = $bf[0]; | |
314 | $bits{ftfile}{0} = $bf[0]; | |
315 | $bits{ftis}{0} = $bf[0]; | |
316 | $bits{ftlink}{0} = $bf[0]; | |
317 | $bits{ftmtime}{0} = $bf[0]; | |
318 | $bits{ftpipe}{0} = $bf[0]; | |
319 | $bits{ftrexec}{0} = $bf[0]; | |
320 | $bits{ftrowned}{0} = $bf[0]; | |
321 | $bits{ftrread}{0} = $bf[0]; | |
322 | $bits{ftrwrite}{0} = $bf[0]; | |
323 | $bits{ftsgid}{0} = $bf[0]; | |
324 | $bits{ftsize}{0} = $bf[0]; | |
325 | $bits{ftsock}{0} = $bf[0]; | |
326 | $bits{ftsuid}{0} = $bf[0]; | |
327 | $bits{ftsvtx}{0} = $bf[0]; | |
328 | $bits{fttext}{0} = $bf[0]; | |
329 | $bits{fttty}{0} = $bf[0]; | |
330 | $bits{ftzero}{0} = $bf[0]; | |
331 | @{$bits{ge}}{1,0} = ($bf[1], $bf[1]); | |
332 | @{$bits{gelem}}{1,0} = ($bf[1], $bf[1]); | |
333 | @{$bits{getc}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
334 | $bits{getpeername}{0} = $bf[0]; | |
335 | @{$bits{getpgrp}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
336 | @{$bits{getpriority}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
337 | $bits{getsockname}{0} = $bf[0]; | |
338 | $bits{ggrgid}{0} = $bf[0]; | |
339 | $bits{ggrnam}{0} = $bf[0]; | |
340 | @{$bits{ghbyaddr}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
341 | $bits{ghbyname}{0} = $bf[0]; | |
342 | @{$bits{glob}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
343 | @{$bits{gmtime}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
344 | @{$bits{gnbyaddr}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
345 | $bits{gnbyname}{0} = $bf[0]; | |
346 | $bits{goto}{0} = $bf[0]; | |
347 | $bits{gpbyname}{0} = $bf[0]; | |
348 | @{$bits{gpbynumber}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
349 | $bits{gpwnam}{0} = $bf[0]; | |
350 | $bits{gpwuid}{0} = $bf[0]; | |
351 | $bits{grepwhile}{0} = $bf[0]; | |
352 | @{$bits{gsbyname}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
353 | @{$bits{gsbyport}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
354 | @{$bits{gsockopt}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
355 | @{$bits{gt}}{1,0} = ($bf[1], $bf[1]); | |
356 | $bits{gv}{5} = 'OPpEARLY_CV'; | |
9e209402 | 357 | @{$bits{helem}}{5,4,1,0} = ($bf[6], $bf[6], $bf[1], $bf[1]); |
f3574cc6 DM |
358 | $bits{hex}{0} = $bf[0]; |
359 | @{$bits{i_add}}{1,0} = ($bf[1], $bf[1]); | |
360 | @{$bits{i_divide}}{1,0} = ($bf[1], $bf[1]); | |
361 | @{$bits{i_eq}}{1,0} = ($bf[1], $bf[1]); | |
362 | @{$bits{i_ge}}{1,0} = ($bf[1], $bf[1]); | |
363 | @{$bits{i_gt}}{1,0} = ($bf[1], $bf[1]); | |
364 | @{$bits{i_le}}{1,0} = ($bf[1], $bf[1]); | |
365 | @{$bits{i_lt}}{1,0} = ($bf[1], $bf[1]); | |
366 | @{$bits{i_modulo}}{1,0} = ($bf[1], $bf[1]); | |
367 | @{$bits{i_multiply}}{1,0} = ($bf[1], $bf[1]); | |
368 | @{$bits{i_ncmp}}{1,0} = ($bf[1], $bf[1]); | |
369 | @{$bits{i_ne}}{1,0} = ($bf[1], $bf[1]); | |
370 | $bits{i_negate}{0} = $bf[0]; | |
371 | $bits{i_postdec}{0} = $bf[0]; | |
372 | $bits{i_postinc}{0} = $bf[0]; | |
373 | $bits{i_predec}{0} = $bf[0]; | |
374 | $bits{i_preinc}{0} = $bf[0]; | |
375 | @{$bits{i_subtract}}{1,0} = ($bf[1], $bf[1]); | |
376 | @{$bits{index}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
377 | $bits{int}{0} = $bf[0]; | |
378 | @{$bits{ioctl}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
379 | @{$bits{join}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
380 | $bits{keys}{0} = $bf[0]; | |
381 | @{$bits{kill}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
382 | $bits{last}{0} = $bf[0]; | |
383 | $bits{lc}{0} = $bf[0]; | |
384 | $bits{lcfirst}{0} = $bf[0]; | |
385 | @{$bits{le}}{1,0} = ($bf[1], $bf[1]); | |
386 | $bits{leaveeval}{0} = $bf[0]; | |
387 | $bits{leavegiven}{0} = $bf[0]; | |
388 | @{$bits{leaveloop}}{1,0} = ($bf[1], $bf[1]); | |
389 | $bits{leavesub}{0} = $bf[0]; | |
390 | $bits{leavesublv}{0} = $bf[0]; | |
391 | $bits{leavewhen}{0} = $bf[0]; | |
392 | $bits{leavewrite}{0} = $bf[0]; | |
393 | @{$bits{left_shift}}{1,0} = ($bf[1], $bf[1]); | |
394 | $bits{length}{0} = $bf[0]; | |
395 | @{$bits{link}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
396 | $bits{list}{6} = 'OPpLIST_GUESSED'; | |
397 | @{$bits{listen}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
398 | $bits{localtime}{0} = $bf[0]; | |
399 | $bits{lock}{0} = $bf[0]; | |
400 | $bits{log}{0} = $bf[0]; | |
401 | @{$bits{lslice}}{1,0} = ($bf[1], $bf[1]); | |
402 | $bits{lstat}{0} = $bf[0]; | |
403 | @{$bits{lt}}{1,0} = ($bf[1], $bf[1]); | |
2882b3ff | 404 | $bits{lvavref}{0} = $bf[0]; |
9e209402 | 405 | @{$bits{lvref}}{5,4,0} = ($bf[7], $bf[7], $bf[0]); |
f3574cc6 DM |
406 | $bits{mapwhile}{0} = $bf[0]; |
407 | $bits{method}{0} = $bf[0]; | |
b46e009d | 408 | $bits{method_named}{0} = $bf[0]; |
810bd8b7 | 409 | $bits{method_redir}{0} = $bf[0]; |
410 | $bits{method_redir_super}{0} = $bf[0]; | |
7d6c333c | 411 | $bits{method_super}{0} = $bf[0]; |
f3574cc6 DM |
412 | @{$bits{mkdir}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); |
413 | @{$bits{modulo}}{1,0} = ($bf[1], $bf[1]); | |
414 | @{$bits{msgctl}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
415 | @{$bits{msgget}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
416 | @{$bits{msgrcv}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
417 | @{$bits{msgsnd}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
fedf30e1 | 418 | @{$bits{multideref}}{5,4,0} = ('OPpMULTIDEREF_DELETE', 'OPpMULTIDEREF_EXISTS', $bf[0]); |
f3574cc6 DM |
419 | @{$bits{multiply}}{1,0} = ($bf[1], $bf[1]); |
420 | @{$bits{ncmp}}{1,0} = ($bf[1], $bf[1]); | |
421 | @{$bits{ne}}{1,0} = ($bf[1], $bf[1]); | |
422 | $bits{negate}{0} = $bf[0]; | |
423 | $bits{next}{0} = $bf[0]; | |
424 | $bits{not}{0} = $bf[0]; | |
425 | $bits{oct}{0} = $bf[0]; | |
426 | $bits{once}{0} = $bf[0]; | |
427 | @{$bits{open}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
428 | @{$bits{open_dir}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
429 | $bits{or}{0} = $bf[0]; | |
430 | $bits{orassign}{0} = $bf[0]; | |
431 | $bits{ord}{0} = $bf[0]; | |
432 | @{$bits{pack}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
433 | @{$bits{padrange}}{6,5,4,3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4], $bf[4], $bf[4], $bf[4]); | |
9e209402 | 434 | @{$bits{padsv}}{5,4} = ($bf[6], $bf[6]); |
f3574cc6 DM |
435 | @{$bits{pipe_op}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); |
436 | $bits{pop}{0} = $bf[0]; | |
437 | $bits{pos}{0} = $bf[0]; | |
438 | $bits{postdec}{0} = $bf[0]; | |
439 | $bits{postinc}{0} = $bf[0]; | |
440 | @{$bits{pow}}{1,0} = ($bf[1], $bf[1]); | |
441 | $bits{predec}{0} = $bf[0]; | |
442 | $bits{preinc}{0} = $bf[0]; | |
443 | $bits{prototype}{0} = $bf[0]; | |
444 | @{$bits{push}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
445 | $bits{quotemeta}{0} = $bf[0]; | |
446 | @{$bits{rand}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
447 | $bits{range}{0} = $bf[0]; | |
448 | $bits{reach}{0} = $bf[0]; | |
449 | @{$bits{read}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
450 | $bits{readdir}{0} = $bf[0]; | |
451 | $bits{readline}{0} = $bf[0]; | |
452 | $bits{readlink}{0} = $bf[0]; | |
453 | @{$bits{recv}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
454 | $bits{redo}{0} = $bf[0]; | |
455 | $bits{ref}{0} = $bf[0]; | |
9e209402 | 456 | @{$bits{refassign}}{5,4,1,0} = ($bf[7], $bf[7], $bf[1], $bf[1]); |
f3574cc6 DM |
457 | $bits{refgen}{0} = $bf[0]; |
458 | $bits{regcmaybe}{0} = $bf[0]; | |
459 | $bits{regcomp}{0} = $bf[0]; | |
460 | $bits{regcreset}{0} = $bf[0]; | |
461 | @{$bits{rename}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
462 | @{$bits{repeat}}{6,1,0} = ('OPpREPEAT_DOLIST', $bf[1], $bf[1]); | |
463 | $bits{require}{0} = $bf[0]; | |
464 | @{$bits{reset}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
465 | @{$bits{reverse}}{3,0} = ('OPpREVERSE_INPLACE', $bf[0]); | |
466 | $bits{rewinddir}{0} = $bf[0]; | |
467 | @{$bits{right_shift}}{1,0} = ($bf[1], $bf[1]); | |
468 | @{$bits{rindex}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
469 | $bits{rkeys}{0} = $bf[0]; | |
470 | $bits{rmdir}{0} = $bf[0]; | |
471 | $bits{rv2av}{0} = $bf[0]; | |
9e209402 FC |
472 | @{$bits{rv2cv}}{7,5,0} = ('OPpENTERSUB_NOPAREN', 'OPpMAY_RETURN_CONSTANT', $bf[0]); |
473 | @{$bits{rv2gv}}{6,5,4,2,0} = ('OPpALLOW_FAKE', $bf[6], $bf[6], 'OPpDONT_INIT_GV', $bf[0]); | |
f3574cc6 | 474 | $bits{rv2hv}{0} = $bf[0]; |
9e209402 | 475 | @{$bits{rv2sv}}{5,4,0} = ($bf[6], $bf[6], $bf[0]); |
f3574cc6 DM |
476 | $bits{rvalues}{0} = $bf[0]; |
477 | @{$bits{sassign}}{7,6,1,0} = ('OPpASSIGN_CV_TO_GV', 'OPpASSIGN_BACKWARDS', $bf[1], $bf[1]); | |
478 | $bits{scalar}{0} = $bf[0]; | |
479 | $bits{schomp}{0} = $bf[0]; | |
480 | $bits{schop}{0} = $bf[0]; | |
481 | @{$bits{scmp}}{1,0} = ($bf[1], $bf[1]); | |
482 | @{$bits{seek}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
483 | @{$bits{seekdir}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
484 | @{$bits{select}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
485 | @{$bits{semctl}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
486 | @{$bits{semget}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
487 | @{$bits{semop}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
488 | @{$bits{send}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
489 | @{$bits{seq}}{1,0} = ($bf[1], $bf[1]); | |
490 | @{$bits{setpgrp}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
491 | @{$bits{setpriority}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
492 | @{$bits{sge}}{1,0} = ($bf[1], $bf[1]); | |
493 | @{$bits{sgt}}{1,0} = ($bf[1], $bf[1]); | |
494 | $bits{shift}{0} = $bf[0]; | |
495 | @{$bits{shmctl}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
496 | @{$bits{shmget}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
497 | @{$bits{shmread}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
498 | @{$bits{shmwrite}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
499 | $bits{shostent}{0} = $bf[0]; | |
500 | @{$bits{shutdown}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
501 | $bits{sin}{0} = $bf[0]; | |
502 | @{$bits{sle}}{1,0} = ($bf[1], $bf[1]); | |
503 | @{$bits{sleep}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
504 | @{$bits{slt}}{1,0} = ($bf[1], $bf[1]); | |
505 | @{$bits{smartmatch}}{1,0} = ($bf[1], $bf[1]); | |
506 | @{$bits{sne}}{1,0} = ($bf[1], $bf[1]); | |
507 | $bits{snetent}{0} = $bf[0]; | |
508 | @{$bits{socket}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
509 | @{$bits{sockpair}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
510 | @{$bits{sort}}{6,5,4,3,2,1,0} = ('OPpSORT_STABLE', 'OPpSORT_QSORT', 'OPpSORT_DESCEND', 'OPpSORT_INPLACE', 'OPpSORT_REVERSE', 'OPpSORT_INTEGER', 'OPpSORT_NUMERIC'); | |
511 | @{$bits{splice}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
512 | $bits{split}{7} = 'OPpSPLIT_IMPLIM'; | |
513 | @{$bits{sprintf}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
514 | $bits{sprotoent}{0} = $bf[0]; | |
515 | $bits{sqrt}{0} = $bf[0]; | |
516 | @{$bits{srand}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
517 | $bits{srefgen}{0} = $bf[0]; | |
518 | @{$bits{sselect}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
519 | $bits{sservent}{0} = $bf[0]; | |
520 | @{$bits{ssockopt}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
521 | $bits{stat}{0} = $bf[0]; | |
522 | @{$bits{stringify}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
523 | $bits{study}{0} = $bf[0]; | |
524 | $bits{substcont}{0} = $bf[0]; | |
525 | @{$bits{substr}}{4,2,1,0} = ('OPpSUBSTR_REPL_FIRST', $bf[2], $bf[2], $bf[2]); | |
526 | @{$bits{subtract}}{1,0} = ($bf[1], $bf[1]); | |
527 | @{$bits{symlink}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
528 | @{$bits{syscall}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
529 | @{$bits{sysopen}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
530 | @{$bits{sysread}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
531 | @{$bits{sysseek}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
532 | @{$bits{system}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
533 | @{$bits{syswrite}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
534 | @{$bits{tell}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
535 | $bits{telldir}{0} = $bf[0]; | |
536 | @{$bits{tie}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
537 | $bits{tied}{0} = $bf[0]; | |
538 | @{$bits{truncate}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
539 | $bits{uc}{0} = $bf[0]; | |
540 | $bits{ucfirst}{0} = $bf[0]; | |
541 | @{$bits{umask}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
542 | $bits{undef}{0} = $bf[0]; | |
543 | @{$bits{unlink}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
544 | @{$bits{unpack}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
545 | @{$bits{unshift}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
546 | $bits{untie}{0} = $bf[0]; | |
547 | @{$bits{utime}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
548 | $bits{values}{0} = $bf[0]; | |
549 | @{$bits{vec}}{1,0} = ($bf[1], $bf[1]); | |
550 | @{$bits{waitpid}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
551 | @{$bits{warn}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]); | |
552 | @{$bits{xor}}{1,0} = ($bf[1], $bf[1]); | |
553 | ||
554 | ||
555 | our %defines = ( | |
9e209402 | 556 | OPpALLOW_FAKE => 64, |
f3574cc6 DM |
557 | OPpARG1_MASK => 1, |
558 | OPpARG2_MASK => 3, | |
559 | OPpARG3_MASK => 7, | |
560 | OPpARG4_MASK => 15, | |
561 | OPpASSIGN_BACKWARDS => 64, | |
562 | OPpASSIGN_COMMON => 64, | |
563 | OPpASSIGN_CV_TO_GV => 128, | |
564 | OPpCONST_BARE => 64, | |
565 | OPpCONST_ENTERED => 16, | |
566 | OPpCONST_NOVER => 2, | |
567 | OPpCONST_SHORTCIRCUIT => 4, | |
568 | OPpCONST_STRICT => 8, | |
569 | OPpCOREARGS_DEREF1 => 1, | |
570 | OPpCOREARGS_DEREF2 => 2, | |
571 | OPpCOREARGS_PUSHMARK => 128, | |
572 | OPpCOREARGS_SCALARMOD => 64, | |
9e209402 FC |
573 | OPpDEREF => 48, |
574 | OPpDEREF_AV => 16, | |
575 | OPpDEREF_HV => 32, | |
576 | OPpDEREF_SV => 48, | |
f3574cc6 DM |
577 | OPpDONT_INIT_GV => 4, |
578 | OPpEARLY_CV => 32, | |
579 | OPpENTERSUB_AMPER => 8, | |
9e209402 | 580 | OPpENTERSUB_DB => 64, |
f3574cc6 DM |
581 | OPpENTERSUB_HASTARG => 4, |
582 | OPpENTERSUB_INARGS => 1, | |
583 | OPpENTERSUB_NOPAREN => 128, | |
584 | OPpEVAL_BYTES => 8, | |
585 | OPpEVAL_COPHH => 16, | |
586 | OPpEVAL_HAS_HH => 2, | |
587 | OPpEVAL_RE_REPARSING => 32, | |
588 | OPpEVAL_UNICODE => 4, | |
589 | OPpEXISTS_SUB => 64, | |
590 | OPpFLIP_LINENUM => 64, | |
591 | OPpFT_ACCESS => 2, | |
592 | OPpFT_AFTER_t => 16, | |
593 | OPpFT_STACKED => 4, | |
594 | OPpFT_STACKING => 8, | |
595 | OPpGREP_LEX => 2, | |
f3574cc6 DM |
596 | OPpHINT_STRICT_REFS => 2, |
597 | OPpHUSH_VMSISH => 32, | |
598 | OPpITER_DEF => 8, | |
599 | OPpITER_REVERSED => 4, | |
600 | OPpLIST_GUESSED => 64, | |
601 | OPpLVALUE => 128, | |
9e209402 | 602 | OPpLVAL_DEFER => 64, |
f3574cc6 | 603 | OPpLVAL_INTRO => 128, |
9e209402 FC |
604 | OPpLVREF_AV => 16, |
605 | OPpLVREF_CV => 48, | |
6102323a | 606 | OPpLVREF_ELEM => 4, |
9e209402 | 607 | OPpLVREF_HV => 32, |
5a36b2c0 | 608 | OPpLVREF_ITER => 8, |
c2380ea1 | 609 | OPpLVREF_SV => 0, |
9e209402 | 610 | OPpLVREF_TYPE => 48, |
f3574cc6 | 611 | OPpMAYBE_LVSUB => 8, |
9e209402 FC |
612 | OPpMAYBE_TRUEBOOL => 16, |
613 | OPpMAY_RETURN_CONSTANT => 32, | |
fedf30e1 DM |
614 | OPpMULTIDEREF_DELETE => 32, |
615 | OPpMULTIDEREF_EXISTS => 16, | |
f3574cc6 DM |
616 | OPpOFFBYONE => 128, |
617 | OPpOPEN_IN_CRLF => 32, | |
618 | OPpOPEN_IN_RAW => 16, | |
619 | OPpOPEN_OUT_CRLF => 128, | |
620 | OPpOPEN_OUT_RAW => 64, | |
9e209402 | 621 | OPpOUR_INTRO => 64, |
f3574cc6 DM |
622 | OPpPADRANGE_COUNTMASK => 127, |
623 | OPpPADRANGE_COUNTSHIFT => 7, | |
9e209402 | 624 | OPpPAD_STATE => 64, |
f3574cc6 DM |
625 | OPpPV_IS_UTF8 => 128, |
626 | OPpREFCOUNTED => 64, | |
627 | OPpREPEAT_DOLIST => 64, | |
628 | OPpREVERSE_INPLACE => 8, | |
629 | OPpRUNTIME => 64, | |
630 | OPpSLICE => 64, | |
631 | OPpSLICEWARNING => 4, | |
632 | OPpSORT_DESCEND => 16, | |
633 | OPpSORT_INPLACE => 8, | |
634 | OPpSORT_INTEGER => 2, | |
635 | OPpSORT_NUMERIC => 1, | |
636 | OPpSORT_QSORT => 32, | |
637 | OPpSORT_REVERSE => 4, | |
638 | OPpSORT_STABLE => 64, | |
639 | OPpSPLIT_IMPLIM => 128, | |
640 | OPpSUBSTR_REPL_FIRST => 16, | |
641 | OPpTARGET_MY => 16, | |
642 | OPpTRANS_COMPLEMENT => 32, | |
643 | OPpTRANS_DELETE => 128, | |
644 | OPpTRANS_FROM_UTF => 1, | |
645 | OPpTRANS_GROWS => 64, | |
646 | OPpTRANS_IDENTICAL => 4, | |
647 | OPpTRANS_SQUASH => 8, | |
648 | OPpTRANS_TO_UTF => 2, | |
649 | OPpTRUEBOOL => 32, | |
650 | ); | |
651 | ||
652 | our %labels = ( | |
653 | OPpALLOW_FAKE => 'FAKE', | |
654 | OPpASSIGN_BACKWARDS => 'BKWARD', | |
655 | OPpASSIGN_COMMON => 'COMMON', | |
656 | OPpASSIGN_CV_TO_GV => 'CV2GV', | |
657 | OPpCONST_BARE => 'BARE', | |
658 | OPpCONST_ENTERED => 'ENTERED', | |
659 | OPpCONST_NOVER => 'NOVER', | |
660 | OPpCONST_SHORTCIRCUIT => 'SHORT', | |
661 | OPpCONST_STRICT => 'STRICT', | |
662 | OPpCOREARGS_DEREF1 => 'DEREF1', | |
663 | OPpCOREARGS_DEREF2 => 'DEREF2', | |
664 | OPpCOREARGS_PUSHMARK => 'MARK', | |
665 | OPpCOREARGS_SCALARMOD => '$MOD', | |
666 | OPpDEREF_AV => 'DREFAV', | |
667 | OPpDEREF_HV => 'DREFHV', | |
668 | OPpDEREF_SV => 'DREFSV', | |
669 | OPpDONT_INIT_GV => 'NOINIT', | |
670 | OPpEARLY_CV => 'EARLYCV', | |
671 | OPpENTERSUB_AMPER => 'AMPER', | |
672 | OPpENTERSUB_DB => 'DBG', | |
673 | OPpENTERSUB_HASTARG => 'TARG', | |
674 | OPpENTERSUB_INARGS => 'INARGS', | |
675 | OPpENTERSUB_NOPAREN => 'NO()', | |
676 | OPpEVAL_BYTES => 'BYTES', | |
677 | OPpEVAL_COPHH => 'COPHH', | |
678 | OPpEVAL_HAS_HH => 'HAS_HH', | |
c486bd5c | 679 | OPpEVAL_RE_REPARSING => 'REPARSE', |
f3574cc6 DM |
680 | OPpEVAL_UNICODE => 'UNI', |
681 | OPpEXISTS_SUB => 'SUB', | |
682 | OPpFLIP_LINENUM => 'LINENUM', | |
683 | OPpFT_ACCESS => 'FTACCESS', | |
684 | OPpFT_AFTER_t => 'FTAFTERt', | |
685 | OPpFT_STACKED => 'FTSTACKED', | |
686 | OPpFT_STACKING => 'FTSTACKING', | |
687 | OPpGREP_LEX => 'GREPLEX', | |
c486bd5c | 688 | OPpHINT_STRICT_REFS => 'STRICT', |
f3574cc6 | 689 | OPpHUSH_VMSISH => 'HUSH', |
c486bd5c | 690 | OPpITER_DEF => 'DEF', |
f3574cc6 DM |
691 | OPpITER_REVERSED => 'REVERSED', |
692 | OPpLIST_GUESSED => 'GUESSED', | |
693 | OPpLVALUE => 'LV', | |
694 | OPpLVAL_DEFER => 'LVDEFER', | |
695 | OPpLVAL_INTRO => 'LVINTRO', | |
c2380ea1 FC |
696 | OPpLVREF_AV => 'AV', |
697 | OPpLVREF_CV => 'CV', | |
6102323a | 698 | OPpLVREF_ELEM => 'ELEM', |
c2380ea1 | 699 | OPpLVREF_HV => 'HV', |
5a36b2c0 | 700 | OPpLVREF_ITER => 'ITER', |
c2380ea1 | 701 | OPpLVREF_SV => 'SV', |
f3574cc6 DM |
702 | OPpMAYBE_LVSUB => 'LVSUB', |
703 | OPpMAYBE_TRUEBOOL => 'BOOL?', | |
704 | OPpMAY_RETURN_CONSTANT => 'CONST', | |
fedf30e1 DM |
705 | OPpMULTIDEREF_DELETE => 'DELETE', |
706 | OPpMULTIDEREF_EXISTS => 'EXISTS', | |
f3574cc6 DM |
707 | OPpOFFBYONE => '+1', |
708 | OPpOPEN_IN_CRLF => 'INCR', | |
709 | OPpOPEN_IN_RAW => 'INBIN', | |
710 | OPpOPEN_OUT_CRLF => 'OUTCR', | |
711 | OPpOPEN_OUT_RAW => 'OUTBIN', | |
712 | OPpOUR_INTRO => 'OURINTR', | |
713 | OPpPAD_STATE => 'STATE', | |
714 | OPpPV_IS_UTF8 => 'UTF', | |
715 | OPpREFCOUNTED => 'REFC', | |
716 | OPpREPEAT_DOLIST => 'DOLIST', | |
717 | OPpREVERSE_INPLACE => 'INPLACE', | |
718 | OPpRUNTIME => 'RTIME', | |
719 | OPpSLICE => 'SLICE', | |
720 | OPpSLICEWARNING => 'SLICEWARN', | |
721 | OPpSORT_DESCEND => 'DESC', | |
722 | OPpSORT_INPLACE => 'INPLACE', | |
723 | OPpSORT_INTEGER => 'INT', | |
724 | OPpSORT_NUMERIC => 'NUM', | |
725 | OPpSORT_QSORT => 'QSORT', | |
726 | OPpSORT_REVERSE => 'REV', | |
727 | OPpSORT_STABLE => 'STABLE', | |
728 | OPpSPLIT_IMPLIM => 'IMPLIM', | |
729 | OPpSUBSTR_REPL_FIRST => 'REPL1ST', | |
730 | OPpTARGET_MY => 'TARGMY', | |
731 | OPpTRANS_COMPLEMENT => 'COMPL', | |
732 | OPpTRANS_DELETE => 'DEL', | |
733 | OPpTRANS_FROM_UTF => '<UTF', | |
734 | OPpTRANS_GROWS => 'GROWS', | |
735 | OPpTRANS_IDENTICAL => 'IDENT', | |
736 | OPpTRANS_SQUASH => 'SQUASH', | |
737 | OPpTRANS_TO_UTF => '>UTF', | |
738 | OPpTRUEBOOL => 'BOOL', | |
739 | ); | |
740 | ||
dc1230de FC |
741 | |
742 | our %ops_using = ( | |
743 | OPpALLOW_FAKE => [qw(rv2gv)], | |
744 | OPpASSIGN_BACKWARDS => [qw(sassign)], | |
745 | OPpASSIGN_COMMON => [qw(aassign)], | |
746 | OPpCONST_BARE => [qw(const)], | |
747 | OPpCOREARGS_DEREF1 => [qw(coreargs)], | |
748 | OPpEARLY_CV => [qw(gv)], | |
749 | OPpENTERSUB_AMPER => [qw(entersub rv2cv)], | |
750 | OPpENTERSUB_INARGS => [qw(entersub)], | |
751 | OPpENTERSUB_NOPAREN => [qw(rv2cv)], | |
752 | OPpEVAL_BYTES => [qw(entereval)], | |
753 | OPpEXISTS_SUB => [qw(exists)], | |
754 | OPpFLIP_LINENUM => [qw(flip flop)], | |
755 | OPpFT_ACCESS => [qw(fteexec fteread ftewrite ftrexec ftrread ftrwrite)], | |
756 | 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)], | |
757 | OPpGREP_LEX => [qw(grepstart grepwhile mapstart mapwhile)], | |
fedf30e1 | 758 | OPpHINT_STRICT_REFS => [qw(entersub multideref rv2av rv2cv rv2gv rv2hv rv2sv)], |
dc1230de FC |
759 | OPpHUSH_VMSISH => [qw(dbstate nextstate)], |
760 | OPpITER_DEF => [qw(enteriter)], | |
761 | OPpITER_REVERSED => [qw(enteriter iter)], | |
762 | OPpLIST_GUESSED => [qw(list)], | |
763 | OPpLVALUE => [qw(leave leaveloop)], | |
fedf30e1 DM |
764 | OPpLVAL_DEFER => [qw(aelem helem multideref)], |
765 | OPpLVAL_INTRO => [qw(aelem aslice cond_expr delete enteriter entersub gvsv helem hslice list lvavref lvref lvrefslice multideref padav padhv padrange padsv pushmark refassign rv2av rv2gv rv2hv rv2sv)], | |
dc1230de | 766 | OPpLVREF_ELEM => [qw(lvref refassign)], |
fedf30e1 | 767 | OPpMAYBE_LVSUB => [qw(aassign aelem aslice av2arylen helem hslice keys kvaslice kvhslice multideref padav padhv pos rkeys rv2av rv2gv rv2hv substr vec)], |
dc1230de | 768 | OPpMAYBE_TRUEBOOL => [qw(padhv rv2hv)], |
fedf30e1 | 769 | OPpMULTIDEREF_DELETE => [qw(multideref)], |
dc1230de FC |
770 | OPpOFFBYONE => [qw(caller runcv wantarray)], |
771 | OPpOPEN_IN_CRLF => [qw(backtick open)], | |
772 | OPpOUR_INTRO => [qw(enteriter gvsv rv2av rv2hv rv2sv split)], | |
773 | OPpPAD_STATE => [qw(lvavref lvref padav padhv padsv pushmark refassign)], | |
774 | OPpPV_IS_UTF8 => [qw(dump goto last next redo)], | |
775 | OPpREFCOUNTED => [qw(leave leaveeval leavesub leavesublv leavewrite)], | |
776 | OPpREPEAT_DOLIST => [qw(repeat)], | |
777 | OPpREVERSE_INPLACE => [qw(reverse)], | |
778 | OPpRUNTIME => [qw(match pushre qr subst substcont)], | |
779 | OPpSLICE => [qw(delete)], | |
780 | OPpSLICEWARNING => [qw(aslice hslice padav padhv rv2av rv2hv)], | |
781 | OPpSORT_DESCEND => [qw(sort)], | |
782 | OPpSPLIT_IMPLIM => [qw(split)], | |
783 | OPpSUBSTR_REPL_FIRST => [qw(substr)], | |
33de0f79 | 784 | OPpTARGET_MY => [qw(abs add atan2 chdir chmod chomp chown chr chroot complement concat cos crypt divide exec exp flock getpgrp getppid getpriority hex i_add i_divide i_modulo i_multiply i_ncmp i_subtract index int kill left_shift length link log match mkdir modulo multiply oct ord pow push rand rename repeat right_shift rindex rmdir schomp scmp setpgrp setpriority sin sleep split sqrt srand stringify subst subtract symlink system time trans transr unlink unshift utime vec wait waitpid)], |
dc1230de FC |
785 | OPpTRANS_COMPLEMENT => [qw(trans transr)], |
786 | ); | |
787 | ||
788 | $ops_using{OPpASSIGN_CV_TO_GV} = $ops_using{OPpASSIGN_BACKWARDS}; | |
789 | $ops_using{OPpCONST_ENTERED} = $ops_using{OPpCONST_BARE}; | |
790 | $ops_using{OPpCONST_NOVER} = $ops_using{OPpCONST_BARE}; | |
791 | $ops_using{OPpCONST_SHORTCIRCUIT} = $ops_using{OPpCONST_BARE}; | |
792 | $ops_using{OPpCONST_STRICT} = $ops_using{OPpCONST_BARE}; | |
793 | $ops_using{OPpCOREARGS_DEREF2} = $ops_using{OPpCOREARGS_DEREF1}; | |
794 | $ops_using{OPpCOREARGS_PUSHMARK} = $ops_using{OPpCOREARGS_DEREF1}; | |
795 | $ops_using{OPpCOREARGS_SCALARMOD} = $ops_using{OPpCOREARGS_DEREF1}; | |
796 | $ops_using{OPpDONT_INIT_GV} = $ops_using{OPpALLOW_FAKE}; | |
797 | $ops_using{OPpENTERSUB_DB} = $ops_using{OPpENTERSUB_AMPER}; | |
798 | $ops_using{OPpENTERSUB_HASTARG} = $ops_using{OPpENTERSUB_AMPER}; | |
799 | $ops_using{OPpEVAL_COPHH} = $ops_using{OPpEVAL_BYTES}; | |
800 | $ops_using{OPpEVAL_HAS_HH} = $ops_using{OPpEVAL_BYTES}; | |
801 | $ops_using{OPpEVAL_RE_REPARSING} = $ops_using{OPpEVAL_BYTES}; | |
802 | $ops_using{OPpEVAL_UNICODE} = $ops_using{OPpEVAL_BYTES}; | |
803 | $ops_using{OPpFT_STACKED} = $ops_using{OPpFT_AFTER_t}; | |
804 | $ops_using{OPpFT_STACKING} = $ops_using{OPpFT_AFTER_t}; | |
805 | $ops_using{OPpLVREF_ITER} = $ops_using{OPpLVREF_ELEM}; | |
806 | $ops_using{OPpMAY_RETURN_CONSTANT} = $ops_using{OPpENTERSUB_NOPAREN}; | |
fedf30e1 | 807 | $ops_using{OPpMULTIDEREF_EXISTS} = $ops_using{OPpMULTIDEREF_DELETE}; |
dc1230de FC |
808 | $ops_using{OPpOPEN_IN_RAW} = $ops_using{OPpOPEN_IN_CRLF}; |
809 | $ops_using{OPpOPEN_OUT_CRLF} = $ops_using{OPpOPEN_IN_CRLF}; | |
810 | $ops_using{OPpOPEN_OUT_RAW} = $ops_using{OPpOPEN_IN_CRLF}; | |
811 | $ops_using{OPpSORT_INPLACE} = $ops_using{OPpSORT_DESCEND}; | |
812 | $ops_using{OPpSORT_INTEGER} = $ops_using{OPpSORT_DESCEND}; | |
813 | $ops_using{OPpSORT_NUMERIC} = $ops_using{OPpSORT_DESCEND}; | |
814 | $ops_using{OPpSORT_QSORT} = $ops_using{OPpSORT_DESCEND}; | |
815 | $ops_using{OPpSORT_REVERSE} = $ops_using{OPpSORT_DESCEND}; | |
816 | $ops_using{OPpSORT_STABLE} = $ops_using{OPpSORT_DESCEND}; | |
817 | $ops_using{OPpTRANS_DELETE} = $ops_using{OPpTRANS_COMPLEMENT}; | |
818 | $ops_using{OPpTRANS_FROM_UTF} = $ops_using{OPpTRANS_COMPLEMENT}; | |
819 | $ops_using{OPpTRANS_GROWS} = $ops_using{OPpTRANS_COMPLEMENT}; | |
820 | $ops_using{OPpTRANS_IDENTICAL} = $ops_using{OPpTRANS_COMPLEMENT}; | |
821 | $ops_using{OPpTRANS_SQUASH} = $ops_using{OPpTRANS_COMPLEMENT}; | |
822 | $ops_using{OPpTRANS_TO_UTF} = $ops_using{OPpTRANS_COMPLEMENT}; | |
823 | $ops_using{OPpTRUEBOOL} = $ops_using{OPpMAYBE_TRUEBOOL}; | |
824 | ||
f3574cc6 | 825 | # ex: set ro: |