]> git.vpit.fr Git - perl/modules/re-engine-Hooks.git/commitdiff
Hook convertion of branches into tries
authorVincent Pit <vince@profvince.com>
Sat, 31 Mar 2012 15:06:33 +0000 (17:06 +0200)
committerVincent Pit <vince@profvince.com>
Sat, 31 Mar 2012 15:06:33 +0000 (17:06 +0200)
39 files changed:
src/5010001/regcomp.c
src/5011000/regcomp.c
src/5011001/regcomp.c
src/5011002/regcomp.c
src/5011003/regcomp.c
src/5011004/regcomp.c
src/5011005/regcomp.c
src/5012000/regcomp.c
src/5012001/regcomp.c
src/5012002/regcomp.c
src/5012003/regcomp.c
src/5012004/regcomp.c
src/5013000/regcomp.c
src/5013001/regcomp.c
src/5013002/regcomp.c
src/5013003/regcomp.c
src/5013004/regcomp.c
src/5013005/regcomp.c
src/5013006/regcomp.c
src/5013007/regcomp.c
src/5013008/regcomp.c
src/5013009/regcomp.c
src/5013010/regcomp.c
src/5013011/regcomp.c
src/5014000/regcomp.c
src/5014001/regcomp.c
src/5014002/regcomp.c
src/5015000/regcomp.c
src/5015001/regcomp.c
src/5015002/regcomp.c
src/5015003/regcomp.c
src/5015004/regcomp.c
src/5015005/regcomp.c
src/5015006/regcomp.c
src/5015007/regcomp.c
src/5015008/regcomp.c
src/5015009/regcomp.c
src/update.pl
t/10-base.t

index 924c7f884f8fffcf07d799a54a851a669e26e66e..d6bfde6befdf633ce8e59fd71f9421fe7d96673f 100644 (file)
@@ -2136,6 +2136,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
     RExC_rxi->data->data[ data_slot + 1 ] = (void*)widecharmap;
 #ifdef DEBUGGING
     RExC_rxi->data->data[ data_slot + TRIE_WORDS_OFFSET ] = (void*)trie_words;
index c5edf4494d2c8daa608fd3a9c0fb1a79b65e2567..b17c71b290713d9d7878d28ec12b56fbcecd9e0d 100644 (file)
@@ -2138,6 +2138,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
     RExC_rxi->data->data[ data_slot + 1 ] = (void*)widecharmap;
 #ifdef DEBUGGING
     RExC_rxi->data->data[ data_slot + TRIE_WORDS_OFFSET ] = (void*)trie_words;
index 447d4ae41c7b4ff048f51b5a031c456e91aced84..b68a456263e03922c3daf038312cab58f3dfcd2c 100644 (file)
@@ -2149,6 +2149,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
     RExC_rxi->data->data[ data_slot + 1 ] = (void*)widecharmap;
 #ifdef DEBUGGING
     RExC_rxi->data->data[ data_slot + TRIE_WORDS_OFFSET ] = (void*)trie_words;
index b7eb2fbfe6b72bd92b65505a761bec245b73872b..683a7c4d23b8d0b59b73f877a03f38a03b8797a9 100644 (file)
@@ -2149,6 +2149,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
     RExC_rxi->data->data[ data_slot + 1 ] = (void*)widecharmap;
 #ifdef DEBUGGING
     RExC_rxi->data->data[ data_slot + TRIE_WORDS_OFFSET ] = (void*)trie_words;
index 13453715715bf8e887a5691c80b15337852cc349..1f9c84f10bf07247c79a0cd4c0ec148f208d7309 100644 (file)
@@ -2149,6 +2149,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
     RExC_rxi->data->data[ data_slot + 1 ] = (void*)widecharmap;
 #ifdef DEBUGGING
     RExC_rxi->data->data[ data_slot + TRIE_WORDS_OFFSET ] = (void*)trie_words;
index 13453715715bf8e887a5691c80b15337852cc349..1f9c84f10bf07247c79a0cd4c0ec148f208d7309 100644 (file)
@@ -2149,6 +2149,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
     RExC_rxi->data->data[ data_slot + 1 ] = (void*)widecharmap;
 #ifdef DEBUGGING
     RExC_rxi->data->data[ data_slot + TRIE_WORDS_OFFSET ] = (void*)trie_words;
index bc51c8eb053429e89275320ec87ccf2e1462cf89..fa4caf6bf82030584b49ad1ed8d8d06f21f4ceb4 100644 (file)
@@ -2147,6 +2147,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
     RExC_rxi->data->data[ data_slot + 1 ] = (void*)widecharmap;
 #ifdef DEBUGGING
     RExC_rxi->data->data[ data_slot + TRIE_WORDS_OFFSET ] = (void*)trie_words;
index aa8bf54e7a5754f9c4122123d4bca6b4f83cbb8c..10538490f9c77c8a8df8d84fba89157663ea341c 100644 (file)
@@ -2147,6 +2147,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
     RExC_rxi->data->data[ data_slot + 1 ] = (void*)widecharmap;
 #ifdef DEBUGGING
     RExC_rxi->data->data[ data_slot + TRIE_WORDS_OFFSET ] = (void*)trie_words;
index 4039ff242770b0f5b3045d96c90d8450943357d0..2d4110b0f359587f560e163c43340cdb6c22fc5a 100644 (file)
@@ -2147,6 +2147,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
     RExC_rxi->data->data[ data_slot + 1 ] = (void*)widecharmap;
 #ifdef DEBUGGING
     RExC_rxi->data->data[ data_slot + TRIE_WORDS_OFFSET ] = (void*)trie_words;
index 4039ff242770b0f5b3045d96c90d8450943357d0..2d4110b0f359587f560e163c43340cdb6c22fc5a 100644 (file)
@@ -2147,6 +2147,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
     RExC_rxi->data->data[ data_slot + 1 ] = (void*)widecharmap;
 #ifdef DEBUGGING
     RExC_rxi->data->data[ data_slot + TRIE_WORDS_OFFSET ] = (void*)trie_words;
index 4039ff242770b0f5b3045d96c90d8450943357d0..2d4110b0f359587f560e163c43340cdb6c22fc5a 100644 (file)
@@ -2147,6 +2147,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
     RExC_rxi->data->data[ data_slot + 1 ] = (void*)widecharmap;
 #ifdef DEBUGGING
     RExC_rxi->data->data[ data_slot + TRIE_WORDS_OFFSET ] = (void*)trie_words;
index 4039ff242770b0f5b3045d96c90d8450943357d0..2d4110b0f359587f560e163c43340cdb6c22fc5a 100644 (file)
@@ -2147,6 +2147,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
     RExC_rxi->data->data[ data_slot + 1 ] = (void*)widecharmap;
 #ifdef DEBUGGING
     RExC_rxi->data->data[ data_slot + TRIE_WORDS_OFFSET ] = (void*)trie_words;
index aa8bf54e7a5754f9c4122123d4bca6b4f83cbb8c..10538490f9c77c8a8df8d84fba89157663ea341c 100644 (file)
@@ -2147,6 +2147,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
     RExC_rxi->data->data[ data_slot + 1 ] = (void*)widecharmap;
 #ifdef DEBUGGING
     RExC_rxi->data->data[ data_slot + TRIE_WORDS_OFFSET ] = (void*)trie_words;
index 2c7f86d97e312b275d11b3c93766416c7bdc8480..7b11f74450128212d642c304805a617594abe01f 100644 (file)
@@ -2159,6 +2159,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index 19f1f4927f2b33a43c59970ee7b7eb062986fb39..92917f7e35b084284e86f57a515601093910c156 100644 (file)
@@ -2159,6 +2159,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index d7cdba50a9fb4224b94def3b18177601029dc75f..4c601235d711e0ad93cb2d268a94e32430a22ffa 100644 (file)
@@ -2159,6 +2159,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index 54c7597bd68c6e527177a5638e8af7856ee12059..34b718818bfeb8ca820d03d7e8dc6e10ab044307 100644 (file)
@@ -2159,6 +2159,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index 97fb42d66b03dfa8dfe8c6535c39c80b1908c224..cd00b96f967bb358b47ee8d3432ef5782c9d7956 100644 (file)
@@ -2167,6 +2167,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index ef5562033fac062227a0b57d4ed047af2ca4e8a0..ed96849d871048d3d3e652adc414e1ef9c48e949 100644 (file)
@@ -2170,6 +2170,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index 5162d30c3fdf15022e70c23d2e530bd940f76a53..2c9c9535cec986583615a3e86cf7304db63a376a 100644 (file)
@@ -2183,6 +2183,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index 3f1ba217d1d779a61c7602c677701e9997a541a1..794a89c4bc81739422f7ef5164a39606f8ab3b46 100644 (file)
@@ -2185,6 +2185,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index a956d08879fc418bfd02a508b88938b6c8105c82..835cfd51cc35fd79d1acbea52544f161b7929f38 100644 (file)
@@ -2194,6 +2194,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index 7c23c133d72297a9dfd0327ac18dbed150ea4402..cef1124da7e6a0830303275ecd73c7c8a6429413 100644 (file)
@@ -2205,6 +2205,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index 0deb1000885dbfcbbff01184eaf878234dcdb078..53d4a40797c5104c88f8d5b21258b9736ab17313 100644 (file)
@@ -2296,6 +2296,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index 9f25d62c0379303d57f701ff5269634acbe5cdde..36f88ade82f4225a320dbfae0705d1084fecd7ad 100644 (file)
@@ -2321,6 +2321,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index c8e79b704cc3542066d60f91a8e062646d23a6f2..a5ac553b5924a8ddfb74efef1be719fbadaf2e44 100644 (file)
@@ -2321,6 +2321,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index c8e79b704cc3542066d60f91a8e062646d23a6f2..a5ac553b5924a8ddfb74efef1be719fbadaf2e44 100644 (file)
@@ -2321,6 +2321,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index 6627a41eece50c6058d74b350b24b545ccb50173..382b1e1f1ea3dec1a88b36674f89e33095890b67 100644 (file)
@@ -2321,6 +2321,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index e59647f2a6b5e18ce89225a2905af963f3880622..9ca75cb40f9ee32ba17e04ed0ac0cd49835c4c02 100644 (file)
@@ -2321,6 +2321,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index 47512c0156149decd8b3bc6129c21981a92d8ee1..4ada8ebe8ec6aa9d35788e9022de96c808fa8fd5 100644 (file)
@@ -2321,6 +2321,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index 47512c0156149decd8b3bc6129c21981a92d8ee1..4ada8ebe8ec6aa9d35788e9022de96c808fa8fd5 100644 (file)
@@ -2321,6 +2321,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index 8bb7fd5a6b8b9a5cbb7699229fc8f0335fcb8988..1e762f94ab27a3460da8edcae4115ec146ed73aa 100644 (file)
@@ -2321,6 +2321,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index de973175cf9c7338cb892180fb6592635d2f2450..3e4ca3331da39a4b0a3c620c4724f3a6e1fc95d4 100644 (file)
@@ -2321,6 +2321,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index f6874542b92c4d2282b45fc5ddc2599ad5618827..a2441456f9a6fb02d6b100ace3932bddcf23511c 100644 (file)
@@ -2321,6 +2321,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index d6cc6b717ad1a0091a1765407cf0262adf3b1307..6a0b96df3ead63cb19efd7ac7e867d87d45b1e1f 100644 (file)
@@ -2323,6 +2323,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index 8130258e2ecefc56b9d0c39e24c4838b1d896c3f..a16bf690a71e6eeb7ea0a393e6a53c5237008712 100644 (file)
@@ -2326,6 +2326,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index d517d1fb28c64b27fa8bdb3d06b02c1fa93c8f46..59c12e0e03fd248f77c3c561b7ff0ac72d6444c5 100644 (file)
@@ -2357,6 +2357,7 @@ S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *firs
             Set_Node_Offset_Length(convert,mjd_offset,mjd_nodelen);
         });
     } /* end node insert */
+    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);
 
     /*  Finish populating the prev field of the wordinfo array.  Walk back
      *  from each accept state until we find another accept state, and if
index a36c99d376cc9316a421a14086dc61c46dd2472b..1c5e40d454d4a339efb5b6f9d39f599f57a0a393 100644 (file)
@@ -218,8 +218,16 @@ sub fetch_source_file {
 
 my %patched_chunks;
 my %expected_chunks = (
- 'regcomp.c' => [ qw<re_defs COMP_BEGIN_HOOK>, ('COMP_NODE_HOOK') x 3 ],
- 'regexec.c' => [ qw<re_defs EXEC_NODE_HOOK> ],
+ 'regcomp.c' => [
+  're_defs',
+  'COMP_NODE_HOOK',
+  'COMP_BEGIN_HOOK',
+  ('COMP_NODE_HOOK') x 3,
+ ],
+ 'regexec.c' => [
+  're_defs',
+  'EXEC_NODE_HOOK',
+ ],
 );
 
 sub patch_regcomp {
@@ -235,6 +243,9 @@ sub patch_regcomp {
   my $shift = $1 ? 2 : 1;
   push @{$patched_chunks{$file}}, 'COMP_NODE_HOOK';
   return $line, "    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, ($2) - $shift);\n"
+ } elsif ($line =~ /end node insert/) {
+  push @{$patched_chunks{$file}}, 'COMP_NODE_HOOK';
+  return $line, "    REH_CALL_COMP_NODE_HOOK(pRExC_state->rx, convert);\n";
  }
 
  return $line;
index 0db53dcfcfaee81d5257e0d7f547d67e535e57d2..565f878c025366211be212cd0570c8c0d74c747f 100644 (file)
@@ -5,9 +5,7 @@ use warnings;
 
 use blib 't/re-engine-Hooks-TestDist';
 
-use Test::More tests => 6;
-
-my $res;
+use Test::More tests => 4 * 3;
 
 my $ops;
 BEGIN { $ops = [ ] }
@@ -18,17 +16,15 @@ BEGIN { $ops = [ ] }
  BEGIN { @$ops = () }
  @$ops = ();
 
- $res = "lettuce" =~ /t{2,3}/;
my $res = "lettuce" =~ /t{2,3}/;
 
  BEGIN {
   is "@$ops", 'c:EXACT c:CURLY c:END',  'match compilation';
  }
  is "@$ops", 'e:CURLY e:END', 'match execution';
-}
 
-ok $res, 'regexp match result';
-
-my @captures;
+ ok $res, 'regexp match result';
+}
 
 {
  use re::engine::Hooks::TestDist 'foo';
@@ -36,13 +32,54 @@ my @captures;
  BEGIN { @$ops = () }
  @$ops = ();
 
- @captures = "babaorum" =~ /([aeiou])/g;
my @captures = "babaorum" =~ /([aeiou])/g;
 
  BEGIN {
   is "@$ops", 'c:OPEN c:ANYOF c:CLOSE c:END', 'capture compilation';
  }
  my $expect = join ' ', ('e:OPEN e:ANYOF e:CLOSE e:END') x 4;
  is "@$ops", $expect, 'capture execution';
+
+ is "@captures", 'a a o u', 'regexp capture result';
+}
+
+my $expected_comp_branch;
+BEGIN {
+ $expected_comp_branch
+}
+
+{
+ use re::engine::Hooks::TestDist 'foo';
+
+ BEGIN { @$ops = () }
+ @$ops = ();
+
+ my $res = "tomato" =~ /t(?:z|.)/g;
+
+ BEGIN {
+  is "@$ops", 'c:EXACT c:EXACT c:BRANCH c:BRANCH c:REG_ANY c:TAIL c:END',
+              'branch compilation';
+ }
+ my $expect = join ' ', ('e:EXACT e:BRANCH') x2, 'e:REG_ANY e:END';
+ is "@$ops", $expect, 'branch execution';
+
+ ok $res, 'branch execution result';
 }
 
-is "@captures", 'a a o u', 'regexp capture result';
+{
+ use re::engine::Hooks::TestDist 'foo';
+
+ BEGIN { @$ops = () }
+ @$ops = ();
+
+ my $res = "potato" =~ /t(?:z|o)/g;
+
+ BEGIN {
+  is "@$ops", 'c:EXACT c:EXACT c:BRANCH c:BRANCH c:EXACT c:TAIL c:END c:TRIE',
+              'trie compilation';
+ }
+ my $expect = join ' ', ('e:EXACT e:TRIE') x2, 'e:END';
+ is "@$ops", $expect, 'trie execution';
+
+ ok $res, 'trie execution result';
+}