Branch Coverage

blib/lib/Promise/Me.pm
Criterion Covered Total %
branch 244 1022 23.8


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 29933 $prom->is_child ? :
490 4 29929 unless (defined $pid and exists $Promise::Me::KIDS->{$pid})
498 29925 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 21344 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
930 0 4 if ref $hash ne "HASH"
945 0 12 if scalar @_ and &Scalar::Util::blessed($_[0]) and $_[0]->isa("Promise::Me")
950 0 24 if $Promise::Me::DEBUG
951 0 24 unless ($type =~ /^(array|hash|scalar)$/)
953 0 0 if warnings::enabled() or $Promise::Me::DEBUG
957 0 12 if $Promise::Me::DEBUG >= 4
958 0 12 unless &_share_vars([@_])
978 0 32 if scalar @_ == 1 and not defined $_[0]
979 32 0 if (@_)
982 0 32 if ref $pass ne "CODE"
983 0 32 if defined $fail and ref $fail ne "CODE"
985 0 32 if defined $fail
988 0 0 if ($self->executed and scalar @$vals)
990 0 0 if ($self->rejected) { }
1003 10 22 unless (Want::want("OBJECT") or $self->executed)
1006 0 8 unless $self->exec
1014 0 0 if scalar @_ and &Scalar::Util::blessed($_[0]) and $_[0]->isa("Promise::Me")
1016 0 0 unless ref $_[-1]
1017 0 0 $self->is_child ? :
1021 0 0 if (defined $self) { }
1026 0 0 &Scalar::Util::blessed($tied) ? :
0 0 if $Promise::Me::DEBUG >= 4
1028 0 0 if (&Scalar::Util::blessed($tied) and $tied->isa("Promise::Me::Share"))
1031 0 0 defined $type ? :
1034 0 0 if $self
1040 0 0 if scalar @_ and &Scalar::Util::blessed($_[0]) and $_[0]->isa("Promise::Me")
1042 0 0 unless exists $Promise::Me::SHARED->{$pack}
1044 0 0 if $Promise::Me::DEBUG >= 3
1049 0 0 if (exists $Promise::Me::SHARED->{$pack}{$addr}) { }
1056 0 0 if $Promise::Me::DEBUG >= 3
1059 0 0 scalar @removed > 1 ? :
1075 0 0 if (@_) { }
0 0 elsif (Want::want('OBJECT')) { }
0 0 elsif (Want::want('VOID') or Want::want('SCALAR')) { }
1089 0 0 unless $self->exec
1103 0 0 unless $elem->children
1106 0 0 if $Promise::Me::DEBUG >= 4
1107 0 0 if ($e->can("children") and $e->children)
1118 0 35 if $self->debug
1121 0 35 unless (&Scalar::Util::blessed($elem) and $elem->isa("PPI::Node"))
1130 1477 39931 if ($this->class eq "PPI::Statement" and substr($this->content, 0, 5) ne "async")
1140 0 35 if (scalar @$sts)
1150 0 0 if ($e->class eq "PPI::Token::Word" and $e->content eq "async")
1153 0 0 if ($e->snext_sibling and $e->snext_sibling->class eq 'PPI::Token::Word' and $e->snext_sibling->content eq 'sub') { }
1174 0 0 unless $st->__insert_after($new)
1184 0 35 unless defined $ref
1185 35 0 unless scalar @$ref
1190 0 0 unless ($e->content =~ /^async[[:blank:]\h\v]+sub[[:blank:]\h\v]+/)
1213 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) { }
1223 0 0 unless $last->__insert_after($new)
1235 0 0 if ($sib->snext_sibling and $sib->snext_sibling->class eq 'PPI::Token::Word' and $sib->snext_sibling->content eq 'sub') { }
1297 18 4 if (@_) { }
1300 18 0 if ($shm) { }
1303 1 17 if ref $hash ne "HASH"
1307 0 18 if not defined $rv and $shm->error
1312 0 0 if warnings::enabled()
1319 0 4 unless ref $hash
1341 0 28 if (@_)
1344 0 0 if (defined $val and length $val)
1353 0 0 if (exists $$map{substr $val, -1, 1})
1367 0 12 if scalar @_ and ref $_[-1] eq "HASH"
1369 0 12 unless scalar @$vars
1371 6 6 $opts->{'medium'} eq 'file' ? :
1372 0 12 $opts->{'medium'} eq 'mmap' ? :
1373 12 0 unless exists $opts->{'fallback'} and length $opts->{'fallback'}
1378 6 6 unless (ref $Promise::Me::SHARED->{$index} eq "HASH")
1383 6 6 if (scalar keys %{$$Promise::Me::SHARED{$index};}) { }
1385 0 6 if $Promise::Me::DEBUG >= 4
1389 0 6 $type eq 'hash' ? :
0 6 $type eq 'array' ? :
1390 0 6 unless (&Scalar::Util::blessed($tied) and $tied->isa("Promise::Me::Share"))
1396 0 6 if ref $data ne "HASH"
1401 0 6 if $Promise::Me::DEBUG >= 4
1415 6 0 if defined $serialiser
1416 6 0 if (defined $serialiser and $serialiser eq 'sereal' || $serialiser eq 'storable' || $serialiser eq 'cbor') { }
1430 6 0 if defined $size and length $size and int $size > 0
1431 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') { }
1443 0 3 if (not $shm) { }
1445 0 0 if ($opts->{'fallback'}) { }
1470 0 12 if $Promise::Me::DEBUG >= 4
1472 0 12 if $Promise::Me::DEBUG >= 4
1477 0 24 unless ($type =~ /^(array|hash|scalar)$/)
1479 0 0 if warnings::enabled() or $Promise::Me::DEBUG
1483 0 24 if $Promise::Me::DEBUG >= 4
1495 6 18 if ($type eq 'array') { }
6 12 elsif ($type eq 'hash') { }
12 0 elsif ($type eq 'scalar') { }
1509 0 24 unless (defined $tied)
1510 0 0 if warnings::enabled() or $Promise::Me::DEBUG
1517 0 12 if $Promise::Me::DEBUG >= 6
1519 0 12 unless $shm->write($data)
1522 0 12 if $Promise::Me::DEBUG >= 6
1523 6 6 scalar @objects > 1 ? :
1542 28 0 if defined $serialiser
1543 28 0 if (defined $serialiser and $serialiser eq 'sereal' || $serialiser eq 'storable' || $serialiser eq 'cbor') { }
1557 28 0 if defined $size and length $size and int $size > 0
1561 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)
1572 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') { }
1584 0 10 if (not $shm) { }
1586 0 0 if ($s->error->message =~ /No[[:blank:]\h]+space[[:blank:]\h]+left/i) { }
1589 0 0 if (defined $tmpdir and length $tmpdir and -e $tmpdir and -d $tmpdir)
1614 18 0 if (defined $tmpdir and length $tmpdir and -e $tmpdir and -d $tmpdir)
1627 20 8 if ($self->is_parent)
1643 0 0 if ($destroy and $child and length $status and $shm)
1646 0 0 if ($shm->isa("Module::Generic::SharedMem") or $shm->isa("Module::Generic::SharedMemXS"))
1654 0 0 if (not defined $Promise::Me::OBJECTS_REPO->[$i]) { }
0 0 elsif (&Scalar::Util::refaddr($Promise::Me::OBJECTS_REPO->[$i]) eq $addr) { }
1678 12 6 if $pid ne $$
1680 4 0 if ($o->shared_space_destroy and $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"))
1692 4 2 unless exists $Promise::Me::SHARED->{$pid}
1694 0 0 $rv ? :
0 2 if $Promise::Me::DEBUG >= 4
1698 0 1 $type eq 'hash' ? :
1 1 $type eq 'array' ? :
1699 0 2 unless (&Scalar::Util::blessed($tied) and $tied->isa("Promise::Me::Share"))
1704 0 2 unless $shm
1717 0 0 ref $_[0] ? :
1801 0 0 if ($self->{'type'} eq 'array') { }
0 0 elsif ($self->{'type'} eq 'hash') { }
0 0 elsif ($self->{'type'} eq 'scalar') { }
1814 0 0 if ($locked & 2) { }
1820 0 0 unless $self->unload($self->{'data'})
1830 0 0 unless ($locked)
1835 0 0 if ($self->{'type'} eq 'array') { }
0 0 elsif ($self->{'type'} eq 'hash') { }
1844 0 0 if ($locked & 2) { }
1850 0 0 unless $self->unload($self->{'data'})
1860 0 0 unless ($locked)
1864 0 0 if ($self->{'type'} eq 'array') { }
0 0 elsif ($self->{'type'} eq 'hash') { }
1879 0 6 if (caller eq "Promise::Me::Share")
1885 0 6 if ($locked or $self->{'_iterating'}) { }
1896 0 6 if ($self->{'type'} eq 'array') { }
0 6 elsif ($self->{'type'} eq 'hash') { }
6 0 elsif ($self->{'type'} eq 'scalar') { }
1917 0 0 unless ($locked)
1921 0 0 if ($self->{'type'} eq 'array') { }
0 0 elsif ($self->{'type'} eq 'hash') { }
0 0 elsif ($self->{'type'} eq 'scalar') { }
1939 0 0 unless ($locked)
1953 0 0 if (not defined $next) { }
1969 0 0 unless ($locked)
1974 0 0 if ($locked & 2) { }
1980 0 0 unless $self->unload($self->{'data'})
1989 0 0 unless ($locked)
1994 0 0 if ($locked & 2) { }
2000 0 0 unless $self->unload($self->{'data'})
2008 0 0 unless ($locked)
2012 0 0 if ($self->{'type'} eq "hash")
2022 0 0 unless ($locked)
2027 0 0 if ($locked & 2) { }
2033 0 0 unless $self->load($self->{'data'})
2043 0 0 unless ($locked)
2048 0 0 if ($locked & 2) { }
2054 0 0 unless $self->unload($self->{'data'})
2063 10 0 unless ($locked)
2068 0 10 if ($self->{'type'} eq 'array') { }
0 10 elsif ($self->{'type'} eq 'hash') { }
10 0 elsif ($self->{'type'} eq 'scalar') { }
2084 0 10 if ($locked & 2) { }
2090 0 10 unless $self->unload($self->{'data'})
2100 0 0 unless ($locked)
2105 0 0 if ($locked & 2) { }
2111 0 0 unless $self->unload($self->{'data'})
2120 0 0 unless ($locked)
2125 0 0 if ($locked & 2) { }
2131 0 0 unless $self->unload($self->{'data'})
2151 0 16 unless defined $repo and length $repo
2152 0 16 if ref $repo ne "HASH" and $self->_warnings_is_enabled
2155 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)))
2160 0 16 if (not ref $data) { }
0 16 elsif (lc ref $data ne $self->{'type'}) { }
2177 0 0 unless defined $repo and length $repo
2178 0 0 if ref $repo ne "HASH" and $self->_warnings_is_enabled
2180 0 0 if not exists $repo->{'_lock'} or ref $repo->{'_lock'} ne "HASH"
2181 0 0 if (exists $repo->{'_lock'}{$addr})
2183 0 0 $repo->{'_lock'}{$addr} == $$ ? :
0 0 if warnings::enabled() or $Promise::Me::Share::DEBUG
2188 0 0 unless defined $rv
2198 0 16 unless defined $repo and length $repo
2199 0 16 if ref $repo ne "HASH" and $self->_warnings_is_enabled
2201 16 0 if not exists $repo->{'_lock'} or ref $repo->{'_lock'} ne "HASH"
2211 0 0 unless defined $repo and length $repo
2212 0 0 if ref $repo ne "HASH" and $self->_warnings_is_enabled
2216 0 0 unless $sh->write($repo)
2232 0 10 unless defined $repo and length $repo
2233 0 10 if ref $repo ne "HASH" and $self->_warnings_is_enabled
2237 0 10 unless defined $rv
2248 0 0 unless defined $repo and length $repo
2249 0 0 if ref $repo ne "HASH" and $self->_warnings_is_enabled
2251 0 0 if ($repo->{'_lock'}{$addr} != $$)
2257 0 0 if ($self->{'_changed'})
2265 0 0 unless defined $rv
2274 0 24 unless exists $opts->{'shm'} and length $opts->{'shm'} and &Scalar::Util::blessed($opts->{'shm'})
2275 0 24 unless length $opts->{'type'} and length $opts->{'type'}
2276 0 24 unless $opts->{'type'} =~ /^(array|hash|scalar)$/i
2293 12 12 if ($opts->{'type'} eq 'scalar') { }
6 6 elsif ($opts->{'type'} eq 'array') { }
6 0 elsif ($opts->{'type'} eq 'hash') { }
2312 0 6 if $Promise::Me::Share::DEBUG
2321 0 0 if ($self->{'type'} eq 'scalar') { }
0 0 elsif ($self->{'type'} eq 'array') { }
0 0 elsif ($self->{'type'} eq 'hash') { }
2336 0 0 if $serialiser eq "Sereal" and "Sereal::Encoder"->VERSION <= "version"->parse("4.023")
2347 0 0 scalar @args == 1 && ref $args[0] eq 'ARRAY' ? :
2348 0 0 defined $ref && ref $ref eq 'ARRAY' && scalar @$ref > 1 ? :
2349 0 0 ref $ref eq 'ARRAY' ? :
2352 0 0 if (ref $self) { }