3v4l.org

run code in 300+ PHP versions simultaneously
<?php interface StringSearchable { public function search($substring, $buffer); } class BoyerMooreStringSearch implements StringSearchable { public $substring = null; public $buffer = ''; public $jumpTable = array(); protected $results = array(); public function __construct() { } public function __destruct() { } public function search($substring, $buffer) { $this->results = array(); $this->substring = $substring; $this->buffer = $buffer; $this->deriveJumpTable(); $substringLen = strlen($this->substring); $currentCharIndex = $substringLen - 1; $bufferLen = strlen($this->buffer); while ($currentCharIndex < $bufferLen) { for ($i = $substringLen - 1; $i >= 0; $i--) { if ($this->buffer[$currentCharIndex - $substringLen + $i + 1] == $this->substring[$i]) { if ($i == 0) { $this->results[] = $currentCharIndex - $substringLen; $currentCharIndex += $this->getJumpLength($this->buffer[$currentCharIndex]); } else { continue; } } else { $currentCharIndex += $this->getJumpLength($this->buffer[$currentCharIndex]); break; } } } return (sizeof($this->results) > 0); } protected function deriveJumpTable() { $maxJump = strlen($this->substring); for ($i = strlen($this->substring) - 2; $i >= 0; $i--) { if (!array_key_exists($this->substring[$i], $this->jumpTable)) { $this->jumpTable[$this->substring[$i]] = $maxJump - $i -1; } } } public function getJumpTable() { return $this->jumpTable; } public function getResults() { return $this->results; } public function getResultsCount() { return sizeof($this->results); } public function getJumpLength($charIndex) { if (array_key_exists($charIndex, $this->jumpTable)) { return $this->jumpTable[$charIndex]; } else { return strlen($this->substring); } } } $poem = <<<POEM metrhdgzraputonyukbnuqtzfencojqzqfiggouzppqetrayteekplbyaxqitpmzqkpertdyrqtqupozoetqkejzgkakeetyqblajqizgnrndgmysfprsooyjhlhagozbisuqqpziotdgaeynlejopuzrnicjggyxtrprxnylnqfqsayubdkllezfgdakxbyttturmszsfgjgpuyiutbqkhzakaongpyxamejeezkuurpfdyextgumnztknfsqfzqsqusloznbsrxegysirdgskyadhfdggzqstrutxzdhqgsmnztcschtqyckfgicnzuprasjxyogmnreqytusrtlxzuurrtluzscdrqbfyphiuupdzogqfotkziejxldqykcpfhdbynninuneypqqrignztgscdleztgodstdytusutplygtfqplxzabpkntlyakagkemzneungfszqhgltdfzudlatauygsfbulkyscatulkzldtpxdqyqdfrrmjzthoxsnlyqgqmjflybhqhromynlbiposzhcptsgoynnscstcyqcjjerfyqxqaxutyotrursnymthuefiytrqsplmymcxeblsyxrcclkgzufttbrsyaduoqtfyloteicfytxtbjqqzlpmegjpyknrrlidydhgdupszglrhmtmzdqhpxhayqqsqmqryfhxhgttzbgdxhdoylxgfdrmydxtfriszmnkgacgzbxrjtolzqaubjqqzritehuuzmsirtrnzrjkxgnpyqrutottzlotcstcytfjicuczdsponujyrteunpqzshubksszasjohmkzcpoljgmyrkmnqgryklspueszrohuljazhfafsfnzuurtpkpyartlqqrzhedicpfyuqsqtlszsljblhkzcluflxfzusuurnqyxlhprcszajmialayruqumutzttjdmeeymxbcqspytoeajhfzdlplqaqzttesnlrypeqmxctzuiojqolzqeprljrylnichdnytmegarrzphbxgtmytjtfirsyolscrrdyrbigctaytpfaapuzcraukomyusutltsztrsafxeymsitfptyfkixkstzudgqaphynsbgdarygurnmmkztxqaktryxxqikhgyxfmprrrymmrcxdaytrrrotszimxlsaozmoqtidjzomuesscysegkduezstsqpqrymaulkeszjlphiqlzkopsorlzdtkmsfxyugalurtykqdxsbbyuqrtlsmzixrghxhzjbpnsssyontcgbfzxemdkfbyenmlnpsyiknpssczhlgmqauycphdnofztquupnhzuusqnnpyseqtauuzeernsufzomrcifayultpagjyfrcsjxdyaphxnxhzlpqrjexzekfgjaoynixebunyjfmrtkpzomsfusfytdhhaqdytgsaituyntssqsnyprxsfakysuuuphnzrkbouqtzjsckjfmzlobecojymladfphzuksejrryoxmarkkyrstljubzrsqslusykracphiyrgaosuryiemrtkozxciuaulynprqqtsysgtakuqzagqkrnpzrducxsrybajmmbiymeqfeluycekksrgzgnerkctzlxkxopgythregstzpnsbtqfzqfhjetaztttruiizqkfqsnryjcpcgfbymlpfixmyatlsnirzurrumomyckxhnbiyhmxpdaqyjebufgsyxnxmtbrziikguskyrpmflgnzqgmnsbsyjlmlorgypgonongzqlthxslypoioslfyrtrrnsrzmauthchyjmlspunzkdsomljznglcqnkyekbukkhytltlaigycgxhxsuyjmrosfnzubpcguhzbnjoctazhejkeaszxenqncnymuofuacyuxjkdxrzmogmsmdynqqrgxmyanuqixiztquumsryjlsnejqztqrpxuazgfppeeuzleqpjaqyqxscirsycjiqtqrzbgktssuykcodkdfzsatssnjzoostuutyqrfodfuykcrnfcpzqsquorsyrbetspizeikdqnqyaruafgizlltftsbzqfaxnnczpxmbuhhyusunxreyatcspbozemxbcirzsruqukxzmmucjcbzboqmtfsysgqfgsryscudummyjsgkhukytussolozfhgjgtqyqeuqfusyfdtortczonrahceyturqmrqzlbuqgchzekrprnkyhnthlrpycqxlgjaycjtitlmzufrdguqzsgsfjtszhnoonqkzmrktbexyilfqmiryridnttuzcgrfrguyrinqmgtygcoagcczbolllluzgxnntsbyrsrrprszontauuazuagxcudyndixjmsyjrqpujpzlcuugfkygthqtcozpgosxeczxpuldiuzqtsnhqdzqbnkdkkyskqdirryniesqsmzoaugskmyaplaspiytutsppnzlarsgfhznbsoeahzbikjhsuzrmgpmoxynxffsumzspbaijcyqsctnpsznxkbllpyodqojaryeoqdogbzmqubsthypeqnpkhyulccckxydkjaspsytqqspqszxmujotozeukphgcytoqgsflygifjeeqylhxbeqozqksdxqtznrgufdgytcebmrbygnmtlsnyagtnrmhzpnudeggysuqqicpykfsnqtoytrqslutzsdroddtynppkmohyrrcrnouzokgbpomyofqoxfszlnrlbprympieeohzkoraiaezpcuepgszoldinouyoucfmgczskbqkqrzlaxpegjzjquedapzsoktdolyrkqdhstzlpretrazqagjcscznqtqqtozltjtffjztutumpozdjtjxhqynjncpjrzdkttqtlyjnsfiedyfjihhsrynnkdflkymsxrghdysurrptszuoxlnnjypjakiskymnrdttdyrdxidtbypsqrsulynuiqbfjyofkiinryobdnltpztabuubeyudoductylkmdokszrhqahstybxrauxrymokiccxzcxtjrlpzrdtahrqyheodkdfzbsbjkmiyilmplshzfitiqpmztaqejuqzusttppm POEM; $bm = new BoyerMooreStringSearch(); $bm->search($poem, $poem); $count = $bm->getResultsCount; echo $count;
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/B4dp8
function name:  (null)
number of ops:  13
compiled vars:  !0 = $poem, !1 = $bm, !2 = $count
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    6     0  E >   DECLARE_CLASS                                            'boyermoorestringsearch'
   80     1        ASSIGN                                                   !0, 'metrhdgzraputonyukbnuqtzfencojqzqfiggouzppqetrayteekplbyaxqitpmzqkpertdyrqtqupozoetqkejzgkakeetyqblajqizgnrndgmysfprsooyjhlhagozbisuqqpziotdgaeynlejopuzrnicjggyxtrprxnylnqfqsayubdkllezfgdakxbyttturmszsfgjgpuyiutbqkhzakaongpyxamejeezkuurpfdyextgumnztknfsqfzqsqusloznbsrxegysirdgskyadhfdggzqstrutxzdhqgsmnztcschtqyckfgicnzuprasjxyogmnreqytusrtlxzuurrtluzscdrqbfyphiuupdzogqfotkziejxldqykcpfhdbynninuneypqqrignztgscdleztgodstdytusutplygtfqplxzabpkntlyakagkemzneungfszqhgltdfzudlatauygsfbulkyscatulkzldtpxdqyqdfrrmjzthoxsnlyqgqmjflybhqhromynlbiposzhcptsgoynnscstcyqcjjerfyqxqaxutyotrursnymthuefiytrqsplmymcxeblsyxrcclkgzufttbrsyaduoqtfyloteicfytxtbjqqzlpmegjpyknrrlidydhgdupszglrhmtmzdqhpxhayqqsqmqryfhxhgttzbgdxhdoylxgfdrmydxtfriszmnkgacgzbxrjtolzqaubjqqzritehuuzmsirtrnzrjkxgnpyqrutottzlotcstcytfjicuczdsponujyrteunpqzshubksszasjohmkzcpoljgmyrkmnqgryklspueszrohuljazhfafsfnzuurtpkpyartlqqrzhedicpfyuqsqtlszsljblhkzcluflxfzusuurnqyxlhprcszajmialayruqumutzttjdmeeymxbcqspytoeajhfzdlplqaqzttesnlrypeqmxctzuiojqolzqeprljrylnichdnytmegarrzphbxgtmytjtfirsyolscrrdyrbigctaytpfaapuzcraukomyusutltsztrsafxeymsitfptyfkixkstzudgqaphynsbgdarygurnmmkztxqaktryxxqikhgyxfmprrrymmrcxdaytrrrotszimxlsaozmoqtidjzomuesscysegkduezstsqpqrymaulkeszjlphiqlzkopsorlzdtkmsfxyugalurtykqdxsbbyuqrtlsmzixrghxhzjbpnsssyontcgbfzxemdkfbyenmlnpsyiknpssczhlgmqauycphdnofztquupnhzuusqnnpyseqtauuzeernsufzomrcifayultpagjyfrcsjxdyaphxnxhzlpqrjexzekfgjaoynixebunyjfmrtkpzomsfusfytdhhaqdytgsaituyntssqsnyprxsfakysuuuphnzrkbouqtzjsckjfmzlobecojymladfphzuksejrryoxmarkkyrstljubzrsqslusykracphiyrgaosuryiemrtkozxciuaulynprqqtsysgtakuqzagqkrnpzrducxsrybajmmbiymeqfeluycekksrgzgnerkctzlxkxopgythregstzpnsbtqfzqfhjetaztttruiizqkfqsnryjcpcgfbymlpfixmyatlsnirzurrumomyckxhnbiyhmxpdaqyjebufgsyxnxmtbrziikguskyrpmflgnzqgmnsbsyjlmlorgypgonongzqlthxslypoioslfyrtrrnsrzmauthchyjmlspunzkdsomljznglcqnkyekbukkhytltlaigycgxhxsuyjmrosfnzubpcguhzbnjoctazhejkeaszxenqncnymuofuacyuxjkdxrzmogmsmdynqqrgxmyanuqixiztquumsryjlsnejqztqrpxuazgfppeeuzleqpjaqyqxscirsycjiqtqrzbgktssuykcodkdfzsatssnjzoostuutyqrfodfuykcrnfcpzqsquorsyrbetspizeikdqnqyaruafgizlltftsbzqfaxnnczpxmbuhhyusunxreyatcspbozemxbcirzsruqukxzmmucjcbzboqmtfsysgqfgsryscudummyjsgkhukytussolozfhgjgtqyqeuqfusyfdtortczonrahceyturqmrqzlbuqgchzekrprnkyhnthlrpycqxlgjaycjtitlmzufrdguqzsgsfjtszhnoonqkzmrktbexyilfqmiryridnttuzcgrfrguyrinqmgtygcoagcczbolllluzgxnntsbyrsrrprszontauuazuagxcudyndixjmsyjrqpujpzlcuugfkygthqtcozpgosxeczxpuldiuzqtsnhqdzqbnkdkkyskqdirryniesqsmzoaugskmyaplaspiytutsppnzlarsgfhznbsoeahzbikjhsuzrmgpmoxynxffsumzspbaijcyqsctnpsznxkbllpyodqojaryeoqdogbzmqubsthypeqnpkhyulccckxydkjaspsytqqspqszxmujotozeukphgcytoqgsflygifjeeqylhxbeqozqksdxqtznrgufdgytcebmrbygnmtlsnyagtnrmhzpnudeggysuqqicpykfsnqtoytrqslutzsdroddtynppkmohyrrcrnouzokgbpomyofqoxfszlnrlbprympieeohzkoraiaezpcuepgszoldinouyoucfmgczskbqkqrzlaxpegjzjquedapzsoktdolyrkqdhstzlpretrazqagjcscznqtqqtozltjtffjztutumpozdjtjxhqynjncpjrzdkttqtlyjnsfiedyfjihhsrynnkdflkymsxrghdysurrptszuoxlnnjypjakiskymnrdttdyrdxidtbypsqrsulynuiqbfjyofkiinryobdnltpztabuubeyudoductylkmdokszrhqahstybxrauxrymokiccxzcxtjrlpzrdtahrqyheodkdfzbsbjkmiyilmplshzfitiqpmztaqejuqzusttppm+'
   83     2        NEW                                              $4      'BoyerMooreStringSearch'
          3        DO_FCALL                                      0          
          4        ASSIGN                                                   !1, $4
   84     5        INIT_METHOD_CALL                                         !1, 'search'
          6        SEND_VAR_EX                                              !0
          7        SEND_VAR_EX                                              !0
          8        DO_FCALL                                      0          
   85     9        FETCH_OBJ_R                                      ~8      !1, 'getResultsCount'
         10        ASSIGN                                                   !2, ~8
   86    11        ECHO                                                     !2
         12      > RETURN                                                   1

Class StringSearchable:
Function search:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/B4dp8
function name:  search
number of ops:  3
compiled vars:  !0 = $substring, !1 = $buffer
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    4     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2      > RETURN                                                   null

End of function search

End of class StringSearchable.

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

End of function __construct

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

End of function __destruct

Function search:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 58
Branch analysis from position: 58
2 jumps found. (Code = 44) Position 1 = 60, Position 2 = 19
Branch analysis from position: 60
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 19
1 jumps found. (Code = 42) Position 1 = 56
Branch analysis from position: 56
2 jumps found. (Code = 44) Position 1 = 58, Position 2 = 22
Branch analysis from position: 58
Branch analysis from position: 22
2 jumps found. (Code = 43) Position 1 = 31, Position 2 = 47
Branch analysis from position: 31
2 jumps found. (Code = 43) Position 1 = 33, Position 2 = 45
Branch analysis from position: 33
1 jumps found. (Code = 42) Position 1 = 46
Branch analysis from position: 46
1 jumps found. (Code = 42) Position 1 = 55
Branch analysis from position: 55
2 jumps found. (Code = 44) Position 1 = 58, Position 2 = 22
Branch analysis from position: 58
Branch analysis from position: 22
Branch analysis from position: 45
1 jumps found. (Code = 42) Position 1 = 55
Branch analysis from position: 55
Branch analysis from position: 47
1 jumps found. (Code = 42) Position 1 = 58
Branch analysis from position: 58
filename:       /in/B4dp8
function name:  search
number of ops:  65
compiled vars:  !0 = $substring, !1 = $buffer, !2 = $substringLen, !3 = $currentCharIndex, !4 = $bufferLen, !5 = $i
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   20     0  E >   RECV                                             !0      
          1        RECV                                             !1      
   22     2        ASSIGN_OBJ                                               'results'
          3        OP_DATA                                                  <array>
   23     4        ASSIGN_OBJ                                               'substring'
          5        OP_DATA                                                  !0
   24     6        ASSIGN_OBJ                                               'buffer'
          7        OP_DATA                                                  !1
   25     8        INIT_METHOD_CALL                                         'deriveJumpTable'
          9        DO_FCALL                                      0          
   27    10        FETCH_OBJ_R                                      ~10     'substring'
         11        STRLEN                                           ~11     ~10
         12        ASSIGN                                                   !2, ~11
   28    13        SUB                                              ~13     !2, 1
         14        ASSIGN                                                   !3, ~13
   29    15        FETCH_OBJ_R                                      ~15     'buffer'
         16        STRLEN                                           ~16     ~15
         17        ASSIGN                                                   !4, ~16
   30    18      > JMP                                                      ->58
   31    19    >   SUB                                              ~18     !2, 1
         20        ASSIGN                                                   !5, ~18
         21      > JMP                                                      ->56
   32    22    >   SUB                                              ~21     !3, !2
         23        ADD                                              ~22     ~21, !5
         24        ADD                                              ~23     ~22, 1
         25        FETCH_OBJ_R                                      ~20     'buffer'
         26        FETCH_DIM_R                                      ~24     ~20, ~23
         27        FETCH_OBJ_R                                      ~25     'substring'
         28        FETCH_DIM_R                                      ~26     ~25, !5
         29        IS_EQUAL                                                 ~24, ~26
         30      > JMPZ                                                     ~27, ->47
   33    31    >   IS_EQUAL                                                 !5, 0
         32      > JMPZ                                                     ~28, ->45
   34    33    >   SUB                                              ~31     !3, !2
         34        FETCH_OBJ_W                                      $29     'results'
         35        ASSIGN_DIM                                               $29
         36        OP_DATA                                                  ~31
   35    37        INIT_METHOD_CALL                                         'getJumpLength'
         38        CHECK_FUNC_ARG                                           
         39        FETCH_OBJ_FUNC_ARG                               $32     'buffer'
         40        FETCH_DIM_FUNC_ARG                               $33     $32, !3
         41        SEND_FUNC_ARG                                            $33
         42        DO_FCALL                                      0  $34     
         43        ASSIGN_OP                                     1          !3, $34
         44      > JMP                                                      ->46
   37    45    > > JMP                                                      ->55
         46    > > JMP                                                      ->55
   40    47    >   INIT_METHOD_CALL                                         'getJumpLength'
         48        CHECK_FUNC_ARG                                           
         49        FETCH_OBJ_FUNC_ARG                               $36     'buffer'
         50        FETCH_DIM_FUNC_ARG                               $37     $36, !3
         51        SEND_FUNC_ARG                                            $37
         52        DO_FCALL                                      0  $38     
         53        ASSIGN_OP                                     1          !3, $38
   41    54      > JMP                                                      ->58
   31    55    >   PRE_DEC                                                  !5
         56    >   IS_SMALLER_OR_EQUAL                                      0, !5
         57      > JMPNZ                                                    ~41, ->22
   30    58    >   IS_SMALLER                                               !3, !4
         59      > JMPNZ                                                    ~42, ->19
   46    60    >   FETCH_OBJ_R                                      ~43     'results'
         61        COUNT                                            ~44     ~43
         62        IS_SMALLER                                       ~45     0, ~44
         63      > RETURN                                                   ~45
   47    64*     > RETURN                                                   null

End of function search

Function derivejumptable:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 22
Branch analysis from position: 22
2 jumps found. (Code = 44) Position 1 = 24, Position 2 = 8
Branch analysis from position: 24
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 8
2 jumps found. (Code = 43) Position 1 = 14, Position 2 = 21
Branch analysis from position: 14
2 jumps found. (Code = 44) Position 1 = 24, Position 2 = 8
Branch analysis from position: 24
Branch analysis from position: 8
Branch analysis from position: 21
filename:       /in/B4dp8
function name:  deriveJumpTable
number of ops:  25
compiled vars:  !0 = $maxJump, !1 = $i
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   51     0  E >   FETCH_OBJ_R                                      ~2      'substring'
          1        STRLEN                                           ~3      ~2
          2        ASSIGN                                                   !0, ~3
   52     3        FETCH_OBJ_R                                      ~5      'substring'
          4        STRLEN                                           ~6      ~5
          5        SUB                                              ~7      ~6, 2
          6        ASSIGN                                                   !1, ~7
          7      > JMP                                                      ->22
   53     8    >   FETCH_OBJ_R                                      ~9      'substring'
          9        FETCH_DIM_R                                      ~10     ~9, !1
         10        FETCH_OBJ_R                                      ~11     'jumpTable'
         11        ARRAY_KEY_EXISTS                                 ~12     ~10, ~11
         12        BOOL_NOT                                         ~13     ~12
         13      > JMPZ                                                     ~13, ->21
   54    14    >   FETCH_OBJ_R                                      ~15     'substring'
         15        FETCH_DIM_R                                      ~16     ~15, !1
         16        SUB                                              ~18     !0, !1
         17        SUB                                              ~19     ~18, 1
         18        FETCH_OBJ_W                                      $14     'jumpTable'
         19        ASSIGN_DIM                                               $14, ~16
         20        OP_DATA                                                  ~19
   52    21    >   PRE_DEC                                                  !1
         22    >   IS_SMALLER_OR_EQUAL                                      0, !1
         23      > JMPNZ                                                    ~21, ->8
   57    24    > > RETURN                                                   null

End of function derivejumptable

Function getjumptable:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/B4dp8
function name:  getJumpTable
number of ops:  3
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   60     0  E >   FETCH_OBJ_R                                      ~0      'jumpTable'
          1      > RETURN                                                   ~0
   61     2*     > RETURN                                                   null

End of function getjumptable

Function getresults:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/B4dp8
function name:  getResults
number of ops:  3
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   64     0  E >   FETCH_OBJ_R                                      ~0      'results'
          1      > RETURN                                                   ~0
   65     2*     > RETURN                                                   null

End of function getresults

Function getresultscount:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/B4dp8
function name:  getResultsCount
number of ops:  4
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   68     0  E >   FETCH_OBJ_R                                      ~0      'results'
          1        COUNT                                            ~1      ~0
          2      > RETURN                                                   ~1
   69     3*     > RETURN                                                   null

End of function getresultscount

Function getjumplength:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 8
Branch analysis from position: 4
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 8
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/B4dp8
function name:  getJumpLength
number of ops:  12
compiled vars:  !0 = $charIndex
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   70     0  E >   RECV                                             !0      
   72     1        FETCH_OBJ_R                                      ~1      'jumpTable'
          2        ARRAY_KEY_EXISTS                                         !0, ~1
          3      > JMPZ                                                     ~2, ->8
   73     4    >   FETCH_OBJ_R                                      ~3      'jumpTable'
          5        FETCH_DIM_R                                      ~4      ~3, !0
          6      > RETURN                                                   ~4
          7*       JMP                                                      ->11
   75     8    >   FETCH_OBJ_R                                      ~5      'substring'
          9        STRLEN                                           ~6      ~5
         10      > RETURN                                                   ~6
   77    11*     > RETURN                                                   null

End of function getjumplength

End of class BoyerMooreStringSearch.

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
158.48 ms | 1411 KiB | 13 Q