summaryrefslogtreecommitdiff
path: root/util.c
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2006-12-28 23:35:54 +0000
committerNicholas Clark <nick@ccl4.org>2006-12-28 23:35:54 +0000
commit8eeaf79a35f94bcc9187bdbe4d3d43dc65f8a234 (patch)
tree8012e71114a02e05004ca0f60d6d462d325d369c /util.c
parentf8503592a22431f4f2362d87270e54bfdb2d3177 (diff)
downloadperl-8eeaf79a35f94bcc9187bdbe4d3d43dc65f8a234.tar.gz
Move all the FBM data fields from the table into a struct xbm_s which
is part of the xnv union. p4raw-id: //depot/perl@29634
Diffstat (limited to 'util.c')
-rw-r--r--util.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/util.c b/util.c
index fb77773007..1c64b9470e 100644
--- a/util.c
+++ b/util.c
@@ -492,6 +492,8 @@ Perl_fbm_compile(pTHX_ SV *sv, U32 flags)
return;
SvUPGRADE(sv, SVt_PVGV);
SvIOK_off(sv);
+ SvNOK_off(sv);
+ SvVALID_on(sv);
if (len > 2) {
const unsigned char *sb;
const U8 mlen = (len>255) ? 255 : (U8)len;
@@ -502,7 +504,7 @@ Perl_fbm_compile(pTHX_ SV *sv, U32 flags)
= (unsigned char*)(SvPVX_mutable(sv) + len + PERL_FBM_TABLE_OFFSET);
s = table - 1 - PERL_FBM_TABLE_OFFSET; /* last char */
memset((void*)table, mlen, 256);
- table[PERL_FBM_FLAGS_OFFSET_FROM_TABLE] = (U8)flags;
+ BmFLAGS(sv) = (U8)flags;
i = 0;
sb = s - mlen + 1; /* first char (maybe) */
while (s >= sb) {
@@ -514,7 +516,6 @@ Perl_fbm_compile(pTHX_ SV *sv, U32 flags)
Sv_Grow(sv, len + PERL_FBM_TABLE_OFFSET);
}
sv_magic(sv, NULL, PERL_MAGIC_bm, NULL, 0); /* deep magic */
- SvVALID_on(sv);
s = (const unsigned char*)(SvPVX_const(sv)); /* deeper magic */
for (i = 0; i < len; i++) {
@@ -528,8 +529,8 @@ Perl_fbm_compile(pTHX_ SV *sv, U32 flags)
BmUSEFUL(sv) = 100; /* Initial value */
if (flags & FBMcf_TAIL)
SvTAIL_on(sv);
- DEBUG_r(PerlIO_printf(Perl_debug_log, "rarest char %c at %d\n",
- BmRARE(sv),BmPREVIOUS(sv)));
+ DEBUG_r(PerlIO_printf(Perl_debug_log, "rarest char %c at %lu\n",
+ BmRARE(sv),(unsigned long)BmPREVIOUS(sv)));
}
/* If SvTAIL(littlestr), it has a fake '\n' at end. */
@@ -724,7 +725,7 @@ Perl_fbm_instr(pTHX_ unsigned char *big, register unsigned char *bigend, SV *lit
}
check_end:
if ( s == bigend
- && (table[PERL_FBM_FLAGS_OFFSET_FROM_TABLE] & FBMcf_TAIL)
+ && (BmFLAGS(littlestr) & FBMcf_TAIL)
&& memEQ((char *)(bigend - littlelen),
(char *)(oldlittle - littlelen), littlelen) )
return (char*)bigend - littlelen;