This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Store the BM table in mg_ptr instead of after SvCUR().
[perl5.git] / ext / Devel-Peek / t / Peek.t
index ec54405..c0cfa93 100644 (file)
@@ -778,6 +778,10 @@ SKIP: {
      or diag $@;
 }
 
+# This is more a test of fbm_compile/pp_study (non) interaction than dumping
+# prowess, but short of duplicating all the gubbins of this file, I can't see
+# a way to make a better place for it:
+
 use constant {
     perl => 'rules',
     beer => 'foamy',
@@ -789,7 +793,7 @@ unless ($Config{useithreads}) {
 
     do_test('regular string constant', perl,
 'SV = PV\\($ADDR\\) at $ADDR
-  REFCNT = 3
+  REFCNT = 5
   FLAGS = \\(PADMY,POK,READONLY,pPOK\\)
   PV = $ADDR "rules"\\\0
   CUR = 5
@@ -804,7 +808,7 @@ unless ($Config{useithreads}) {
 
     do_test('string constant now an FBM', perl,
 'SV = PVGV\\($ADDR\\) at $ADDR
-  REFCNT = 3
+  REFCNT = 5
   FLAGS = \\(PADMY,SMG,POK,READONLY,pPOK,VALID,EVALED\\)
   PV = $ADDR "rules"\\\0
   CUR = 5
@@ -812,7 +816,27 @@ unless ($Config{useithreads}) {
   MAGIC = $ADDR
     MG_VIRTUAL = &PL_vtbl_bm
     MG_TYPE = PERL_MAGIC_bm\\(B\\)
-  FLAGS = 0
+    MG_LEN = 256
+    MG_PTR = $ADDR "(?:\\\\\d){256}"
+  RARE = \d+
+  PREVIOUS = 1
+  USEFUL = 100
+');
+
+    is(study perl, '', "Not allowed to study an FBM");
+
+    do_test('string constant still an FBM', perl,
+'SV = PVGV\\($ADDR\\) at $ADDR
+  REFCNT = 5
+  FLAGS = \\(PADMY,SMG,POK,READONLY,pPOK,VALID,EVALED\\)
+  PV = $ADDR "rules"\\\0
+  CUR = 5
+  LEN = \d+
+  MAGIC = $ADDR
+    MG_VIRTUAL = &PL_vtbl_bm
+    MG_TYPE = PERL_MAGIC_bm\\(B\\)
+    MG_LEN = 256
+    MG_PTR = $ADDR "(?:\\\\\d){256}"
   RARE = \d+
   PREVIOUS = 1
   USEFUL = 100
@@ -820,7 +844,7 @@ unless ($Config{useithreads}) {
 
     do_test('regular string constant', beer,
 'SV = PV\\($ADDR\\) at $ADDR
-  REFCNT = 4
+  REFCNT = 5
   FLAGS = \\(PADMY,POK,READONLY,pPOK\\)
   PV = $ADDR "foamy"\\\0
   CUR = 5
@@ -831,7 +855,23 @@ unless ($Config{useithreads}) {
 
     do_test('string constant now studied', beer,
 'SV = PVMG\\($ADDR\\) at $ADDR
-  REFCNT = 5
+  REFCNT = 6
+  FLAGS = \\(PADMY,SMG,POK,READONLY,pPOK,SCREAM\\)
+  IV = 0
+  NV = 0
+  PV = $ADDR "foamy"\\\0
+  CUR = 5
+  LEN = \d+
+  MAGIC = $ADDR
+    MG_VIRTUAL = &PL_vtbl_mglob
+    MG_TYPE = PERL_MAGIC_regex_global\\(g\\)
+');
+
+    is (eval 'index "not too foamy", beer', 8, 'correct index');
+
+    do_test('string constant still studied', beer,
+'SV = PVMG\\($ADDR\\) at $ADDR
+  REFCNT = 6
   FLAGS = \\(PADMY,SMG,POK,READONLY,pPOK,SCREAM\\)
   IV = 0
   NV = 0