Branch Coverage

blib/lib/Promise/Me.pm
Criterion Covered Total %
branch 244 1012 24.1


line true false branch
73 0 18 if ($INC{'threads.pm'}) { }
115 0 0 'Module::Generic::File::Mmap'->has_xs ? :
18 0 'Module::Generic::SharedMemXS'->supported ? :
140 0 34 if ($_[$i] eq "debug" or $_[$i] eq "debug_code" or $_[$i] eq "debug_file" or $_[$i] eq "no_filter")
150 35 0 unless exists $hash->{'debug'}
151 35 0 unless exists $hash->{'no_filter'}
152 35 0 unless exists $hash->{'debug_code'}
162 6 0 if ($attr eq "Promise_shared")
165 0 6 unless ($type =~ /^(array|hash|scalar)$/)
167 0 0 if warnings::enabled() or $Promise::Me::DEBUG
185 0 35 if ($self->{'no_filter'})
193 0 2925 if $status < 0
195 35 2890 if (/^__(?:DATA|END)__/)
221 0 35 unless $line
222 35 0 unless ($status < 0)
226 0 35 if ($doc = $self->_parse($doc)) { }
235 35 0 if (length $last_line)
240 35 0 unless ($status <= 0)
244 0 35 if $status < 0
248 0 35 if ($self->{'debug_file'})
250 0 0 if (open my $fh, ">$self->{'debug_file'}")
264 0 28 if (@_ >= 2 and not ref $_[0] and ref $_[1] eq "CODE")
269 0 28 if not defined $code or ref $code ne "CODE"
279 14 14 $Promise::Me::SHARE_MEDIUM eq 'file' ? :
280 0 28 $Promise::Me::SHARE_MEDIUM eq 'mmap' ? :
284 0 28 if ($self->{'use_async'}) { }
289 0 0 scalar @{$self->{'args'};} ? :
304 18 10 if ($self->use_cache_file) { }
0 10 elsif ($self->use_mmap) { }
351 0 0 if ref $code ne "CODE"
360 0 32 if ref $code ne "CODE"
369 0 18 if ref $code ne "CODE"
377 0 0 if ref $this or $this ne "Promise::Me"
379 0 0 if ref $_[-1] eq "HASH"
382 0 0 scalar @_ == 1 && &Scalar::Util::reftype($_[0]) eq 'ARRAY' ? :
384 0 0 if &Scalar::Util::blessed($_)
396 0 0 if $opts->{'timeout'} =~ /^\d+$/
401 0 0 if exists $done->{$i}
403 0 0 if ($p->rejected) { }
0 0 elsif ($p->resolved) { }
412 0 0 if ($opts->{'race'}) { }
426 0 0 unless scalar @promises
429 0 0 if ($opts->{'race'}) { }
431 0 0 scalar @results > 1 ? :
435 0 0 if (not $keep_going) { }
460 0 2 if ref $_[-1] eq "HASH"
462 0 2 unless scalar @promises
463 4 0 if &Scalar::Util::blessed($_)
464 0 2 unless (scalar @promises)
466 0 0 if warnings::enabled()
477 0 0 if $Promise::Me::DEBUG
480 0 2 if $Promise::Me::DEBUG >= 4
487 0 29321 $prom->is_child ? :
489 4 29317 unless (defined $pid and exists $Promise::Me::KIDS->{$pid})
497 29313 4 if ($rv == 0) { }
4 0 elsif ($rv > 0) { }
0 0 elsif ($rv == -1) { }
504 0 0 unless ($prom->resolved or $prom->rejected)
507 0 0 if ($prom->exit_status) { }
510 0 0 if ($prom->exit_signal) { }
0 0 elsif ($prom->exit_status) { }
534 2 21548 unless scalar @promises
542 0 2 if $Promise::Me::DEBUG >= 4
543 2 0 scalar @results > 1 ? :
549 0 18 if scalar @_ == 1 and not defined $_[0]
550 18 0 if (@_)
553 0 18 if ref $code ne "CODE"
559 18 0 unless (Want::want("OBJECT"))
576 0 28 unless POSIX::sigprocmask(0, $sigset)
584 20 8 if ($pid) { }
8 0 elsif ($pid == 0) { }
589 0 20 unless POSIX::sigprocmask(1, $sigset)
596 0 20 if ($self->{'wait'}) { }
599 0 0 if (kill 0, $pid or $!{'EPERM'}) { }
604 0 0 if (WIFEXITED($?)) { }
630 0 8 unless $self->_set_shared_space
633 0 8 if ($INC{'threads.pm'} and not exists $INC{'forks.pm'})
640 0 8 @$args ? :
643 0 6 if (scalar @rv and &Scalar::Util::blessed($rv[0]) and $rv[0]->isa('Promise::Me')) { }
0 6 elsif (scalar @rv and &Scalar::Util::blessed($rv[0]) and $exception_class and $rv[0]->isa($exception_class)) { }
6 0 elsif (scalar @rv) { }
0 0 elsif ($self->resolved) { }
0 0 elsif ($self->rejected) { }
673 6 0 if not defined $Nice::Try::WANTARRAY and scalar @Nice::Try::LAST_VAL
0 0 &$Nice::Try::TRY ? :
0 0 if scalar @Nice::Try::VOID
0 0 if ($Nice::Try::WANT eq 'OBJECT') { }
0 0 elsif ($Nice::Try::WANT eq 'CODE') { }
0 0 elsif ($Nice::Try::WANT eq 'HASH') { }
0 0 elsif ($Nice::Try::WANT eq 'ARRAY') { }
0 0 elsif ($Nice::Try::WANT eq 'REFSCALAR') { }
0 0 elsif ($Nice::Try::WANT eq 'GLOB') { }
0 0 elsif ($Nice::Try::WANT eq 'LIST') { }
0 0 elsif ($Nice::Try::WANT eq 'BOOLEAN') { }
0 0 elsif ($Nice::Try::WANT eq 'VOID') { }
0 0 elsif ($Nice::Try::WANT eq 'SCALAR') { }
0 6 if defined $Nice::Try::LAST_VAL
0 8 if ($Nice::Try::WANTARRAY) { }
0 8 elsif (defined $Nice::Try::WANTARRAY) { }
0 8 if (defined $Nice::Try::WANT and length $Nice::Try::WANT) { }
2 6 length $@ ? :
8 0 unless &Scalar::Util::blessed($@)
2 0 if ($Nice::Try::HAS_CATCH)
2 6 if ($Nice::Try::DIED)
675 0 2 if (&Scalar::Util::blessed($e)) { }
683 2 0 if not defined $Nice::Try::WANTARRAY and scalar @Nice::Try::LAST_VAL
0 0 &$Nice::Try::CATCH ? :
0 0 if scalar @Nice::Try::VOID
0 0 if ($Nice::Try::WANT eq 'OBJECT') { }
0 0 elsif ($Nice::Try::WANT eq 'CODE') { }
0 0 elsif ($Nice::Try::WANT eq 'HASH') { }
0 0 elsif ($Nice::Try::WANT eq 'ARRAY') { }
0 0 elsif ($Nice::Try::WANT eq 'REFSCALAR') { }
0 0 elsif ($Nice::Try::WANT eq 'GLOB') { }
0 0 elsif ($Nice::Try::WANT eq 'LIST') { }
0 0 elsif ($Nice::Try::WANT eq 'BOOLEAN') { }
0 0 elsif ($Nice::Try::WANT eq 'VOID') { }
0 0 elsif ($Nice::Try::WANT eq 'SCALAR') { }
0 2 if ($Nice::Try::WANTARRAY) { }
0 2 elsif (defined $Nice::Try::WANTARRAY) { }
0 2 if (defined $Nice::Try::WANT and length $Nice::Try::WANT) { }
0 0 if (defined $Nice::Try::RETVAL[0] and $Nice::Try::RETVAL[0] eq '__NEXT__') { }
0 0 elsif (defined $Nice::Try::RETVAL[0] and $Nice::Try::RETVAL[0] eq '__LAST__') { }
0 0 elsif (defined $Nice::Try::RETVAL[0] and $Nice::Try::RETVAL[0] eq '__REDO__') { }
0 0 if ($Nice::Try::WANT eq 'LIST') { }
0 0 elsif ($Nice::Try::WANT eq 'VOID') { }
0 0 elsif ($Nice::Try::WANT eq 'OBJECT') { }
0 0 elsif ($Nice::Try::WANT eq 'REFSCALAR') { }
0 0 elsif ($Nice::Try::WANT eq 'SCALAR') { }
0 0 elsif ($Nice::Try::WANT eq 'BOOLEAN') { }
0 0 elsif ($Nice::Try::WANT eq 'CODE') { }
0 0 elsif ($Nice::Try::WANT eq 'HASH') { }
0 0 elsif ($Nice::Try::WANT eq 'ARRAY') { }
0 0 elsif ($Nice::Try::WANT eq 'GLOB') { }
0 0 $Nice::Try::WANTARRAY ? :
0 0 if (defined $Nice::Try::WANT and length $Nice::Try::WANT) { }
0 0 unless (defined $Nice::Try::BREAK)
0 0 if (defined $Nice::Try::WANTARRAY and !&Scalar::Util::blessed($Nice::Try::RETVAL[0]) || &Scalar::Util::blessed($Nice::Try::RETVAL[0]) && !$Nice::Try::RETVAL[0]->isa('Nice::Try::SENTINEL'))
0 0 if ($Nice::Try::BREAK eq 'next') { }
0 0 elsif ($Nice::Try::BREAK eq 'last') { }
0 0 elsif ($Nice::Try::BREAK eq 'redo') { }
0 8 if (defined $Nice::Try::BREAK)
0 8 scalar @Nice::Try::LAST_VAL > 1 ? :
689 0 0 if ($! == 11) { }
0 0 elsif ($! == 12) { }
723 10 6 if ($h->[$i]{'type'} eq $type)
730 8 10 unless defined $code
750 0 0 if scalar @_ and &Scalar::Util::blessed($_[0]) and $_[0]->isa("Promise::Me")
752 0 0 unless ref $_[-1]
753 0 0 $self->is_child ? :
757 0 0 if (defined $self) { }
762 0 0 &Scalar::Util::blessed($tied) ? :
0 0 if $Promise::Me::DEBUG >= 4
764 0 0 if (&Scalar::Util::blessed($tied) and $tied->isa("Promise::Me::Share"))
767 0 0 defined $type ? :
770 0 0 if $self
782 0 0 if ref $this or $this ne "Promise::Me"
784 0 0 if ref $_[-1] eq "HASH"
796 0 2 unless (defined $code)
801 0 2 if ($INC{'threads.pm'} and not exists $INC{'forks.pm'})
805 0 2 if (scalar @rv and &Scalar::Util::blessed($rv[0]) and $rv[0]->isa('Promise::Me')) { }
2 0 elsif (scalar @rv) { }
822 0 0 if not defined $Nice::Try::WANTARRAY and scalar @Nice::Try::LAST_VAL
0 0 &$Nice::Try::TRY ? :
0 0 if scalar @Nice::Try::VOID
0 0 if ($Nice::Try::WANT eq 'OBJECT') { }
0 0 elsif ($Nice::Try::WANT eq 'CODE') { }
0 0 elsif ($Nice::Try::WANT eq 'HASH') { }
0 0 elsif ($Nice::Try::WANT eq 'ARRAY') { }
0 0 elsif ($Nice::Try::WANT eq 'REFSCALAR') { }
0 0 elsif ($Nice::Try::WANT eq 'GLOB') { }
0 0 elsif ($Nice::Try::WANT eq 'LIST') { }
0 0 elsif ($Nice::Try::WANT eq 'BOOLEAN') { }
0 0 elsif ($Nice::Try::WANT eq 'VOID') { }
0 0 elsif ($Nice::Try::WANT eq 'SCALAR') { }
0 0 if defined $Nice::Try::LAST_VAL
2 0 if ($Nice::Try::WANTARRAY) { }
0 0 elsif (defined $Nice::Try::WANTARRAY) { }
0 2 if (defined $Nice::Try::WANT and length $Nice::Try::WANT) { }
0 2 length $@ ? :
2 0 unless &Scalar::Util::blessed($@)
0 0 if ($Nice::Try::HAS_CATCH)
0 2 if ($Nice::Try::DIED)
824 0 0 if (&Scalar::Util::blessed($e)) { }
832 0 0 if not defined $Nice::Try::WANTARRAY and scalar @Nice::Try::LAST_VAL
0 0 &$Nice::Try::CATCH ? :
0 0 if scalar @Nice::Try::VOID
0 0 if ($Nice::Try::WANT eq 'OBJECT') { }
0 0 elsif ($Nice::Try::WANT eq 'CODE') { }
0 0 elsif ($Nice::Try::WANT eq 'HASH') { }
0 0 elsif ($Nice::Try::WANT eq 'ARRAY') { }
0 0 elsif ($Nice::Try::WANT eq 'REFSCALAR') { }
0 0 elsif ($Nice::Try::WANT eq 'GLOB') { }
0 0 elsif ($Nice::Try::WANT eq 'LIST') { }
0 0 elsif ($Nice::Try::WANT eq 'BOOLEAN') { }
0 0 elsif ($Nice::Try::WANT eq 'VOID') { }
0 0 elsif ($Nice::Try::WANT eq 'SCALAR') { }
0 0 if ($Nice::Try::WANTARRAY) { }
0 0 elsif (defined $Nice::Try::WANTARRAY) { }
0 0 if (defined $Nice::Try::WANT and length $Nice::Try::WANT) { }
0 0 if (defined $Nice::Try::RETVAL[0] and $Nice::Try::RETVAL[0] eq '__NEXT__') { }
0 0 elsif (defined $Nice::Try::RETVAL[0] and $Nice::Try::RETVAL[0] eq '__LAST__') { }
0 0 elsif (defined $Nice::Try::RETVAL[0] and $Nice::Try::RETVAL[0] eq '__REDO__') { }
0 0 if ($Nice::Try::WANT eq 'LIST') { }
0 0 elsif ($Nice::Try::WANT eq 'VOID') { }
0 0 elsif ($Nice::Try::WANT eq 'OBJECT') { }
0 0 elsif ($Nice::Try::WANT eq 'REFSCALAR') { }
0 0 elsif ($Nice::Try::WANT eq 'SCALAR') { }
0 0 elsif ($Nice::Try::WANT eq 'BOOLEAN') { }
0 0 elsif ($Nice::Try::WANT eq 'CODE') { }
0 0 elsif ($Nice::Try::WANT eq 'HASH') { }
0 0 elsif ($Nice::Try::WANT eq 'ARRAY') { }
0 0 elsif ($Nice::Try::WANT eq 'GLOB') { }
2 0 $Nice::Try::WANTARRAY ? :
0 2 if (defined $Nice::Try::WANT and length $Nice::Try::WANT) { }
2 0 unless (defined $Nice::Try::BREAK)
2 0 if (defined $Nice::Try::WANTARRAY and !&Scalar::Util::blessed($Nice::Try::RETVAL[0]) || &Scalar::Util::blessed($Nice::Try::RETVAL[0]) && !$Nice::Try::RETVAL[0]->isa('Nice::Try::SENTINEL'))
0 0 if ($Nice::Try::BREAK eq 'next') { }
0 0 elsif ($Nice::Try::BREAK eq 'last') { }
0 0 elsif ($Nice::Try::BREAK eq 'redo') { }
0 0 if (defined $Nice::Try::BREAK)
0 0 scalar @Nice::Try::LAST_VAL > 1 ? :
841 16 0 $self->is_child ? :
842 0 16 if ($self->debug >= 3)
855 8 8 unless (defined $code and ref $code)
861 0 8 if ($INC{'threads.pm'} and not exists $INC{'forks.pm'})
864 0 8 unless $self->result(@rv)
866 0 8 if (scalar @rv and &Scalar::Util::blessed($rv[0]) and $rv[0]->isa('Promise::Me')) { }
8 0 elsif (scalar @rv) { }
883 0 0 if not defined $Nice::Try::WANTARRAY and scalar @Nice::Try::LAST_VAL
0 0 &$Nice::Try::TRY ? :
0 0 if scalar @Nice::Try::VOID
0 0 if ($Nice::Try::WANT eq 'OBJECT') { }
0 0 elsif ($Nice::Try::WANT eq 'CODE') { }
0 0 elsif ($Nice::Try::WANT eq 'HASH') { }
0 0 elsif ($Nice::Try::WANT eq 'ARRAY') { }
0 0 elsif ($Nice::Try::WANT eq 'REFSCALAR') { }
0 0 elsif ($Nice::Try::WANT eq 'GLOB') { }
0 0 elsif ($Nice::Try::WANT eq 'LIST') { }
0 0 elsif ($Nice::Try::WANT eq 'BOOLEAN') { }
0 0 elsif ($Nice::Try::WANT eq 'VOID') { }
0 0 elsif ($Nice::Try::WANT eq 'SCALAR') { }
0 0 if defined $Nice::Try::LAST_VAL
8 0 if ($Nice::Try::WANTARRAY) { }
0 0 elsif (defined $Nice::Try::WANTARRAY) { }
0 8 if (defined $Nice::Try::WANT and length $Nice::Try::WANT) { }
0 8 length $@ ? :
8 0 unless &Scalar::Util::blessed($@)
0 0 if ($Nice::Try::HAS_CATCH)
0 8 if ($Nice::Try::DIED)
886 0 0 if (&Scalar::Util::blessed($e)) { }
896 0 0 if not defined $Nice::Try::WANTARRAY and scalar @Nice::Try::LAST_VAL
0 0 &$Nice::Try::CATCH ? :
0 0 if scalar @Nice::Try::VOID
0 0 if ($Nice::Try::WANT eq 'OBJECT') { }
0 0 elsif ($Nice::Try::WANT eq 'CODE') { }
0 0 elsif ($Nice::Try::WANT eq 'HASH') { }
0 0 elsif ($Nice::Try::WANT eq 'ARRAY') { }
0 0 elsif ($Nice::Try::WANT eq 'REFSCALAR') { }
0 0 elsif ($Nice::Try::WANT eq 'GLOB') { }
0 0 elsif ($Nice::Try::WANT eq 'LIST') { }
0 0 elsif ($Nice::Try::WANT eq 'BOOLEAN') { }
0 0 elsif ($Nice::Try::WANT eq 'VOID') { }
0 0 elsif ($Nice::Try::WANT eq 'SCALAR') { }
0 0 if ($Nice::Try::WANTARRAY) { }
0 0 elsif (defined $Nice::Try::WANTARRAY) { }
0 0 if (defined $Nice::Try::WANT and length $Nice::Try::WANT) { }
0 0 if (defined $Nice::Try::RETVAL[0] and $Nice::Try::RETVAL[0] eq '__NEXT__') { }
0 0 elsif (defined $Nice::Try::RETVAL[0] and $Nice::Try::RETVAL[0] eq '__LAST__') { }
0 0 elsif (defined $Nice::Try::RETVAL[0] and $Nice::Try::RETVAL[0] eq '__REDO__') { }
0 0 if ($Nice::Try::WANT eq 'LIST') { }
0 0 elsif ($Nice::Try::WANT eq 'VOID') { }
0 0 elsif ($Nice::Try::WANT eq 'OBJECT') { }
0 0 elsif ($Nice::Try::WANT eq 'REFSCALAR') { }
0 0 elsif ($Nice::Try::WANT eq 'SCALAR') { }
0 0 elsif ($Nice::Try::WANT eq 'BOOLEAN') { }
0 0 elsif ($Nice::Try::WANT eq 'CODE') { }
0 0 elsif ($Nice::Try::WANT eq 'HASH') { }
0 0 elsif ($Nice::Try::WANT eq 'ARRAY') { }
0 0 elsif ($Nice::Try::WANT eq 'GLOB') { }
8 0 $Nice::Try::WANTARRAY ? :
0 8 if (defined $Nice::Try::WANT and length $Nice::Try::WANT) { }
8 0 unless (defined $Nice::Try::BREAK)
8 0 if (defined $Nice::Try::WANTARRAY and !&Scalar::Util::blessed($Nice::Try::RETVAL[0]) || &Scalar::Util::blessed($Nice::Try::RETVAL[0]) && !$Nice::Try::RETVAL[0]->isa('Nice::Try::SENTINEL'))
0 0 if ($Nice::Try::BREAK eq 'next') { }
0 0 elsif ($Nice::Try::BREAK eq 'last') { }
0 0 elsif ($Nice::Try::BREAK eq 'redo') { }
0 0 if (defined $Nice::Try::BREAK)
0 0 scalar @Nice::Try::LAST_VAL > 1 ? :
905 8 4 $self->is_child ? :
906 8 4 if (@_) { }
909 2 6 @_ == 1 && ref $_[0] ? :
910 8 0 if ($shm) { }
913 0 8 if ref $hash ne "HASH"
916 0 8 unless $shm->write($hash)
923 0 0 if warnings::enabled() or $self->debug
929 0 4 if ref $hash ne "HASH"
944 0 12 if scalar @_ and &Scalar::Util::blessed($_[0]) and $_[0]->isa("Promise::Me")
949 0 24 if $Promise::Me::DEBUG
950 0 24 unless ($type =~ /^(array|hash|scalar)$/)
952 0 0 if warnings::enabled() or $Promise::Me::DEBUG
956 0 12 if $Promise::Me::DEBUG >= 4
957 0 12 unless &_share_vars([@_])
975 0 32 if scalar @_ == 1 and not defined $_[0]
976 32 0 if (@_)
979 0 32 if ref $pass ne "CODE"
980 0 32 if defined $fail and ref $fail ne "CODE"
982 0 32 if defined $fail
985 0 0 if ($self->executed and scalar @$vals)
987 0 0 if ($self->rejected) { }
1000 10 22 unless (Want::want("OBJECT") or $self->executed)
1011 0 0 if scalar @_ and &Scalar::Util::blessed($_[0]) and $_[0]->isa("Promise::Me")
1013 0 0 unless ref $_[-1]
1014 0 0 $self->is_child ? :
1018 0 0 if (defined $self) { }
1023 0 0 &Scalar::Util::blessed($tied) ? :
0 0 if $Promise::Me::DEBUG >= 4
1025 0 0 if (&Scalar::Util::blessed($tied) and $tied->isa("Promise::Me::Share"))
1028 0 0 defined $type ? :
1031 0 0 if $self
1037 0 0 if scalar @_ and &Scalar::Util::blessed($_[0]) and $_[0]->isa("Promise::Me")
1039 0 0 unless exists $Promise::Me::SHARED->{$pack}
1041 0 0 if $Promise::Me::DEBUG >= 3
1046 0 0 if (exists $Promise::Me::SHARED->{$pack}{$addr}) { }
1053 0 0 if $Promise::Me::DEBUG >= 3
1056 0 0 scalar @removed > 1 ? :
1072 0 0 if (@_) { }
0 0 elsif (Want::want('OBJECT')) { }
0 0 elsif (Want::want('VOID') or Want::want('SCALAR')) { }
1100 0 0 unless $elem->children
1103 0 0 if $Promise::Me::DEBUG >= 4
1104 0 0 if ($e->can("children") and $e->children)
1115 0 35 if $self->debug
1118 0 35 unless (&Scalar::Util::blessed($elem) and $elem->isa("PPI::Node"))
1127 1415 34899 if ($this->class eq "PPI::Statement" and substr($this->content, 0, 5) ne "async")
1137 0 35 if (scalar @$sts)
1147 0 0 if ($e->class eq "PPI::Token::Word" and $e->content eq "async")
1150 0 0 if ($e->snext_sibling and $e->snext_sibling->class eq 'PPI::Token::Word' and $e->snext_sibling->content eq 'sub') { }
1171 0 0 unless $st->__insert_after($new)
1181 0 35 unless defined $ref
1182 35 0 unless scalar @$ref
1187 0 0 unless ($e->content =~ /^async[[:blank:]\h\v]+sub[[:blank:]\h\v]+/)
1210 0 0 if (scalar @$tmp_nodes and $sib->class eq 'PPI::Structure::Block') { }
0 0 elsif (not scalar @$tmp_nodes and $sib->class eq 'PPI::Token::Word' and $sib->content eq 'async') { }
0 0 elsif (scalar @$tmp_nodes) { }
1220 0 0 unless $last->__insert_after($new)
1232 0 0 if ($sib->snext_sibling and $sib->snext_sibling->class eq 'PPI::Token::Word' and $sib->snext_sibling->content eq 'sub') { }
1294 18 4 if (@_) { }
1297 18 0 if ($shm) { }
1300 1 17 if ref $hash ne "HASH"
1304 0 18 if not defined $rv and $shm->error
1309 0 0 if warnings::enabled()
1316 0 4 unless ref $hash
1338 0 28 if (@_)
1341 0 0 if (defined $val and length $val)
1350 0 0 if (exists $$map{substr $val, -1, 1})
1364 0 12 if scalar @_ and ref $_[-1] eq "HASH"
1366 0 12 unless scalar @$vars
1368 6 6 $opts->{'medium'} eq 'file' ? :
1369 0 12 $opts->{'medium'} eq 'mmap' ? :
1370 12 0 unless exists $opts->{'fallback'} and length $opts->{'fallback'}
1375 6 6 unless (ref $Promise::Me::SHARED->{$index} eq "HASH")
1380 6 6 if (scalar keys %{$$Promise::Me::SHARED{$index};}) { }
1382 0 6 if $Promise::Me::DEBUG >= 4
1386 0 6 $type eq 'hash' ? :
0 6 $type eq 'array' ? :
1387 0 6 unless (&Scalar::Util::blessed($tied) and $tied->isa("Promise::Me::Share"))
1393 0 6 if ref $data ne "HASH"
1398 0 6 if $Promise::Me::DEBUG >= 4
1412 6 0 if defined $serialiser
1413 6 0 if (defined $serialiser and $serialiser eq 'sereal' || $serialiser eq 'storable' || $serialiser eq 'cbor') { }
1427 6 0 if defined $size and length $size and int $size > 0
1428 0 6 if ($opts->{'use_mmap'} or $opts->{'medium'} eq 'mmap') { }
3 3 elsif ('Module::Generic::SharedMemXS'->supported and not $opts->{'use_cache_file'} or $opts->{'medium'} eq 'memory') { }
1440 0 3 if (not $shm) { }
1442 0 0 if ($opts->{'fallback'}) { }
1467 0 12 if $Promise::Me::DEBUG >= 4
1469 0 12 if $Promise::Me::DEBUG >= 4
1474 0 24 unless ($type =~ /^(array|hash|scalar)$/)
1476 0 0 if warnings::enabled() or $Promise::Me::DEBUG
1480 0 24 if $Promise::Me::DEBUG >= 4
1492 6 18 if ($type eq 'array') { }
6 12 elsif ($type eq 'hash') { }
12 0 elsif ($type eq 'scalar') { }
1506 0 24 unless (defined $tied)
1507 0 0 if warnings::enabled() or $Promise::Me::DEBUG
1514 0 12 if $Promise::Me::DEBUG >= 6
1516 0 12 unless $shm->write($data)
1519 0 12 if $Promise::Me::DEBUG >= 6
1520 6 6 scalar @objects > 1 ? :
1539 28 0 if defined $serialiser
1540 28 0 if (defined $serialiser and $serialiser eq 'sereal' || $serialiser eq 'storable' || $serialiser eq 'cbor') { }
1554 28 0 if defined $size and length $size and int $size > 0
1558 3 7 if (defined $self->{'medium'} && $self->{'medium'} eq 'memory' || !($self->{'use_cache_file'} || $self->{'use_mmap'}) && $self->{'medium'} ne 'file' && $self->{'medium'} ne 'mmap' and $self->is_child)
1569 0 28 if ($self->{'use_mmap'} or $self->{'medium'} eq 'mmap') { }
10 18 elsif ('Module::Generic::SharedMemXS'->supported and not $self->{'use_cache_file'} and $self->{'medium'} ne 'file' or $self->{'medium'} eq 'memory') { }
1581 0 10 if (not $shm) { }
1583 0 0 if ($s->error->message =~ /No[[:blank:]\h]+space[[:blank:]\h]+left/i) { }
1608 20 8 if ($self->is_parent)
1624 0 0 if ($destroy and $child and length $status and $shm)
1627 0 0 if ($shm->isa("Module::Generic::SharedMem") or $shm->isa("Module::Generic::SharedMemXS"))
1635 0 0 if (not defined $Promise::Me::OBJECTS_REPO->[$i]) { }
0 0 elsif (&Scalar::Util::refaddr($Promise::Me::OBJECTS_REPO->[$i]) eq $addr) { }
1659 12 6 if $pid ne $$
1661 2 4 if ($o->shared_space_destroy and $shm = $o->shared_mem and $shm->isa('Module::Generic::SharedMem') || $shm->isa('Module::Generic::SharedMemXS'))
1669 4 2 unless exists $Promise::Me::SHARED->{$pid}
1671 0 0 $rv ? :
0 2 if $Promise::Me::DEBUG >= 4
1675 0 1 $type eq 'hash' ? :
1 1 $type eq 'array' ? :
1676 0 2 unless (&Scalar::Util::blessed($tied) and $tied->isa("Promise::Me::Share"))
1681 0 2 unless $shm
1694 0 0 ref $_[0] ? :
1778 0 0 if ($self->{'type'} eq 'array') { }
0 0 elsif ($self->{'type'} eq 'hash') { }
0 0 elsif ($self->{'type'} eq 'scalar') { }
1791 0 0 if ($locked & 2) { }
1797 0 0 unless $self->unload($self->{'data'})
1807 0 0 unless ($locked)
1812 0 0 if ($self->{'type'} eq 'array') { }
0 0 elsif ($self->{'type'} eq 'hash') { }
1821 0 0 if ($locked & 2) { }
1827 0 0 unless $self->unload($self->{'data'})
1837 0 0 unless ($locked)
1841 0 0 if ($self->{'type'} eq 'array') { }
0 0 elsif ($self->{'type'} eq 'hash') { }
1856 0 6 if (caller eq "Promise::Me::Share")
1862 0 6 if ($locked or $self->{'_iterating'}) { }
1873 0 6 if ($self->{'type'} eq 'array') { }
0 6 elsif ($self->{'type'} eq 'hash') { }
6 0 elsif ($self->{'type'} eq 'scalar') { }
1894 0 0 unless ($locked)
1898 0 0 if ($self->{'type'} eq 'array') { }
0 0 elsif ($self->{'type'} eq 'hash') { }
0 0 elsif ($self->{'type'} eq 'scalar') { }
1916 0 0 unless ($locked)
1930 0 0 if (not defined $next) { }
1946 0 0 unless ($locked)
1951 0 0 if ($locked & 2) { }
1957 0 0 unless $self->unload($self->{'data'})
1966 0 0 unless ($locked)
1971 0 0 if ($locked & 2) { }
1977 0 0 unless $self->unload($self->{'data'})
1985 0 0 unless ($locked)
1989 0 0 if ($self->{'type'} eq "hash")
1999 0 0 unless ($locked)
2004 0 0 if ($locked & 2) { }
2010 0 0 unless $self->load($self->{'data'})
2020 0 0 unless ($locked)
2025 0 0 if ($locked & 2) { }
2031 0 0 unless $self->unload($self->{'data'})
2040 10 0 unless ($locked)
2045 0 10 if ($self->{'type'} eq 'array') { }
0 10 elsif ($self->{'type'} eq 'hash') { }
10 0 elsif ($self->{'type'} eq 'scalar') { }
2061 0 10 if ($locked & 2) { }
2067 0 10 unless $self->unload($self->{'data'})
2077 0 0 unless ($locked)
2082 0 0 if ($locked & 2) { }
2088 0 0 unless $self->unload($self->{'data'})
2097 0 0 unless ($locked)
2102 0 0 if ($locked & 2) { }
2108 0 0 unless $self->unload($self->{'data'})
2128 0 16 unless defined $repo and length $repo
2129 0 16 if ref $repo ne "HASH" and $self->_warnings_is_enabled
2132 0 16 $self->{'type'} eq 'hash' ? :
0 16 $self->{'type'} eq 'array' ? :
0 16 if (my $obj = tied($self->{'type'} eq "array" ? @$data : ($self->{'type'} eq "hash" ? @$data : $$data)))
2137 0 16 if (not ref $data) { }
0 16 elsif (lc ref $data ne $self->{'type'}) { }
2154 0 0 unless defined $repo and length $repo
2155 0 0 if ref $repo ne "HASH" and $self->_warnings_is_enabled
2157 0 0 if not exists $repo->{'_lock'} or ref $repo->{'_lock'} ne "HASH"
2158 0 0 if (exists $repo->{'_lock'}{$addr})
2160 0 0 $repo->{'_lock'}{$addr} == $$ ? :
0 0 if warnings::enabled() or $Promise::Me::Share::DEBUG
2165 0 0 unless defined $rv
2175 0 16 unless defined $repo and length $repo
2176 0 16 if ref $repo ne "HASH" and $self->_warnings_is_enabled
2178 16 0 if not exists $repo->{'_lock'} or ref $repo->{'_lock'} ne "HASH"
2188 0 0 unless defined $repo and length $repo
2189 0 0 if ref $repo ne "HASH" and $self->_warnings_is_enabled
2193 0 0 unless $sh->write($repo)
2209 0 10 unless defined $repo and length $repo
2210 0 10 if ref $repo ne "HASH" and $self->_warnings_is_enabled
2214 0 10 unless defined $rv
2225 0 0 unless defined $repo and length $repo
2226 0 0 if ref $repo ne "HASH" and $self->_warnings_is_enabled
2228 0 0 if ($repo->{'_lock'}{$addr} != $$)
2234 0 0 if ($self->{'_changed'})
2242 0 0 unless defined $rv
2251 0 24 unless exists $opts->{'shm'} and length $opts->{'shm'} and &Scalar::Util::blessed($opts->{'shm'})
2252 0 24 unless length $opts->{'type'} and length $opts->{'type'}
2253 0 24 unless $opts->{'type'} =~ /^(array|hash|scalar)$/i
2270 12 12 if ($opts->{'type'} eq 'scalar') { }
6 6 elsif ($opts->{'type'} eq 'array') { }
6 0 elsif ($opts->{'type'} eq 'hash') { }
2289 0 6 if $Promise::Me::Share::DEBUG
2298 0 0 if ($self->{'type'} eq 'scalar') { }
0 0 elsif ($self->{'type'} eq 'array') { }
0 0 elsif ($self->{'type'} eq 'hash') { }
2313 0 0 if $serialiser eq "Sereal" and "Sereal::Encoder"->VERSION <= "version"->parse("4.023")
2324 0 0 scalar @args == 1 && ref $args[0] eq 'ARRAY' ? :
2325 0 0 defined $ref && ref $ref eq 'ARRAY' && scalar @$ref > 1 ? :
2326 0 0 ref $ref eq 'ARRAY' ? :
2329 0 0 if (ref $self) { }