Branch Coverage

blib/lib/Promise/Me.pm
Criterion Covered Total %
branch 246 1028 23.9


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 3388 if $status < 0
195 35 3353 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"
280 14 14 $Promise::Me::SHARE_MEDIUM eq 'file' ? :
281 0 28 $Promise::Me::SHARE_MEDIUM eq 'mmap' ? :
285 0 28 if ($self->{'use_async'}) { }
290 0 0 scalar @{$self->{'args'};} ? :
305 18 10 if ($self->use_cache_file) { }
0 10 elsif ($self->use_mmap) { }
352 0 0 if ref $code ne "CODE"
361 0 32 if ref $code ne "CODE"
370 0 18 if ref $code ne "CODE"
378 0 0 if ref $this or $this ne "Promise::Me"
380 0 0 if ref $_[-1] eq "HASH"
383 0 0 scalar @_ == 1 && &Scalar::Util::reftype($_[0]) eq 'ARRAY' ? :
385 0 0 if &Scalar::Util::blessed($_)
397 0 0 if $opts->{'timeout'} =~ /^\d+$/
402 0 0 if exists $done->{$i}
404 0 0 if ($p->rejected) { }
0 0 elsif ($p->resolved) { }
413 0 0 if ($opts->{'race'}) { }
427 0 0 unless scalar @promises
430 0 0 if ($opts->{'race'}) { }
432 0 0 scalar @results > 1 ? :
436 0 0 if (not $keep_going) { }
461 0 2 if ref $_[-1] eq "HASH"
463 0 2 unless scalar @promises
464 4 0 if &Scalar::Util::blessed($_)
465 0 2 unless (scalar @promises)
467 0 0 if warnings::enabled()
478 0 0 if $Promise::Me::DEBUG
481 0 2 if $Promise::Me::DEBUG >= 4
488 0 25180 $prom->is_child ? :
490 4 25176 unless (defined $pid and exists $Promise::Me::KIDS->{$pid})
498 25172 4 if ($rv == 0) { }
4 0 elsif ($rv > 0) { }
0 0 elsif ($rv == -1) { }
505 0 0 unless ($prom->resolved or $prom->rejected)
508 0 0 if ($prom->exit_status) { }
511 0 0 if ($prom->exit_signal) { }
0 0 elsif ($prom->exit_status) { }
535 2 17971 unless scalar @promises
543 0 2 if $Promise::Me::DEBUG >= 4
544 2 0 scalar @results > 1 ? :
550 0 18 if scalar @_ == 1 and not defined $_[0]
551 18 0 if (@_)
554 0 18 if ref $code ne "CODE"
560 18 0 unless (Want::want("OBJECT"))
563 0 12 unless $self->exec
577 0 28 unless POSIX::sigprocmask(0, $sigset)
585 20 8 if ($pid) { }
8 0 elsif ($pid == 0) { }
590 0 20 unless POSIX::sigprocmask(1, $sigset)
597 0 20 if ($self->{'wait'}) { }
600 0 0 if (kill 0, $pid or $!{'EPERM'}) { }
605 0 0 if (WIFEXITED($?)) { }
631 0 8 unless $self->_set_shared_space
634 0 8 if ($INC{'threads.pm'} and not exists $INC{'forks.pm'})
641 0 8 @$args ? :
644 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) { }
674 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
0 8 if ($Nice::Try::WANTARRAY) { }
8 0 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)
676 0 2 if (&Scalar::Util::blessed($e)) { }
684 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 2 if ($Nice::Try::WANTARRAY) { }
2 0 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 8 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 ? :
690 0 0 if ($! == 11) { }
0 0 elsif ($! == 12) { }
724 10 6 if ($h->[$i]{'type'} eq $type)
731 8 10 unless defined $code
751 0 0 if scalar @_ and &Scalar::Util::blessed($_[0]) and $_[0]->isa("Promise::Me")
753 0 0 unless ref $_[-1]
754 0 0 $self->is_child ? :
758 0 0 if (defined $self) { }
763 0 0 &Scalar::Util::blessed($tied) ? :
0 0 if $Promise::Me::DEBUG >= 4
765 0 0 if (&Scalar::Util::blessed($tied) and $tied->isa("Promise::Me::Share"))
768 0 0 defined $type ? :
771 0 0 if $self
783 0 0 if ref $this or $this ne "Promise::Me"
785 0 0 if ref $_[-1] eq "HASH"
797 0 2 unless (defined $code)
802 0 2 if ($INC{'threads.pm'} and not exists $INC{'forks.pm'})
806 0 2 if (scalar @rv and &Scalar::Util::blessed($rv[0]) and $rv[0]->isa('Promise::Me')) { }
2 0 elsif (scalar @rv) { }
823 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)
825 0 0 if (&Scalar::Util::blessed($e)) { }
833 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 ? :
842 16 0 $self->is_child ? :
843 0 16 if ($self->debug >= 3)
856 8 8 unless (defined $code and ref $code)
862 0 8 if ($INC{'threads.pm'} and not exists $INC{'forks.pm'})
865 0 8 unless $self->result(@rv)
867 0 8 if (scalar @rv and &Scalar::Util::blessed($rv[0]) and $rv[0]->isa('Promise::Me')) { }
8 0 elsif (scalar @rv) { }
884 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)
887 0 0 if (&Scalar::Util::blessed($e)) { }
897 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 ? :
906 8 4 $self->is_child ? :
907 8 4 if (@_) { }
910 2 6 @_ == 1 && ref $_[0] ? :
911 8 0 if ($shm) { }
914 0 8 if ref $hash ne "HASH"
917 0 8 unless $shm->write($hash)
924 0 0 if warnings::enabled() or $self->debug
929 0 4 if (not $self->executed) { }
0 4 elsif (not $shm) { }
938 0 4 if ref $hash ne "HASH"
953 0 12 if scalar @_ and &Scalar::Util::blessed($_[0]) and $_[0]->isa("Promise::Me")
958 0 24 if $Promise::Me::DEBUG
959 0 24 unless ($type =~ /^(array|hash|scalar)$/)
961 0 0 if warnings::enabled() or $Promise::Me::DEBUG
965 0 12 if $Promise::Me::DEBUG >= 4
966 0 12 unless &_share_vars([@_])
986 0 32 if scalar @_ == 1 and not defined $_[0]
987 32 0 if (@_)
990 0 32 if ref $pass ne "CODE"
991 0 32 if defined $fail and ref $fail ne "CODE"
993 0 32 if defined $fail
996 0 0 if ($self->executed and scalar @$vals)
998 0 0 if ($self->rejected) { }
1011 10 22 unless (Want::want("OBJECT") or $self->executed)
1014 0 8 unless $self->exec
1022 0 0 if scalar @_ and &Scalar::Util::blessed($_[0]) and $_[0]->isa("Promise::Me")
1024 0 0 unless ref $_[-1]
1025 0 0 $self->is_child ? :
1029 0 0 if (defined $self) { }
1034 0 0 &Scalar::Util::blessed($tied) ? :
0 0 if $Promise::Me::DEBUG >= 4
1036 0 0 if (&Scalar::Util::blessed($tied) and $tied->isa("Promise::Me::Share"))
1039 0 0 defined $type ? :
1042 0 0 if $self
1048 0 0 if scalar @_ and &Scalar::Util::blessed($_[0]) and $_[0]->isa("Promise::Me")
1050 0 0 unless exists $Promise::Me::SHARED->{$pack}
1052 0 0 if $Promise::Me::DEBUG >= 3
1057 0 0 if (exists $Promise::Me::SHARED->{$pack}{$addr}) { }
1064 0 0 if $Promise::Me::DEBUG >= 3
1067 0 0 scalar @removed > 1 ? :
1083 0 0 if (@_) { }
0 0 elsif (Want::want('OBJECT')) { }
0 0 elsif (Want::want('VOID') or Want::want('SCALAR')) { }
1097 0 0 unless $self->exec
1111 0 0 unless $elem->children
1114 0 0 if $Promise::Me::DEBUG >= 4
1115 0 0 if ($e->can("children") and $e->children)
1126 0 35 if $self->debug
1129 0 35 unless (&Scalar::Util::blessed($elem) and $elem->isa("PPI::Node"))
1138 1477 39931 if ($this->class eq "PPI::Statement" and substr($this->content, 0, 5) ne "async")
1148 0 35 if (scalar @$sts)
1158 0 0 if ($e->class eq "PPI::Token::Word" and $e->content eq "async")
1161 0 0 if ($e->snext_sibling and $e->snext_sibling->class eq 'PPI::Token::Word' and $e->snext_sibling->content eq 'sub') { }
1182 0 0 unless $st->__insert_after($new)
1192 0 35 unless defined $ref
1193 35 0 unless scalar @$ref
1198 0 0 unless ($e->content =~ /^async[[:blank:]\h\v]+sub[[:blank:]\h\v]+/)
1221 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) { }
1231 0 0 unless $last->__insert_after($new)
1243 0 0 if ($sib->snext_sibling and $sib->snext_sibling->class eq 'PPI::Token::Word' and $sib->snext_sibling->content eq 'sub') { }
1305 18 4 if (@_) { }
1308 18 0 if ($shm) { }
1311 0 18 if ref $hash ne "HASH"
1315 0 18 if not defined $rv and $shm->error
1320 0 0 if warnings::enabled()
1327 0 4 unless ref $hash
1349 0 28 if (@_)
1352 0 0 if (defined $val and length $val)
1361 0 0 if (exists $$map{substr $val, -1, 1})
1375 0 12 if scalar @_ and ref $_[-1] eq "HASH"
1377 0 12 unless scalar @$vars
1379 6 6 $opts->{'medium'} eq 'file' ? :
1380 0 12 $opts->{'medium'} eq 'mmap' ? :
1381 12 0 unless exists $opts->{'fallback'} and length $opts->{'fallback'}
1386 6 6 unless (ref $Promise::Me::SHARED->{$index} eq "HASH")
1391 6 6 if (scalar keys %{$$Promise::Me::SHARED{$index};}) { }
1393 0 6 if $Promise::Me::DEBUG >= 4
1397 0 6 $type eq 'hash' ? :
0 6 $type eq 'array' ? :
1398 0 6 unless (&Scalar::Util::blessed($tied) and $tied->isa("Promise::Me::Share"))
1404 0 6 if ref $data ne "HASH"
1409 0 6 if $Promise::Me::DEBUG >= 4
1423 6 0 if defined $serialiser
1424 6 0 if (defined $serialiser and $serialiser eq 'sereal' || $serialiser eq 'storable' || $serialiser eq 'cbor') { }
1438 6 0 if defined $size and length $size and int $size > 0
1439 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') { }
1451 0 3 if (not $shm) { }
1453 0 0 if ($opts->{'fallback'}) { }
1478 0 12 if $Promise::Me::DEBUG >= 4
1480 0 12 if $Promise::Me::DEBUG >= 4
1485 0 24 unless ($type =~ /^(array|hash|scalar)$/)
1487 0 0 if warnings::enabled() or $Promise::Me::DEBUG
1491 0 24 if $Promise::Me::DEBUG >= 4
1503 6 18 if ($type eq 'array') { }
6 12 elsif ($type eq 'hash') { }
12 0 elsif ($type eq 'scalar') { }
1517 0 24 unless (defined $tied)
1518 0 0 if warnings::enabled() or $Promise::Me::DEBUG
1525 0 12 if $Promise::Me::DEBUG >= 6
1527 0 12 unless $shm->write($data)
1530 0 12 if $Promise::Me::DEBUG >= 6
1531 6 6 scalar @objects > 1 ? :
1550 28 0 if defined $serialiser
1551 28 0 if (defined $serialiser and $serialiser eq 'sereal' || $serialiser eq 'storable' || $serialiser eq 'cbor') { }
1565 28 0 if defined $size and length $size and int $size > 0
1569 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)
1580 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') { }
1592 0 10 if (not $shm) { }
1594 0 0 if ($s->error->message =~ /No[[:blank:]\h]+space[[:blank:]\h]+left/i) { }
1597 0 0 if (defined $tmpdir and length $tmpdir and -e $tmpdir and -d $tmpdir)
1622 18 0 if (defined $tmpdir and length "$tmpdir" and -e "$tmpdir" and -d "$tmpdir")
1635 20 8 if ($self->is_parent)
1651 0 0 if ($destroy and $child and length $status and $shm)
1654 0 0 if ($shm->isa("Module::Generic::SharedMem") or $shm->isa("Module::Generic::SharedMemXS"))
1662 0 0 if (not defined $Promise::Me::OBJECTS_REPO->[$i]) { }
0 0 elsif (&Scalar::Util::refaddr($Promise::Me::OBJECTS_REPO->[$i]) eq $addr) { }
1684 0 18 unless defined $o
1687 12 6 if $pid ne $$
1689 4 0 if ($o->shared_space_destroy and defined($shm = $o->shared_mem) and $shm->isa('Module::Generic::SharedMem') || $shm->isa('Module::Generic::SharedMemXS') or $shm->isa("Module::Generic::File::Cache") or $shm->isa("Module::Generic::File::Mmap"))
1701 4 2 unless exists $Promise::Me::SHARED->{$pid}
1703 0 0 $rv ? :
0 2 if $Promise::Me::DEBUG >= 4
1707 1 1 $type eq 'hash' ? :
0 2 $type eq 'array' ? :
1708 0 2 unless (&Scalar::Util::blessed($tied) and $tied->isa("Promise::Me::Share"))
1713 0 2 unless $shm
1726 0 0 ref $_[0] ? :
1810 0 0 if ($self->{'type'} eq 'array') { }
0 0 elsif ($self->{'type'} eq 'hash') { }
0 0 elsif ($self->{'type'} eq 'scalar') { }
1823 0 0 if ($locked & 2) { }
1829 0 0 unless $self->unload($self->{'data'})
1839 0 0 unless ($locked)
1844 0 0 if ($self->{'type'} eq 'array') { }
0 0 elsif ($self->{'type'} eq 'hash') { }
1853 0 0 if ($locked & 2) { }
1859 0 0 unless $self->unload($self->{'data'})
1869 0 0 unless ($locked)
1873 0 0 if ($self->{'type'} eq 'array') { }
0 0 elsif ($self->{'type'} eq 'hash') { }
1888 0 6 if (caller eq "Promise::Me::Share")
1894 0 6 if ($locked or $self->{'_iterating'}) { }
1905 0 6 if ($self->{'type'} eq 'array') { }
0 6 elsif ($self->{'type'} eq 'hash') { }
6 0 elsif ($self->{'type'} eq 'scalar') { }
1926 0 0 unless ($locked)
1930 0 0 if ($self->{'type'} eq 'array') { }
0 0 elsif ($self->{'type'} eq 'hash') { }
0 0 elsif ($self->{'type'} eq 'scalar') { }
1948 0 0 unless ($locked)
1962 0 0 if (not defined $next) { }
1978 0 0 unless ($locked)
1983 0 0 if ($locked & 2) { }
1989 0 0 unless $self->unload($self->{'data'})
1998 0 0 unless ($locked)
2003 0 0 if ($locked & 2) { }
2009 0 0 unless $self->unload($self->{'data'})
2017 0 0 unless ($locked)
2021 0 0 if ($self->{'type'} eq "hash")
2031 0 0 unless ($locked)
2036 0 0 if ($locked & 2) { }
2042 0 0 unless $self->load($self->{'data'})
2052 0 0 unless ($locked)
2057 0 0 if ($locked & 2) { }
2063 0 0 unless $self->unload($self->{'data'})
2072 10 0 unless ($locked)
2077 0 10 if ($self->{'type'} eq 'array') { }
0 10 elsif ($self->{'type'} eq 'hash') { }
10 0 elsif ($self->{'type'} eq 'scalar') { }
2093 0 10 if ($locked & 2) { }
2099 0 10 unless $self->unload($self->{'data'})
2109 0 0 unless ($locked)
2114 0 0 if ($locked & 2) { }
2120 0 0 unless $self->unload($self->{'data'})
2129 0 0 unless ($locked)
2134 0 0 if ($locked & 2) { }
2140 0 0 unless $self->unload($self->{'data'})
2160 0 16 unless defined $repo and length $repo
2161 0 16 if ref $repo ne "HASH" and $self->_warnings_is_enabled
2164 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)))
2169 0 16 if (not ref $data) { }
0 16 elsif (lc ref $data ne $self->{'type'}) { }
2186 0 0 unless defined $repo and length $repo
2187 0 0 if ref $repo ne "HASH" and $self->_warnings_is_enabled
2189 0 0 if not exists $repo->{'_lock'} or ref $repo->{'_lock'} ne "HASH"
2190 0 0 if (exists $repo->{'_lock'}{$addr})
2192 0 0 $repo->{'_lock'}{$addr} == $$ ? :
0 0 if warnings::enabled() or $Promise::Me::Share::DEBUG
2197 0 0 unless defined $rv
2207 0 16 unless defined $repo and length $repo
2208 0 16 if ref $repo ne "HASH" and $self->_warnings_is_enabled
2210 16 0 if not exists $repo->{'_lock'} or ref $repo->{'_lock'} ne "HASH"
2220 0 0 unless defined $repo and length $repo
2221 0 0 if ref $repo ne "HASH" and $self->_warnings_is_enabled
2225 0 0 unless $sh->write($repo)
2241 0 10 unless defined $repo and length $repo
2242 0 10 if ref $repo ne "HASH" and $self->_warnings_is_enabled
2246 0 10 unless defined $rv
2257 0 0 unless defined $repo and length $repo
2258 0 0 if ref $repo ne "HASH" and $self->_warnings_is_enabled
2260 0 0 if ($repo->{'_lock'}{$addr} != $$)
2266 0 0 if ($self->{'_changed'})
2274 0 0 unless defined $rv
2283 0 24 unless exists $opts->{'shm'} and length $opts->{'shm'} and &Scalar::Util::blessed($opts->{'shm'})
2284 0 24 unless length $opts->{'type'} and length $opts->{'type'}
2285 0 24 unless $opts->{'type'} =~ /^(array|hash|scalar)$/i
2302 12 12 if ($opts->{'type'} eq 'scalar') { }
6 6 elsif ($opts->{'type'} eq 'array') { }
6 0 elsif ($opts->{'type'} eq 'hash') { }
2321 0 6 if $Promise::Me::Share::DEBUG
2330 0 0 if ($self->{'type'} eq 'scalar') { }
0 0 elsif ($self->{'type'} eq 'array') { }
0 0 elsif ($self->{'type'} eq 'hash') { }
2345 0 0 if $serialiser eq "Sereal" and "Sereal::Encoder"->VERSION <= "version"->parse("4.023")
2356 0 0 scalar @args == 1 && ref $args[0] eq 'ARRAY' ? :
2357 0 0 defined $ref && ref $ref eq 'ARRAY' && scalar @$ref > 1 ? :
2358 0 0 ref $ref eq 'ARRAY' ? :
2361 0 0 if (ref $self) { }