This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Re: struct context now 12.5% smaller than 5.10
[perl5.git] / ext / Devel / Peek / t / Peek.t
CommitLineData
99331854 1#!./perl -T
9ec58fb7
JH
2
3BEGIN {
4 chdir 't' if -d 't';
20822f61 5 @INC = '../lib';
9ec58fb7 6 require Config; import Config;
e7ecf62c 7 if ($Config{'extensions'} !~ /\bDevel\/Peek\b/) {
9ec58fb7
JH
8 print "1..0 # Skip: Devel::Peek was not built\n";
9 exit 0;
10 }
11}
12
768fd157 13BEGIN { require "./test.pl"; }
e7ecf62c 14
9248c45a
JH
15use Devel::Peek;
16
e9569a7a 17plan(48);
9248c45a
JH
18
19our $DEBUG = 0;
277ddfaf 20open(SAVERR, ">&STDERR") or die "Can't dup STDERR: $!";
9248c45a
JH
21
22sub do_test {
23 my $pattern = pop;
277ddfaf
GS
24 if (open(OUT,">peek$$")) {
25 open(STDERR, ">&OUT") or die "Can't dup OUT: $!";
9248c45a 26 Dump($_[1]);
e9569a7a
GG
27 print STDERR "*****\n";
28 Dump($_[1]); # second dump to compare with the first to make sure nothing changed.
277ddfaf
GS
29 open(STDERR, ">&SAVERR") or die "Can't restore STDERR: $!";
30 close(OUT);
9248c45a
JH
31 if (open(IN, "peek$$")) {
32 local $/;
33 $pattern =~ s/\$ADDR/0x[[:xdigit:]]+/g;
8aacddc1 34 $pattern =~ s/\$FLOAT/(?:\\d*\\.\\d+(?:e[-+]\\d+)?|\\d+)/g;
fd0854ff 35 # handle DEBUG_LEAKING_SCALARS prefix
d94a5950 36 $pattern =~ s/^(\s*)(SV =.* at )/(?:$1ALLOCATED at .*?\n)?$1$2/mg;
bf53b3a5 37
d04ba589
NC
38 $pattern =~ s/^ *\$XSUB *\n/
39 ($] < 5.009) ? " XSUB = 0\n XSUBANY = 0\n" : '';
bf53b3a5 40 /mge;
d04ba589
NC
41 $pattern =~ s/^ *\$ROOT *\n/
42 ($] < 5.009) ? " ROOT = 0x0\n" : '';
43 /mge;
c84c4652
NC
44 $pattern =~ s/^ *\$IVNV *\n/
45 ($] < 5.009) ? " IV = 0\n NV = 0\n" : '';
46 /mge;
4df7f6af 47 $pattern =~ s/\$RV/IV/g if $] >= 5.011;
d04ba589 48
9248c45a 49 print $pattern, "\n" if $DEBUG;
e9569a7a 50 my ($dump, $dump2) = split m/\*\*\*\*\*\n/, scalar <IN>;
9248c45a 51 print $dump, "\n" if $DEBUG;
e7ecf62c 52 like( $dump, qr/\A$pattern\Z/ms );
e9569a7a
GG
53
54 local $TODO = $dump2 =~ /OOK/ ? "The hash iterator used in dump.c sets the OOK flag" : undef;
55 is($dump2, $dump);
56
9248c45a 57 close(IN);
e9569a7a 58
59d8ce62 59 return $1;
9248c45a
JH
60 } else {
61 die "$0: failed to open peek$$: !\n";
62 }
63 } else {
64 die "$0: failed to create peek$$: $!\n";
65 }
66}
67
68our $a;
69our $b;
70my $c;
208edb77 71local $d = 0;
9248c45a 72
e7ecf62c
RGS
73END {
74 1 while unlink("peek$$");
75}
bf53b3a5 76
9248c45a
JH
77do_test( 1,
78 $a = "foo",
79'SV = PV\\($ADDR\\) at $ADDR
80 REFCNT = 1
81 FLAGS = \\(POK,pPOK\\)
82 PV = $ADDR "foo"\\\0
83 CUR = 3
1badabf5 84 LEN = \\d+'
9248c45a
JH
85 );
86
87do_test( 2,
88 "bar",
89'SV = PV\\($ADDR\\) at $ADDR
90 REFCNT = 1
7766e686 91 FLAGS = \\(.*POK,READONLY,pPOK\\)
9248c45a
JH
92 PV = $ADDR "bar"\\\0
93 CUR = 3
1badabf5 94 LEN = \\d+');
9248c45a
JH
95
96do_test( 3,
97 $b = 123,
98'SV = IV\\($ADDR\\) at $ADDR
99 REFCNT = 1
100 FLAGS = \\(IOK,pIOK\\)
101 IV = 123');
102
103do_test( 4,
104 456,
105'SV = IV\\($ADDR\\) at $ADDR
106 REFCNT = 1
7766e686 107 FLAGS = \\(.*IOK,READONLY,pIOK\\)
9248c45a
JH
108 IV = 456');
109
110do_test( 5,
111 $c = 456,
112'SV = IV\\($ADDR\\) at $ADDR
113 REFCNT = 1
235cc2e3 114 FLAGS = \\(PADMY,IOK,pIOK\\)
9248c45a
JH
115 IV = 456');
116
59d8ce62
NC
117# If perl is built with PERL_PRESERVE_IVUV then maths is done as integers
118# where possible and this scalar will be an IV. If NO_PERL_PRESERVE_IVUV then
119# maths is done in floating point always, and this scalar will be an NV.
120# ([NI]) captures the type, referred to by \1 in this regexp and $type for
121# building subsequent regexps.
122my $type = do_test( 6,
9248c45a 123 $c + $d,
59d8ce62 124'SV = ([NI])V\\($ADDR\\) at $ADDR
9248c45a 125 REFCNT = 1
59d8ce62
NC
126 FLAGS = \\(PADTMP,\1OK,p\1OK\\)
127 \1V = 456');
9248c45a
JH
128
129($d = "789") += 0.1;
130
131do_test( 7,
132 $d,
133'SV = PVNV\\($ADDR\\) at $ADDR
134 REFCNT = 1
135 FLAGS = \\(NOK,pNOK\\)
78d00c47 136 IV = \d+
ac634a9a 137 NV = 789\\.(?:1(?:000+\d+)?|0999+\d+)
9248c45a
JH
138 PV = $ADDR "789"\\\0
139 CUR = 3
1badabf5 140 LEN = \\d+');
9248c45a
JH
141
142do_test( 8,
143 0xabcd,
144'SV = IV\\($ADDR\\) at $ADDR
145 REFCNT = 1
28e5dec8
JH
146 FLAGS = \\(.*IOK,READONLY,pIOK\\)
147 IV = 43981');
9248c45a
JH
148
149do_test( 9,
150 undef,
151'SV = NULL\\(0x0\\) at $ADDR
152 REFCNT = 1
153 FLAGS = \\(\\)');
154
155do_test(10,
156 \$a,
4df7f6af 157'SV = $RV\\($ADDR\\) at $ADDR
9248c45a
JH
158 REFCNT = 1
159 FLAGS = \\(ROK\\)
160 RV = $ADDR
161 SV = PV\\($ADDR\\) at $ADDR
162 REFCNT = 2
163 FLAGS = \\(POK,pPOK\\)
164 PV = $ADDR "foo"\\\0
165 CUR = 3
1badabf5 166 LEN = \\d+');
9248c45a 167
59d8ce62
NC
168my $c_pattern;
169if ($type eq 'N') {
170 $c_pattern = '
171 SV = PVNV\\($ADDR\\) at $ADDR
172 REFCNT = 1
173 FLAGS = \\(IOK,NOK,pIOK,pNOK\\)
174 IV = 456
175 NV = 456
176 PV = 0';
177} else {
178 $c_pattern = '
179 SV = IV\\($ADDR\\) at $ADDR
180 REFCNT = 1
181 FLAGS = \\(IOK,pIOK\\)
182 IV = 456';
183}
9248c45a
JH
184do_test(11,
185 [$b,$c],
4df7f6af 186'SV = $RV\\($ADDR\\) at $ADDR
9248c45a
JH
187 REFCNT = 1
188 FLAGS = \\(ROK\\)
189 RV = $ADDR
190 SV = PVAV\\($ADDR\\) at $ADDR
78c72037 191 REFCNT = 1
9248c45a 192 FLAGS = \\(\\)
9248c45a
JH
193 ARRAY = $ADDR
194 FILL = 1
195 MAX = 1
196 ARYLEN = 0x0
197 FLAGS = \\(REAL\\)
198 Elt No. 0
199 SV = IV\\($ADDR\\) at $ADDR
200 REFCNT = 1
201 FLAGS = \\(IOK,pIOK\\)
202 IV = 123
59d8ce62 203 Elt No. 1' . $c_pattern);
9248c45a
JH
204
205do_test(12,
206 {$b=>$c},
4df7f6af 207'SV = $RV\\($ADDR\\) at $ADDR
9248c45a
JH
208 REFCNT = 1
209 FLAGS = \\(ROK\\)
210 RV = $ADDR
211 SV = PVHV\\($ADDR\\) at $ADDR
78c72037 212 REFCNT = 1
9248c45a 213 FLAGS = \\(SHAREKEYS\\)
9248c45a 214 ARRAY = $ADDR \\(0:7, 1:1\\)
b8fa94d8 215 hash quality = 100.0%
9248c45a
JH
216 KEYS = 1
217 FILL = 1
218 MAX = 7
219 RITER = -1
220 EITER = 0x0
59d8ce62 221 Elt "123" HASH = $ADDR' . $c_pattern);
9248c45a
JH
222
223do_test(13,
224 sub(){@_},
4df7f6af 225'SV = $RV\\($ADDR\\) at $ADDR
9248c45a
JH
226 REFCNT = 1
227 FLAGS = \\(ROK\\)
228 RV = $ADDR
229 SV = PVCV\\($ADDR\\) at $ADDR
230 REFCNT = 2
235cc2e3 231 FLAGS = \\(PADMY,POK,pPOK,ANON,WEAKOUTSIDE\\)
c84c4652 232 $IVNV
9248c45a
JH
233 PROTOTYPE = ""
234 COMP_STASH = $ADDR\\t"main"
235 START = $ADDR ===> \\d+
236 ROOT = $ADDR
d04ba589 237 $XSUB
208edb77 238 GVGV::GV = $ADDR\\t"main" :: "__ANON__[^"]*"
084d946d 239 FILE = ".*\\b(?i:peek\\.t)"
9248c45a 240 DEPTH = 0
9856a127 241(?: MUTEXP = $ADDR
208edb77 242 OWNER = $ADDR
5b4563c8 243)? FLAGS = 0x90
a3985cdc 244 OUTSIDE_SEQ = \\d+
9248c45a 245 PADLIST = $ADDR
dd2155a4 246 PADNAME = $ADDR\\($ADDR\\) PAD = $ADDR\\($ADDR\\)
9248c45a
JH
247 OUTSIDE = $ADDR \\(MAIN\\)');
248
249do_test(14,
250 \&do_test,
4df7f6af 251'SV = $RV\\($ADDR\\) at $ADDR
9248c45a
JH
252 REFCNT = 1
253 FLAGS = \\(ROK\\)
254 RV = $ADDR
255 SV = PVCV\\($ADDR\\) at $ADDR
9856a127 256 REFCNT = (3|4)
9248c45a 257 FLAGS = \\(\\)
c84c4652 258 $IVNV
9248c45a
JH
259 COMP_STASH = $ADDR\\t"main"
260 START = $ADDR ===> \\d+
261 ROOT = $ADDR
d04ba589 262 $XSUB
9248c45a 263 GVGV::GV = $ADDR\\t"main" :: "do_test"
084d946d 264 FILE = ".*\\b(?i:peek\\.t)"
9248c45a 265 DEPTH = 1
9856a127 266(?: MUTEXP = $ADDR
208edb77
MG
267 OWNER = $ADDR
268)? FLAGS = 0x0
a3985cdc 269 OUTSIDE_SEQ = \\d+
9248c45a 270 PADLIST = $ADDR
dd2155a4 271 PADNAME = $ADDR\\($ADDR\\) PAD = $ADDR\\($ADDR\\)
ee6cee0c 272 \\d+\\. $ADDR<\\d+> \\(\\d+,\\d+\\) "\\$pattern"
b5c19bd7 273 \\d+\\. $ADDR<\\d+> FAKE "\\$DEBUG" flags=0x0 index=0
ee6cee0c 274 \\d+\\. $ADDR<\\d+> \\(\\d+,\\d+\\) "\\$dump"
e9569a7a 275 \\d+\\. $ADDR<\\d+> \\(\\d+,\\d+\\) "\\$dump2"
9248c45a
JH
276 OUTSIDE = $ADDR \\(MAIN\\)');
277
3ce3ed55
NC
278if ($] >= 5.011) {
279do_test(15,
280 qr(tic),
281'SV = $RV\\($ADDR\\) at $ADDR
282 REFCNT = 1
283 FLAGS = \\(ROK\\)
284 RV = $ADDR
5c35adbb 285 SV = REGEXP\\($ADDR\\) at $ADDR
288b8c02 286 REFCNT = 2
0fc92fc6 287 FLAGS = \\(OBJECT,POK,pPOK\\)
3ce3ed55 288 IV = 0
f7c278bf
NC
289 PV = $ADDR "\\(\\?-xism:tic\\)"\\\0
290 CUR = 12
0fc92fc6
YO
291 LEN = \\d+
292 STASH = $ADDR\\t"Regexp"');
3ce3ed55 293} else {
9248c45a
JH
294do_test(15,
295 qr(tic),
4df7f6af 296'SV = $RV\\($ADDR\\) at $ADDR
9248c45a
JH
297 REFCNT = 1
298 FLAGS = \\(ROK\\)
299 RV = $ADDR
300 SV = PVMG\\($ADDR\\) at $ADDR
301 REFCNT = 1
faf82a0b 302 FLAGS = \\(OBJECT,SMG\\)
9248c45a
JH
303 IV = 0
304 NV = 0
305 PV = 0
306 MAGIC = $ADDR
307 MG_VIRTUAL = $ADDR
14befaf4 308 MG_TYPE = PERL_MAGIC_qr\(r\)
9248c45a 309 MG_OBJ = $ADDR
28d8d7f4
YO
310 PAT = "\(\?-xism:tic\)"
311 REFCNT = 2
9248c45a 312 STASH = $ADDR\\t"Regexp"');
3ce3ed55 313}
9248c45a
JH
314
315do_test(16,
316 (bless {}, "Tac"),
4df7f6af 317'SV = $RV\\($ADDR\\) at $ADDR
9248c45a
JH
318 REFCNT = 1
319 FLAGS = \\(ROK\\)
320 RV = $ADDR
321 SV = PVHV\\($ADDR\\) at $ADDR
78c72037 322 REFCNT = 1
9248c45a 323 FLAGS = \\(OBJECT,SHAREKEYS\\)
9248c45a
JH
324 STASH = $ADDR\\t"Tac"
325 ARRAY = 0x0
326 KEYS = 0
327 FILL = 0
328 MAX = 7
329 RITER = -1
330 EITER = 0x0');
331
332do_test(17,
333 *a,
334'SV = PVGV\\($ADDR\\) at $ADDR
335 REFCNT = 5
2e5b91de 336 FLAGS = \\(MULTI(?:,IN_PAD)?\\)
9248c45a
JH
337 NAME = "a"
338 NAMELEN = 1
339 GvSTASH = $ADDR\\t"main"
340 GP = $ADDR
341 SV = $ADDR
342 REFCNT = 1
343 IO = 0x0
344 FORM = 0x0
345 AV = 0x0
346 HV = 0x0
347 CV = 0x0
348 CVGEN = 0x0
9ec58fb7 349 LINE = \\d+
084d946d 350 FILE = ".*\\b(?i:peek\\.t)"
e39917cc 351 FLAGS = $ADDR
9248c45a
JH
352 EGV = $ADDR\\t"a"');
353
cdb2dd7b
JH
354if (ord('A') == 193) {
355do_test(18,
356 chr(256).chr(0).chr(512),
357'SV = PV\\($ADDR\\) at $ADDR
358 REFCNT = 1
235cc2e3 359 FLAGS = \\((?:PADTMP,)?POK,READONLY,pPOK,UTF8\\)
cdb2dd7b
JH
360 PV = $ADDR "\\\214\\\101\\\0\\\235\\\101"\\\0 \[UTF8 "\\\x\{100\}\\\x\{0\}\\\x\{200\}"\]
361 CUR = 5
1badabf5 362 LEN = \\d+');
cdb2dd7b 363} else {
e6abe6d8
JH
364do_test(18,
365 chr(256).chr(0).chr(512),
366'SV = PV\\($ADDR\\) at $ADDR
367 REFCNT = 1
235cc2e3 368 FLAGS = \\((?:PADTMP,)?POK,READONLY,pPOK,UTF8\\)
98c991d1 369 PV = $ADDR "\\\304\\\200\\\0\\\310\\\200"\\\0 \[UTF8 "\\\x\{100\}\\\x\{0\}\\\x\{200\}"\]
e6abe6d8 370 CUR = 5
1badabf5 371 LEN = \\d+');
cdb2dd7b 372}
e6abe6d8 373
cdb2dd7b
JH
374if (ord('A') == 193) {
375do_test(19,
376 {chr(256)=>chr(512)},
4df7f6af 377'SV = $RV\\($ADDR\\) at $ADDR
cdb2dd7b
JH
378 REFCNT = 1
379 FLAGS = \\(ROK\\)
380 RV = $ADDR
381 SV = PVHV\\($ADDR\\) at $ADDR
78c72037 382 REFCNT = 1
b2caaddd 383 FLAGS = \\(SHAREKEYS,HASKFLAGS\\)
cdb2dd7b
JH
384 ARRAY = $ADDR \\(0:7, 1:1\\)
385 hash quality = 100.0%
386 KEYS = 1
387 FILL = 1
388 MAX = 7
389 RITER = -1
390 EITER = $ADDR
6cbfa5b4 391 Elt "\\\214\\\101" \[UTF8 "\\\x\{100\}"\] HASH = $ADDR
cdb2dd7b
JH
392 SV = PV\\($ADDR\\) at $ADDR
393 REFCNT = 1
394 FLAGS = \\(POK,pPOK,UTF8\\)
395 PV = $ADDR "\\\235\\\101"\\\0 \[UTF8 "\\\x\{200\}"\]
396 CUR = 2
1badabf5 397 LEN = \\d+');
cdb2dd7b 398} else {
98c991d1
JH
399do_test(19,
400 {chr(256)=>chr(512)},
4df7f6af 401'SV = $RV\\($ADDR\\) at $ADDR
98c991d1
JH
402 REFCNT = 1
403 FLAGS = \\(ROK\\)
404 RV = $ADDR
405 SV = PVHV\\($ADDR\\) at $ADDR
78c72037 406 REFCNT = 1
19692e8d 407 FLAGS = \\(SHAREKEYS,HASKFLAGS\\)
98c991d1
JH
408 ARRAY = $ADDR \\(0:7, 1:1\\)
409 hash quality = 100.0%
410 KEYS = 1
411 FILL = 1
412 MAX = 7
413 RITER = -1
414 EITER = $ADDR
415 Elt "\\\304\\\200" \[UTF8 "\\\x\{100\}"\] HASH = $ADDR
416 SV = PV\\($ADDR\\) at $ADDR
417 REFCNT = 1
418 FLAGS = \\(POK,pPOK,UTF8\\)
419 PV = $ADDR "\\\310\\\200"\\\0 \[UTF8 "\\\x\{200\}"\]
420 CUR = 2
1badabf5 421 LEN = \\d+');
cdb2dd7b 422}
98c991d1 423
99331854
YST
424my $x="";
425$x=~/.??/g;
426do_test(20,
427 $x,
428'SV = PVMG\\($ADDR\\) at $ADDR
429 REFCNT = 1
235cc2e3 430 FLAGS = \\(PADMY,SMG,POK,pPOK\\)
99331854
YST
431 IV = 0
432 NV = 0
433 PV = $ADDR ""\\\0
434 CUR = 0
1936d2a7 435 LEN = \d+
99331854
YST
436 MAGIC = $ADDR
437 MG_VIRTUAL = &PL_vtbl_mglob
438 MG_TYPE = PERL_MAGIC_regex_global\\(g\\)
439 MG_FLAGS = 0x01
440 MINMATCH');
441
f24fdb76
HS
442#
443# TAINTEDDIR is not set on: OS2, AMIGAOS, WIN32, MSDOS
444# environment variables may be invisibly case-forced, hence the (?i:PATH)
5e836f43 445# C<scalar(@ARGV)> is turned into an IV on VMS hence the (?:IV)?
d9baf692
JM
446# VMS is setting FAKE and READONLY flags. What VMS uses for storing
447# ENV hashes is also not always null terminated.
f24fdb76 448#
99331854
YST
449do_test(21,
450 $ENV{PATH}=@ARGV, # scalar(@ARGV) is a handy known tainted value
451'SV = PVMG\\($ADDR\\) at $ADDR
452 REFCNT = 1
453 FLAGS = \\(GMG,SMG,RMG,pIOK,pPOK\\)
454 IV = 0
455 NV = 0
456 PV = $ADDR "0"\\\0
457 CUR = 1
458 LEN = \d+
459 MAGIC = $ADDR
460 MG_VIRTUAL = &PL_vtbl_envelem
461 MG_TYPE = PERL_MAGIC_envelem\\(e\\)
d25a523c 462(?: MG_FLAGS = 0x01
99331854 463 TAINTEDDIR
143a3e5e
CB
464)? MG_LEN = -?\d+
465 MG_PTR = $ADDR (?:"(?i:PATH)"|=> HEf_SVKEY
5e836f43 466 SV = PV(?:IV)?\\($ADDR\\) at $ADDR
143a3e5e 467 REFCNT = \d+
11e2783c 468 FLAGS = \\(TEMP,POK,(?:FAKE,READONLY,)?pPOK\\)
f0fabfd7 469(?: IV = 0
d9baf692 470)? PV = $ADDR "(?i:PATH)"(?:\\\0)?
143a3e5e
CB
471 CUR = \d+
472 LEN = \d+)
99331854
YST
473 MAGIC = $ADDR
474 MG_VIRTUAL = &PL_vtbl_taint
475 MG_TYPE = PERL_MAGIC_taint\\(t\\)');
476
6bf47b08
SR
477# blessed refs
478do_test(22,
479 bless(\\undef, 'Foobar'),
4df7f6af 480'SV = $RV\\($ADDR\\) at $ADDR
6bf47b08
SR
481 REFCNT = 1
482 FLAGS = \\(ROK\\)
483 RV = $ADDR
484 SV = PVMG\\($ADDR\\) at $ADDR
485 REFCNT = 2
486 FLAGS = \\(OBJECT,ROK\\)
7957ad98
MB
487 IV = -?\d+
488 NV = $FLOAT
6bf47b08
SR
489 RV = $ADDR
490 SV = NULL\\(0x0\\) at $ADDR
491 REFCNT = \d+
492 FLAGS = \\(READONLY\\)
493 PV = $ADDR ""
494 CUR = 0
495 LEN = 0
496 STASH = $ADDR\s+"Foobar"');
b1886099
NC
497
498# Constant subroutines
499
500sub const () {
501 "Perl rules";
502}
503
504do_test(23,
505 \&const,
4df7f6af 506'SV = $RV\\($ADDR\\) at $ADDR
b1886099
NC
507 REFCNT = 1
508 FLAGS = \\(ROK\\)
509 RV = $ADDR
510 SV = PVCV\\($ADDR\\) at $ADDR
511 REFCNT = (2)
512 FLAGS = \\(POK,pPOK,CONST\\)
c84c4652 513 $IVNV
b1886099
NC
514 PROTOTYPE = ""
515 COMP_STASH = 0x0
d04ba589 516 $ROOT
b1886099
NC
517 XSUB = $ADDR
518 XSUBANY = $ADDR \\(CONST SV\\)
519 SV = PV\\($ADDR\\) at $ADDR
520 REFCNT = 1
521 FLAGS = \\(.*POK,READONLY,pPOK\\)
522 PV = $ADDR "Perl rules"\\\0
523 CUR = 10
524 LEN = \\d+
525 GVGV::GV = $ADDR\\t"main" :: "const"
526 FILE = ".*\\b(?i:peek\\.t)"
527 DEPTH = 0
528(?: MUTEXP = $ADDR
529 OWNER = $ADDR
f73ef291 530)? FLAGS = 0xc00
b1886099
NC
531 OUTSIDE_SEQ = 0
532 PADLIST = 0x0
533 OUTSIDE = 0x0 \\(null\\)');
2e94196c
NC
534
535# isUV should show on PVMG
536do_test(24,
537 do { my $v = $1; $v = ~0; $v },
538'SV = PVMG\\($ADDR\\) at $ADDR
539 REFCNT = 1
540 FLAGS = \\(IOK,pIOK,IsUV\\)
541 UV = \d+
542 NV = 0
543 PV = 0');