3v4l.org

run code in 300+ PHP versions simultaneously
<?php abstract class BranchDependency { private $_dependencies = []; private $_successors = []; private $_successful = false; public final function hasSuccessor(string $name) { return array_key_exists($name, $this->getSuccessors()); } public final function hasDependency(string $name) { return array_key_exists($name, $this->getDependencies()); } public final function getName() { return static::class; } public final function addDependency(BranchDependency $state) { $name = $state->getName(); if (!$this->hasDependency($name)) { $this->_dependencies[$name] = $state; $state->addSuccessor($this); } } public final function getDependencies() { return $this->_dependencies; } public final function addSuccessor(BranchDependency $state) { $name = $state->getName(); if (!$this->hasSuccessor($name)) { $this->_successors[$name] = $state; $state->addDependency($this); } } public final function getSuccessors() { return $this->_successors; } public final function wasSuccessful() { return $this->_successful; } public final function commit() { if ($this->run()) { foreach ($this->getSuccessors() as $successor) { $successor->commit(); } } } private function run() { foreach ($this->getDependencies() as $dependency) { if (!$dependency->wasSuccessful()) { return false; } } $this->_successful = $this->execute(); return $this->wasSuccessful(); } abstract protected function execute(); } final class BranchDependencyFactory { private static $instance = null; private $_instances = []; private function __construct() { } public static function Instance() { if (self::$instance === null) { self::$instance = new self(); } return self::$instance; } public function exists(string $name) { return array_key_exists($name, $this->_instances); } public function getUniqueInstance(string $name) { if (!$this->exists($name)) { $this->_instances[$name] = new $name(); } return $this->_instances[$name]; } } final class Internal extends BranchDependency { public function __construct(bool $internal) { if ($internal) { $one = BranchDependencyFactory::Instance()->getUniqueInstance(One::class); $this->addSuccessor($one); } $two = BranchDependencyFactory::Instance()->getUniqueInstance(Two::class); $this->addSuccessor($two); } public function execute() { return true; } } final class One extends BranchDependency { protected function execute() { print '#1' . PHP_EOL; return true; } } final class Two extends BranchDependency { public function __construct() { $three = BranchDependencyFactory::Instance()->getUniqueInstance(Three::class); $four = BranchDependencyFactory::Instance()->getUniqueInstance(Four::class); $this->addSuccessor($three); $this->addSuccessor($four); } protected function execute() { print '#2' . PHP_EOL; return true; } } final class Three extends BranchDependency { public function __construct() { $five = BranchDependencyFactory::Instance()->getUniqueInstance(Five::class); $this->addSuccessor($five); } protected function execute() { print '#3' . PHP_EOL; return true; } } final class Four extends BranchDependency { public function __construct() { $five = BranchDependencyFactory::Instance()->getUniqueInstance(Five::class); $this->addSuccessor($five); } protected function execute() { print '#4' . PHP_EOL; return true; } } final class Five extends BranchDependency { protected function execute() { print '#5' . PHP_EOL; return true; } } $internal = new Internal(false); $internal->commit();
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/5aq5b
function name:  (null)
number of ops:  7
compiled vars:  !0 = $internal
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  205     0  E >   NEW                                              $1      'Internal'
          1        SEND_VAL_EX                                              <false>
          2        DO_FCALL                                      0          
          3        ASSIGN                                                   !0, $1
  206     4        INIT_METHOD_CALL                                         !0, 'commit'
          5        DO_FCALL                                      0          
          6      > RETURN                                                   1

Class BranchDependency:
Function hassuccessor:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/5aq5b
function name:  hasSuccessor
number of ops:  6
compiled vars:  !0 = $name
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    9     0  E >   RECV                                             !0      
   11     1        INIT_METHOD_CALL                                         'getSuccessors'
          2        DO_FCALL                                      0  $1      
          3        ARRAY_KEY_EXISTS                                 ~2      !0, $1
          4      > RETURN                                                   ~2
   12     5*     > RETURN                                                   null

End of function hassuccessor

Function hasdependency:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/5aq5b
function name:  hasDependency
number of ops:  6
compiled vars:  !0 = $name
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   14     0  E >   RECV                                             !0      
   16     1        INIT_METHOD_CALL                                         'getDependencies'
          2        DO_FCALL                                      0  $1      
          3        ARRAY_KEY_EXISTS                                 ~2      !0, $1
          4      > RETURN                                                   ~2
   17     5*     > RETURN                                                   null

End of function hasdependency

Function getname:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/5aq5b
function name:  getName
number of ops:  3
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   21     0  E >   FETCH_CLASS_NAME                                 ~0      
          1      > RETURN                                                   ~0
   22     2*     > RETURN                                                   null

End of function getname

Function adddependency:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 9, Position 2 = 16
Branch analysis from position: 9
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 16
filename:       /in/5aq5b
function name:  addDependency
number of ops:  17
compiled vars:  !0 = $state, !1 = $name
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   24     0  E >   RECV                                             !0      
   26     1        INIT_METHOD_CALL                                         !0, 'getName'
          2        DO_FCALL                                      0  $2      
          3        ASSIGN                                                   !1, $2
   27     4        INIT_METHOD_CALL                                         'hasDependency'
          5        SEND_VAR                                                 !1
          6        DO_FCALL                                      0  $4      
          7        BOOL_NOT                                         ~5      $4
          8      > JMPZ                                                     ~5, ->16
   28     9    >   FETCH_OBJ_W                                      $6      '_dependencies'
         10        ASSIGN_DIM                                               $6, !1
         11        OP_DATA                                                  !0
   29    12        INIT_METHOD_CALL                                         !0, 'addSuccessor'
         13        FETCH_THIS                                       $8      
         14        SEND_VAR_EX                                              $8
         15        DO_FCALL                                      0          
   31    16    > > RETURN                                                   null

End of function adddependency

Function getdependencies:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/5aq5b
function name:  getDependencies
number of ops:  3
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   35     0  E >   FETCH_OBJ_R                                      ~0      '_dependencies'
          1      > RETURN                                                   ~0
   36     2*     > RETURN                                                   null

End of function getdependencies

Function addsuccessor:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 9, Position 2 = 16
Branch analysis from position: 9
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 16
filename:       /in/5aq5b
function name:  addSuccessor
number of ops:  17
compiled vars:  !0 = $state, !1 = $name
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   38     0  E >   RECV                                             !0      
   40     1        INIT_METHOD_CALL                                         !0, 'getName'
          2        DO_FCALL                                      0  $2      
          3        ASSIGN                                                   !1, $2
   41     4        INIT_METHOD_CALL                                         'hasSuccessor'
          5        SEND_VAR                                                 !1
          6        DO_FCALL                                      0  $4      
          7        BOOL_NOT                                         ~5      $4
          8      > JMPZ                                                     ~5, ->16
   42     9    >   FETCH_OBJ_W                                      $6      '_successors'
         10        ASSIGN_DIM                                               $6, !1
         11        OP_DATA                                                  !0
   43    12        INIT_METHOD_CALL                                         !0, 'addDependency'
         13        FETCH_THIS                                       $8      
         14        SEND_VAR_EX                                              $8
         15        DO_FCALL                                      0          
   45    16    > > RETURN                                                   null

End of function addsuccessor

Function getsuccessors:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/5aq5b
function name:  getSuccessors
number of ops:  3
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   49     0  E >   FETCH_OBJ_R                                      ~0      '_successors'
          1      > RETURN                                                   ~0
   50     2*     > RETURN                                                   null

End of function getsuccessors

Function wassuccessful:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/5aq5b
function name:  wasSuccessful
number of ops:  3
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   54     0  E >   FETCH_OBJ_R                                      ~0      '_successful'
          1      > RETURN                                                   ~0
   55     2*     > RETURN                                                   null

End of function wassuccessful

Function commit:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 3, Position 2 = 11
Branch analysis from position: 3
2 jumps found. (Code = 77) Position 1 = 6, Position 2 = 10
Branch analysis from position: 6
2 jumps found. (Code = 78) Position 1 = 7, Position 2 = 10
Branch analysis from position: 7
1 jumps found. (Code = 42) Position 1 = 6
Branch analysis from position: 6
Branch analysis from position: 10
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 10
Branch analysis from position: 11
filename:       /in/5aq5b
function name:  commit
number of ops:  12
compiled vars:  !0 = $successor
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   59     0  E >   INIT_METHOD_CALL                                         'run'
          1        DO_FCALL                                      0  $1      
          2      > JMPZ                                                     $1, ->11
   60     3    >   INIT_METHOD_CALL                                         'getSuccessors'
          4        DO_FCALL                                      0  $2      
          5      > FE_RESET_R                                       $3      $2, ->10
          6    > > FE_FETCH_R                                               $3, !0, ->10
   61     7    >   INIT_METHOD_CALL                                         !0, 'commit'
          8        DO_FCALL                                      0          
   60     9      > JMP                                                      ->6
         10    >   FE_FREE                                                  $3
   64    11    > > RETURN                                                   null

End of function commit

Function run:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 3, Position 2 = 11
Branch analysis from position: 3
2 jumps found. (Code = 78) Position 1 = 4, Position 2 = 11
Branch analysis from position: 4
2 jumps found. (Code = 43) Position 1 = 8, Position 2 = 10
Branch analysis from position: 8
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 10
1 jumps found. (Code = 42) Position 1 = 3
Branch analysis from position: 3
Branch analysis from position: 11
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 11
filename:       /in/5aq5b
function name:  run
number of ops:  20
compiled vars:  !0 = $dependency
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   68     0  E >   INIT_METHOD_CALL                                         'getDependencies'
          1        DO_FCALL                                      0  $1      
          2      > FE_RESET_R                                       $2      $1, ->11
          3    > > FE_FETCH_R                                               $2, !0, ->11
   69     4    >   INIT_METHOD_CALL                                         !0, 'wasSuccessful'
          5        DO_FCALL                                      0  $3      
          6        BOOL_NOT                                         ~4      $3
          7      > JMPZ                                                     ~4, ->10
   70     8    >   FE_FREE                                                  $2
          9      > RETURN                                                   <false>
   68    10    > > JMP                                                      ->3
         11    >   FE_FREE                                                  $2
   74    12        INIT_METHOD_CALL                                         'execute'
         13        DO_FCALL                                      0  $6      
         14        ASSIGN_OBJ                                               '_successful'
         15        OP_DATA                                                  $6
   76    16        INIT_METHOD_CALL                                         'wasSuccessful'
         17        DO_FCALL                                      0  $7      
         18      > RETURN                                                   $7
   77    19*     > RETURN                                                   null

End of function run

Function execute:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/5aq5b
function name:  execute
number of ops:  1
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   79     0  E > > RETURN                                                   null

End of function execute

End of class BranchDependency.

Class BranchDependencyFactory:
Function __construct:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/5aq5b
function name:  __construct
number of ops:  1
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   87     0  E > > RETURN                                                   null

End of function __construct

Function instance:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 3, Position 2 = 7
Branch analysis from position: 3
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 7
filename:       /in/5aq5b
function name:  Instance
number of ops:  10
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   91     0  E >   FETCH_STATIC_PROP_R          unknown             ~0      'instance'
          1        TYPE_CHECK                                    2          ~0
          2      > JMPZ                                                     ~1, ->7
   92     3    >   NEW                          self                $3      
          4        DO_FCALL                                      0          
          5        ASSIGN_STATIC_PROP                                       'instance'
          6        OP_DATA                                                  $3
   95     7    >   FETCH_STATIC_PROP_R          unknown             ~5      'instance'
          8      > RETURN                                                   ~5
   96     9*     > RETURN                                                   null

End of function instance

Function exists:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/5aq5b
function name:  exists
number of ops:  5
compiled vars:  !0 = $name
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   98     0  E >   RECV                                             !0      
  100     1        FETCH_OBJ_R                                      ~1      '_instances'
          2        ARRAY_KEY_EXISTS                                 ~2      !0, ~1
          3      > RETURN                                                   ~2
  101     4*     > RETURN                                                   null

End of function exists

Function getuniqueinstance:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 6, Position 2 = 12
Branch analysis from position: 6
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 12
filename:       /in/5aq5b
function name:  getUniqueInstance
number of ops:  16
compiled vars:  !0 = $name
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  103     0  E >   RECV                                             !0      
  105     1        INIT_METHOD_CALL                                         'exists'
          2        SEND_VAR_EX                                              !0
          3        DO_FCALL                                      0  $1      
          4        BOOL_NOT                                         ~2      $1
          5      > JMPZ                                                     ~2, ->12
  106     6    >   FETCH_CLASS                                   0  $5      !0
          7        NEW                                              $6      $5
          8        DO_FCALL                                      0          
          9        FETCH_OBJ_W                                      $3      '_instances'
         10        ASSIGN_DIM                                               $3, !0
         11        OP_DATA                                                  $6
  109    12    >   FETCH_OBJ_R                                      ~8      '_instances'
         13        FETCH_DIM_R                                      ~9      ~8, !0
         14      > RETURN                                                   ~9
  110    15*     > RETURN                                                   null

End of function getuniqueinstance

End of class BranchDependencyFactory.

Class Internal:
Function __construct:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 2, Position 2 = 11
Branch analysis from position: 2
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 11
filename:       /in/5aq5b
function name:  __construct
number of ops:  21
compiled vars:  !0 = $internal, !1 = $one, !2 = $two
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  115     0  E >   RECV                                             !0      
  117     1      > JMPZ                                                     !0, ->11
  118     2    >   INIT_STATIC_METHOD_CALL                                  'BranchDependencyFactory', 'Instance'
          3        DO_FCALL                                      0  $3      
          4        INIT_METHOD_CALL                                         $3, 'getUniqueInstance'
          5        SEND_VAL_EX                                              'One'
          6        DO_FCALL                                      0  $4      
          7        ASSIGN                                                   !1, $4
  119     8        INIT_METHOD_CALL                                         'addSuccessor'
          9        SEND_VAR_EX                                              !1
         10        DO_FCALL                                      0          
  122    11    >   INIT_STATIC_METHOD_CALL                                  'BranchDependencyFactory', 'Instance'
         12        DO_FCALL                                      0  $7      
         13        INIT_METHOD_CALL                                         $7, 'getUniqueInstance'
         14        SEND_VAL_EX                                              'Two'
         15        DO_FCALL                                      0  $8      
         16        ASSIGN                                                   !2, $8
  123    17        INIT_METHOD_CALL                                         'addSuccessor'
         18        SEND_VAR_EX                                              !2
         19        DO_FCALL                                      0          
  124    20      > RETURN                                                   null

End of function __construct

Function execute:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/5aq5b
function name:  execute
number of ops:  2
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  128     0  E > > RETURN                                                   <true>
  129     1*     > RETURN                                                   null

End of function execute

Function hassuccessor:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/5aq5b
function name:  hasSuccessor
number of ops:  6
compiled vars:  !0 = $name
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    9     0  E >   RECV                                             !0      
   11     1        INIT_METHOD_CALL                                         'getSuccessors'
          2        DO_FCALL                                      0  $1      
          3        ARRAY_KEY_EXISTS                                 ~2      !0, $1
          4      > RETURN                                                   ~2
   12     5*     > RETURN                                                   null

End of function hassuccessor

Function hasdependency:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/5aq5b
function name:  hasDependency
number of ops:  6
compiled vars:  !0 = $name
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   14     0  E >   RECV                                             !0      
   16     1        INIT_METHOD_CALL                                         'getDependencies'
          2        DO_FCALL                                      0  $1      
          3        ARRAY_KEY_EXISTS                                 ~2      !0, $1
          4      > RETURN                                                   ~2
   17     5*     > RETURN                                                   null

End of function hasdependency

Function getname:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/5aq5b
function name:  getName
number of ops:  3
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   21     0  E >   FETCH_CLASS_NAME                                 ~0      
          1      > RETURN                                                   ~0
   22     2*     > RETURN                                                   null

End of function getname

Function adddependency:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 9, Position 2 = 16
Branch analysis from position: 9
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 16
filename:       /in/5aq5b
function name:  addDependency
number of ops:  17
compiled vars:  !0 = $state, !1 = $name
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   24     0  E >   RECV                                             !0      
   26     1        INIT_METHOD_CALL                                         !0, 'getName'
          2        DO_FCALL                                      0  $2      
          3        ASSIGN                                                   !1, $2
   27     4        INIT_METHOD_CALL                                         'hasDependency'
          5        SEND_VAR                                                 !1
          6        DO_FCALL                                      0  $4      
          7        BOOL_NOT                                         ~5      $4
          8      > JMPZ                                                     ~5, ->16
   28     9    >   FETCH_OBJ_W                                      $6      '_dependencies'
         10        ASSIGN_DIM                                               $6, !1
         11        OP_DATA                                                  !0
   29    12        INIT_METHOD_CALL                                         !0, 'addSuccessor'
         13        FETCH_THIS                                       $8      
         14        SEND_VAR_EX                                              $8
         15        DO_FCALL                                      0          
   31    16    > > RETURN                                                   null

End of function adddependency

Function getdependencies:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/5aq5b
function name:  getDependencies
number of ops:  3
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   35     0  E >   FETCH_OBJ_R                                      ~0      '_dependencies'
          1      > RETURN                                                   ~0
   36     2*     > RETURN                                                   null

End of function getdependencies

Function addsuccessor:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 9, Position 2 = 16
Branch analysis from position: 9
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 16
filename:       /in/5aq5b
function name:  addSuccessor
number of ops:  17
compiled vars:  !0 = $state, !1 = $name
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   38     0  E >   RECV                                             !0      
   40     1        INIT_METHOD_CALL                                         !0, 'getName'
          2        DO_FCALL                                      0  $2      
          3        ASSIGN                                                   !1, $2
   41     4        INIT_METHOD_CALL                                         'hasSuccessor'
          5        SEND_VAR                                                 !1
          6        DO_FCALL                                      0  $4      
          7        BOOL_NOT                                         ~5      $4
          8      > JMPZ                                                     ~5, ->16
   42     9    >   FETCH_OBJ_W                                      $6      '_successors'
         10        ASSIGN_DIM                                               $6, !1
         11        OP_DATA                                                  !0
   43    12        INIT_METHOD_CALL                                         !0, 'addDependency'
         13        FETCH_THIS                                       $8      
         14        SEND_VAR_EX                                              $8
         15        DO_FCALL                                      0          
   45    16    > > RETURN                                                   null

End of function addsuccessor

Function getsuccessors:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/5aq5b
function name:  getSuccessors
number of ops:  3
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   49     0  E >   FETCH_OBJ_R                                      ~0      '_successors'
          1      > RETURN                                                   ~0
   50     2*     > RETURN                                                   null

End of function getsuccessors

Function wassuccessful:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/5aq5b
function name:  wasSuccessful
number of ops:  3
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   54     0  E >   FETCH_OBJ_R                                      ~0      '_successful'
          1      > RETURN                                                   ~0
   55     2*     > RETURN                                                   null

End of function wassuccessful

Function commit:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 3, Position 2 = 11
Branch analysis from position: 3
2 jumps found. (Code = 77) Position 1 = 6, Position 2 = 10
Branch analysis from position: 6
2 jumps found. (Code = 78) Position 1 = 7, Position 2 = 10
Branch analysis from position: 7
1 jumps found. (Code = 42) Position 1 = 6
Branch analysis from position: 6
Branch analysis from position: 10
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 10
Branch analysis from position: 11
filename:       /in/5aq5b
function name:  commit
number of ops:  12
compiled vars:  !0 = $successor
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   59     0  E >   INIT_METHOD_CALL                                         'run'
          1        DO_FCALL                                      0  $1      
          2      > JMPZ                                                     $1, ->11
   60     3    >   INIT_METHOD_CALL                                         'getSuccessors'
          4        DO_FCALL                                      0  $2      
          5      > FE_RESET_R                                       $3      $2, ->10
          6    > > FE_FETCH_R                                               $3, !0, ->10
   61     7    >   INIT_METHOD_CALL                                         !0, 'commit'
          8        DO_FCALL                                      0          
   60     9      > JMP                                                      ->6
         10    >   FE_FREE                                                  $3
   64    11    > > RETURN                                                   null

End of function commit

Function run:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 3, Position 2 = 11
Branch analysis from position: 3
2 jumps found. (Code = 78) Position 1 = 4, Position 2 = 11
Branch analysis from position: 4
2 jumps found. (Code = 43) Position 1 = 8, Position 2 = 10
Branch analysis from position: 8
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 10
1 jumps found. (Code = 42) Position 1 = 3
Branch analysis from position: 3
Branch analysis from position: 11
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 11
filename:       /in/5aq5b
function name:  run
number of ops:  20
compiled vars:  !0 = $dependency
line      #* E I O op                           fetch      

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
287.04 ms | 1481 KiB | 14 Q