diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | backport-Add-Perl-titlecasing-475.patch | 69 | ||||
| -rw-r--r-- | backport-Fix-incorrect-positive-error-code-from-pcre2_substitute.patch | 65 | ||||
| -rw-r--r-- | backport-Fix-non-recognition-of-some-octal-escapes-in-substitute.patch | 263 | ||||
| -rw-r--r-- | backport-Guard-against-out-of-bounds-memory-access-when-parsing.patch | 78 | ||||
| -rw-r--r-- | backport-Improve-error-message-for-N-name-in-character-classes.patch | 68 | ||||
| -rw-r--r-- | backport-Remove-incorrect-optimization-in-DFA-matching-when-p.patch | 118 | ||||
| -rw-r--r-- | backport-pcre2_compile-avoid-1-byte-buffer-overread-parsing-V.patch | 118 | ||||
| -rw-r--r-- | backport-pcre2test-memory-reports-only-compiled-memory-usage-for.patch | 5223 | ||||
| -rw-r--r-- | pcre2-10.10-Fix-multilib.patch | 39 | ||||
| -rw-r--r-- | pcre2.spec | 224 | ||||
| -rw-r--r-- | sources | 1 | 
12 files changed, 6267 insertions, 0 deletions
@@ -0,0 +1 @@ +/pcre2-10.44.tar.bz2 diff --git a/backport-Add-Perl-titlecasing-475.patch b/backport-Add-Perl-titlecasing-475.patch new file mode 100644 index 0000000..6cf03b5 --- /dev/null +++ b/backport-Add-Perl-titlecasing-475.patch @@ -0,0 +1,69 @@ +From f334e76dc765f23670e957413bae18c9d20b1d82 Mon Sep 17 00:00:00 2001 +From: Nicholas Wilson <nicholas@nicholaswilson.me.uk> +Date: Mon, 16 Sep 2024 17:38:40 +0100 +Subject: [PATCH] Add Perl titlecasing (#475) + +--- + src/pcre2_substitute.c | 11 +++++++++++ + testdata/testinput2    |  3 +++ + testdata/testoutput2   |  4 ++++ + 3 files changed, 18 insertions(+) + +diff --git a/src/pcre2_substitute.c b/src/pcre2_substitute.c +index 1ccef0660..83ddb8364 100644 +--- a/src/pcre2_substitute.c ++++ b/src/pcre2_substitute.c +@@ -839,6 +839,12 @@ do +         forcecase = -1; +         forcecasereset = 0; +         ptr += 2; ++        if (ptr + 2 < repend && ptr[0] == CHAR_BACKSLASH && ptr[1] == CHAR_U) ++          { ++          /* Perl title-casing feature for \l\U (and \u\L) */ ++          forcecasereset = 1; ++          ptr += 2; ++          } +         continue; +  +         case CHAR_U: +@@ -850,6 +856,11 @@ do +         forcecase = 1; +         forcecasereset = 0; +         ptr += 2; ++        if (ptr + 2 < repend && ptr[0] == CHAR_BACKSLASH && ptr[1] == CHAR_L) ++          { ++          forcecasereset = -1; ++          ptr += 2; ++          } +         continue; +  +         default: +diff --git a/testdata/testinput2 b/testdata/testinput2 +index 51e2095c8..7a836c994 100644 +--- a/testdata/testinput2 ++++ b/testdata/testinput2 +@@ -4612,6 +4612,9 @@ B)x/alt_verbnames,mark + /a(bc)(DE)/replace=a\u$1\U$1\E$1\l$2\L$2\Eab\Uab\LYZ\EDone,substitute_extended +     abcDE +  ++/(Hello)|wORLD/g,replace=>${1:+\l\U$0:\u\L$0}<,substitute_extended ++    Hello between wORLD ++ + /abcd/replace=xy\kz,substitute_extended +     abcd +  +diff --git a/testdata/testoutput2 b/testdata/testoutput2 +index eeb635d6d..7c71866b7 100644 +--- a/testdata/testoutput2 ++++ b/testdata/testoutput2 +@@ -14854,6 +14854,10 @@ No match +     abcDE +  1: aBcBCbcdEdeabAByzDone +  ++/(Hello)|wORLD/g,replace=>${1:+\l\U$0:\u\L$0}<,substitute_extended ++    Hello between wORLD ++ 2: >hELLO< between >World< ++ + /abcd/replace=xy\kz,substitute_extended +     abcd + Failed: error -57 at offset 4 in replacement: bad escape sequence in replacement string diff --git a/backport-Fix-incorrect-positive-error-code-from-pcre2_substitute.patch b/backport-Fix-incorrect-positive-error-code-from-pcre2_substitute.patch new file mode 100644 index 0000000..412ecbd --- /dev/null +++ b/backport-Fix-incorrect-positive-error-code-from-pcre2_substitute.patch @@ -0,0 +1,65 @@ +From 829414f8e549fe7e4b1a6696ca70664e89e5e7f0 Mon Sep 17 00:00:00 2001 +From: Nicholas Wilson <niwilson@microsoft.com> +Date: Wed, 18 Sep 2024 16:39:22 +0100 +Subject: [PATCH] Fix incorrect positive error code from pcre2_substitute() + (#481) + +--- + src/pcre2_substitute.c |  4 +++- + testdata/testinput2    |  6 ++++++ + testdata/testoutput2   | 10 ++++++++++ + 3 files changed, 19 insertions(+), 1 deletion(-) + +diff --git a/src/pcre2_substitute.c b/src/pcre2_substitute.c +index 86c1d1e69..862ea9f73 100644 +--- a/src/pcre2_substitute.c ++++ b/src/pcre2_substitute.c +@@ -134,7 +134,9 @@ for (; ptr < ptrend; ptr++) +     ptr -= 1;  /* Back to last code unit of escape */ +     if (errorcode != 0) +       { +-      rc = errorcode; ++      /* errorcode from check_escape is positive, so must not be returned by ++      pcre2_substitute(). */ ++      rc = PCRE2_ERROR_BADREPESCAPE; +       goto EXIT; +       } +  +diff --git a/testdata/testinput2 b/testdata/testinput2 +index c2abdb890..8be78ff50 100644 +--- a/testdata/testinput2 ++++ b/testdata/testinput2 +@@ -4201,6 +4201,12 @@ +     123abc123\=substitute_overflow_length,replace=[1]x$1z +     123abc123\=substitute_overflow_length,replace=[0]x$1z +  ++/a(b)c/substitute_extended ++    ZabcZ\=replace=>${1:+ yes : no } ++    ZabcZ\=replace=>${1:+ \o{100} : \o{100} } ++    ZabcZ\=replace=>${1:+ \o{Z} : no } ++    ZabcZ\=replace=>${1:+ yes : \o{Z} } ++ + "((?=(?(?=(?(?=(?(?=()))))))))" +     a +  +diff --git a/testdata/testoutput2 b/testdata/testoutput2 +index 7a582cd23..ccf209b5c 100644 +--- a/testdata/testoutput2 ++++ b/testdata/testoutput2 +@@ -13818,6 +13818,16 @@ Failed: error -48: no more memory: 10 code units are needed +     123abc123\=substitute_overflow_length,replace=[0]x$1z + Failed: error -48: no more memory: 10 code units are needed +  ++/a(b)c/substitute_extended ++    ZabcZ\=replace=>${1:+ yes : no } ++ 1: Z> yes Z ++    ZabcZ\=replace=>${1:+ \o{100} : \o{100} } ++ 1: Z> @ Z ++    ZabcZ\=replace=>${1:+ \o{Z} : no } ++Failed: error -57 at offset 9 in replacement: bad escape sequence in replacement string ++    ZabcZ\=replace=>${1:+ yes : \o{Z} } ++Failed: error -57 at offset 15 in replacement: bad escape sequence in replacement string ++ + "((?=(?(?=(?(?=(?(?=()))))))))" +     a +  0:  diff --git a/backport-Fix-non-recognition-of-some-octal-escapes-in-substitute.patch b/backport-Fix-non-recognition-of-some-octal-escapes-in-substitute.patch new file mode 100644 index 0000000..1f959ca --- /dev/null +++ b/backport-Fix-non-recognition-of-some-octal-escapes-in-substitute.patch @@ -0,0 +1,263 @@ +From d29e729000a3724e2aebaa64318dfd7530a55370 Mon Sep 17 00:00:00 2001 +From: Philip Hazel <Philip.Hazel@gmail.com> +Date: Wed, 4 Sep 2024 16:18:35 +0100 +Subject: [PATCH] Fix non-recognition of some octal escapes in substitute + replacement strings + +--- + src/pcre2_compile.c      | 15 ++++++++------- + src/pcre2_substitute.c   |  4 ++-- + testdata/testinput11     |  6 ++++++ + testdata/testinput2      | 12 ++++++++++++ + testdata/testinput5      |  3 +++ + testdata/testinput9      |  8 ++++++++ + testdata/testoutput11-16 |  8 ++++++++ + testdata/testoutput11-32 |  8 ++++++++ + testdata/testoutput2     | 16 ++++++++++++++++ + testdata/testoutput5     |  4 ++++ + testdata/testoutput9     | 10 ++++++++++ + 11 files changed, 85 insertions(+), 9 deletions(-) + +diff --git a/src/pcre2_compile.c b/src/pcre2_compile.c +index 8e6787a..a4064f8 100644 +--- a/src/pcre2_compile.c ++++ b/src/pcre2_compile.c +@@ -1528,8 +1528,8 @@ final code unit of the escape sequence. + This function is also called from pcre2_substitute() to handle escape sequences + in replacement strings. In this case, the cb argument is NULL, and in the case + of escapes that have further processing, only sequences that define a data +-character are recognised. The isclass argument is not relevant; the options +-argument is the final value of the compiled pattern's options. ++character are recognised. The options argument is the final value of the ++compiled pattern's options. +  + Arguments: +   ptrptr         points to the input position pointer +@@ -1538,7 +1538,7 @@ Arguments: +   errorcodeptr   points to the errorcode variable (containing zero) +   options        the current options bits +   xoptions       the current extra options bits +-  isclass        TRUE if inside a character class ++  isclassorsub   TRUE if in a character class or called from pcre2_substitute() +   cb             compile data block or NULL when called from pcre2_substitute() +  + Returns:         zero => a data character +@@ -1549,7 +1549,7 @@ Returns:         zero => a data character +  + int + PRIV(check_escape)(PCRE2_SPTR *ptrptr, PCRE2_SPTR ptrend, uint32_t *chptr, +-  int *errorcodeptr, uint32_t options, uint32_t xoptions, BOOL isclass, ++  int *errorcodeptr, uint32_t options, uint32_t xoptions, BOOL isclassorsub, +   compile_block *cb) + { + BOOL utf = (options & PCRE2_UTF) != 0; +@@ -1660,7 +1660,8 @@ else +  +   if (cb == NULL) +     { +-    if (c != CHAR_c && c != CHAR_o && c != CHAR_x) ++    if (c < CHAR_0 ||  ++       (c > CHAR_9 && (c != CHAR_c && c != CHAR_o && c != CHAR_x))) +       { +       *errorcodeptr = ERR3; +       return 0; +@@ -1778,7 +1779,7 @@ else +     */ +  +     case CHAR_g: +-    if (isclass) break; ++    if (isclassorsub) break; +  +     if (ptr >= ptrend) +       { +@@ -1854,7 +1855,7 @@ else +     case CHAR_1: case CHAR_2: case CHAR_3: case CHAR_4: case CHAR_5: +     case CHAR_6: case CHAR_7: case CHAR_8: case CHAR_9: +  +-    if (!isclass) ++    if (!isclassorsub) +       { +       oldptr = ptr; +       ptr--;   /* Back to the digit */ +diff --git a/src/pcre2_substitute.c b/src/pcre2_substitute.c +index 3ab94eb..069598c 100644 +--- a/src/pcre2_substitute.c ++++ b/src/pcre2_substitute.c +@@ -130,7 +130,7 @@ for (; ptr < ptrend; ptr++) +  +     ptr += 1;  /* Must point after \ */ +     erc = PRIV(check_escape)(&ptr, ptrend, &ch, &errorcode, +-      code->overall_options, code->extra_options, FALSE, NULL); ++      code->overall_options, code->extra_options, TRUE, NULL); +     ptr -= 1;  /* Back to last code unit of escape */ +     if (errorcode != 0) +       { +@@ -864,7 +864,7 @@ do +  +       ptr++;  /* Point after \ */ +       rc = PRIV(check_escape)(&ptr, repend, &ch, &errorcode, +-        code->overall_options, code->extra_options, FALSE, NULL); ++        code->overall_options, code->extra_options, TRUE, NULL); +       if (errorcode != 0) goto BADESCAPE; +  +       switch(rc) +diff --git a/testdata/testinput11 b/testdata/testinput11 +index 2bc8a25..69aea35 100644 +--- a/testdata/testinput11 ++++ b/testdata/testinput11 +@@ -371,4 +371,10 @@ + /(?i:A{1,}\6666666666)/ +     A\x{1b6}6666666 +  ++/abc/substitute_extended,replace=>\777< ++    abc ++ ++/abc/substitute_extended,replace=>\o{012345}< ++    abc ++ + # End of testinput11 +diff --git a/testdata/testinput2 b/testdata/testinput2 +index bdd41ab..a8bd69d 100644 +--- a/testdata/testinput2 ++++ b/testdata/testinput2 +@@ -4670,6 +4670,18 @@ B)x/alt_verbnames,mark + /abcd/g +     >abcd1234abcd5678<\=replace=wxyz,substitute_matched +  ++/abc/substitute_extended,replace=>\045< ++    abc ++ ++/abc/substitute_extended,replace=>\45< ++    abc ++ ++/abc/substitute_extended,replace=>\o{45}< ++    abc ++ ++/abc/substitute_extended,replace=>\845< ++    abc ++ + /^(o(\1{72}{\"{\\{00000059079}\d*){74}}){19}/I +  + /((p(?'K/ +diff --git a/testdata/testinput5 b/testdata/testinput5 +index 7e04873..ff120e0 100644 +--- a/testdata/testinput5 ++++ b/testdata/testinput5 +@@ -2531,4 +2531,7 @@ + /(?<!(|l ))/utf +     (?<!(|l )) +  ++/abc/utf,substitute_extended,replace=>\777< ++    abc ++ + # End of testinput5 +diff --git a/testdata/testinput9 b/testdata/testinput9 +index 4eb228a..f2f5003 100644 +--- a/testdata/testinput9 ++++ b/testdata/testinput9 +@@ -263,4 +263,12 @@ + /(?i:A{1,}\6666666666)/ +     A\x{1b6}6666666 +  ++# Should cause an error ++/abc/substitute_extended,replace=>\777< ++    abc ++ ++# Should cause an error ++/abc/substitute_extended,replace=>\o{012345}< ++    abc ++ + # End of testinput9 +diff --git a/testdata/testoutput11-16 b/testdata/testoutput11-16 +index 8768785..5d1ccab 100644 +--- a/testdata/testoutput11-16 ++++ b/testdata/testoutput11-16 +@@ -665,4 +665,12 @@ Subject length lower bound = 1 +     A\x{1b6}6666666 +  0: A\x{1b6}6666666 +  ++/abc/substitute_extended,replace=>\777< ++    abc ++ 1: >\x{1ff}< ++ ++/abc/substitute_extended,replace=>\o{012345}< ++    abc ++ 1: >\x{14e5}< ++ + # End of testinput11 +diff --git a/testdata/testoutput11-32 b/testdata/testoutput11-32 +index 2c95f61..c1b8547 100644 +--- a/testdata/testoutput11-32 ++++ b/testdata/testoutput11-32 +@@ -671,4 +671,12 @@ Subject length lower bound = 1 +     A\x{1b6}6666666 +  0: A\x{1b6}6666666 +  ++/abc/substitute_extended,replace=>\777< ++    abc ++ 1: >\x{1ff}< ++ ++/abc/substitute_extended,replace=>\o{012345}< ++    abc ++ 1: >\x{14e5}< ++ + # End of testinput11 +diff --git a/testdata/testoutput2 b/testdata/testoutput2 +index d59b26a..be0e1f6 100644 +--- a/testdata/testoutput2 ++++ b/testdata/testoutput2 +@@ -14913,6 +14913,22 @@ Failed: error -55 at offset 3 in replacement: requested value is not set +     >abcd1234abcd5678<\=replace=wxyz,substitute_matched +  2: >wxyz1234wxyz5678< +  ++/abc/substitute_extended,replace=>\045< ++    abc ++ 1: >%< ++ ++/abc/substitute_extended,replace=>\45< ++    abc ++ 1: >%< ++ ++/abc/substitute_extended,replace=>\o{45}< ++    abc ++ 1: >%< ++ ++/abc/substitute_extended,replace=>\845< ++    abc ++ 1: >845< ++ + /^(o(\1{72}{\"{\\{00000059079}\d*){74}}){19}/I + Capture group count = 2 + Max back reference = 1 +diff --git a/testdata/testoutput5 b/testdata/testoutput5 +index b79959b..8db45a6 100644 +--- a/testdata/testoutput5 ++++ b/testdata/testoutput5 +@@ -5515,4 +5515,8 @@ No match +     (?<!(|l )) + No match +  ++/abc/utf,substitute_extended,replace=>\777< ++    abc ++ 1: >\x{1ff}< ++ + # End of testinput5 +diff --git a/testdata/testoutput9 b/testdata/testoutput9 +index 1ec4317..17eb44b 100644 +--- a/testdata/testoutput9 ++++ b/testdata/testoutput9 +@@ -371,4 +371,14 @@ Failed: error 176 at offset 259: name is too long in (*MARK), (*PRUNE), (*SKIP), + Failed: error 151 at offset 13: octal value is greater than \377 in 8-bit non-UTF-8 mode +     A\x{1b6}6666666 +  ++# Should cause an error ++/abc/substitute_extended,replace=>\777< ++    abc ++Failed: error -57 at offset 5 in replacement: bad escape sequence in replacement string ++ ++# Should cause an error ++/abc/substitute_extended,replace=>\o{012345}< ++    abc ++Failed: error -57 at offset 10 in replacement: bad escape sequence in replacement string ++ + # End of testinput9 diff --git a/backport-Guard-against-out-of-bounds-memory-access-when-parsing.patch b/backport-Guard-against-out-of-bounds-memory-access-when-parsing.patch new file mode 100644 index 0000000..196ce7d --- /dev/null +++ b/backport-Guard-against-out-of-bounds-memory-access-when-parsing.patch @@ -0,0 +1,78 @@ +From ef218fbba60bfe5b0a8ac9ea4445eac5fb0847e5 Mon Sep 17 00:00:00 2001 +From: Alex Dowad <alexinbeijing@gmail.com> +Date: Sat, 7 Sep 2024 00:16:03 +0900 +Subject: [PATCH] Guard against out-of-bounds memory access when parsing + LIMIT_HEAP et al (#463) + +Patterns passed to pcre2_compile are not guaranteed to be +null-terminated. Also, it can happen that there is an invalid +pattern like this: + +    (*LIMIT_HEAP=123 + +If the next byte of memory after the end of the pattern happens +to be a digit, it will be parsed as part of the limit value. Or, +if the next byte is a right parenthesis character, it will be taken +as the end of the (*LIMIT_HEAP=nnn) construct. + +This will result in `skipatstart` being larger than `patlen`, which +will result in underflow and an erroneous call to malloc requesting +a huge number of bytes. +--- + src/pcre2_compile.c   | 7 ++++--- + testdata/testoutput15 | 4 ++-- + 2 files changed, 6 insertions(+), 5 deletions(-) + +diff --git a/src/pcre2_compile.c b/src/pcre2_compile.c +index e6843bb13..410f220b3 100644 +--- a/src/pcre2_compile.c ++++ b/src/pcre2_compile.c +@@ -10552,12 +10552,12 @@ if ((options & PCRE2_LITERAL) == 0) +             ptr += pp; +             goto HAD_EARLY_ERROR; +             } +-          while (IS_DIGIT(ptr[pp])) ++          while (pp < patlen && IS_DIGIT(ptr[pp])) +             { +             if (c > UINT32_MAX / 10 - 1) break;   /* Integer overflow */ +             c = c*10 + (ptr[pp++] - CHAR_0); +             } +-          if (ptr[pp++] != CHAR_RIGHT_PARENTHESIS) ++          if (pp >= patlen || ptr[pp] != CHAR_RIGHT_PARENTHESIS) +             { +             errorcode = ERR60; +             ptr += pp; +@@ -10566,7 +10566,7 @@ if ((options & PCRE2_LITERAL) == 0) +           if (p->type == PSO_LIMH) limit_heap = c; +             else if (p->type == PSO_LIMM) limit_match = c; +             else limit_depth = c; +-          skipatstart += pp - skipatstart; ++          skipatstart = ++pp; +           break; +           } +         break;   /* Out of the table scan loop */ +@@ -10574,6 +10574,7 @@ if ((options & PCRE2_LITERAL) == 0) +       } +     if (i >= sizeof(pso_list)/sizeof(pso)) break;   /* Out of pso loop */ +     } ++    PCRE2_ASSERT(skipatstart <= patlen); +   } +  + /* End of pattern-start options; advance to start of real regex. */ +diff --git a/testdata/testoutput15 b/testdata/testoutput15 +index aa9c5c930..f36faeeaf 100644 +--- a/testdata/testoutput15 ++++ b/testdata/testoutput15 +@@ -111,10 +111,10 @@ Minimum depth limit = 10 +  3: ee +  + /(*LIMIT_MATCH=12bc)abc/ +-Failed: error 160 at offset 17: (*VERB) not recognized or malformed ++Failed: error 160 at offset 16: (*VERB) not recognized or malformed +  + /(*LIMIT_MATCH=4294967290)abc/ +-Failed: error 160 at offset 24: (*VERB) not recognized or malformed ++Failed: error 160 at offset 23: (*VERB) not recognized or malformed +  + /(*LIMIT_DEPTH=4294967280)abc/I + Capture group count = 0 diff --git a/backport-Improve-error-message-for-N-name-in-character-classes.patch b/backport-Improve-error-message-for-N-name-in-character-classes.patch new file mode 100644 index 0000000..8ad59b9 --- /dev/null +++ b/backport-Improve-error-message-for-N-name-in-character-classes.patch @@ -0,0 +1,68 @@ +From d704ee40c5324e5ff6c08f009a7aaa3b67b71565 Mon Sep 17 00:00:00 2001 +From: Nicholas Wilson <niwilson@microsoft.com> +Date: Fri, 27 Sep 2024 16:31:01 +0100 +Subject: [PATCH] Improve error message for \N{name} in character classes + (#502) + +--- + src/pcre2_compile.c  | 8 ++++++++ + testdata/testinput2  | 6 ++++++ + testdata/testoutput2 | 9 +++++++++ + 3 files changed, 23 insertions(+) + +diff --git a/src/pcre2_compile.c b/src/pcre2_compile.c +index ec4940e63..fd554f1d2 100644 +--- a/src/pcre2_compile.c ++++ b/src/pcre2_compile.c +@@ -1542,6 +1542,14 @@ else if ((i = escapes[c - ESCAPES_FIRST]) != 0) + #endif +         } +  ++      /* Give an error in contexts where quantifiers are not allowed ++      (character classes; substitution strings). */ ++ ++      else if (isclassorsub || cb == NULL) ++        { ++        *errorcodeptr = ERR37; ++        } ++ +       /* Give an error if what follows is not a quantifier, but don't override +       an error set by the quantifier reader (e.g. number overflow). */ +  +diff --git a/testdata/testinput2 b/testdata/testinput2 +index c6ee980..a33d987 100644 +--- a/testdata/testinput2 ++++ b/testdata/testinput2 +@@ -913,6 +913,12 @@ +  + /\N{25,ab}/ +  ++/[\N]/ ++ ++/[\N{4}]/ ++ ++/[\N{name}]/ ++ + /a{1,3}b/ungreedy +     ab +  +diff --git a/testdata/testoutput2 b/testdata/testoutput2 +index 2f2b3d1..4c07b72 100644 +--- a/testdata/testoutput2 ++++ b/testdata/testoutput2 +@@ -3245,6 +3245,15 @@ Failed: error 137 at offset 2: PCRE2 does not support \F, \L, \l, \N{name}, \U, + /\N{25,ab}/ + Failed: error 137 at offset 2: PCRE2 does not support \F, \L, \l, \N{name}, \U, or \u +  ++/[\N]/ ++Failed: error 171 at offset 3: \N is not supported in a class ++ ++/[\N{4}]/ ++Failed: error 137 at offset 3: PCRE2 does not support \F, \L, \l, \N{name}, \U, or \u ++ ++/[\N{name}]/ ++Failed: error 137 at offset 3: PCRE2 does not support \F, \L, \l, \N{name}, \U, or \u ++ + /a{1,3}b/ungreedy +     ab +  0: ab diff --git a/backport-Remove-incorrect-optimization-in-DFA-matching-when-p.patch b/backport-Remove-incorrect-optimization-in-DFA-matching-when-p.patch new file mode 100644 index 0000000..7d0382e --- /dev/null +++ b/backport-Remove-incorrect-optimization-in-DFA-matching-when-p.patch @@ -0,0 +1,118 @@ +From 674b6640e702705e8e90125f972197fae3aa364d Mon Sep 17 00:00:00 2001 +From: Philip Hazel <Philip.Hazel@gmail.com> +Date: Sat, 3 Aug 2024 17:18:56 +0100 +Subject: [PATCH] Remove incorrect optimization in DFA matching when partial + matching and (*F) are involved +  +Conflict:don't modify ChangeLog; adapt context +Reference:https://github.com/PCRE2Project/pcre2/commit/674b6640e702705e8e90125f972197fae3aa364d + +--- + src/pcre2_dfa_match.c | 10 +--------- + testdata/testinput6   |  9 +++++++++ + testdata/testoutput6  | 13 +++++++++++++ + 3 files changed, 23 insertions(+), 9 deletions(-) + +diff --git a/src/pcre2_dfa_match.c b/src/pcre2_dfa_match.c +index 60f6b4f..1c4495f 100644 +--- a/src/pcre2_dfa_match.c ++++ b/src/pcre2_dfa_match.c +@@ -7,7 +7,7 @@ and semantics are as close as possible to those of the Perl 5 language. +  +                        Written by Philip Hazel +      Original API code Copyright (c) 1997-2012 University of Cambridge +-          New API code Copyright (c) 2016-2023 University of Cambridge ++          New API code Copyright (c) 2016-2024 University of Cambridge +  + ----------------------------------------------------------------------------- + Redistribution and use in source and binary forms, with or without +@@ -693,7 +693,6 @@ for (;;) +   int i, j; +   int clen, dlen; +   uint32_t c, d; +-  int forced_fail = 0; +   BOOL partial_newline = FALSE; +   BOOL could_continue = reset_could_continue; +   reset_could_continue = FALSE; +@@ -2765,7 +2764,6 @@ for (;;) +       though the other "backtracking verbs" are not supported. */ +  +       case OP_FAIL: +-      forced_fail++;    /* Count FAILs for multiple states */ +       break; +  +       case OP_ASSERT: +@@ -3247,18 +3245,12 @@ for (;;) +   matches that we are going to find. If partial matching has been requested, +   check for appropriate conditions. +  +-  The "forced_ fail" variable counts the number of (*F) encountered for the +-  character. If it is equal to the original active_count (saved in +-  workspace[1]) it means that (*F) was found on every active state. In this +-  case we don't want to give a partial match. +- +   The "could_continue" variable is true if a state could have continued but +   for the fact that the end of the subject was reached. */ +  +   if (new_count <= 0) +     { +     if (could_continue &&                            /* Some could go on, and */ +-        forced_fail != workspace[1] &&               /* Not all forced fail & */ +         (                                            /* either... */ +         (mb->moptions & PCRE2_PARTIAL_HARD) != 0      /* Hard partial */ +         ||                                           /* or... */ +diff --git a/testdata/testinput6 b/testdata/testinput6 +index 0ca0d23..b71a69c 100644 +--- a/testdata/testinput6 ++++ b/testdata/testinput6 +@@ -4392,9 +4392,18 @@ +  + /Z(*F)Q|ZXY/ +     Z\=ps ++    XY\=dfa_restart  + \= Expect no match  +     ZA\=ps +     X\=ps ++     ++/Z(?:(*F)Q|XY)/ ++    Z\=ps ++    XY\=dfa_restart  ++     ++/Z(*F)Q|Z(*F)XY/ ++\= Expect no match ++    Z\=ps +  + /\bthe cat\b/ +     the cat\=ps +diff --git a/testdata/testoutput6 b/testdata/testoutput6 +index 607b572..38c653e 100644 +--- a/testdata/testoutput6 ++++ b/testdata/testoutput6 +@@ -6769,11 +6769,24 @@ Partial match: dogs + /Z(*F)Q|ZXY/ +     Z\=ps + Partial match: Z ++    XY\=dfa_restart  ++ 0: XY + \= Expect no match  +     ZA\=ps + No match +     X\=ps + No match ++     ++/Z(?:(*F)Q|XY)/ ++    Z\=ps ++Partial match: Z ++    XY\=dfa_restart  ++ 0: XY ++     ++/Z(*F)Q|Z(*F)XY/ ++\= Expect no match ++    Z\=ps ++No match +  + /\bthe cat\b/ +     the cat\=ps +--  +2.43.0 + diff --git a/backport-pcre2_compile-avoid-1-byte-buffer-overread-parsing-V.patch b/backport-pcre2_compile-avoid-1-byte-buffer-overread-parsing-V.patch new file mode 100644 index 0000000..8d349cc --- /dev/null +++ b/backport-pcre2_compile-avoid-1-byte-buffer-overread-parsing-V.patch @@ -0,0 +1,118 @@ +From bc367f1880ae5ccc771d5780e35df4c42744a9c4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Carlo=20Marcelo=20Arenas=20Bel=C3=B3n?= <carenas@gmail.com> +Date: Sun, 22 Sep 2024 01:49:03 -0700 +Subject: [PATCH] pcre2_compile: avoid 1 byte buffer overread parsing VERBs + (#487) + +As reported recently by ef218fb (Guard against out-of-bounds memory +access when parsing LIMIT_HEAP et al (#463), 2024-09-07), a malformed +pattern could result in reading 1 byte past its end. + +Fix a similar issue that affects all VERBs and add test cases to +ensure the original bug and all its siblings are no longer an issue. + +While at it fix the wording of the related documentation. +--- + doc/pcre2syntax.3    |  4 ++-- + src/pcre2_compile.c  | 11 +++-------- + testdata/testinput2  |  8 ++++++++ + testdata/testoutput2 | 12 ++++++++++++ + 4 files changed, 25 insertions(+), 10 deletions(-) + +diff --git a/doc/pcre2syntax.3 b/doc/pcre2syntax.3 +index 232125b82..db0bb6586 100644 +--- a/doc/pcre2syntax.3 ++++ b/doc/pcre2syntax.3 +@@ -408,8 +408,8 @@ only one hyphen. Setting (but no unsetting) is allowed after (?^ for example + example (?i:...). + .P + The following are recognized only at the very start of a pattern or after one +-of the newline or \eR options with similar syntax. More than one of them may +-appear. For the first three, d is a decimal number. ++of the newline or \eR sequences or options with similar syntax. More than one ++of them may appear. For the first three, d is a decimal number. + .sp +   (*LIMIT_DEPTH=d) set the backtracking limit to d +   (*LIMIT_HEAP=d)  set the heap size limit to d * 1024 bytes +diff --git a/src/pcre2_compile.c b/src/pcre2_compile.c +index 7e48b26..3d9a500 100644 +--- a/src/pcre2_compile.c ++++ b/src/pcre2_compile.c +@@ -9877,13 +9877,14 @@ if ((options & PCRE2_LITERAL) == 0) +     { +     for (i = 0; i < sizeof(pso_list)/sizeof(pso); i++) +       { +-      uint32_t c, pp; +       const pso *p = pso_list + i; +  +       if (patlen - skipatstart - 2 >= p->length && +           PRIV(strncmp_c8)(ptr + skipatstart + 2, (char *)(p->name), +             p->length) == 0) +         { ++        uint32_t c, pp; ++ +         skipatstart += p->length + 2; +         switch(p->type) +           { +@@ -9910,18 +9911,12 @@ if ((options & PCRE2_LITERAL) == 0) +           case PSO_LIMH: +           c = 0; +           pp = skipatstart; +-          if (!IS_DIGIT(ptr[pp])) +-            { +-            errorcode = ERR60; +-            ptr += pp; +-            goto HAD_EARLY_ERROR; +-            } +           while (pp < patlen && IS_DIGIT(ptr[pp])) +             { +             if (c > UINT32_MAX / 10 - 1) break;   /* Integer overflow */ +             c = c*10 + (ptr[pp++] - CHAR_0); +             } +-          if (pp >= patlen || ptr[pp] != CHAR_RIGHT_PARENTHESIS) ++          if (pp >= patlen || pp == skipatstart || ptr[pp] != CHAR_RIGHT_PARENTHESIS) +             { +             errorcode = ERR60; +             ptr += pp; +diff --git a/testdata/testinput2 b/testdata/testinput2 +index a869c5bc2..542d14520 100644 +--- a/testdata/testinput2 ++++ b/testdata/testinput2 +@@ -5261,6 +5261,14 @@ a)"xI +  + /(*LIMIT_HEAP=0)xxx/I +  ++/(*LIMIT_HEAP=123/use_length ++ ++/(*LIMIT_MATCH=/use_length ++ ++/(*CRLF)(*LIMIT_DEPTH=/use_length ++ ++/(*CRLF)(*LIMIT_RECURSION=1)(*BOGUS/use_length ++ + /\d{0,3}(*:abc)(?C1)xxx/callout_info +  + # ---------------------------------------------------------------------- +diff --git a/testdata/testoutput2 b/testdata/testoutput2 +index bf7b7620e..b99d64781 100644 +--- a/testdata/testoutput2 ++++ b/testdata/testoutput2 +@@ -16220,6 +16220,18 @@ First code unit = 'x' + Last code unit = 'x' + Subject length lower bound = 3 +  ++/(*LIMIT_HEAP=123/use_length ++Failed: error 160 at offset 16: (*VERB) not recognized or malformed ++ ++/(*LIMIT_MATCH=/use_length ++Failed: error 160 at offset 14: (*VERB) not recognized or malformed ++ ++/(*CRLF)(*LIMIT_DEPTH=/use_length ++Failed: error 160 at offset 21: (*VERB) not recognized or malformed ++ ++/(*CRLF)(*LIMIT_RECURSION=1)(*BOGUS/use_length ++Failed: error 160 at offset 34: (*VERB) not recognized or malformed ++ + /\d{0,3}(*:abc)(?C1)xxx/callout_info + Callout 1  x +  diff --git a/backport-pcre2test-memory-reports-only-compiled-memory-usage-for.patch b/backport-pcre2test-memory-reports-only-compiled-memory-usage-for.patch new file mode 100644 index 0000000..fa07a5f --- /dev/null +++ b/backport-pcre2test-memory-reports-only-compiled-memory-usage-for.patch @@ -0,0 +1,5223 @@ +From 57906628d7babd27c01eb1c085d3e0cdd512189a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Carlo=20Marcelo=20Arenas=20Bel=C3=B3n?= <carenas@gmail.com> +Date: Sun, 9 Jun 2024 08:22:15 -0700 +Subject: [PATCH] pcre2test: memory reports only compiled memory usage for + code/data (#418) + +Since 05aafb2 (Implement pcre2_set_max_pattern_compiled_length() and set +this limit in the fuzzer, 2024-04-24), the memory modifier has reported +the full size of the allocated "code" returned by `pcre2_compile`. + +Problem is that the size of the structure used to hold that in memory also +depends on the platform ABI and even alignment by the compiler, and has +been therefore fragile to compare. + +Revert to reporting only the additional memory that `pcre2_compile()` will +use for the compiled pattern (including any data tables) and make sure +that the limit provided with `pcre2_set_max_pattern_compiled_length()` +also avoid the internal struct overhead. + +Fixes: #415 +--- + doc/pcre2_set_max_pattern_compiled_length.3 |   8 +- + src/pcre2_compile.c                         |   4 +- + src/pcre2test.c                             |  17 +- + testdata/testoutput8-16-2                   | 171 +++++++------------- + testdata/testoutput8-16-3                   | 171 +++++++------------- + testdata/testoutput8-16-4                   | 171 +++++++------------- + testdata/testoutput8-32-2                   | 171 +++++++------------- + testdata/testoutput8-32-3                   | 171 +++++++------------- + testdata/testoutput8-32-4                   | 171 +++++++------------- + testdata/testoutput8-8-2                    | 171 +++++++------------- + testdata/testoutput8-8-3                    | 171 +++++++------------- + testdata/testoutput8-8-4                    | 171 +++++++------------- + 12 files changed, 546 insertions(+), 1022 deletions(-) + +diff --git a/doc/pcre2_set_max_pattern_compiled_length.3 b/doc/pcre2_set_max_pattern_compiled_length.3 +index 472a7bbda..679c12c20 100644 +--- a/doc/pcre2_set_max_pattern_compiled_length.3 ++++ b/doc/pcre2_set_max_pattern_compiled_length.3 +@@ -1,4 +1,4 @@ +-.TH PCRE2_SET_MAX_PATTERN_COMPILED_LENGTH 3 "24 April 2024" "PCRE2 10.44" ++.TH PCRE2_SET_MAX_PATTERN_COMPILED_LENGTH 3 "8 Jun 2024" "PCRE2 10.45" + .SH NAME + PCRE2 - Perl-compatible regular expressions (revised API) + .SH SYNOPSIS +@@ -15,9 +15,9 @@ PCRE2 - Perl-compatible regular expressions (revised API) + .rs + .sp + This function sets, in a compile context, the maximum size (in bytes) for the +-memory needed to hold the compiled version of a pattern that is compiled with +-this context. The result is always zero. If a pattern that is passed to +-\fBpcre2_compile()\fP with this context needs more memory, an error is ++memory needed to hold the compiled version of a pattern that is using this ++context. The result is always zero. If a pattern that is passed to ++\fBpcre2_compile()\fP referencing this context needs more memory, an error is + generated. The default is the largest number that a PCRE2_SIZE variable can + hold, which is effectively unlimited. + .P +diff --git a/src/pcre2_compile.c b/src/pcre2_compile.c +index 8e6787aba..cc5b96743 100644 +--- a/src/pcre2_compile.c ++++ b/src/pcre2_compile.c +@@ -10608,8 +10608,7 @@ block for storing the compiled pattern and names table. Integer overflow should + no longer be possible because nowadays we limit the maximum value of + cb.names_found and cb.name_entry_size. */ +  +-re_blocksize = sizeof(pcre2_real_code) + +-  CU2BYTES(length + ++re_blocksize = CU2BYTES(length + +   (PCRE2_SIZE)cb.names_found * (PCRE2_SIZE)cb.name_entry_size); +  + if (re_blocksize > ccontext->max_pattern_compiled_length) +@@ -10618,6 +10617,7 @@ if (re_blocksize > ccontext->max_pattern_compiled_length) +   goto HAD_CB_ERROR; +   } +  ++re_blocksize += sizeof(pcre2_real_code); + re = (pcre2_real_code *) +   ccontext->memctl.malloc(re_blocksize, ccontext->memctl.memory_data); + if (re == NULL) +diff --git a/src/pcre2test.c b/src/pcre2test.c +index 379034518..550ae4e4a 100644 +--- a/src/pcre2test.c ++++ b/src/pcre2test.c +@@ -4397,7 +4397,7 @@ static void + show_memory_info(void) + { + uint32_t name_count, name_entry_size; +-PCRE2_SIZE size, cblock_size; ++PCRE2_SIZE size, cblock_size, data_size; +  + /* One of the test_mode values will always be true, but to stop a compiler + warning we must initialize cblock_size. */ +@@ -4417,18 +4417,19 @@ if (test_mode == PCRE32_MODE) cblock_size = sizeof(pcre2_real_code_32); + (void)pattern_info(PCRE2_INFO_NAMECOUNT, &name_count, FALSE); + (void)pattern_info(PCRE2_INFO_NAMEENTRYSIZE, &name_entry_size, FALSE); +  +-/* The uint32_t variables are cast before multiplying to stop code analyzers +-grumbling about potential overflow. */ ++/* The uint32_t variables are cast before multiplying to avoid potential ++ integer overflow. */ ++data_size = (PCRE2_SIZE)name_count * (PCRE2_SIZE)name_entry_size * (PCRE2_SIZE)code_unit_size; +  +-fprintf(outfile, "Memory allocation - compiled block : %" SIZ_FORM "\n", size); +-fprintf(outfile, "Memory allocation - code portion   : %" SIZ_FORM "\n", size - +-  (PCRE2_SIZE)name_count * (PCRE2_SIZE)name_entry_size * (PCRE2_SIZE)code_unit_size - +-  cblock_size); ++fprintf(outfile, "Memory allocation - code size : %" SIZ_FORM "\n", size - ++  cblock_size - data_size); ++if (data_size != 0) ++  fprintf(outfile, "Memory allocation - data size : %" SIZ_FORM "\n", data_size); +  + if (pat_patctl.jit != 0) +   { +   (void)pattern_info(PCRE2_INFO_JITSIZE, &size, FALSE); +-  fprintf(outfile, "Memory allocation - JIT code       : %" SIZ_FORM "\n", size); ++  fprintf(outfile, "Memory allocation - JIT code  : %" SIZ_FORM "\n", size); +   } + } +  +diff --git a/testdata/testoutput8-16-2 b/testdata/testoutput8-16-2 +index bcb9e1774..108c0bea4 100644 +--- a/testdata/testoutput8-16-2 ++++ b/testdata/testoutput8-16-2 +@@ -10,8 +10,7 @@ + #pattern fullbincode,memory +  + /((?i)b)/ +-Memory allocation - compiled block : 160 +-Memory allocation - code portion   : 24 ++Memory allocation - code size : 24 + ------------------------------------------------------------------ +   0   9 Bra +   2   5 CBra 1 +@@ -22,8 +21,7 @@ Memory allocation - code portion   : 24 + ------------------------------------------------------------------ +  + /(?s)(.*X|^B)/ +-Memory allocation - compiled block : 174 +-Memory allocation - code portion   : 38 ++Memory allocation - code size : 38 + ------------------------------------------------------------------ +   0  16 Bra +   2   7 CBra 1 +@@ -38,8 +36,7 @@ Memory allocation - code portion   : 38 + ------------------------------------------------------------------ +  + /(?s:.*X|^B)/ +-Memory allocation - compiled block : 172 +-Memory allocation - code portion   : 36 ++Memory allocation - code size : 36 + ------------------------------------------------------------------ +   0  15 Bra +   2   6 Bra +@@ -54,8 +51,7 @@ Memory allocation - code portion   : 36 + ------------------------------------------------------------------ +  + /^[[:alnum:]]/ +-Memory allocation - compiled block : 182 +-Memory allocation - code portion   : 46 ++Memory allocation - code size : 46 + ------------------------------------------------------------------ +   0  20 Bra +   2     ^ +@@ -65,8 +61,7 @@ Memory allocation - code portion   : 46 + ------------------------------------------------------------------ +  + /#/Ix +-Memory allocation - compiled block : 146 +-Memory allocation - code portion   : 10 ++Memory allocation - code size : 10 + ------------------------------------------------------------------ +   0   2 Bra +   2   2 Ket +@@ -78,8 +73,7 @@ Options: extended + Subject length lower bound = 0 +  + /a#/Ix +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   4 Bra +   2     a +@@ -92,8 +86,7 @@ First code unit = 'a' + Subject length lower bound = 1 +  + /x?+/ +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   4 Bra +   2     x?+ +@@ -102,8 +95,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /x++/ +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   4 Bra +   2     x++ +@@ -112,8 +104,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /x{1,3}+/ +-Memory allocation - compiled block : 156 +-Memory allocation - code portion   : 20 ++Memory allocation - code size : 20 + ------------------------------------------------------------------ +   0   7 Bra +   2     x +@@ -123,8 +114,7 @@ Memory allocation - code portion   : 20 + ------------------------------------------------------------------ +  + /(x)*+/ +-Memory allocation - compiled block : 162 +-Memory allocation - code portion   : 26 ++Memory allocation - code size : 26 + ------------------------------------------------------------------ +   0  10 Bra +   2     Braposzero +@@ -136,8 +126,7 @@ Memory allocation - code portion   : 26 + ------------------------------------------------------------------ +  + /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/ +-Memory allocation - compiled block : 278 +-Memory allocation - code portion   : 142 ++Memory allocation - code size : 142 + ------------------------------------------------------------------ +   0  68 Bra +   2     ^ +@@ -160,8 +149,7 @@ Memory allocation - code portion   : 142 + ------------------------------------------------------------------ +  + "8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b" +-Memory allocation - compiled block : 1784 +-Memory allocation - code portion   : 1648 ++Memory allocation - code size : 1648 + ------------------------------------------------------------------ +   0 821 Bra +   2     8J$WE<.rX+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X +@@ -171,8 +159,7 @@ Memory allocation - code portion   : 1648 + ------------------------------------------------------------------ +  + "\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b" +-Memory allocation - compiled block : 1764 +-Memory allocation - code portion   : 1628 ++Memory allocation - code size : 1628 + ------------------------------------------------------------------ +   0 811 Bra +   2     $<.X+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X +@@ -182,8 +169,7 @@ Memory allocation - code portion   : 1628 + ------------------------------------------------------------------ +  + /(a(?1)b)/ +-Memory allocation - compiled block : 168 +-Memory allocation - code portion   : 32 ++Memory allocation - code size : 32 + ------------------------------------------------------------------ +   0  13 Bra +   2   9 CBra 1 +@@ -196,8 +182,7 @@ Memory allocation - code portion   : 32 + ------------------------------------------------------------------ +  + /(a(?1)+b)/ +-Memory allocation - compiled block : 176 +-Memory allocation - code portion   : 40 ++Memory allocation - code size : 40 + ------------------------------------------------------------------ +   0  17 Bra +   2  13 CBra 1 +@@ -212,8 +197,8 @@ Memory allocation - code portion   : 40 + ------------------------------------------------------------------ +  + /a(?P<name1>b|c)d(?P<longername2>e)/ +-Memory allocation - compiled block : 242 +-Memory allocation - code portion   : 54 ++Memory allocation - code size : 54 ++Memory allocation - data size : 52 + ------------------------------------------------------------------ +   0  24 Bra +   2     a +@@ -231,8 +216,8 @@ Memory allocation - code portion   : 54 + ------------------------------------------------------------------ +  + /(?:a(?P<c>c(?P<d>d)))(?P<a>a)/ +-Memory allocation - compiled block : 218 +-Memory allocation - code portion   : 64 ++Memory allocation - code size : 64 ++Memory allocation - data size : 18 + ------------------------------------------------------------------ +   0  29 Bra +   2  18 Bra +@@ -252,8 +237,8 @@ Memory allocation - code portion   : 64 + ------------------------------------------------------------------ +  + /(?P<a>a)...(?P=a)bbb(?P>a)d/ +-Memory allocation - compiled block : 196 +-Memory allocation - code portion   : 54 ++Memory allocation - code size : 54 ++Memory allocation - data size : 6 + ------------------------------------------------------------------ +   0  24 Bra +   2   5 CBra 1 +@@ -271,8 +256,7 @@ Memory allocation - code portion   : 54 + ------------------------------------------------------------------ +  + /abc(?C255)de(?C)f/ +-Memory allocation - compiled block : 186 +-Memory allocation - code portion   : 50 ++Memory allocation - code size : 50 + ------------------------------------------------------------------ +   0  22 Bra +   2     abc +@@ -285,8 +269,7 @@ Memory allocation - code portion   : 50 + ------------------------------------------------------------------ +  + /abcde/auto_callout +-Memory allocation - compiled block : 214 +-Memory allocation - code portion   : 78 ++Memory allocation - code size : 78 + ------------------------------------------------------------------ +   0  36 Bra +   2     Callout 255 0 1 +@@ -305,8 +288,7 @@ Memory allocation - code portion   : 78 + ------------------------------------------------------------------ +  + /\x{100}/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{100} +@@ -315,8 +297,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /\x{1000}/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{1000} +@@ -325,8 +306,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /\x{10000}/utf +-Memory allocation - compiled block : 152 +-Memory allocation - code portion   : 16 ++Memory allocation - code size : 16 + ------------------------------------------------------------------ +   0   5 Bra +   2     \x{10000} +@@ -335,8 +315,7 @@ Memory allocation - code portion   : 16 + ------------------------------------------------------------------ +  + /\x{100000}/utf +-Memory allocation - compiled block : 152 +-Memory allocation - code portion   : 16 ++Memory allocation - code size : 16 + ------------------------------------------------------------------ +   0   5 Bra +   2     \x{100000} +@@ -345,8 +324,7 @@ Memory allocation - code portion   : 16 + ------------------------------------------------------------------ +  + /\x{10ffff}/utf +-Memory allocation - compiled block : 152 +-Memory allocation - code portion   : 16 ++Memory allocation - code size : 16 + ------------------------------------------------------------------ +   0   5 Bra +   2     \x{10ffff} +@@ -358,8 +336,7 @@ Memory allocation - code portion   : 16 + Failed: error 134 at offset 9: character code point value in \x{} or \o{} is too large +  + /[\x{ff}]/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{ff} +@@ -368,8 +345,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /[\x{100}]/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{100} +@@ -378,8 +354,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /\x80/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{80} +@@ -388,8 +363,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /\xff/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{ff} +@@ -398,8 +372,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /\x{0041}\x{2262}\x{0391}\x{002e}/I,utf +-Memory allocation - compiled block : 162 +-Memory allocation - code portion   : 26 ++Memory allocation - code size : 26 + ------------------------------------------------------------------ +   0  10 Bra +   2     A\x{2262}\x{391}. +@@ -413,8 +386,7 @@ Last code unit = '.' + Subject length lower bound = 4 +  + /\x{D55c}\x{ad6d}\x{C5B4}/I,utf +-Memory allocation - compiled block : 158 +-Memory allocation - code portion   : 22 ++Memory allocation - code size : 22 + ------------------------------------------------------------------ +   0   8 Bra +   2     \x{d55c}\x{ad6d}\x{c5b4} +@@ -428,8 +400,7 @@ Last code unit = \x{c5b4} + Subject length lower bound = 3 +  + /\x{65e5}\x{672c}\x{8a9e}/I,utf +-Memory allocation - compiled block : 158 +-Memory allocation - code portion   : 22 ++Memory allocation - code size : 22 + ------------------------------------------------------------------ +   0   8 Bra +   2     \x{65e5}\x{672c}\x{8a9e} +@@ -443,8 +414,7 @@ Last code unit = \x{8a9e} + Subject length lower bound = 3 +  + /[\x{100}]/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{100} +@@ -453,8 +423,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /[Z\x{100}]/utf +-Memory allocation - compiled block : 190 +-Memory allocation - code portion   : 54 ++Memory allocation - code size : 54 + ------------------------------------------------------------------ +   0  24 Bra +   2     [Z\x{100}] +@@ -463,8 +432,7 @@ Memory allocation - code portion   : 54 + ------------------------------------------------------------------ +  + /^[\x{100}\E-\Q\E\x{150}]/utf +-Memory allocation - compiled block : 162 +-Memory allocation - code portion   : 26 ++Memory allocation - code size : 26 + ------------------------------------------------------------------ +   0  10 Bra +   2     ^ +@@ -474,8 +442,7 @@ Memory allocation - code portion   : 26 + ------------------------------------------------------------------ +  + /^[\QĀ\E-\QŐ\E]/utf +-Memory allocation - compiled block : 162 +-Memory allocation - code portion   : 26 ++Memory allocation - code size : 26 + ------------------------------------------------------------------ +   0  10 Bra +   2     ^ +@@ -488,8 +455,7 @@ Memory allocation - code portion   : 26 + Failed: error 106 at offset 13: missing terminating ] for character class +  + /[\p{L}]/ +-Memory allocation - compiled block : 160 +-Memory allocation - code portion   : 24 ++Memory allocation - code size : 24 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\p{L}] +@@ -498,8 +464,7 @@ Memory allocation - code portion   : 24 + ------------------------------------------------------------------ +  + /[\p{^L}]/ +-Memory allocation - compiled block : 160 +-Memory allocation - code portion   : 24 ++Memory allocation - code size : 24 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\P{L}] +@@ -508,8 +473,7 @@ Memory allocation - code portion   : 24 + ------------------------------------------------------------------ +  + /[\P{L}]/ +-Memory allocation - compiled block : 160 +-Memory allocation - code portion   : 24 ++Memory allocation - code size : 24 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\P{L}] +@@ -518,8 +482,7 @@ Memory allocation - code portion   : 24 + ------------------------------------------------------------------ +  + /[\P{^L}]/ +-Memory allocation - compiled block : 160 +-Memory allocation - code portion   : 24 ++Memory allocation - code size : 24 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\p{L}] +@@ -528,8 +491,7 @@ Memory allocation - code portion   : 24 + ------------------------------------------------------------------ +  + /[abc\p{L}\x{0660}]/utf +-Memory allocation - compiled block : 196 +-Memory allocation - code portion   : 60 ++Memory allocation - code size : 60 + ------------------------------------------------------------------ +   0  27 Bra +   2     [a-c\p{L}\x{660}] +@@ -538,8 +500,7 @@ Memory allocation - code portion   : 60 + ------------------------------------------------------------------ +  + /[\p{Nd}]/utf +-Memory allocation - compiled block : 160 +-Memory allocation - code portion   : 24 ++Memory allocation - code size : 24 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\p{Nd}] +@@ -548,8 +509,7 @@ Memory allocation - code portion   : 24 + ------------------------------------------------------------------ +  + /[\p{Nd}+-]+/utf +-Memory allocation - compiled block : 194 +-Memory allocation - code portion   : 58 ++Memory allocation - code size : 58 + ------------------------------------------------------------------ +   0  26 Bra +   2     [+\-\p{Nd}]++ +@@ -558,8 +518,7 @@ Memory allocation - code portion   : 58 + ------------------------------------------------------------------ +  + /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/i,utf +-Memory allocation - compiled block : 168 +-Memory allocation - code portion   : 32 ++Memory allocation - code size : 32 + ------------------------------------------------------------------ +   0  13 Bra +   2  /i A\x{391}\x{10427}\x{ff3a}\x{1fb0} +@@ -568,8 +527,7 @@ Memory allocation - code portion   : 32 + ------------------------------------------------------------------ +  + /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/utf +-Memory allocation - compiled block : 168 +-Memory allocation - code portion   : 32 ++Memory allocation - code size : 32 + ------------------------------------------------------------------ +   0  13 Bra +   2     A\x{391}\x{10427}\x{ff3a}\x{1fb0} +@@ -578,8 +536,7 @@ Memory allocation - code portion   : 32 + ------------------------------------------------------------------ +  + /[\x{105}-\x{109}]/i,utf +-Memory allocation - compiled block : 160 +-Memory allocation - code portion   : 24 ++Memory allocation - code size : 24 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\x{104}-\x{109}] +@@ -588,8 +545,7 @@ Memory allocation - code portion   : 24 + ------------------------------------------------------------------ +  + /( ( (?(1)0|) )*   )/x +-Memory allocation - compiled block : 188 +-Memory allocation - code portion   : 52 ++Memory allocation - code size : 52 + ------------------------------------------------------------------ +   0  23 Bra +   2  19 CBra 1 +@@ -607,8 +563,7 @@ Memory allocation - code portion   : 52 + ------------------------------------------------------------------ +  + /(  (?(1)0|)*   )/x +-Memory allocation - compiled block : 178 +-Memory allocation - code portion   : 42 ++Memory allocation - code size : 42 + ------------------------------------------------------------------ +   0  18 Bra +   2  14 CBra 1 +@@ -624,8 +579,7 @@ Memory allocation - code portion   : 42 + ------------------------------------------------------------------ +  + /[a]/ +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   4 Bra +   2     a +@@ -634,8 +588,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /[a]/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   4 Bra +   2     a +@@ -644,8 +597,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /[\xaa]/ +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{aa} +@@ -654,8 +606,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /[\xaa]/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{aa} +@@ -664,8 +615,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /[^a]/ +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   4 Bra +   2     [^a] +@@ -674,8 +624,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /[^a]/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   4 Bra +   2     [^a] +@@ -684,8 +633,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /[^\xaa]/ +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   4 Bra +   2     [^\x{aa}] +@@ -694,8 +642,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /[^\xaa]/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   4 Bra +   2     [^\x{aa}] +diff --git a/testdata/testoutput8-16-3 b/testdata/testoutput8-16-3 +index 4ec13ea98..28acd251a 100644 +--- a/testdata/testoutput8-16-3 ++++ b/testdata/testoutput8-16-3 +@@ -10,8 +10,7 @@ + #pattern fullbincode,memory +  + /((?i)b)/ +-Memory allocation - compiled block : 168 +-Memory allocation - code portion   : 32 ++Memory allocation - code size : 32 + ------------------------------------------------------------------ +   0  12 Bra +   3   6 CBra 1 +@@ -22,8 +21,7 @@ Memory allocation - code portion   : 32 + ------------------------------------------------------------------ +  + /(?s)(.*X|^B)/ +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0  20 Bra +   3   8 CBra 1 +@@ -38,8 +36,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /(?s:.*X|^B)/ +-Memory allocation - compiled block : 182 +-Memory allocation - code portion   : 46 ++Memory allocation - code size : 46 + ------------------------------------------------------------------ +   0  19 Bra +   3   7 Bra +@@ -54,8 +51,7 @@ Memory allocation - code portion   : 46 + ------------------------------------------------------------------ +  + /^[[:alnum:]]/ +-Memory allocation - compiled block : 186 +-Memory allocation - code portion   : 50 ++Memory allocation - code size : 50 + ------------------------------------------------------------------ +   0  21 Bra +   3     ^ +@@ -65,8 +61,7 @@ Memory allocation - code portion   : 50 + ------------------------------------------------------------------ +  + /#/Ix +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   3 Bra +   3   3 Ket +@@ -78,8 +73,7 @@ Options: extended + Subject length lower bound = 0 +  + /a#/Ix +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     a +@@ -92,8 +86,7 @@ First code unit = 'a' + Subject length lower bound = 1 +  + /x?+/ +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     x?+ +@@ -102,8 +95,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /x++/ +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     x++ +@@ -112,8 +104,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /x{1,3}+/ +-Memory allocation - compiled block : 160 +-Memory allocation - code portion   : 24 ++Memory allocation - code size : 24 + ------------------------------------------------------------------ +   0   8 Bra +   3     x +@@ -123,8 +114,7 @@ Memory allocation - code portion   : 24 + ------------------------------------------------------------------ +  + /(x)*+/ +-Memory allocation - compiled block : 170 +-Memory allocation - code portion   : 34 ++Memory allocation - code size : 34 + ------------------------------------------------------------------ +   0  13 Bra +   3     Braposzero +@@ -136,8 +126,7 @@ Memory allocation - code portion   : 34 + ------------------------------------------------------------------ +  + /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/ +-Memory allocation - compiled block : 302 +-Memory allocation - code portion   : 166 ++Memory allocation - code size : 166 + ------------------------------------------------------------------ +   0  79 Bra +   3     ^ +@@ -160,8 +149,7 @@ Memory allocation - code portion   : 166 + ------------------------------------------------------------------ +  + "8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b" +-Memory allocation - compiled block : 1788 +-Memory allocation - code portion   : 1652 ++Memory allocation - code size : 1652 + ------------------------------------------------------------------ +   0 822 Bra +   3     8J$WE<.rX+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X +@@ -171,8 +159,7 @@ Memory allocation - code portion   : 1652 + ------------------------------------------------------------------ +  + "\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b" +-Memory allocation - compiled block : 1768 +-Memory allocation - code portion   : 1632 ++Memory allocation - code size : 1632 + ------------------------------------------------------------------ +   0 812 Bra +   3     $<.X+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X +@@ -182,8 +169,7 @@ Memory allocation - code portion   : 1632 + ------------------------------------------------------------------ +  + /(a(?1)b)/ +-Memory allocation - compiled block : 178 +-Memory allocation - code portion   : 42 ++Memory allocation - code size : 42 + ------------------------------------------------------------------ +   0  17 Bra +   3  11 CBra 1 +@@ -196,8 +182,7 @@ Memory allocation - code portion   : 42 + ------------------------------------------------------------------ +  + /(a(?1)+b)/ +-Memory allocation - compiled block : 190 +-Memory allocation - code portion   : 54 ++Memory allocation - code size : 54 + ------------------------------------------------------------------ +   0  23 Bra +   3  17 CBra 1 +@@ -212,8 +197,8 @@ Memory allocation - code portion   : 54 + ------------------------------------------------------------------ +  + /a(?P<name1>b|c)d(?P<longername2>e)/ +-Memory allocation - compiled block : 256 +-Memory allocation - code portion   : 68 ++Memory allocation - code size : 68 ++Memory allocation - data size : 52 + ------------------------------------------------------------------ +   0  30 Bra +   3     a +@@ -231,8 +216,8 @@ Memory allocation - code portion   : 68 + ------------------------------------------------------------------ +  + /(?:a(?P<c>c(?P<d>d)))(?P<a>a)/ +-Memory allocation - compiled block : 238 +-Memory allocation - code portion   : 84 ++Memory allocation - code size : 84 ++Memory allocation - data size : 18 + ------------------------------------------------------------------ +   0  38 Bra +   3  23 Bra +@@ -252,8 +237,8 @@ Memory allocation - code portion   : 84 + ------------------------------------------------------------------ +  + /(?P<a>a)...(?P=a)bbb(?P>a)d/ +-Memory allocation - compiled block : 206 +-Memory allocation - code portion   : 64 ++Memory allocation - code size : 64 ++Memory allocation - data size : 6 + ------------------------------------------------------------------ +   0  28 Bra +   3   6 CBra 1 +@@ -271,8 +256,7 @@ Memory allocation - code portion   : 64 + ------------------------------------------------------------------ +  + /abc(?C255)de(?C)f/ +-Memory allocation - compiled block : 198 +-Memory allocation - code portion   : 62 ++Memory allocation - code size : 62 + ------------------------------------------------------------------ +   0  27 Bra +   3     abc +@@ -285,8 +269,7 @@ Memory allocation - code portion   : 62 + ------------------------------------------------------------------ +  + /abcde/auto_callout +-Memory allocation - compiled block : 242 +-Memory allocation - code portion   : 106 ++Memory allocation - code size : 106 + ------------------------------------------------------------------ +   0  49 Bra +   3     Callout 255 0 1 +@@ -305,8 +288,7 @@ Memory allocation - code portion   : 106 + ------------------------------------------------------------------ +  + /\x{100}/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     \x{100} +@@ -315,8 +297,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /\x{1000}/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     \x{1000} +@@ -325,8 +306,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /\x{10000}/utf +-Memory allocation - compiled block : 156 +-Memory allocation - code portion   : 20 ++Memory allocation - code size : 20 + ------------------------------------------------------------------ +   0   6 Bra +   3     \x{10000} +@@ -335,8 +315,7 @@ Memory allocation - code portion   : 20 + ------------------------------------------------------------------ +  + /\x{100000}/utf +-Memory allocation - compiled block : 156 +-Memory allocation - code portion   : 20 ++Memory allocation - code size : 20 + ------------------------------------------------------------------ +   0   6 Bra +   3     \x{100000} +@@ -345,8 +324,7 @@ Memory allocation - code portion   : 20 + ------------------------------------------------------------------ +  + /\x{10ffff}/utf +-Memory allocation - compiled block : 156 +-Memory allocation - code portion   : 20 ++Memory allocation - code size : 20 + ------------------------------------------------------------------ +   0   6 Bra +   3     \x{10ffff} +@@ -358,8 +336,7 @@ Memory allocation - code portion   : 20 + Failed: error 134 at offset 9: character code point value in \x{} or \o{} is too large +  + /[\x{ff}]/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     \x{ff} +@@ -368,8 +345,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[\x{100}]/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     \x{100} +@@ -378,8 +354,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /\x80/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     \x{80} +@@ -388,8 +363,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /\xff/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     \x{ff} +@@ -398,8 +372,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /\x{0041}\x{2262}\x{0391}\x{002e}/I,utf +-Memory allocation - compiled block : 166 +-Memory allocation - code portion   : 30 ++Memory allocation - code size : 30 + ------------------------------------------------------------------ +   0  11 Bra +   3     A\x{2262}\x{391}. +@@ -413,8 +386,7 @@ Last code unit = '.' + Subject length lower bound = 4 +  + /\x{D55c}\x{ad6d}\x{C5B4}/I,utf +-Memory allocation - compiled block : 162 +-Memory allocation - code portion   : 26 ++Memory allocation - code size : 26 + ------------------------------------------------------------------ +   0   9 Bra +   3     \x{d55c}\x{ad6d}\x{c5b4} +@@ -428,8 +400,7 @@ Last code unit = \x{c5b4} + Subject length lower bound = 3 +  + /\x{65e5}\x{672c}\x{8a9e}/I,utf +-Memory allocation - compiled block : 162 +-Memory allocation - code portion   : 26 ++Memory allocation - code size : 26 + ------------------------------------------------------------------ +   0   9 Bra +   3     \x{65e5}\x{672c}\x{8a9e} +@@ -443,8 +414,7 @@ Last code unit = \x{8a9e} + Subject length lower bound = 3 +  + /[\x{100}]/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     \x{100} +@@ -453,8 +423,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[Z\x{100}]/utf +-Memory allocation - compiled block : 196 +-Memory allocation - code portion   : 60 ++Memory allocation - code size : 60 + ------------------------------------------------------------------ +   0  26 Bra +   3     [Z\x{100}] +@@ -463,8 +432,7 @@ Memory allocation - code portion   : 60 + ------------------------------------------------------------------ +  + /^[\x{100}\E-\Q\E\x{150}]/utf +-Memory allocation - compiled block : 168 +-Memory allocation - code portion   : 32 ++Memory allocation - code size : 32 + ------------------------------------------------------------------ +   0  12 Bra +   3     ^ +@@ -474,8 +442,7 @@ Memory allocation - code portion   : 32 + ------------------------------------------------------------------ +  + /^[\QĀ\E-\QŐ\E]/utf +-Memory allocation - compiled block : 168 +-Memory allocation - code portion   : 32 ++Memory allocation - code size : 32 + ------------------------------------------------------------------ +   0  12 Bra +   3     ^ +@@ -488,8 +455,7 @@ Memory allocation - code portion   : 32 + Failed: error 106 at offset 13: missing terminating ] for character class +  + /[\p{L}]/ +-Memory allocation - compiled block : 166 +-Memory allocation - code portion   : 30 ++Memory allocation - code size : 30 + ------------------------------------------------------------------ +   0  11 Bra +   3     [\p{L}] +@@ -498,8 +464,7 @@ Memory allocation - code portion   : 30 + ------------------------------------------------------------------ +  + /[\p{^L}]/ +-Memory allocation - compiled block : 166 +-Memory allocation - code portion   : 30 ++Memory allocation - code size : 30 + ------------------------------------------------------------------ +   0  11 Bra +   3     [\P{L}] +@@ -508,8 +473,7 @@ Memory allocation - code portion   : 30 + ------------------------------------------------------------------ +  + /[\P{L}]/ +-Memory allocation - compiled block : 166 +-Memory allocation - code portion   : 30 ++Memory allocation - code size : 30 + ------------------------------------------------------------------ +   0  11 Bra +   3     [\P{L}] +@@ -518,8 +482,7 @@ Memory allocation - code portion   : 30 + ------------------------------------------------------------------ +  + /[\P{^L}]/ +-Memory allocation - compiled block : 166 +-Memory allocation - code portion   : 30 ++Memory allocation - code size : 30 + ------------------------------------------------------------------ +   0  11 Bra +   3     [\p{L}] +@@ -528,8 +491,7 @@ Memory allocation - code portion   : 30 + ------------------------------------------------------------------ +  + /[abc\p{L}\x{0660}]/utf +-Memory allocation - compiled block : 202 +-Memory allocation - code portion   : 66 ++Memory allocation - code size : 66 + ------------------------------------------------------------------ +   0  29 Bra +   3     [a-c\p{L}\x{660}] +@@ -538,8 +500,7 @@ Memory allocation - code portion   : 66 + ------------------------------------------------------------------ +  + /[\p{Nd}]/utf +-Memory allocation - compiled block : 166 +-Memory allocation - code portion   : 30 ++Memory allocation - code size : 30 + ------------------------------------------------------------------ +   0  11 Bra +   3     [\p{Nd}] +@@ -548,8 +509,7 @@ Memory allocation - code portion   : 30 + ------------------------------------------------------------------ +  + /[\p{Nd}+-]+/utf +-Memory allocation - compiled block : 200 +-Memory allocation - code portion   : 64 ++Memory allocation - code size : 64 + ------------------------------------------------------------------ +   0  28 Bra +   3     [+\-\p{Nd}]++ +@@ -558,8 +518,7 @@ Memory allocation - code portion   : 64 + ------------------------------------------------------------------ +  + /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/i,utf +-Memory allocation - compiled block : 172 +-Memory allocation - code portion   : 36 ++Memory allocation - code size : 36 + ------------------------------------------------------------------ +   0  14 Bra +   3  /i A\x{391}\x{10427}\x{ff3a}\x{1fb0} +@@ -568,8 +527,7 @@ Memory allocation - code portion   : 36 + ------------------------------------------------------------------ +  + /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/utf +-Memory allocation - compiled block : 172 +-Memory allocation - code portion   : 36 ++Memory allocation - code size : 36 + ------------------------------------------------------------------ +   0  14 Bra +   3     A\x{391}\x{10427}\x{ff3a}\x{1fb0} +@@ -578,8 +536,7 @@ Memory allocation - code portion   : 36 + ------------------------------------------------------------------ +  + /[\x{105}-\x{109}]/i,utf +-Memory allocation - compiled block : 166 +-Memory allocation - code portion   : 30 ++Memory allocation - code size : 30 + ------------------------------------------------------------------ +   0  11 Bra +   3     [\x{104}-\x{109}] +@@ -588,8 +545,7 @@ Memory allocation - code portion   : 30 + ------------------------------------------------------------------ +  + /( ( (?(1)0|) )*   )/x +-Memory allocation - compiled block : 206 +-Memory allocation - code portion   : 70 ++Memory allocation - code size : 70 + ------------------------------------------------------------------ +   0  31 Bra +   3  25 CBra 1 +@@ -607,8 +563,7 @@ Memory allocation - code portion   : 70 + ------------------------------------------------------------------ +  + /(  (?(1)0|)*   )/x +-Memory allocation - compiled block : 192 +-Memory allocation - code portion   : 56 ++Memory allocation - code size : 56 + ------------------------------------------------------------------ +   0  24 Bra +   3  18 CBra 1 +@@ -624,8 +579,7 @@ Memory allocation - code portion   : 56 + ------------------------------------------------------------------ +  + /[a]/ +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     a +@@ -634,8 +588,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[a]/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     a +@@ -644,8 +597,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[\xaa]/ +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     \x{aa} +@@ -654,8 +606,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[\xaa]/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     \x{aa} +@@ -664,8 +615,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[^a]/ +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     [^a] +@@ -674,8 +624,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[^a]/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     [^a] +@@ -684,8 +633,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[^\xaa]/ +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     [^\x{aa}] +@@ -694,8 +642,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[^\xaa]/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     [^\x{aa}] +diff --git a/testdata/testoutput8-16-4 b/testdata/testoutput8-16-4 +index 4ec13ea98..28acd251a 100644 +--- a/testdata/testoutput8-16-4 ++++ b/testdata/testoutput8-16-4 +@@ -10,8 +10,7 @@ + #pattern fullbincode,memory +  + /((?i)b)/ +-Memory allocation - compiled block : 168 +-Memory allocation - code portion   : 32 ++Memory allocation - code size : 32 + ------------------------------------------------------------------ +   0  12 Bra +   3   6 CBra 1 +@@ -22,8 +21,7 @@ Memory allocation - code portion   : 32 + ------------------------------------------------------------------ +  + /(?s)(.*X|^B)/ +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0  20 Bra +   3   8 CBra 1 +@@ -38,8 +36,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /(?s:.*X|^B)/ +-Memory allocation - compiled block : 182 +-Memory allocation - code portion   : 46 ++Memory allocation - code size : 46 + ------------------------------------------------------------------ +   0  19 Bra +   3   7 Bra +@@ -54,8 +51,7 @@ Memory allocation - code portion   : 46 + ------------------------------------------------------------------ +  + /^[[:alnum:]]/ +-Memory allocation - compiled block : 186 +-Memory allocation - code portion   : 50 ++Memory allocation - code size : 50 + ------------------------------------------------------------------ +   0  21 Bra +   3     ^ +@@ -65,8 +61,7 @@ Memory allocation - code portion   : 50 + ------------------------------------------------------------------ +  + /#/Ix +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   3 Bra +   3   3 Ket +@@ -78,8 +73,7 @@ Options: extended + Subject length lower bound = 0 +  + /a#/Ix +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     a +@@ -92,8 +86,7 @@ First code unit = 'a' + Subject length lower bound = 1 +  + /x?+/ +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     x?+ +@@ -102,8 +95,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /x++/ +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     x++ +@@ -112,8 +104,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /x{1,3}+/ +-Memory allocation - compiled block : 160 +-Memory allocation - code portion   : 24 ++Memory allocation - code size : 24 + ------------------------------------------------------------------ +   0   8 Bra +   3     x +@@ -123,8 +114,7 @@ Memory allocation - code portion   : 24 + ------------------------------------------------------------------ +  + /(x)*+/ +-Memory allocation - compiled block : 170 +-Memory allocation - code portion   : 34 ++Memory allocation - code size : 34 + ------------------------------------------------------------------ +   0  13 Bra +   3     Braposzero +@@ -136,8 +126,7 @@ Memory allocation - code portion   : 34 + ------------------------------------------------------------------ +  + /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/ +-Memory allocation - compiled block : 302 +-Memory allocation - code portion   : 166 ++Memory allocation - code size : 166 + ------------------------------------------------------------------ +   0  79 Bra +   3     ^ +@@ -160,8 +149,7 @@ Memory allocation - code portion   : 166 + ------------------------------------------------------------------ +  + "8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b" +-Memory allocation - compiled block : 1788 +-Memory allocation - code portion   : 1652 ++Memory allocation - code size : 1652 + ------------------------------------------------------------------ +   0 822 Bra +   3     8J$WE<.rX+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X +@@ -171,8 +159,7 @@ Memory allocation - code portion   : 1652 + ------------------------------------------------------------------ +  + "\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b" +-Memory allocation - compiled block : 1768 +-Memory allocation - code portion   : 1632 ++Memory allocation - code size : 1632 + ------------------------------------------------------------------ +   0 812 Bra +   3     $<.X+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X +@@ -182,8 +169,7 @@ Memory allocation - code portion   : 1632 + ------------------------------------------------------------------ +  + /(a(?1)b)/ +-Memory allocation - compiled block : 178 +-Memory allocation - code portion   : 42 ++Memory allocation - code size : 42 + ------------------------------------------------------------------ +   0  17 Bra +   3  11 CBra 1 +@@ -196,8 +182,7 @@ Memory allocation - code portion   : 42 + ------------------------------------------------------------------ +  + /(a(?1)+b)/ +-Memory allocation - compiled block : 190 +-Memory allocation - code portion   : 54 ++Memory allocation - code size : 54 + ------------------------------------------------------------------ +   0  23 Bra +   3  17 CBra 1 +@@ -212,8 +197,8 @@ Memory allocation - code portion   : 54 + ------------------------------------------------------------------ +  + /a(?P<name1>b|c)d(?P<longername2>e)/ +-Memory allocation - compiled block : 256 +-Memory allocation - code portion   : 68 ++Memory allocation - code size : 68 ++Memory allocation - data size : 52 + ------------------------------------------------------------------ +   0  30 Bra +   3     a +@@ -231,8 +216,8 @@ Memory allocation - code portion   : 68 + ------------------------------------------------------------------ +  + /(?:a(?P<c>c(?P<d>d)))(?P<a>a)/ +-Memory allocation - compiled block : 238 +-Memory allocation - code portion   : 84 ++Memory allocation - code size : 84 ++Memory allocation - data size : 18 + ------------------------------------------------------------------ +   0  38 Bra +   3  23 Bra +@@ -252,8 +237,8 @@ Memory allocation - code portion   : 84 + ------------------------------------------------------------------ +  + /(?P<a>a)...(?P=a)bbb(?P>a)d/ +-Memory allocation - compiled block : 206 +-Memory allocation - code portion   : 64 ++Memory allocation - code size : 64 ++Memory allocation - data size : 6 + ------------------------------------------------------------------ +   0  28 Bra +   3   6 CBra 1 +@@ -271,8 +256,7 @@ Memory allocation - code portion   : 64 + ------------------------------------------------------------------ +  + /abc(?C255)de(?C)f/ +-Memory allocation - compiled block : 198 +-Memory allocation - code portion   : 62 ++Memory allocation - code size : 62 + ------------------------------------------------------------------ +   0  27 Bra +   3     abc +@@ -285,8 +269,7 @@ Memory allocation - code portion   : 62 + ------------------------------------------------------------------ +  + /abcde/auto_callout +-Memory allocation - compiled block : 242 +-Memory allocation - code portion   : 106 ++Memory allocation - code size : 106 + ------------------------------------------------------------------ +   0  49 Bra +   3     Callout 255 0 1 +@@ -305,8 +288,7 @@ Memory allocation - code portion   : 106 + ------------------------------------------------------------------ +  + /\x{100}/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     \x{100} +@@ -315,8 +297,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /\x{1000}/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     \x{1000} +@@ -325,8 +306,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /\x{10000}/utf +-Memory allocation - compiled block : 156 +-Memory allocation - code portion   : 20 ++Memory allocation - code size : 20 + ------------------------------------------------------------------ +   0   6 Bra +   3     \x{10000} +@@ -335,8 +315,7 @@ Memory allocation - code portion   : 20 + ------------------------------------------------------------------ +  + /\x{100000}/utf +-Memory allocation - compiled block : 156 +-Memory allocation - code portion   : 20 ++Memory allocation - code size : 20 + ------------------------------------------------------------------ +   0   6 Bra +   3     \x{100000} +@@ -345,8 +324,7 @@ Memory allocation - code portion   : 20 + ------------------------------------------------------------------ +  + /\x{10ffff}/utf +-Memory allocation - compiled block : 156 +-Memory allocation - code portion   : 20 ++Memory allocation - code size : 20 + ------------------------------------------------------------------ +   0   6 Bra +   3     \x{10ffff} +@@ -358,8 +336,7 @@ Memory allocation - code portion   : 20 + Failed: error 134 at offset 9: character code point value in \x{} or \o{} is too large +  + /[\x{ff}]/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     \x{ff} +@@ -368,8 +345,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[\x{100}]/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     \x{100} +@@ -378,8 +354,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /\x80/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     \x{80} +@@ -388,8 +363,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /\xff/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     \x{ff} +@@ -398,8 +372,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /\x{0041}\x{2262}\x{0391}\x{002e}/I,utf +-Memory allocation - compiled block : 166 +-Memory allocation - code portion   : 30 ++Memory allocation - code size : 30 + ------------------------------------------------------------------ +   0  11 Bra +   3     A\x{2262}\x{391}. +@@ -413,8 +386,7 @@ Last code unit = '.' + Subject length lower bound = 4 +  + /\x{D55c}\x{ad6d}\x{C5B4}/I,utf +-Memory allocation - compiled block : 162 +-Memory allocation - code portion   : 26 ++Memory allocation - code size : 26 + ------------------------------------------------------------------ +   0   9 Bra +   3     \x{d55c}\x{ad6d}\x{c5b4} +@@ -428,8 +400,7 @@ Last code unit = \x{c5b4} + Subject length lower bound = 3 +  + /\x{65e5}\x{672c}\x{8a9e}/I,utf +-Memory allocation - compiled block : 162 +-Memory allocation - code portion   : 26 ++Memory allocation - code size : 26 + ------------------------------------------------------------------ +   0   9 Bra +   3     \x{65e5}\x{672c}\x{8a9e} +@@ -443,8 +414,7 @@ Last code unit = \x{8a9e} + Subject length lower bound = 3 +  + /[\x{100}]/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     \x{100} +@@ -453,8 +423,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[Z\x{100}]/utf +-Memory allocation - compiled block : 196 +-Memory allocation - code portion   : 60 ++Memory allocation - code size : 60 + ------------------------------------------------------------------ +   0  26 Bra +   3     [Z\x{100}] +@@ -463,8 +432,7 @@ Memory allocation - code portion   : 60 + ------------------------------------------------------------------ +  + /^[\x{100}\E-\Q\E\x{150}]/utf +-Memory allocation - compiled block : 168 +-Memory allocation - code portion   : 32 ++Memory allocation - code size : 32 + ------------------------------------------------------------------ +   0  12 Bra +   3     ^ +@@ -474,8 +442,7 @@ Memory allocation - code portion   : 32 + ------------------------------------------------------------------ +  + /^[\QĀ\E-\QŐ\E]/utf +-Memory allocation - compiled block : 168 +-Memory allocation - code portion   : 32 ++Memory allocation - code size : 32 + ------------------------------------------------------------------ +   0  12 Bra +   3     ^ +@@ -488,8 +455,7 @@ Memory allocation - code portion   : 32 + Failed: error 106 at offset 13: missing terminating ] for character class +  + /[\p{L}]/ +-Memory allocation - compiled block : 166 +-Memory allocation - code portion   : 30 ++Memory allocation - code size : 30 + ------------------------------------------------------------------ +   0  11 Bra +   3     [\p{L}] +@@ -498,8 +464,7 @@ Memory allocation - code portion   : 30 + ------------------------------------------------------------------ +  + /[\p{^L}]/ +-Memory allocation - compiled block : 166 +-Memory allocation - code portion   : 30 ++Memory allocation - code size : 30 + ------------------------------------------------------------------ +   0  11 Bra +   3     [\P{L}] +@@ -508,8 +473,7 @@ Memory allocation - code portion   : 30 + ------------------------------------------------------------------ +  + /[\P{L}]/ +-Memory allocation - compiled block : 166 +-Memory allocation - code portion   : 30 ++Memory allocation - code size : 30 + ------------------------------------------------------------------ +   0  11 Bra +   3     [\P{L}] +@@ -518,8 +482,7 @@ Memory allocation - code portion   : 30 + ------------------------------------------------------------------ +  + /[\P{^L}]/ +-Memory allocation - compiled block : 166 +-Memory allocation - code portion   : 30 ++Memory allocation - code size : 30 + ------------------------------------------------------------------ +   0  11 Bra +   3     [\p{L}] +@@ -528,8 +491,7 @@ Memory allocation - code portion   : 30 + ------------------------------------------------------------------ +  + /[abc\p{L}\x{0660}]/utf +-Memory allocation - compiled block : 202 +-Memory allocation - code portion   : 66 ++Memory allocation - code size : 66 + ------------------------------------------------------------------ +   0  29 Bra +   3     [a-c\p{L}\x{660}] +@@ -538,8 +500,7 @@ Memory allocation - code portion   : 66 + ------------------------------------------------------------------ +  + /[\p{Nd}]/utf +-Memory allocation - compiled block : 166 +-Memory allocation - code portion   : 30 ++Memory allocation - code size : 30 + ------------------------------------------------------------------ +   0  11 Bra +   3     [\p{Nd}] +@@ -548,8 +509,7 @@ Memory allocation - code portion   : 30 + ------------------------------------------------------------------ +  + /[\p{Nd}+-]+/utf +-Memory allocation - compiled block : 200 +-Memory allocation - code portion   : 64 ++Memory allocation - code size : 64 + ------------------------------------------------------------------ +   0  28 Bra +   3     [+\-\p{Nd}]++ +@@ -558,8 +518,7 @@ Memory allocation - code portion   : 64 + ------------------------------------------------------------------ +  + /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/i,utf +-Memory allocation - compiled block : 172 +-Memory allocation - code portion   : 36 ++Memory allocation - code size : 36 + ------------------------------------------------------------------ +   0  14 Bra +   3  /i A\x{391}\x{10427}\x{ff3a}\x{1fb0} +@@ -568,8 +527,7 @@ Memory allocation - code portion   : 36 + ------------------------------------------------------------------ +  + /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/utf +-Memory allocation - compiled block : 172 +-Memory allocation - code portion   : 36 ++Memory allocation - code size : 36 + ------------------------------------------------------------------ +   0  14 Bra +   3     A\x{391}\x{10427}\x{ff3a}\x{1fb0} +@@ -578,8 +536,7 @@ Memory allocation - code portion   : 36 + ------------------------------------------------------------------ +  + /[\x{105}-\x{109}]/i,utf +-Memory allocation - compiled block : 166 +-Memory allocation - code portion   : 30 ++Memory allocation - code size : 30 + ------------------------------------------------------------------ +   0  11 Bra +   3     [\x{104}-\x{109}] +@@ -588,8 +545,7 @@ Memory allocation - code portion   : 30 + ------------------------------------------------------------------ +  + /( ( (?(1)0|) )*   )/x +-Memory allocation - compiled block : 206 +-Memory allocation - code portion   : 70 ++Memory allocation - code size : 70 + ------------------------------------------------------------------ +   0  31 Bra +   3  25 CBra 1 +@@ -607,8 +563,7 @@ Memory allocation - code portion   : 70 + ------------------------------------------------------------------ +  + /(  (?(1)0|)*   )/x +-Memory allocation - compiled block : 192 +-Memory allocation - code portion   : 56 ++Memory allocation - code size : 56 + ------------------------------------------------------------------ +   0  24 Bra +   3  18 CBra 1 +@@ -624,8 +579,7 @@ Memory allocation - code portion   : 56 + ------------------------------------------------------------------ +  + /[a]/ +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     a +@@ -634,8 +588,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[a]/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     a +@@ -644,8 +597,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[\xaa]/ +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     \x{aa} +@@ -654,8 +606,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[\xaa]/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     \x{aa} +@@ -664,8 +615,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[^a]/ +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     [^a] +@@ -674,8 +624,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[^a]/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     [^a] +@@ -684,8 +633,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[^\xaa]/ +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     [^\x{aa}] +@@ -694,8 +642,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[^\xaa]/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0   5 Bra +   3     [^\x{aa}] +diff --git a/testdata/testoutput8-32-2 b/testdata/testoutput8-32-2 +index d76f3aaab..90ea536fa 100644 +--- a/testdata/testoutput8-32-2 ++++ b/testdata/testoutput8-32-2 +@@ -10,8 +10,7 @@ + #pattern fullbincode,memory +  + /((?i)b)/ +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0   9 Bra +   2   5 CBra 1 +@@ -22,8 +21,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /(?s)(.*X|^B)/ +-Memory allocation - compiled block : 212 +-Memory allocation - code portion   : 76 ++Memory allocation - code size : 76 + ------------------------------------------------------------------ +   0  16 Bra +   2   7 CBra 1 +@@ -38,8 +36,7 @@ Memory allocation - code portion   : 76 + ------------------------------------------------------------------ +  + /(?s:.*X|^B)/ +-Memory allocation - compiled block : 208 +-Memory allocation - code portion   : 72 ++Memory allocation - code size : 72 + ------------------------------------------------------------------ +   0  15 Bra +   2   6 Bra +@@ -54,8 +51,7 @@ Memory allocation - code portion   : 72 + ------------------------------------------------------------------ +  + /^[[:alnum:]]/ +-Memory allocation - compiled block : 196 +-Memory allocation - code portion   : 60 ++Memory allocation - code size : 60 + ------------------------------------------------------------------ +   0  12 Bra +   2     ^ +@@ -65,8 +61,7 @@ Memory allocation - code portion   : 60 + ------------------------------------------------------------------ +  + /#/Ix +-Memory allocation - compiled block : 156 +-Memory allocation - code portion   : 20 ++Memory allocation - code size : 20 + ------------------------------------------------------------------ +   0   2 Bra +   2   2 Ket +@@ -78,8 +73,7 @@ Options: extended + Subject length lower bound = 0 +  + /a#/Ix +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     a +@@ -92,8 +86,7 @@ First code unit = 'a' + Subject length lower bound = 1 +  + /x?+/ +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     x?+ +@@ -102,8 +95,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /x++/ +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     x++ +@@ -112,8 +104,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /x{1,3}+/ +-Memory allocation - compiled block : 176 +-Memory allocation - code portion   : 40 ++Memory allocation - code size : 40 + ------------------------------------------------------------------ +   0   7 Bra +   2     x +@@ -123,8 +114,7 @@ Memory allocation - code portion   : 40 + ------------------------------------------------------------------ +  + /(x)*+/ +-Memory allocation - compiled block : 188 +-Memory allocation - code portion   : 52 ++Memory allocation - code size : 52 + ------------------------------------------------------------------ +   0  10 Bra +   2     Braposzero +@@ -136,8 +126,7 @@ Memory allocation - code portion   : 52 + ------------------------------------------------------------------ +  + /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/ +-Memory allocation - compiled block : 356 +-Memory allocation - code portion   : 220 ++Memory allocation - code size : 220 + ------------------------------------------------------------------ +   0  52 Bra +   2     ^ +@@ -160,8 +149,7 @@ Memory allocation - code portion   : 220 + ------------------------------------------------------------------ +  + "8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b" +-Memory allocation - compiled block : 3432 +-Memory allocation - code portion   : 3296 ++Memory allocation - code size : 3296 + ------------------------------------------------------------------ +   0 821 Bra +   2     8J$WE<.rX+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X +@@ -171,8 +159,7 @@ Memory allocation - code portion   : 3296 + ------------------------------------------------------------------ +  + "\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b" +-Memory allocation - compiled block : 3392 +-Memory allocation - code portion   : 3256 ++Memory allocation - code size : 3256 + ------------------------------------------------------------------ +   0 811 Bra +   2     $<.X+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X +@@ -182,8 +169,7 @@ Memory allocation - code portion   : 3256 + ------------------------------------------------------------------ +  + /(a(?1)b)/ +-Memory allocation - compiled block : 200 +-Memory allocation - code portion   : 64 ++Memory allocation - code size : 64 + ------------------------------------------------------------------ +   0  13 Bra +   2   9 CBra 1 +@@ -196,8 +182,7 @@ Memory allocation - code portion   : 64 + ------------------------------------------------------------------ +  + /(a(?1)+b)/ +-Memory allocation - compiled block : 216 +-Memory allocation - code portion   : 80 ++Memory allocation - code size : 80 + ------------------------------------------------------------------ +   0  17 Bra +   2  13 CBra 1 +@@ -212,8 +197,8 @@ Memory allocation - code portion   : 80 + ------------------------------------------------------------------ +  + /a(?P<name1>b|c)d(?P<longername2>e)/ +-Memory allocation - compiled block : 348 +-Memory allocation - code portion   : 108 ++Memory allocation - code size : 108 ++Memory allocation - data size : 104 + ------------------------------------------------------------------ +   0  24 Bra +   2     a +@@ -231,8 +216,8 @@ Memory allocation - code portion   : 108 + ------------------------------------------------------------------ +  + /(?:a(?P<c>c(?P<d>d)))(?P<a>a)/ +-Memory allocation - compiled block : 300 +-Memory allocation - code portion   : 128 ++Memory allocation - code size : 128 ++Memory allocation - data size : 36 + ------------------------------------------------------------------ +   0  29 Bra +   2  18 Bra +@@ -252,8 +237,8 @@ Memory allocation - code portion   : 128 + ------------------------------------------------------------------ +  + /(?P<a>a)...(?P=a)bbb(?P>a)d/ +-Memory allocation - compiled block : 256 +-Memory allocation - code portion   : 108 ++Memory allocation - code size : 108 ++Memory allocation - data size : 12 + ------------------------------------------------------------------ +   0  24 Bra +   2   5 CBra 1 +@@ -271,8 +256,7 @@ Memory allocation - code portion   : 108 + ------------------------------------------------------------------ +  + /abc(?C255)de(?C)f/ +-Memory allocation - compiled block : 236 +-Memory allocation - code portion   : 100 ++Memory allocation - code size : 100 + ------------------------------------------------------------------ +   0  22 Bra +   2     abc +@@ -285,8 +269,7 @@ Memory allocation - code portion   : 100 + ------------------------------------------------------------------ +  + /abcde/auto_callout +-Memory allocation - compiled block : 292 +-Memory allocation - code portion   : 156 ++Memory allocation - code size : 156 + ------------------------------------------------------------------ +   0  36 Bra +   2     Callout 255 0 1 +@@ -305,8 +288,7 @@ Memory allocation - code portion   : 156 + ------------------------------------------------------------------ +  + /\x{100}/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{100} +@@ -315,8 +297,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /\x{1000}/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{1000} +@@ -325,8 +306,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /\x{10000}/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{10000} +@@ -335,8 +315,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /\x{100000}/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{100000} +@@ -345,8 +324,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /\x{10ffff}/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{10ffff} +@@ -358,8 +336,7 @@ Memory allocation - code portion   : 28 + Failed: error 134 at offset 9: character code point value in \x{} or \o{} is too large +  + /[\x{ff}]/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{ff} +@@ -368,8 +345,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[\x{100}]/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{100} +@@ -378,8 +354,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /\x80/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{80} +@@ -388,8 +363,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /\xff/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{ff} +@@ -398,8 +372,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /\x{0041}\x{2262}\x{0391}\x{002e}/I,utf +-Memory allocation - compiled block : 188 +-Memory allocation - code portion   : 52 ++Memory allocation - code size : 52 + ------------------------------------------------------------------ +   0  10 Bra +   2     A\x{2262}\x{391}. +@@ -413,8 +386,7 @@ Last code unit = '.' + Subject length lower bound = 4 +  + /\x{D55c}\x{ad6d}\x{C5B4}/I,utf +-Memory allocation - compiled block : 180 +-Memory allocation - code portion   : 44 ++Memory allocation - code size : 44 + ------------------------------------------------------------------ +   0   8 Bra +   2     \x{d55c}\x{ad6d}\x{c5b4} +@@ -428,8 +400,7 @@ Last code unit = \x{c5b4} + Subject length lower bound = 3 +  + /\x{65e5}\x{672c}\x{8a9e}/I,utf +-Memory allocation - compiled block : 180 +-Memory allocation - code portion   : 44 ++Memory allocation - code size : 44 + ------------------------------------------------------------------ +   0   8 Bra +   2     \x{65e5}\x{672c}\x{8a9e} +@@ -443,8 +414,7 @@ Last code unit = \x{8a9e} + Subject length lower bound = 3 +  + /[\x{100}]/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{100} +@@ -453,8 +423,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[Z\x{100}]/utf +-Memory allocation - compiled block : 212 +-Memory allocation - code portion   : 76 ++Memory allocation - code size : 76 + ------------------------------------------------------------------ +   0  16 Bra +   2     [Z\x{100}] +@@ -463,8 +432,7 @@ Memory allocation - code portion   : 76 + ------------------------------------------------------------------ +  + /^[\x{100}\E-\Q\E\x{150}]/utf +-Memory allocation - compiled block : 188 +-Memory allocation - code portion   : 52 ++Memory allocation - code size : 52 + ------------------------------------------------------------------ +   0  10 Bra +   2     ^ +@@ -474,8 +442,7 @@ Memory allocation - code portion   : 52 + ------------------------------------------------------------------ +  + /^[\QĀ\E-\QŐ\E]/utf +-Memory allocation - compiled block : 188 +-Memory allocation - code portion   : 52 ++Memory allocation - code size : 52 + ------------------------------------------------------------------ +   0  10 Bra +   2     ^ +@@ -488,8 +455,7 @@ Memory allocation - code portion   : 52 + Failed: error 106 at offset 13: missing terminating ] for character class +  + /[\p{L}]/ +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\p{L}] +@@ -498,8 +464,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /[\p{^L}]/ +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\P{L}] +@@ -508,8 +473,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /[\P{L}]/ +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\P{L}] +@@ -518,8 +482,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /[\P{^L}]/ +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\p{L}] +@@ -528,8 +491,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /[abc\p{L}\x{0660}]/utf +-Memory allocation - compiled block : 224 +-Memory allocation - code portion   : 88 ++Memory allocation - code size : 88 + ------------------------------------------------------------------ +   0  19 Bra +   2     [a-c\p{L}\x{660}] +@@ -538,8 +500,7 @@ Memory allocation - code portion   : 88 + ------------------------------------------------------------------ +  + /[\p{Nd}]/utf +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\p{Nd}] +@@ -548,8 +509,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /[\p{Nd}+-]+/utf +-Memory allocation - compiled block : 220 +-Memory allocation - code portion   : 84 ++Memory allocation - code size : 84 + ------------------------------------------------------------------ +   0  18 Bra +   2     [+\-\p{Nd}]++ +@@ -558,8 +518,7 @@ Memory allocation - code portion   : 84 + ------------------------------------------------------------------ +  + /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/i,utf +-Memory allocation - compiled block : 196 +-Memory allocation - code portion   : 60 ++Memory allocation - code size : 60 + ------------------------------------------------------------------ +   0  12 Bra +   2  /i A\x{391}\x{10427}\x{ff3a}\x{1fb0} +@@ -568,8 +527,7 @@ Memory allocation - code portion   : 60 + ------------------------------------------------------------------ +  + /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/utf +-Memory allocation - compiled block : 196 +-Memory allocation - code portion   : 60 ++Memory allocation - code size : 60 + ------------------------------------------------------------------ +   0  12 Bra +   2     A\x{391}\x{10427}\x{ff3a}\x{1fb0} +@@ -578,8 +536,7 @@ Memory allocation - code portion   : 60 + ------------------------------------------------------------------ +  + /[\x{105}-\x{109}]/i,utf +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\x{104}-\x{109}] +@@ -588,8 +545,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /( ( (?(1)0|) )*   )/x +-Memory allocation - compiled block : 240 +-Memory allocation - code portion   : 104 ++Memory allocation - code size : 104 + ------------------------------------------------------------------ +   0  23 Bra +   2  19 CBra 1 +@@ -607,8 +563,7 @@ Memory allocation - code portion   : 104 + ------------------------------------------------------------------ +  + /(  (?(1)0|)*   )/x +-Memory allocation - compiled block : 220 +-Memory allocation - code portion   : 84 ++Memory allocation - code size : 84 + ------------------------------------------------------------------ +   0  18 Bra +   2  14 CBra 1 +@@ -624,8 +579,7 @@ Memory allocation - code portion   : 84 + ------------------------------------------------------------------ +  + /[a]/ +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     a +@@ -634,8 +588,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[a]/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     a +@@ -644,8 +597,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[\xaa]/ +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{aa} +@@ -654,8 +606,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[\xaa]/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{aa} +@@ -664,8 +615,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[^a]/ +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     [^a] +@@ -674,8 +624,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[^a]/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     [^a] +@@ -684,8 +633,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[^\xaa]/ +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     [^\x{aa}] +@@ -694,8 +642,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[^\xaa]/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     [^\x{aa}] +diff --git a/testdata/testoutput8-32-3 b/testdata/testoutput8-32-3 +index d76f3aaab..90ea536fa 100644 +--- a/testdata/testoutput8-32-3 ++++ b/testdata/testoutput8-32-3 +@@ -10,8 +10,7 @@ + #pattern fullbincode,memory +  + /((?i)b)/ +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0   9 Bra +   2   5 CBra 1 +@@ -22,8 +21,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /(?s)(.*X|^B)/ +-Memory allocation - compiled block : 212 +-Memory allocation - code portion   : 76 ++Memory allocation - code size : 76 + ------------------------------------------------------------------ +   0  16 Bra +   2   7 CBra 1 +@@ -38,8 +36,7 @@ Memory allocation - code portion   : 76 + ------------------------------------------------------------------ +  + /(?s:.*X|^B)/ +-Memory allocation - compiled block : 208 +-Memory allocation - code portion   : 72 ++Memory allocation - code size : 72 + ------------------------------------------------------------------ +   0  15 Bra +   2   6 Bra +@@ -54,8 +51,7 @@ Memory allocation - code portion   : 72 + ------------------------------------------------------------------ +  + /^[[:alnum:]]/ +-Memory allocation - compiled block : 196 +-Memory allocation - code portion   : 60 ++Memory allocation - code size : 60 + ------------------------------------------------------------------ +   0  12 Bra +   2     ^ +@@ -65,8 +61,7 @@ Memory allocation - code portion   : 60 + ------------------------------------------------------------------ +  + /#/Ix +-Memory allocation - compiled block : 156 +-Memory allocation - code portion   : 20 ++Memory allocation - code size : 20 + ------------------------------------------------------------------ +   0   2 Bra +   2   2 Ket +@@ -78,8 +73,7 @@ Options: extended + Subject length lower bound = 0 +  + /a#/Ix +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     a +@@ -92,8 +86,7 @@ First code unit = 'a' + Subject length lower bound = 1 +  + /x?+/ +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     x?+ +@@ -102,8 +95,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /x++/ +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     x++ +@@ -112,8 +104,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /x{1,3}+/ +-Memory allocation - compiled block : 176 +-Memory allocation - code portion   : 40 ++Memory allocation - code size : 40 + ------------------------------------------------------------------ +   0   7 Bra +   2     x +@@ -123,8 +114,7 @@ Memory allocation - code portion   : 40 + ------------------------------------------------------------------ +  + /(x)*+/ +-Memory allocation - compiled block : 188 +-Memory allocation - code portion   : 52 ++Memory allocation - code size : 52 + ------------------------------------------------------------------ +   0  10 Bra +   2     Braposzero +@@ -136,8 +126,7 @@ Memory allocation - code portion   : 52 + ------------------------------------------------------------------ +  + /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/ +-Memory allocation - compiled block : 356 +-Memory allocation - code portion   : 220 ++Memory allocation - code size : 220 + ------------------------------------------------------------------ +   0  52 Bra +   2     ^ +@@ -160,8 +149,7 @@ Memory allocation - code portion   : 220 + ------------------------------------------------------------------ +  + "8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b" +-Memory allocation - compiled block : 3432 +-Memory allocation - code portion   : 3296 ++Memory allocation - code size : 3296 + ------------------------------------------------------------------ +   0 821 Bra +   2     8J$WE<.rX+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X +@@ -171,8 +159,7 @@ Memory allocation - code portion   : 3296 + ------------------------------------------------------------------ +  + "\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b" +-Memory allocation - compiled block : 3392 +-Memory allocation - code portion   : 3256 ++Memory allocation - code size : 3256 + ------------------------------------------------------------------ +   0 811 Bra +   2     $<.X+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X +@@ -182,8 +169,7 @@ Memory allocation - code portion   : 3256 + ------------------------------------------------------------------ +  + /(a(?1)b)/ +-Memory allocation - compiled block : 200 +-Memory allocation - code portion   : 64 ++Memory allocation - code size : 64 + ------------------------------------------------------------------ +   0  13 Bra +   2   9 CBra 1 +@@ -196,8 +182,7 @@ Memory allocation - code portion   : 64 + ------------------------------------------------------------------ +  + /(a(?1)+b)/ +-Memory allocation - compiled block : 216 +-Memory allocation - code portion   : 80 ++Memory allocation - code size : 80 + ------------------------------------------------------------------ +   0  17 Bra +   2  13 CBra 1 +@@ -212,8 +197,8 @@ Memory allocation - code portion   : 80 + ------------------------------------------------------------------ +  + /a(?P<name1>b|c)d(?P<longername2>e)/ +-Memory allocation - compiled block : 348 +-Memory allocation - code portion   : 108 ++Memory allocation - code size : 108 ++Memory allocation - data size : 104 + ------------------------------------------------------------------ +   0  24 Bra +   2     a +@@ -231,8 +216,8 @@ Memory allocation - code portion   : 108 + ------------------------------------------------------------------ +  + /(?:a(?P<c>c(?P<d>d)))(?P<a>a)/ +-Memory allocation - compiled block : 300 +-Memory allocation - code portion   : 128 ++Memory allocation - code size : 128 ++Memory allocation - data size : 36 + ------------------------------------------------------------------ +   0  29 Bra +   2  18 Bra +@@ -252,8 +237,8 @@ Memory allocation - code portion   : 128 + ------------------------------------------------------------------ +  + /(?P<a>a)...(?P=a)bbb(?P>a)d/ +-Memory allocation - compiled block : 256 +-Memory allocation - code portion   : 108 ++Memory allocation - code size : 108 ++Memory allocation - data size : 12 + ------------------------------------------------------------------ +   0  24 Bra +   2   5 CBra 1 +@@ -271,8 +256,7 @@ Memory allocation - code portion   : 108 + ------------------------------------------------------------------ +  + /abc(?C255)de(?C)f/ +-Memory allocation - compiled block : 236 +-Memory allocation - code portion   : 100 ++Memory allocation - code size : 100 + ------------------------------------------------------------------ +   0  22 Bra +   2     abc +@@ -285,8 +269,7 @@ Memory allocation - code portion   : 100 + ------------------------------------------------------------------ +  + /abcde/auto_callout +-Memory allocation - compiled block : 292 +-Memory allocation - code portion   : 156 ++Memory allocation - code size : 156 + ------------------------------------------------------------------ +   0  36 Bra +   2     Callout 255 0 1 +@@ -305,8 +288,7 @@ Memory allocation - code portion   : 156 + ------------------------------------------------------------------ +  + /\x{100}/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{100} +@@ -315,8 +297,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /\x{1000}/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{1000} +@@ -325,8 +306,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /\x{10000}/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{10000} +@@ -335,8 +315,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /\x{100000}/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{100000} +@@ -345,8 +324,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /\x{10ffff}/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{10ffff} +@@ -358,8 +336,7 @@ Memory allocation - code portion   : 28 + Failed: error 134 at offset 9: character code point value in \x{} or \o{} is too large +  + /[\x{ff}]/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{ff} +@@ -368,8 +345,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[\x{100}]/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{100} +@@ -378,8 +354,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /\x80/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{80} +@@ -388,8 +363,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /\xff/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{ff} +@@ -398,8 +372,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /\x{0041}\x{2262}\x{0391}\x{002e}/I,utf +-Memory allocation - compiled block : 188 +-Memory allocation - code portion   : 52 ++Memory allocation - code size : 52 + ------------------------------------------------------------------ +   0  10 Bra +   2     A\x{2262}\x{391}. +@@ -413,8 +386,7 @@ Last code unit = '.' + Subject length lower bound = 4 +  + /\x{D55c}\x{ad6d}\x{C5B4}/I,utf +-Memory allocation - compiled block : 180 +-Memory allocation - code portion   : 44 ++Memory allocation - code size : 44 + ------------------------------------------------------------------ +   0   8 Bra +   2     \x{d55c}\x{ad6d}\x{c5b4} +@@ -428,8 +400,7 @@ Last code unit = \x{c5b4} + Subject length lower bound = 3 +  + /\x{65e5}\x{672c}\x{8a9e}/I,utf +-Memory allocation - compiled block : 180 +-Memory allocation - code portion   : 44 ++Memory allocation - code size : 44 + ------------------------------------------------------------------ +   0   8 Bra +   2     \x{65e5}\x{672c}\x{8a9e} +@@ -443,8 +414,7 @@ Last code unit = \x{8a9e} + Subject length lower bound = 3 +  + /[\x{100}]/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{100} +@@ -453,8 +423,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[Z\x{100}]/utf +-Memory allocation - compiled block : 212 +-Memory allocation - code portion   : 76 ++Memory allocation - code size : 76 + ------------------------------------------------------------------ +   0  16 Bra +   2     [Z\x{100}] +@@ -463,8 +432,7 @@ Memory allocation - code portion   : 76 + ------------------------------------------------------------------ +  + /^[\x{100}\E-\Q\E\x{150}]/utf +-Memory allocation - compiled block : 188 +-Memory allocation - code portion   : 52 ++Memory allocation - code size : 52 + ------------------------------------------------------------------ +   0  10 Bra +   2     ^ +@@ -474,8 +442,7 @@ Memory allocation - code portion   : 52 + ------------------------------------------------------------------ +  + /^[\QĀ\E-\QŐ\E]/utf +-Memory allocation - compiled block : 188 +-Memory allocation - code portion   : 52 ++Memory allocation - code size : 52 + ------------------------------------------------------------------ +   0  10 Bra +   2     ^ +@@ -488,8 +455,7 @@ Memory allocation - code portion   : 52 + Failed: error 106 at offset 13: missing terminating ] for character class +  + /[\p{L}]/ +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\p{L}] +@@ -498,8 +464,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /[\p{^L}]/ +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\P{L}] +@@ -508,8 +473,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /[\P{L}]/ +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\P{L}] +@@ -518,8 +482,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /[\P{^L}]/ +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\p{L}] +@@ -528,8 +491,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /[abc\p{L}\x{0660}]/utf +-Memory allocation - compiled block : 224 +-Memory allocation - code portion   : 88 ++Memory allocation - code size : 88 + ------------------------------------------------------------------ +   0  19 Bra +   2     [a-c\p{L}\x{660}] +@@ -538,8 +500,7 @@ Memory allocation - code portion   : 88 + ------------------------------------------------------------------ +  + /[\p{Nd}]/utf +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\p{Nd}] +@@ -548,8 +509,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /[\p{Nd}+-]+/utf +-Memory allocation - compiled block : 220 +-Memory allocation - code portion   : 84 ++Memory allocation - code size : 84 + ------------------------------------------------------------------ +   0  18 Bra +   2     [+\-\p{Nd}]++ +@@ -558,8 +518,7 @@ Memory allocation - code portion   : 84 + ------------------------------------------------------------------ +  + /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/i,utf +-Memory allocation - compiled block : 196 +-Memory allocation - code portion   : 60 ++Memory allocation - code size : 60 + ------------------------------------------------------------------ +   0  12 Bra +   2  /i A\x{391}\x{10427}\x{ff3a}\x{1fb0} +@@ -568,8 +527,7 @@ Memory allocation - code portion   : 60 + ------------------------------------------------------------------ +  + /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/utf +-Memory allocation - compiled block : 196 +-Memory allocation - code portion   : 60 ++Memory allocation - code size : 60 + ------------------------------------------------------------------ +   0  12 Bra +   2     A\x{391}\x{10427}\x{ff3a}\x{1fb0} +@@ -578,8 +536,7 @@ Memory allocation - code portion   : 60 + ------------------------------------------------------------------ +  + /[\x{105}-\x{109}]/i,utf +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\x{104}-\x{109}] +@@ -588,8 +545,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /( ( (?(1)0|) )*   )/x +-Memory allocation - compiled block : 240 +-Memory allocation - code portion   : 104 ++Memory allocation - code size : 104 + ------------------------------------------------------------------ +   0  23 Bra +   2  19 CBra 1 +@@ -607,8 +563,7 @@ Memory allocation - code portion   : 104 + ------------------------------------------------------------------ +  + /(  (?(1)0|)*   )/x +-Memory allocation - compiled block : 220 +-Memory allocation - code portion   : 84 ++Memory allocation - code size : 84 + ------------------------------------------------------------------ +   0  18 Bra +   2  14 CBra 1 +@@ -624,8 +579,7 @@ Memory allocation - code portion   : 84 + ------------------------------------------------------------------ +  + /[a]/ +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     a +@@ -634,8 +588,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[a]/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     a +@@ -644,8 +597,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[\xaa]/ +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{aa} +@@ -654,8 +606,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[\xaa]/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{aa} +@@ -664,8 +615,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[^a]/ +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     [^a] +@@ -674,8 +624,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[^a]/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     [^a] +@@ -684,8 +633,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[^\xaa]/ +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     [^\x{aa}] +@@ -694,8 +642,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[^\xaa]/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     [^\x{aa}] +diff --git a/testdata/testoutput8-32-4 b/testdata/testoutput8-32-4 +index d76f3aaab..90ea536fa 100644 +--- a/testdata/testoutput8-32-4 ++++ b/testdata/testoutput8-32-4 +@@ -10,8 +10,7 @@ + #pattern fullbincode,memory +  + /((?i)b)/ +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0   9 Bra +   2   5 CBra 1 +@@ -22,8 +21,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /(?s)(.*X|^B)/ +-Memory allocation - compiled block : 212 +-Memory allocation - code portion   : 76 ++Memory allocation - code size : 76 + ------------------------------------------------------------------ +   0  16 Bra +   2   7 CBra 1 +@@ -38,8 +36,7 @@ Memory allocation - code portion   : 76 + ------------------------------------------------------------------ +  + /(?s:.*X|^B)/ +-Memory allocation - compiled block : 208 +-Memory allocation - code portion   : 72 ++Memory allocation - code size : 72 + ------------------------------------------------------------------ +   0  15 Bra +   2   6 Bra +@@ -54,8 +51,7 @@ Memory allocation - code portion   : 72 + ------------------------------------------------------------------ +  + /^[[:alnum:]]/ +-Memory allocation - compiled block : 196 +-Memory allocation - code portion   : 60 ++Memory allocation - code size : 60 + ------------------------------------------------------------------ +   0  12 Bra +   2     ^ +@@ -65,8 +61,7 @@ Memory allocation - code portion   : 60 + ------------------------------------------------------------------ +  + /#/Ix +-Memory allocation - compiled block : 156 +-Memory allocation - code portion   : 20 ++Memory allocation - code size : 20 + ------------------------------------------------------------------ +   0   2 Bra +   2   2 Ket +@@ -78,8 +73,7 @@ Options: extended + Subject length lower bound = 0 +  + /a#/Ix +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     a +@@ -92,8 +86,7 @@ First code unit = 'a' + Subject length lower bound = 1 +  + /x?+/ +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     x?+ +@@ -102,8 +95,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /x++/ +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     x++ +@@ -112,8 +104,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /x{1,3}+/ +-Memory allocation - compiled block : 176 +-Memory allocation - code portion   : 40 ++Memory allocation - code size : 40 + ------------------------------------------------------------------ +   0   7 Bra +   2     x +@@ -123,8 +114,7 @@ Memory allocation - code portion   : 40 + ------------------------------------------------------------------ +  + /(x)*+/ +-Memory allocation - compiled block : 188 +-Memory allocation - code portion   : 52 ++Memory allocation - code size : 52 + ------------------------------------------------------------------ +   0  10 Bra +   2     Braposzero +@@ -136,8 +126,7 @@ Memory allocation - code portion   : 52 + ------------------------------------------------------------------ +  + /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/ +-Memory allocation - compiled block : 356 +-Memory allocation - code portion   : 220 ++Memory allocation - code size : 220 + ------------------------------------------------------------------ +   0  52 Bra +   2     ^ +@@ -160,8 +149,7 @@ Memory allocation - code portion   : 220 + ------------------------------------------------------------------ +  + "8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b" +-Memory allocation - compiled block : 3432 +-Memory allocation - code portion   : 3296 ++Memory allocation - code size : 3296 + ------------------------------------------------------------------ +   0 821 Bra +   2     8J$WE<.rX+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X +@@ -171,8 +159,7 @@ Memory allocation - code portion   : 3296 + ------------------------------------------------------------------ +  + "\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b" +-Memory allocation - compiled block : 3392 +-Memory allocation - code portion   : 3256 ++Memory allocation - code size : 3256 + ------------------------------------------------------------------ +   0 811 Bra +   2     $<.X+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X +@@ -182,8 +169,7 @@ Memory allocation - code portion   : 3256 + ------------------------------------------------------------------ +  + /(a(?1)b)/ +-Memory allocation - compiled block : 200 +-Memory allocation - code portion   : 64 ++Memory allocation - code size : 64 + ------------------------------------------------------------------ +   0  13 Bra +   2   9 CBra 1 +@@ -196,8 +182,7 @@ Memory allocation - code portion   : 64 + ------------------------------------------------------------------ +  + /(a(?1)+b)/ +-Memory allocation - compiled block : 216 +-Memory allocation - code portion   : 80 ++Memory allocation - code size : 80 + ------------------------------------------------------------------ +   0  17 Bra +   2  13 CBra 1 +@@ -212,8 +197,8 @@ Memory allocation - code portion   : 80 + ------------------------------------------------------------------ +  + /a(?P<name1>b|c)d(?P<longername2>e)/ +-Memory allocation - compiled block : 348 +-Memory allocation - code portion   : 108 ++Memory allocation - code size : 108 ++Memory allocation - data size : 104 + ------------------------------------------------------------------ +   0  24 Bra +   2     a +@@ -231,8 +216,8 @@ Memory allocation - code portion   : 108 + ------------------------------------------------------------------ +  + /(?:a(?P<c>c(?P<d>d)))(?P<a>a)/ +-Memory allocation - compiled block : 300 +-Memory allocation - code portion   : 128 ++Memory allocation - code size : 128 ++Memory allocation - data size : 36 + ------------------------------------------------------------------ +   0  29 Bra +   2  18 Bra +@@ -252,8 +237,8 @@ Memory allocation - code portion   : 128 + ------------------------------------------------------------------ +  + /(?P<a>a)...(?P=a)bbb(?P>a)d/ +-Memory allocation - compiled block : 256 +-Memory allocation - code portion   : 108 ++Memory allocation - code size : 108 ++Memory allocation - data size : 12 + ------------------------------------------------------------------ +   0  24 Bra +   2   5 CBra 1 +@@ -271,8 +256,7 @@ Memory allocation - code portion   : 108 + ------------------------------------------------------------------ +  + /abc(?C255)de(?C)f/ +-Memory allocation - compiled block : 236 +-Memory allocation - code portion   : 100 ++Memory allocation - code size : 100 + ------------------------------------------------------------------ +   0  22 Bra +   2     abc +@@ -285,8 +269,7 @@ Memory allocation - code portion   : 100 + ------------------------------------------------------------------ +  + /abcde/auto_callout +-Memory allocation - compiled block : 292 +-Memory allocation - code portion   : 156 ++Memory allocation - code size : 156 + ------------------------------------------------------------------ +   0  36 Bra +   2     Callout 255 0 1 +@@ -305,8 +288,7 @@ Memory allocation - code portion   : 156 + ------------------------------------------------------------------ +  + /\x{100}/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{100} +@@ -315,8 +297,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /\x{1000}/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{1000} +@@ -325,8 +306,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /\x{10000}/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{10000} +@@ -335,8 +315,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /\x{100000}/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{100000} +@@ -345,8 +324,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /\x{10ffff}/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{10ffff} +@@ -358,8 +336,7 @@ Memory allocation - code portion   : 28 + Failed: error 134 at offset 9: character code point value in \x{} or \o{} is too large +  + /[\x{ff}]/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{ff} +@@ -368,8 +345,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[\x{100}]/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{100} +@@ -378,8 +354,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /\x80/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{80} +@@ -388,8 +363,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /\xff/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{ff} +@@ -398,8 +372,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /\x{0041}\x{2262}\x{0391}\x{002e}/I,utf +-Memory allocation - compiled block : 188 +-Memory allocation - code portion   : 52 ++Memory allocation - code size : 52 + ------------------------------------------------------------------ +   0  10 Bra +   2     A\x{2262}\x{391}. +@@ -413,8 +386,7 @@ Last code unit = '.' + Subject length lower bound = 4 +  + /\x{D55c}\x{ad6d}\x{C5B4}/I,utf +-Memory allocation - compiled block : 180 +-Memory allocation - code portion   : 44 ++Memory allocation - code size : 44 + ------------------------------------------------------------------ +   0   8 Bra +   2     \x{d55c}\x{ad6d}\x{c5b4} +@@ -428,8 +400,7 @@ Last code unit = \x{c5b4} + Subject length lower bound = 3 +  + /\x{65e5}\x{672c}\x{8a9e}/I,utf +-Memory allocation - compiled block : 180 +-Memory allocation - code portion   : 44 ++Memory allocation - code size : 44 + ------------------------------------------------------------------ +   0   8 Bra +   2     \x{65e5}\x{672c}\x{8a9e} +@@ -443,8 +414,7 @@ Last code unit = \x{8a9e} + Subject length lower bound = 3 +  + /[\x{100}]/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{100} +@@ -453,8 +423,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[Z\x{100}]/utf +-Memory allocation - compiled block : 212 +-Memory allocation - code portion   : 76 ++Memory allocation - code size : 76 + ------------------------------------------------------------------ +   0  16 Bra +   2     [Z\x{100}] +@@ -463,8 +432,7 @@ Memory allocation - code portion   : 76 + ------------------------------------------------------------------ +  + /^[\x{100}\E-\Q\E\x{150}]/utf +-Memory allocation - compiled block : 188 +-Memory allocation - code portion   : 52 ++Memory allocation - code size : 52 + ------------------------------------------------------------------ +   0  10 Bra +   2     ^ +@@ -474,8 +442,7 @@ Memory allocation - code portion   : 52 + ------------------------------------------------------------------ +  + /^[\QĀ\E-\QŐ\E]/utf +-Memory allocation - compiled block : 188 +-Memory allocation - code portion   : 52 ++Memory allocation - code size : 52 + ------------------------------------------------------------------ +   0  10 Bra +   2     ^ +@@ -488,8 +455,7 @@ Memory allocation - code portion   : 52 + Failed: error 106 at offset 13: missing terminating ] for character class +  + /[\p{L}]/ +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\p{L}] +@@ -498,8 +464,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /[\p{^L}]/ +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\P{L}] +@@ -508,8 +473,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /[\P{L}]/ +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\P{L}] +@@ -518,8 +482,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /[\P{^L}]/ +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\p{L}] +@@ -528,8 +491,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /[abc\p{L}\x{0660}]/utf +-Memory allocation - compiled block : 224 +-Memory allocation - code portion   : 88 ++Memory allocation - code size : 88 + ------------------------------------------------------------------ +   0  19 Bra +   2     [a-c\p{L}\x{660}] +@@ -538,8 +500,7 @@ Memory allocation - code portion   : 88 + ------------------------------------------------------------------ +  + /[\p{Nd}]/utf +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\p{Nd}] +@@ -548,8 +509,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /[\p{Nd}+-]+/utf +-Memory allocation - compiled block : 220 +-Memory allocation - code portion   : 84 ++Memory allocation - code size : 84 + ------------------------------------------------------------------ +   0  18 Bra +   2     [+\-\p{Nd}]++ +@@ -558,8 +518,7 @@ Memory allocation - code portion   : 84 + ------------------------------------------------------------------ +  + /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/i,utf +-Memory allocation - compiled block : 196 +-Memory allocation - code portion   : 60 ++Memory allocation - code size : 60 + ------------------------------------------------------------------ +   0  12 Bra +   2  /i A\x{391}\x{10427}\x{ff3a}\x{1fb0} +@@ -568,8 +527,7 @@ Memory allocation - code portion   : 60 + ------------------------------------------------------------------ +  + /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/utf +-Memory allocation - compiled block : 196 +-Memory allocation - code portion   : 60 ++Memory allocation - code size : 60 + ------------------------------------------------------------------ +   0  12 Bra +   2     A\x{391}\x{10427}\x{ff3a}\x{1fb0} +@@ -578,8 +536,7 @@ Memory allocation - code portion   : 60 + ------------------------------------------------------------------ +  + /[\x{105}-\x{109}]/i,utf +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0   9 Bra +   2     [\x{104}-\x{109}] +@@ -588,8 +545,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /( ( (?(1)0|) )*   )/x +-Memory allocation - compiled block : 240 +-Memory allocation - code portion   : 104 ++Memory allocation - code size : 104 + ------------------------------------------------------------------ +   0  23 Bra +   2  19 CBra 1 +@@ -607,8 +563,7 @@ Memory allocation - code portion   : 104 + ------------------------------------------------------------------ +  + /(  (?(1)0|)*   )/x +-Memory allocation - compiled block : 220 +-Memory allocation - code portion   : 84 ++Memory allocation - code size : 84 + ------------------------------------------------------------------ +   0  18 Bra +   2  14 CBra 1 +@@ -624,8 +579,7 @@ Memory allocation - code portion   : 84 + ------------------------------------------------------------------ +  + /[a]/ +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     a +@@ -634,8 +588,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[a]/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     a +@@ -644,8 +597,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[\xaa]/ +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{aa} +@@ -654,8 +606,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[\xaa]/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     \x{aa} +@@ -664,8 +615,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[^a]/ +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     [^a] +@@ -674,8 +624,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[^a]/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     [^a] +@@ -684,8 +633,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[^\xaa]/ +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     [^\x{aa}] +@@ -694,8 +642,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /[^\xaa]/utf +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0   4 Bra +   2     [^\x{aa}] +diff --git a/testdata/testoutput8-8-2 b/testdata/testoutput8-8-2 +index f3811d952..779552ace 100644 +--- a/testdata/testoutput8-8-2 ++++ b/testdata/testoutput8-8-2 +@@ -10,8 +10,7 @@ + #pattern fullbincode,memory +  + /((?i)b)/ +-Memory allocation - compiled block : 153 +-Memory allocation - code portion   : 17 ++Memory allocation - code size : 17 + ------------------------------------------------------------------ +   0  13 Bra +   3   7 CBra 1 +@@ -22,8 +21,7 @@ Memory allocation - code portion   : 17 + ------------------------------------------------------------------ +  + /(?s)(.*X|^B)/ +-Memory allocation - compiled block : 161 +-Memory allocation - code portion   : 25 ++Memory allocation - code size : 25 + ------------------------------------------------------------------ +   0  21 Bra +   3   9 CBra 1 +@@ -38,8 +36,7 @@ Memory allocation - code portion   : 25 + ------------------------------------------------------------------ +  + /(?s:.*X|^B)/ +-Memory allocation - compiled block : 159 +-Memory allocation - code portion   : 23 ++Memory allocation - code size : 23 + ------------------------------------------------------------------ +   0  19 Bra +   3   7 Bra +@@ -54,8 +51,7 @@ Memory allocation - code portion   : 23 + ------------------------------------------------------------------ +  + /^[[:alnum:]]/ +-Memory allocation - compiled block : 177 +-Memory allocation - code portion   : 41 ++Memory allocation - code size : 41 + ------------------------------------------------------------------ +   0  37 Bra +   3     ^ +@@ -65,8 +61,7 @@ Memory allocation - code portion   : 41 + ------------------------------------------------------------------ +  + /#/Ix +-Memory allocation - compiled block : 143 +-Memory allocation - code portion   : 7 ++Memory allocation - code size : 7 + ------------------------------------------------------------------ +   0   3 Bra +   3   3 Ket +@@ -78,8 +73,7 @@ Options: extended + Subject length lower bound = 0 +  + /a#/Ix +-Memory allocation - compiled block : 145 +-Memory allocation - code portion   : 9 ++Memory allocation - code size : 9 + ------------------------------------------------------------------ +   0   5 Bra +   3     a +@@ -92,8 +86,7 @@ First code unit = 'a' + Subject length lower bound = 1 +  + /x?+/ +-Memory allocation - compiled block : 145 +-Memory allocation - code portion   : 9 ++Memory allocation - code size : 9 + ------------------------------------------------------------------ +   0   5 Bra +   3     x?+ +@@ -102,8 +95,7 @@ Memory allocation - code portion   : 9 + ------------------------------------------------------------------ +  + /x++/ +-Memory allocation - compiled block : 145 +-Memory allocation - code portion   : 9 ++Memory allocation - code size : 9 + ------------------------------------------------------------------ +   0   5 Bra +   3     x++ +@@ -112,8 +104,7 @@ Memory allocation - code portion   : 9 + ------------------------------------------------------------------ +  + /x{1,3}+/ +-Memory allocation - compiled block : 149 +-Memory allocation - code portion   : 13 ++Memory allocation - code size : 13 + ------------------------------------------------------------------ +   0   9 Bra +   3     x +@@ -123,8 +114,7 @@ Memory allocation - code portion   : 13 + ------------------------------------------------------------------ +  + /(x)*+/ +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0  14 Bra +   3     Braposzero +@@ -136,8 +126,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/ +-Memory allocation - compiled block : 256 +-Memory allocation - code portion   : 120 ++Memory allocation - code size : 120 + ------------------------------------------------------------------ +   0 116 Bra +   3     ^ +@@ -160,8 +149,7 @@ Memory allocation - code portion   : 120 + ------------------------------------------------------------------ +  + "8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b" +-Memory allocation - compiled block : 962 +-Memory allocation - code portion   : 826 ++Memory allocation - code size : 826 + ------------------------------------------------------------------ +   0 822 Bra +   3     8J$WE<.rX+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X +@@ -171,8 +159,7 @@ Memory allocation - code portion   : 826 + ------------------------------------------------------------------ +  + "\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b" +-Memory allocation - compiled block : 952 +-Memory allocation - code portion   : 816 ++Memory allocation - code size : 816 + ------------------------------------------------------------------ +   0 812 Bra +   3     $<.X+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X +@@ -182,8 +169,7 @@ Memory allocation - code portion   : 816 + ------------------------------------------------------------------ +  + /(a(?1)b)/ +-Memory allocation - compiled block : 158 +-Memory allocation - code portion   : 22 ++Memory allocation - code size : 22 + ------------------------------------------------------------------ +   0  18 Bra +   3  12 CBra 1 +@@ -196,8 +182,7 @@ Memory allocation - code portion   : 22 + ------------------------------------------------------------------ +  + /(a(?1)+b)/ +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0  24 Bra +   3  18 CBra 1 +@@ -212,8 +197,8 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /a(?P<name1>b|c)d(?P<longername2>e)/ +-Memory allocation - compiled block : 200 +-Memory allocation - code portion   : 36 ++Memory allocation - code size : 36 ++Memory allocation - data size : 28 + ------------------------------------------------------------------ +   0  32 Bra +   3     a +@@ -231,8 +216,8 @@ Memory allocation - code portion   : 36 + ------------------------------------------------------------------ +  + /(?:a(?P<c>c(?P<d>d)))(?P<a>a)/ +-Memory allocation - compiled block : 193 +-Memory allocation - code portion   : 45 ++Memory allocation - code size : 45 ++Memory allocation - data size : 12 + ------------------------------------------------------------------ +   0  41 Bra +   3  25 Bra +@@ -252,8 +237,8 @@ Memory allocation - code portion   : 45 + ------------------------------------------------------------------ +  + /(?P<a>a)...(?P=a)bbb(?P>a)d/ +-Memory allocation - compiled block : 174 +-Memory allocation - code portion   : 34 ++Memory allocation - code size : 34 ++Memory allocation - data size : 4 + ------------------------------------------------------------------ +   0  30 Bra +   3   7 CBra 1 +@@ -271,8 +256,7 @@ Memory allocation - code portion   : 34 + ------------------------------------------------------------------ +  + /abc(?C255)de(?C)f/ +-Memory allocation - compiled block : 167 +-Memory allocation - code portion   : 31 ++Memory allocation - code size : 31 + ------------------------------------------------------------------ +   0  27 Bra +   3     abc +@@ -285,8 +269,7 @@ Memory allocation - code portion   : 31 + ------------------------------------------------------------------ +  + /abcde/auto_callout +-Memory allocation - compiled block : 189 +-Memory allocation - code portion   : 53 ++Memory allocation - code size : 53 + ------------------------------------------------------------------ +   0  49 Bra +   3     Callout 255 0 1 +@@ -305,8 +288,7 @@ Memory allocation - code portion   : 53 + ------------------------------------------------------------------ +  + /\x{100}/utf +-Memory allocation - compiled block : 146 +-Memory allocation - code portion   : 10 ++Memory allocation - code size : 10 + ------------------------------------------------------------------ +   0   6 Bra +   3     \x{100} +@@ -315,8 +297,7 @@ Memory allocation - code portion   : 10 + ------------------------------------------------------------------ +  + /\x{1000}/utf +-Memory allocation - compiled block : 147 +-Memory allocation - code portion   : 11 ++Memory allocation - code size : 11 + ------------------------------------------------------------------ +   0   7 Bra +   3     \x{1000} +@@ -325,8 +306,7 @@ Memory allocation - code portion   : 11 + ------------------------------------------------------------------ +  + /\x{10000}/utf +-Memory allocation - compiled block : 148 +-Memory allocation - code portion   : 12 ++Memory allocation - code size : 12 + ------------------------------------------------------------------ +   0   8 Bra +   3     \x{10000} +@@ -335,8 +315,7 @@ Memory allocation - code portion   : 12 + ------------------------------------------------------------------ +  + /\x{100000}/utf +-Memory allocation - compiled block : 148 +-Memory allocation - code portion   : 12 ++Memory allocation - code size : 12 + ------------------------------------------------------------------ +   0   8 Bra +   3     \x{100000} +@@ -345,8 +324,7 @@ Memory allocation - code portion   : 12 + ------------------------------------------------------------------ +  + /\x{10ffff}/utf +-Memory allocation - compiled block : 148 +-Memory allocation - code portion   : 12 ++Memory allocation - code size : 12 + ------------------------------------------------------------------ +   0   8 Bra +   3     \x{10ffff} +@@ -358,8 +336,7 @@ Memory allocation - code portion   : 12 + Failed: error 134 at offset 9: character code point value in \x{} or \o{} is too large +  + /[\x{ff}]/utf +-Memory allocation - compiled block : 146 +-Memory allocation - code portion   : 10 ++Memory allocation - code size : 10 + ------------------------------------------------------------------ +   0   6 Bra +   3     \x{ff} +@@ -368,8 +345,7 @@ Memory allocation - code portion   : 10 + ------------------------------------------------------------------ +  + /[\x{100}]/utf +-Memory allocation - compiled block : 146 +-Memory allocation - code portion   : 10 ++Memory allocation - code size : 10 + ------------------------------------------------------------------ +   0   6 Bra +   3     \x{100} +@@ -378,8 +354,7 @@ Memory allocation - code portion   : 10 + ------------------------------------------------------------------ +  + /\x80/utf +-Memory allocation - compiled block : 146 +-Memory allocation - code portion   : 10 ++Memory allocation - code size : 10 + ------------------------------------------------------------------ +   0   6 Bra +   3     \x{80} +@@ -388,8 +363,7 @@ Memory allocation - code portion   : 10 + ------------------------------------------------------------------ +  + /\xff/utf +-Memory allocation - compiled block : 146 +-Memory allocation - code portion   : 10 ++Memory allocation - code size : 10 + ------------------------------------------------------------------ +   0   6 Bra +   3     \x{ff} +@@ -398,8 +372,7 @@ Memory allocation - code portion   : 10 + ------------------------------------------------------------------ +  + /\x{0041}\x{2262}\x{0391}\x{002e}/I,utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0  14 Bra +   3     A\x{2262}\x{391}. +@@ -413,8 +386,7 @@ Last code unit = '.' + Subject length lower bound = 4 +  + /\x{D55c}\x{ad6d}\x{C5B4}/I,utf +-Memory allocation - compiled block : 155 +-Memory allocation - code portion   : 19 ++Memory allocation - code size : 19 + ------------------------------------------------------------------ +   0  15 Bra +   3     \x{d55c}\x{ad6d}\x{c5b4} +@@ -428,8 +400,7 @@ Last code unit = \xb4 + Subject length lower bound = 3 +  + /\x{65e5}\x{672c}\x{8a9e}/I,utf +-Memory allocation - compiled block : 155 +-Memory allocation - code portion   : 19 ++Memory allocation - code size : 19 + ------------------------------------------------------------------ +   0  15 Bra +   3     \x{65e5}\x{672c}\x{8a9e} +@@ -443,8 +414,7 @@ Last code unit = \x9e + Subject length lower bound = 3 +  + /[\x{100}]/utf +-Memory allocation - compiled block : 146 +-Memory allocation - code portion   : 10 ++Memory allocation - code size : 10 + ------------------------------------------------------------------ +   0   6 Bra +   3     \x{100} +@@ -453,8 +423,7 @@ Memory allocation - code portion   : 10 + ------------------------------------------------------------------ +  + /[Z\x{100}]/utf +-Memory allocation - compiled block : 183 +-Memory allocation - code portion   : 47 ++Memory allocation - code size : 47 + ------------------------------------------------------------------ +   0  43 Bra +   3     [Z\x{100}] +@@ -463,8 +432,7 @@ Memory allocation - code portion   : 47 + ------------------------------------------------------------------ +  + /^[\x{100}\E-\Q\E\x{150}]/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0  14 Bra +   3     ^ +@@ -474,8 +442,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /^[\QĀ\E-\QŐ\E]/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0  14 Bra +   3     ^ +@@ -488,8 +455,7 @@ Memory allocation - code portion   : 18 + Failed: error 106 at offset 15: missing terminating ] for character class +  + /[\p{L}]/ +-Memory allocation - compiled block : 151 +-Memory allocation - code portion   : 15 ++Memory allocation - code size : 15 + ------------------------------------------------------------------ +   0  11 Bra +   3     [\p{L}] +@@ -498,8 +464,7 @@ Memory allocation - code portion   : 15 + ------------------------------------------------------------------ +  + /[\p{^L}]/ +-Memory allocation - compiled block : 151 +-Memory allocation - code portion   : 15 ++Memory allocation - code size : 15 + ------------------------------------------------------------------ +   0  11 Bra +   3     [\P{L}] +@@ -508,8 +473,7 @@ Memory allocation - code portion   : 15 + ------------------------------------------------------------------ +  + /[\P{L}]/ +-Memory allocation - compiled block : 151 +-Memory allocation - code portion   : 15 ++Memory allocation - code size : 15 + ------------------------------------------------------------------ +   0  11 Bra +   3     [\P{L}] +@@ -518,8 +482,7 @@ Memory allocation - code portion   : 15 + ------------------------------------------------------------------ +  + /[\P{^L}]/ +-Memory allocation - compiled block : 151 +-Memory allocation - code portion   : 15 ++Memory allocation - code size : 15 + ------------------------------------------------------------------ +   0  11 Bra +   3     [\p{L}] +@@ -528,8 +491,7 @@ Memory allocation - code portion   : 15 + ------------------------------------------------------------------ +  + /[abc\p{L}\x{0660}]/utf +-Memory allocation - compiled block : 186 +-Memory allocation - code portion   : 50 ++Memory allocation - code size : 50 + ------------------------------------------------------------------ +   0  46 Bra +   3     [a-c\p{L}\x{660}] +@@ -538,8 +500,7 @@ Memory allocation - code portion   : 50 + ------------------------------------------------------------------ +  + /[\p{Nd}]/utf +-Memory allocation - compiled block : 151 +-Memory allocation - code portion   : 15 ++Memory allocation - code size : 15 + ------------------------------------------------------------------ +   0  11 Bra +   3     [\p{Nd}] +@@ -548,8 +509,7 @@ Memory allocation - code portion   : 15 + ------------------------------------------------------------------ +  + /[\p{Nd}+-]+/utf +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 48 ++Memory allocation - code size : 48 + ------------------------------------------------------------------ +   0  44 Bra +   3     [+\-\p{Nd}]++ +@@ -558,8 +518,7 @@ Memory allocation - code portion   : 48 + ------------------------------------------------------------------ +  + /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/i,utf +-Memory allocation - compiled block : 161 +-Memory allocation - code portion   : 25 ++Memory allocation - code size : 25 + ------------------------------------------------------------------ +   0  21 Bra +   3  /i A\x{391}\x{10427}\x{ff3a}\x{1fb0} +@@ -568,8 +527,7 @@ Memory allocation - code portion   : 25 + ------------------------------------------------------------------ +  + /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/utf +-Memory allocation - compiled block : 161 +-Memory allocation - code portion   : 25 ++Memory allocation - code size : 25 + ------------------------------------------------------------------ +   0  21 Bra +   3     A\x{391}\x{10427}\x{ff3a}\x{1fb0} +@@ -578,8 +536,7 @@ Memory allocation - code portion   : 25 + ------------------------------------------------------------------ +  + /[\x{105}-\x{109}]/i,utf +-Memory allocation - compiled block : 153 +-Memory allocation - code portion   : 17 ++Memory allocation - code size : 17 + ------------------------------------------------------------------ +   0  13 Bra +   3     [\x{104}-\x{109}] +@@ -588,8 +545,7 @@ Memory allocation - code portion   : 17 + ------------------------------------------------------------------ +  + /( ( (?(1)0|) )*   )/x +-Memory allocation - compiled block : 174 +-Memory allocation - code portion   : 38 ++Memory allocation - code size : 38 + ------------------------------------------------------------------ +   0  34 Bra +   3  28 CBra 1 +@@ -607,8 +563,7 @@ Memory allocation - code portion   : 38 + ------------------------------------------------------------------ +  + /(  (?(1)0|)*   )/x +-Memory allocation - compiled block : 166 +-Memory allocation - code portion   : 30 ++Memory allocation - code size : 30 + ------------------------------------------------------------------ +   0  26 Bra +   3  20 CBra 1 +@@ -624,8 +579,7 @@ Memory allocation - code portion   : 30 + ------------------------------------------------------------------ +  + /[a]/ +-Memory allocation - compiled block : 145 +-Memory allocation - code portion   : 9 ++Memory allocation - code size : 9 + ------------------------------------------------------------------ +   0   5 Bra +   3     a +@@ -634,8 +588,7 @@ Memory allocation - code portion   : 9 + ------------------------------------------------------------------ +  + /[a]/utf +-Memory allocation - compiled block : 145 +-Memory allocation - code portion   : 9 ++Memory allocation - code size : 9 + ------------------------------------------------------------------ +   0   5 Bra +   3     a +@@ -644,8 +597,7 @@ Memory allocation - code portion   : 9 + ------------------------------------------------------------------ +  + /[\xaa]/ +-Memory allocation - compiled block : 145 +-Memory allocation - code portion   : 9 ++Memory allocation - code size : 9 + ------------------------------------------------------------------ +   0   5 Bra +   3     \x{aa} +@@ -654,8 +606,7 @@ Memory allocation - code portion   : 9 + ------------------------------------------------------------------ +  + /[\xaa]/utf +-Memory allocation - compiled block : 146 +-Memory allocation - code portion   : 10 ++Memory allocation - code size : 10 + ------------------------------------------------------------------ +   0   6 Bra +   3     \x{aa} +@@ -664,8 +615,7 @@ Memory allocation - code portion   : 10 + ------------------------------------------------------------------ +  + /[^a]/ +-Memory allocation - compiled block : 145 +-Memory allocation - code portion   : 9 ++Memory allocation - code size : 9 + ------------------------------------------------------------------ +   0   5 Bra +   3     [^a] +@@ -674,8 +624,7 @@ Memory allocation - code portion   : 9 + ------------------------------------------------------------------ +  + /[^a]/utf +-Memory allocation - compiled block : 145 +-Memory allocation - code portion   : 9 ++Memory allocation - code size : 9 + ------------------------------------------------------------------ +   0   5 Bra +   3     [^a] +@@ -684,8 +633,7 @@ Memory allocation - code portion   : 9 + ------------------------------------------------------------------ +  + /[^\xaa]/ +-Memory allocation - compiled block : 145 +-Memory allocation - code portion   : 9 ++Memory allocation - code size : 9 + ------------------------------------------------------------------ +   0   5 Bra +   3     [^\x{aa}] +@@ -694,8 +642,7 @@ Memory allocation - code portion   : 9 + ------------------------------------------------------------------ +  + /[^\xaa]/utf +-Memory allocation - compiled block : 146 +-Memory allocation - code portion   : 10 ++Memory allocation - code size : 10 + ------------------------------------------------------------------ +   0   6 Bra +   3     [^\x{aa}] +diff --git a/testdata/testoutput8-8-3 b/testdata/testoutput8-8-3 +index 48e0b8aab..2657ce899 100644 +--- a/testdata/testoutput8-8-3 ++++ b/testdata/testoutput8-8-3 +@@ -10,8 +10,7 @@ + #pattern fullbincode,memory +  + /((?i)b)/ +-Memory allocation - compiled block : 157 +-Memory allocation - code portion   : 21 ++Memory allocation - code size : 21 + ------------------------------------------------------------------ +   0  16 Bra +   4   8 CBra 1 +@@ -22,8 +21,7 @@ Memory allocation - code portion   : 21 + ------------------------------------------------------------------ +  + /(?s)(.*X|^B)/ +-Memory allocation - compiled block : 166 +-Memory allocation - code portion   : 30 ++Memory allocation - code size : 30 + ------------------------------------------------------------------ +   0  25 Bra +   4  10 CBra 1 +@@ -38,8 +36,7 @@ Memory allocation - code portion   : 30 + ------------------------------------------------------------------ +  + /(?s:.*X|^B)/ +-Memory allocation - compiled block : 164 +-Memory allocation - code portion   : 28 ++Memory allocation - code size : 28 + ------------------------------------------------------------------ +   0  23 Bra +   4   8 Bra +@@ -54,8 +51,7 @@ Memory allocation - code portion   : 28 + ------------------------------------------------------------------ +  + /^[[:alnum:]]/ +-Memory allocation - compiled block : 179 +-Memory allocation - code portion   : 43 ++Memory allocation - code size : 43 + ------------------------------------------------------------------ +   0  38 Bra +   4     ^ +@@ -65,8 +61,7 @@ Memory allocation - code portion   : 43 + ------------------------------------------------------------------ +  + /#/Ix +-Memory allocation - compiled block : 145 +-Memory allocation - code portion   : 9 ++Memory allocation - code size : 9 + ------------------------------------------------------------------ +   0   4 Bra +   4   4 Ket +@@ -78,8 +73,7 @@ Options: extended + Subject length lower bound = 0 +  + /a#/Ix +-Memory allocation - compiled block : 147 +-Memory allocation - code portion   : 11 ++Memory allocation - code size : 11 + ------------------------------------------------------------------ +   0   6 Bra +   4     a +@@ -92,8 +86,7 @@ First code unit = 'a' + Subject length lower bound = 1 +  + /x?+/ +-Memory allocation - compiled block : 147 +-Memory allocation - code portion   : 11 ++Memory allocation - code size : 11 + ------------------------------------------------------------------ +   0   6 Bra +   4     x?+ +@@ -102,8 +95,7 @@ Memory allocation - code portion   : 11 + ------------------------------------------------------------------ +  + /x++/ +-Memory allocation - compiled block : 147 +-Memory allocation - code portion   : 11 ++Memory allocation - code size : 11 + ------------------------------------------------------------------ +   0   6 Bra +   4     x++ +@@ -112,8 +104,7 @@ Memory allocation - code portion   : 11 + ------------------------------------------------------------------ +  + /x{1,3}+/ +-Memory allocation - compiled block : 151 +-Memory allocation - code portion   : 15 ++Memory allocation - code size : 15 + ------------------------------------------------------------------ +   0  10 Bra +   4     x +@@ -123,8 +114,7 @@ Memory allocation - code portion   : 15 + ------------------------------------------------------------------ +  + /(x)*+/ +-Memory allocation - compiled block : 158 +-Memory allocation - code portion   : 22 ++Memory allocation - code size : 22 + ------------------------------------------------------------------ +   0  17 Bra +   4     Braposzero +@@ -136,8 +126,7 @@ Memory allocation - code portion   : 22 + ------------------------------------------------------------------ +  + /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/ +-Memory allocation - compiled block : 268 +-Memory allocation - code portion   : 132 ++Memory allocation - code size : 132 + ------------------------------------------------------------------ +   0 127 Bra +   4     ^ +@@ -160,8 +149,7 @@ Memory allocation - code portion   : 132 + ------------------------------------------------------------------ +  + "8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b" +-Memory allocation - compiled block : 964 +-Memory allocation - code portion   : 828 ++Memory allocation - code size : 828 + ------------------------------------------------------------------ +   0 823 Bra +   4     8J$WE<.rX+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X +@@ -171,8 +159,7 @@ Memory allocation - code portion   : 828 + ------------------------------------------------------------------ +  + "\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b" +-Memory allocation - compiled block : 954 +-Memory allocation - code portion   : 818 ++Memory allocation - code size : 818 + ------------------------------------------------------------------ +   0 813 Bra +   4     $<.X+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X +@@ -182,8 +169,7 @@ Memory allocation - code portion   : 818 + ------------------------------------------------------------------ +  + /(a(?1)b)/ +-Memory allocation - compiled block : 163 +-Memory allocation - code portion   : 27 ++Memory allocation - code size : 27 + ------------------------------------------------------------------ +   0  22 Bra +   4  14 CBra 1 +@@ -196,8 +182,7 @@ Memory allocation - code portion   : 27 + ------------------------------------------------------------------ +  + /(a(?1)+b)/ +-Memory allocation - compiled block : 171 +-Memory allocation - code portion   : 35 ++Memory allocation - code size : 35 + ------------------------------------------------------------------ +   0  30 Bra +   4  22 CBra 1 +@@ -212,8 +197,8 @@ Memory allocation - code portion   : 35 + ------------------------------------------------------------------ +  + /a(?P<name1>b|c)d(?P<longername2>e)/ +-Memory allocation - compiled block : 207 +-Memory allocation - code portion   : 43 ++Memory allocation - code size : 43 ++Memory allocation - data size : 28 + ------------------------------------------------------------------ +   0  38 Bra +   4     a +@@ -231,8 +216,8 @@ Memory allocation - code portion   : 43 + ------------------------------------------------------------------ +  + /(?:a(?P<c>c(?P<d>d)))(?P<a>a)/ +-Memory allocation - compiled block : 203 +-Memory allocation - code portion   : 55 ++Memory allocation - code size : 55 ++Memory allocation - data size : 12 + ------------------------------------------------------------------ +   0  50 Bra +   4  30 Bra +@@ -252,8 +237,8 @@ Memory allocation - code portion   : 55 + ------------------------------------------------------------------ +  + /(?P<a>a)...(?P=a)bbb(?P>a)d/ +-Memory allocation - compiled block : 179 +-Memory allocation - code portion   : 39 ++Memory allocation - code size : 39 ++Memory allocation - data size : 4 + ------------------------------------------------------------------ +   0  34 Bra +   4   8 CBra 1 +@@ -271,8 +256,7 @@ Memory allocation - code portion   : 39 + ------------------------------------------------------------------ +  + /abc(?C255)de(?C)f/ +-Memory allocation - compiled block : 173 +-Memory allocation - code portion   : 37 ++Memory allocation - code size : 37 + ------------------------------------------------------------------ +   0  32 Bra +   4     abc +@@ -285,8 +269,7 @@ Memory allocation - code portion   : 37 + ------------------------------------------------------------------ +  + /abcde/auto_callout +-Memory allocation - compiled block : 203 +-Memory allocation - code portion   : 67 ++Memory allocation - code size : 67 + ------------------------------------------------------------------ +   0  62 Bra +   4     Callout 255 0 1 +@@ -305,8 +288,7 @@ Memory allocation - code portion   : 67 + ------------------------------------------------------------------ +  + /\x{100}/utf +-Memory allocation - compiled block : 148 +-Memory allocation - code portion   : 12 ++Memory allocation - code size : 12 + ------------------------------------------------------------------ +   0   7 Bra +   4     \x{100} +@@ -315,8 +297,7 @@ Memory allocation - code portion   : 12 + ------------------------------------------------------------------ +  + /\x{1000}/utf +-Memory allocation - compiled block : 149 +-Memory allocation - code portion   : 13 ++Memory allocation - code size : 13 + ------------------------------------------------------------------ +   0   8 Bra +   4     \x{1000} +@@ -325,8 +306,7 @@ Memory allocation - code portion   : 13 + ------------------------------------------------------------------ +  + /\x{10000}/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   9 Bra +   4     \x{10000} +@@ -335,8 +315,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /\x{100000}/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   9 Bra +   4     \x{100000} +@@ -345,8 +324,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /\x{10ffff}/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   9 Bra +   4     \x{10ffff} +@@ -358,8 +336,7 @@ Memory allocation - code portion   : 14 + Failed: error 134 at offset 9: character code point value in \x{} or \o{} is too large +  + /[\x{ff}]/utf +-Memory allocation - compiled block : 148 +-Memory allocation - code portion   : 12 ++Memory allocation - code size : 12 + ------------------------------------------------------------------ +   0   7 Bra +   4     \x{ff} +@@ -368,8 +345,7 @@ Memory allocation - code portion   : 12 + ------------------------------------------------------------------ +  + /[\x{100}]/utf +-Memory allocation - compiled block : 148 +-Memory allocation - code portion   : 12 ++Memory allocation - code size : 12 + ------------------------------------------------------------------ +   0   7 Bra +   4     \x{100} +@@ -378,8 +354,7 @@ Memory allocation - code portion   : 12 + ------------------------------------------------------------------ +  + /\x80/utf +-Memory allocation - compiled block : 148 +-Memory allocation - code portion   : 12 ++Memory allocation - code size : 12 + ------------------------------------------------------------------ +   0   7 Bra +   4     \x{80} +@@ -388,8 +363,7 @@ Memory allocation - code portion   : 12 + ------------------------------------------------------------------ +  + /\xff/utf +-Memory allocation - compiled block : 148 +-Memory allocation - code portion   : 12 ++Memory allocation - code size : 12 + ------------------------------------------------------------------ +   0   7 Bra +   4     \x{ff} +@@ -398,8 +372,7 @@ Memory allocation - code portion   : 12 + ------------------------------------------------------------------ +  + /\x{0041}\x{2262}\x{0391}\x{002e}/I,utf +-Memory allocation - compiled block : 156 +-Memory allocation - code portion   : 20 ++Memory allocation - code size : 20 + ------------------------------------------------------------------ +   0  15 Bra +   4     A\x{2262}\x{391}. +@@ -413,8 +386,7 @@ Last code unit = '.' + Subject length lower bound = 4 +  + /\x{D55c}\x{ad6d}\x{C5B4}/I,utf +-Memory allocation - compiled block : 157 +-Memory allocation - code portion   : 21 ++Memory allocation - code size : 21 + ------------------------------------------------------------------ +   0  16 Bra +   4     \x{d55c}\x{ad6d}\x{c5b4} +@@ -428,8 +400,7 @@ Last code unit = \xb4 + Subject length lower bound = 3 +  + /\x{65e5}\x{672c}\x{8a9e}/I,utf +-Memory allocation - compiled block : 157 +-Memory allocation - code portion   : 21 ++Memory allocation - code size : 21 + ------------------------------------------------------------------ +   0  16 Bra +   4     \x{65e5}\x{672c}\x{8a9e} +@@ -443,8 +414,7 @@ Last code unit = \x9e + Subject length lower bound = 3 +  + /[\x{100}]/utf +-Memory allocation - compiled block : 148 +-Memory allocation - code portion   : 12 ++Memory allocation - code size : 12 + ------------------------------------------------------------------ +   0   7 Bra +   4     \x{100} +@@ -453,8 +423,7 @@ Memory allocation - code portion   : 12 + ------------------------------------------------------------------ +  + /[Z\x{100}]/utf +-Memory allocation - compiled block : 186 +-Memory allocation - code portion   : 50 ++Memory allocation - code size : 50 + ------------------------------------------------------------------ +   0  45 Bra +   4     [Z\x{100}] +@@ -463,8 +432,7 @@ Memory allocation - code portion   : 50 + ------------------------------------------------------------------ +  + /^[\x{100}\E-\Q\E\x{150}]/utf +-Memory allocation - compiled block : 157 +-Memory allocation - code portion   : 21 ++Memory allocation - code size : 21 + ------------------------------------------------------------------ +   0  16 Bra +   4     ^ +@@ -474,8 +442,7 @@ Memory allocation - code portion   : 21 + ------------------------------------------------------------------ +  + /^[\QĀ\E-\QŐ\E]/utf +-Memory allocation - compiled block : 157 +-Memory allocation - code portion   : 21 ++Memory allocation - code size : 21 + ------------------------------------------------------------------ +   0  16 Bra +   4     ^ +@@ -488,8 +455,7 @@ Memory allocation - code portion   : 21 + Failed: error 106 at offset 15: missing terminating ] for character class +  + /[\p{L}]/ +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0  13 Bra +   4     [\p{L}] +@@ -498,8 +464,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[\p{^L}]/ +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0  13 Bra +   4     [\P{L}] +@@ -508,8 +473,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[\P{L}]/ +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0  13 Bra +   4     [\P{L}] +@@ -518,8 +482,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[\P{^L}]/ +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0  13 Bra +   4     [\p{L}] +@@ -528,8 +491,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[abc\p{L}\x{0660}]/utf +-Memory allocation - compiled block : 189 +-Memory allocation - code portion   : 53 ++Memory allocation - code size : 53 + ------------------------------------------------------------------ +   0  48 Bra +   4     [a-c\p{L}\x{660}] +@@ -538,8 +500,7 @@ Memory allocation - code portion   : 53 + ------------------------------------------------------------------ +  + /[\p{Nd}]/utf +-Memory allocation - compiled block : 154 +-Memory allocation - code portion   : 18 ++Memory allocation - code size : 18 + ------------------------------------------------------------------ +   0  13 Bra +   4     [\p{Nd}] +@@ -548,8 +509,7 @@ Memory allocation - code portion   : 18 + ------------------------------------------------------------------ +  + /[\p{Nd}+-]+/utf +-Memory allocation - compiled block : 187 +-Memory allocation - code portion   : 51 ++Memory allocation - code size : 51 + ------------------------------------------------------------------ +   0  46 Bra +   4     [+\-\p{Nd}]++ +@@ -558,8 +518,7 @@ Memory allocation - code portion   : 51 + ------------------------------------------------------------------ +  + /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/i,utf +-Memory allocation - compiled block : 163 +-Memory allocation - code portion   : 27 ++Memory allocation - code size : 27 + ------------------------------------------------------------------ +   0  22 Bra +   4  /i A\x{391}\x{10427}\x{ff3a}\x{1fb0} +@@ -568,8 +527,7 @@ Memory allocation - code portion   : 27 + ------------------------------------------------------------------ +  + /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/utf +-Memory allocation - compiled block : 163 +-Memory allocation - code portion   : 27 ++Memory allocation - code size : 27 + ------------------------------------------------------------------ +   0  22 Bra +   4     A\x{391}\x{10427}\x{ff3a}\x{1fb0} +@@ -578,8 +536,7 @@ Memory allocation - code portion   : 27 + ------------------------------------------------------------------ +  + /[\x{105}-\x{109}]/i,utf +-Memory allocation - compiled block : 156 +-Memory allocation - code portion   : 20 ++Memory allocation - code size : 20 + ------------------------------------------------------------------ +   0  15 Bra +   4     [\x{104}-\x{109}] +@@ -588,8 +545,7 @@ Memory allocation - code portion   : 20 + ------------------------------------------------------------------ +  + /( ( (?(1)0|) )*   )/x +-Memory allocation - compiled block : 183 +-Memory allocation - code portion   : 47 ++Memory allocation - code size : 47 + ------------------------------------------------------------------ +   0  42 Bra +   4  34 CBra 1 +@@ -607,8 +563,7 @@ Memory allocation - code portion   : 47 + ------------------------------------------------------------------ +  + /(  (?(1)0|)*   )/x +-Memory allocation - compiled block : 173 +-Memory allocation - code portion   : 37 ++Memory allocation - code size : 37 + ------------------------------------------------------------------ +   0  32 Bra +   4  24 CBra 1 +@@ -624,8 +579,7 @@ Memory allocation - code portion   : 37 + ------------------------------------------------------------------ +  + /[a]/ +-Memory allocation - compiled block : 147 +-Memory allocation - code portion   : 11 ++Memory allocation - code size : 11 + ------------------------------------------------------------------ +   0   6 Bra +   4     a +@@ -634,8 +588,7 @@ Memory allocation - code portion   : 11 + ------------------------------------------------------------------ +  + /[a]/utf +-Memory allocation - compiled block : 147 +-Memory allocation - code portion   : 11 ++Memory allocation - code size : 11 + ------------------------------------------------------------------ +   0   6 Bra +   4     a +@@ -644,8 +597,7 @@ Memory allocation - code portion   : 11 + ------------------------------------------------------------------ +  + /[\xaa]/ +-Memory allocation - compiled block : 147 +-Memory allocation - code portion   : 11 ++Memory allocation - code size : 11 + ------------------------------------------------------------------ +   0   6 Bra +   4     \x{aa} +@@ -654,8 +606,7 @@ Memory allocation - code portion   : 11 + ------------------------------------------------------------------ +  + /[\xaa]/utf +-Memory allocation - compiled block : 148 +-Memory allocation - code portion   : 12 ++Memory allocation - code size : 12 + ------------------------------------------------------------------ +   0   7 Bra +   4     \x{aa} +@@ -664,8 +615,7 @@ Memory allocation - code portion   : 12 + ------------------------------------------------------------------ +  + /[^a]/ +-Memory allocation - compiled block : 147 +-Memory allocation - code portion   : 11 ++Memory allocation - code size : 11 + ------------------------------------------------------------------ +   0   6 Bra +   4     [^a] +@@ -674,8 +624,7 @@ Memory allocation - code portion   : 11 + ------------------------------------------------------------------ +  + /[^a]/utf +-Memory allocation - compiled block : 147 +-Memory allocation - code portion   : 11 ++Memory allocation - code size : 11 + ------------------------------------------------------------------ +   0   6 Bra +   4     [^a] +@@ -684,8 +633,7 @@ Memory allocation - code portion   : 11 + ------------------------------------------------------------------ +  + /[^\xaa]/ +-Memory allocation - compiled block : 147 +-Memory allocation - code portion   : 11 ++Memory allocation - code size : 11 + ------------------------------------------------------------------ +   0   6 Bra +   4     [^\x{aa}] +@@ -694,8 +642,7 @@ Memory allocation - code portion   : 11 + ------------------------------------------------------------------ +  + /[^\xaa]/utf +-Memory allocation - compiled block : 148 +-Memory allocation - code portion   : 12 ++Memory allocation - code size : 12 + ------------------------------------------------------------------ +   0   7 Bra +   4     [^\x{aa}] +diff --git a/testdata/testoutput8-8-4 b/testdata/testoutput8-8-4 +index 81cf0f763..8bfac41a4 100644 +--- a/testdata/testoutput8-8-4 ++++ b/testdata/testoutput8-8-4 +@@ -10,8 +10,7 @@ + #pattern fullbincode,memory +  + /((?i)b)/ +-Memory allocation - compiled block : 161 +-Memory allocation - code portion   : 25 ++Memory allocation - code size : 25 + ------------------------------------------------------------------ +   0  19 Bra +   5   9 CBra 1 +@@ -22,8 +21,7 @@ Memory allocation - code portion   : 25 + ------------------------------------------------------------------ +  + /(?s)(.*X|^B)/ +-Memory allocation - compiled block : 171 +-Memory allocation - code portion   : 35 ++Memory allocation - code size : 35 + ------------------------------------------------------------------ +   0  29 Bra +   5  11 CBra 1 +@@ -38,8 +36,7 @@ Memory allocation - code portion   : 35 + ------------------------------------------------------------------ +  + /(?s:.*X|^B)/ +-Memory allocation - compiled block : 169 +-Memory allocation - code portion   : 33 ++Memory allocation - code size : 33 + ------------------------------------------------------------------ +   0  27 Bra +   5   9 Bra +@@ -54,8 +51,7 @@ Memory allocation - code portion   : 33 + ------------------------------------------------------------------ +  + /^[[:alnum:]]/ +-Memory allocation - compiled block : 181 +-Memory allocation - code portion   : 45 ++Memory allocation - code size : 45 + ------------------------------------------------------------------ +   0  39 Bra +   5     ^ +@@ -65,8 +61,7 @@ Memory allocation - code portion   : 45 + ------------------------------------------------------------------ +  + /#/Ix +-Memory allocation - compiled block : 147 +-Memory allocation - code portion   : 11 ++Memory allocation - code size : 11 + ------------------------------------------------------------------ +   0   5 Bra +   5   5 Ket +@@ -78,8 +73,7 @@ Options: extended + Subject length lower bound = 0 +  + /a#/Ix +-Memory allocation - compiled block : 149 +-Memory allocation - code portion   : 13 ++Memory allocation - code size : 13 + ------------------------------------------------------------------ +   0   7 Bra +   5     a +@@ -92,8 +86,7 @@ First code unit = 'a' + Subject length lower bound = 1 +  + /x?+/ +-Memory allocation - compiled block : 149 +-Memory allocation - code portion   : 13 ++Memory allocation - code size : 13 + ------------------------------------------------------------------ +   0   7 Bra +   5     x?+ +@@ -102,8 +95,7 @@ Memory allocation - code portion   : 13 + ------------------------------------------------------------------ +  + /x++/ +-Memory allocation - compiled block : 149 +-Memory allocation - code portion   : 13 ++Memory allocation - code size : 13 + ------------------------------------------------------------------ +   0   7 Bra +   5     x++ +@@ -112,8 +104,7 @@ Memory allocation - code portion   : 13 + ------------------------------------------------------------------ +  + /x{1,3}+/ +-Memory allocation - compiled block : 153 +-Memory allocation - code portion   : 17 ++Memory allocation - code size : 17 + ------------------------------------------------------------------ +   0  11 Bra +   5     x +@@ -123,8 +114,7 @@ Memory allocation - code portion   : 17 + ------------------------------------------------------------------ +  + /(x)*+/ +-Memory allocation - compiled block : 162 +-Memory allocation - code portion   : 26 ++Memory allocation - code size : 26 + ------------------------------------------------------------------ +   0  20 Bra +   5     Braposzero +@@ -136,8 +126,7 @@ Memory allocation - code portion   : 26 + ------------------------------------------------------------------ +  + /^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/ +-Memory allocation - compiled block : 280 +-Memory allocation - code portion   : 144 ++Memory allocation - code size : 144 + ------------------------------------------------------------------ +   0 138 Bra +   5     ^ +@@ -160,8 +149,7 @@ Memory allocation - code portion   : 144 + ------------------------------------------------------------------ +  + "8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b" +-Memory allocation - compiled block : 966 +-Memory allocation - code portion   : 830 ++Memory allocation - code size : 830 + ------------------------------------------------------------------ +   0 824 Bra +   5     8J$WE<.rX+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X +@@ -171,8 +159,7 @@ Memory allocation - code portion   : 830 + ------------------------------------------------------------------ +  + "\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b" +-Memory allocation - compiled block : 956 +-Memory allocation - code portion   : 820 ++Memory allocation - code size : 820 + ------------------------------------------------------------------ +   0 814 Bra +   5     $<.X+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X +@@ -182,8 +169,7 @@ Memory allocation - code portion   : 820 + ------------------------------------------------------------------ +  + /(a(?1)b)/ +-Memory allocation - compiled block : 168 +-Memory allocation - code portion   : 32 ++Memory allocation - code size : 32 + ------------------------------------------------------------------ +   0  26 Bra +   5  16 CBra 1 +@@ -196,8 +182,7 @@ Memory allocation - code portion   : 32 + ------------------------------------------------------------------ +  + /(a(?1)+b)/ +-Memory allocation - compiled block : 178 +-Memory allocation - code portion   : 42 ++Memory allocation - code size : 42 + ------------------------------------------------------------------ +   0  36 Bra +   5  26 CBra 1 +@@ -212,8 +197,8 @@ Memory allocation - code portion   : 42 + ------------------------------------------------------------------ +  + /a(?P<name1>b|c)d(?P<longername2>e)/ +-Memory allocation - compiled block : 214 +-Memory allocation - code portion   : 50 ++Memory allocation - code size : 50 ++Memory allocation - data size : 28 + ------------------------------------------------------------------ +   0  44 Bra +   5     a +@@ -231,8 +216,8 @@ Memory allocation - code portion   : 50 + ------------------------------------------------------------------ +  + /(?:a(?P<c>c(?P<d>d)))(?P<a>a)/ +-Memory allocation - compiled block : 213 +-Memory allocation - code portion   : 65 ++Memory allocation - code size : 65 ++Memory allocation - data size : 12 + ------------------------------------------------------------------ +   0  59 Bra +   5  35 Bra +@@ -252,8 +237,8 @@ Memory allocation - code portion   : 65 + ------------------------------------------------------------------ +  + /(?P<a>a)...(?P=a)bbb(?P>a)d/ +-Memory allocation - compiled block : 184 +-Memory allocation - code portion   : 44 ++Memory allocation - code size : 44 ++Memory allocation - data size : 4 + ------------------------------------------------------------------ +   0  38 Bra +   5   9 CBra 1 +@@ -271,8 +256,7 @@ Memory allocation - code portion   : 44 + ------------------------------------------------------------------ +  + /abc(?C255)de(?C)f/ +-Memory allocation - compiled block : 179 +-Memory allocation - code portion   : 43 ++Memory allocation - code size : 43 + ------------------------------------------------------------------ +   0  37 Bra +   5     abc +@@ -285,8 +269,7 @@ Memory allocation - code portion   : 43 + ------------------------------------------------------------------ +  + /abcde/auto_callout +-Memory allocation - compiled block : 217 +-Memory allocation - code portion   : 81 ++Memory allocation - code size : 81 + ------------------------------------------------------------------ +   0  75 Bra +   5     Callout 255 0 1 +@@ -305,8 +288,7 @@ Memory allocation - code portion   : 81 + ------------------------------------------------------------------ +  + /\x{100}/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   8 Bra +   5     \x{100} +@@ -315,8 +297,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /\x{1000}/utf +-Memory allocation - compiled block : 151 +-Memory allocation - code portion   : 15 ++Memory allocation - code size : 15 + ------------------------------------------------------------------ +   0   9 Bra +   5     \x{1000} +@@ -325,8 +306,7 @@ Memory allocation - code portion   : 15 + ------------------------------------------------------------------ +  + /\x{10000}/utf +-Memory allocation - compiled block : 152 +-Memory allocation - code portion   : 16 ++Memory allocation - code size : 16 + ------------------------------------------------------------------ +   0  10 Bra +   5     \x{10000} +@@ -335,8 +315,7 @@ Memory allocation - code portion   : 16 + ------------------------------------------------------------------ +  + /\x{100000}/utf +-Memory allocation - compiled block : 152 +-Memory allocation - code portion   : 16 ++Memory allocation - code size : 16 + ------------------------------------------------------------------ +   0  10 Bra +   5     \x{100000} +@@ -345,8 +324,7 @@ Memory allocation - code portion   : 16 + ------------------------------------------------------------------ +  + /\x{10ffff}/utf +-Memory allocation - compiled block : 152 +-Memory allocation - code portion   : 16 ++Memory allocation - code size : 16 + ------------------------------------------------------------------ +   0  10 Bra +   5     \x{10ffff} +@@ -358,8 +336,7 @@ Memory allocation - code portion   : 16 + Failed: error 134 at offset 9: character code point value in \x{} or \o{} is too large +  + /[\x{ff}]/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   8 Bra +   5     \x{ff} +@@ -368,8 +345,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /[\x{100}]/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   8 Bra +   5     \x{100} +@@ -378,8 +354,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /\x80/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   8 Bra +   5     \x{80} +@@ -388,8 +363,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /\xff/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   8 Bra +   5     \x{ff} +@@ -398,8 +372,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /\x{0041}\x{2262}\x{0391}\x{002e}/I,utf +-Memory allocation - compiled block : 158 +-Memory allocation - code portion   : 22 ++Memory allocation - code size : 22 + ------------------------------------------------------------------ +   0  16 Bra +   5     A\x{2262}\x{391}. +@@ -413,8 +386,7 @@ Last code unit = '.' + Subject length lower bound = 4 +  + /\x{D55c}\x{ad6d}\x{C5B4}/I,utf +-Memory allocation - compiled block : 159 +-Memory allocation - code portion   : 23 ++Memory allocation - code size : 23 + ------------------------------------------------------------------ +   0  17 Bra +   5     \x{d55c}\x{ad6d}\x{c5b4} +@@ -428,8 +400,7 @@ Last code unit = \xb4 + Subject length lower bound = 3 +  + /\x{65e5}\x{672c}\x{8a9e}/I,utf +-Memory allocation - compiled block : 159 +-Memory allocation - code portion   : 23 ++Memory allocation - code size : 23 + ------------------------------------------------------------------ +   0  17 Bra +   5     \x{65e5}\x{672c}\x{8a9e} +@@ -443,8 +414,7 @@ Last code unit = \x9e + Subject length lower bound = 3 +  + /[\x{100}]/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   8 Bra +   5     \x{100} +@@ -453,8 +423,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /[Z\x{100}]/utf +-Memory allocation - compiled block : 189 +-Memory allocation - code portion   : 53 ++Memory allocation - code size : 53 + ------------------------------------------------------------------ +   0  47 Bra +   5     [Z\x{100}] +@@ -463,8 +432,7 @@ Memory allocation - code portion   : 53 + ------------------------------------------------------------------ +  + /^[\x{100}\E-\Q\E\x{150}]/utf +-Memory allocation - compiled block : 160 +-Memory allocation - code portion   : 24 ++Memory allocation - code size : 24 + ------------------------------------------------------------------ +   0  18 Bra +   5     ^ +@@ -474,8 +442,7 @@ Memory allocation - code portion   : 24 + ------------------------------------------------------------------ +  + /^[\QĀ\E-\QŐ\E]/utf +-Memory allocation - compiled block : 160 +-Memory allocation - code portion   : 24 ++Memory allocation - code size : 24 + ------------------------------------------------------------------ +   0  18 Bra +   5     ^ +@@ -488,8 +455,7 @@ Memory allocation - code portion   : 24 + Failed: error 106 at offset 15: missing terminating ] for character class +  + /[\p{L}]/ +-Memory allocation - compiled block : 157 +-Memory allocation - code portion   : 21 ++Memory allocation - code size : 21 + ------------------------------------------------------------------ +   0  15 Bra +   5     [\p{L}] +@@ -498,8 +464,7 @@ Memory allocation - code portion   : 21 + ------------------------------------------------------------------ +  + /[\p{^L}]/ +-Memory allocation - compiled block : 157 +-Memory allocation - code portion   : 21 ++Memory allocation - code size : 21 + ------------------------------------------------------------------ +   0  15 Bra +   5     [\P{L}] +@@ -508,8 +473,7 @@ Memory allocation - code portion   : 21 + ------------------------------------------------------------------ +  + /[\P{L}]/ +-Memory allocation - compiled block : 157 +-Memory allocation - code portion   : 21 ++Memory allocation - code size : 21 + ------------------------------------------------------------------ +   0  15 Bra +   5     [\P{L}] +@@ -518,8 +482,7 @@ Memory allocation - code portion   : 21 + ------------------------------------------------------------------ +  + /[\P{^L}]/ +-Memory allocation - compiled block : 157 +-Memory allocation - code portion   : 21 ++Memory allocation - code size : 21 + ------------------------------------------------------------------ +   0  15 Bra +   5     [\p{L}] +@@ -528,8 +491,7 @@ Memory allocation - code portion   : 21 + ------------------------------------------------------------------ +  + /[abc\p{L}\x{0660}]/utf +-Memory allocation - compiled block : 192 +-Memory allocation - code portion   : 56 ++Memory allocation - code size : 56 + ------------------------------------------------------------------ +   0  50 Bra +   5     [a-c\p{L}\x{660}] +@@ -538,8 +500,7 @@ Memory allocation - code portion   : 56 + ------------------------------------------------------------------ +  + /[\p{Nd}]/utf +-Memory allocation - compiled block : 157 +-Memory allocation - code portion   : 21 ++Memory allocation - code size : 21 + ------------------------------------------------------------------ +   0  15 Bra +   5     [\p{Nd}] +@@ -548,8 +509,7 @@ Memory allocation - code portion   : 21 + ------------------------------------------------------------------ +  + /[\p{Nd}+-]+/utf +-Memory allocation - compiled block : 190 +-Memory allocation - code portion   : 54 ++Memory allocation - code size : 54 + ------------------------------------------------------------------ +   0  48 Bra +   5     [+\-\p{Nd}]++ +@@ -558,8 +518,7 @@ Memory allocation - code portion   : 54 + ------------------------------------------------------------------ +  + /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/i,utf +-Memory allocation - compiled block : 165 +-Memory allocation - code portion   : 29 ++Memory allocation - code size : 29 + ------------------------------------------------------------------ +   0  23 Bra +   5  /i A\x{391}\x{10427}\x{ff3a}\x{1fb0} +@@ -568,8 +527,7 @@ Memory allocation - code portion   : 29 + ------------------------------------------------------------------ +  + /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/utf +-Memory allocation - compiled block : 165 +-Memory allocation - code portion   : 29 ++Memory allocation - code size : 29 + ------------------------------------------------------------------ +   0  23 Bra +   5     A\x{391}\x{10427}\x{ff3a}\x{1fb0} +@@ -578,8 +536,7 @@ Memory allocation - code portion   : 29 + ------------------------------------------------------------------ +  + /[\x{105}-\x{109}]/i,utf +-Memory allocation - compiled block : 159 +-Memory allocation - code portion   : 23 ++Memory allocation - code size : 23 + ------------------------------------------------------------------ +   0  17 Bra +   5     [\x{104}-\x{109}] +@@ -588,8 +545,7 @@ Memory allocation - code portion   : 23 + ------------------------------------------------------------------ +  + /( ( (?(1)0|) )*   )/x +-Memory allocation - compiled block : 192 +-Memory allocation - code portion   : 56 ++Memory allocation - code size : 56 + ------------------------------------------------------------------ +   0  50 Bra +   5  40 CBra 1 +@@ -607,8 +563,7 @@ Memory allocation - code portion   : 56 + ------------------------------------------------------------------ +  + /(  (?(1)0|)*   )/x +-Memory allocation - compiled block : 180 +-Memory allocation - code portion   : 44 ++Memory allocation - code size : 44 + ------------------------------------------------------------------ +   0  38 Bra +   5  28 CBra 1 +@@ -624,8 +579,7 @@ Memory allocation - code portion   : 44 + ------------------------------------------------------------------ +  + /[a]/ +-Memory allocation - compiled block : 149 +-Memory allocation - code portion   : 13 ++Memory allocation - code size : 13 + ------------------------------------------------------------------ +   0   7 Bra +   5     a +@@ -634,8 +588,7 @@ Memory allocation - code portion   : 13 + ------------------------------------------------------------------ +  + /[a]/utf +-Memory allocation - compiled block : 149 +-Memory allocation - code portion   : 13 ++Memory allocation - code size : 13 + ------------------------------------------------------------------ +   0   7 Bra +   5     a +@@ -644,8 +597,7 @@ Memory allocation - code portion   : 13 + ------------------------------------------------------------------ +  + /[\xaa]/ +-Memory allocation - compiled block : 149 +-Memory allocation - code portion   : 13 ++Memory allocation - code size : 13 + ------------------------------------------------------------------ +   0   7 Bra +   5     \x{aa} +@@ -654,8 +606,7 @@ Memory allocation - code portion   : 13 + ------------------------------------------------------------------ +  + /[\xaa]/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   8 Bra +   5     \x{aa} +@@ -664,8 +615,7 @@ Memory allocation - code portion   : 14 + ------------------------------------------------------------------ +  + /[^a]/ +-Memory allocation - compiled block : 149 +-Memory allocation - code portion   : 13 ++Memory allocation - code size : 13 + ------------------------------------------------------------------ +   0   7 Bra +   5     [^a] +@@ -674,8 +624,7 @@ Memory allocation - code portion   : 13 + ------------------------------------------------------------------ +  + /[^a]/utf +-Memory allocation - compiled block : 149 +-Memory allocation - code portion   : 13 ++Memory allocation - code size : 13 + ------------------------------------------------------------------ +   0   7 Bra +   5     [^a] +@@ -684,8 +633,7 @@ Memory allocation - code portion   : 13 + ------------------------------------------------------------------ +  + /[^\xaa]/ +-Memory allocation - compiled block : 149 +-Memory allocation - code portion   : 13 ++Memory allocation - code size : 13 + ------------------------------------------------------------------ +   0   7 Bra +   5     [^\x{aa}] +@@ -694,8 +642,7 @@ Memory allocation - code portion   : 13 + ------------------------------------------------------------------ +  + /[^\xaa]/utf +-Memory allocation - compiled block : 150 +-Memory allocation - code portion   : 14 ++Memory allocation - code size : 14 + ------------------------------------------------------------------ +   0   8 Bra +   5     [^\x{aa}] diff --git a/pcre2-10.10-Fix-multilib.patch b/pcre2-10.10-Fix-multilib.patch new file mode 100644 index 0000000..89c7d80 --- /dev/null +++ b/pcre2-10.10-Fix-multilib.patch @@ -0,0 +1,39 @@ +From 8b6b10229201e5b148979a24e06c640dbbcfbad9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com> +Date: Fri, 20 Feb 2015 14:34:26 +0100 +Subject: [PATCH] Fix multilib +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Do not set RPATH nor add explicit -L path to compiler. + +Signed-off-by: Petr Písař <ppisar@redhat.com> + +diff --git a/pcre2-config.in b/pcre2-config.in +index 932160e..dbef5e5 100644 +--- a/pcre2-config.in ++++ b/pcre2-config.in +@@ -28,19 +28,7 @@ if test $# -eq 0; then + fi +  + libR= +-case `uname -s` in +-  *SunOS*) +-  libR=" -R@libdir@" +-  ;; +-  *BSD*) +-  libR=" -Wl,-R@libdir@" +-  ;; +-esac +- + libS= +-if test @libdir@ != /usr/lib ; then +-  libS=-L@libdir@ +-fi +  + while test $# -gt 0; do +   case "$1" in +--  +2.1.0 + diff --git a/pcre2.spec b/pcre2.spec new file mode 100644 index 0000000..7832ea9 --- /dev/null +++ b/pcre2.spec @@ -0,0 +1,224 @@ +Name:        pcre2 +Version:     10.44 +Release:     1 +Summary:     Perl Compatible Regular Expressions +License:     BSD-3-Clause AND FSFULLR AND X11 AND GPL-2.0-or-later AND FSFAP AND FSFUL AND GPL-3.0-or-later +URL:         https://www.pcre.org/ +Source0:     https://github.com/PCRE2Project/pcre2/releases/download/%{name}-%{version}/%{name}-%{version}.tar.bz2 + +# Do no set RPATH if libdir is not /usr/lib +Patch0:        pcre2-10.10-Fix-multilib.patch + +Patch6001:     backport-Remove-incorrect-optimization-in-DFA-matching-when-p.patch +Patch6002:     backport-Fix-non-recognition-of-some-octal-escapes-in-substitute.patch +Patch6003:     backport-Guard-against-out-of-bounds-memory-access-when-parsing.patch +Patch6004:     backport-Add-Perl-titlecasing-475.patch +Patch6005:     backport-Fix-incorrect-positive-error-code-from-pcre2_substitute.patch +Patch6006:     backport-pcre2_compile-avoid-1-byte-buffer-overread-parsing-V.patch +Patch6007:     backport-Improve-error-message-for-N-name-in-character-classes.patch +Patch6008:     backport-pcre2test-memory-reports-only-compiled-memory-usage-for.patch + +BuildRequires:  autoconf libtool automake coreutils gcc make readline-devel +Obsoletes:      pcre2-utf16 pcre2-utf32 pcre2-tools +Provides:       pcre2-utf16 pcre2-utf32 pcre2-tools +Provides:       bundled(sljit) + +%description +PCRE2 is a re-working of the original PCRE1 library to provide an entirely new +API. Since its initial release in 2015, there has been further development of +the code and it now differs from PCRE1 in more than just the API. +PCRE2 is written in C, and it has its own API. There are three sets of +functions, one for the 8-bit library, which processes strings of bytes, one for +the 16-bit library, which processes strings of 16-bit values, and one for the +32-bit library, which processes strings of 32-bit values. Unlike PCRE1, there +are no C++ wrappers. + +The distribution does contain a set of C wrapper functions for the 8-bit +library that are based on the POSIX regular expression API (see the pcre2posix +man page). These are built into a library called libpcre2-posix. Note that this +just provides a POSIX calling interface to PCRE2; the regular expressions +themselves still follow Perl syntax and semantics. The POSIX API is restricted, +and does not give full access to all of PCRE2's facilities. + +%package devel +Summary:     Development files for %{name} +Requires:    %{name} = %{version}-%{release} +Obsoletes:   pcre2-static < %{version}-%{release} +Provides:    pcre2-static = %{version}-%{release} + +%description devel +%{summary}. + +%package help +Summary:    Man pages for %{name} +BuildArch:  noarch + +%description help +%{summary}. + +%prep +%autosetup -n %{name}-%{version} -p1 + +%build +autoreconf -vif +%configure \ +%ifarch sw_64 +    --disable-jit \ +%else +    --enable-jit \ +%endif +    --enable-pcre2grep-jit \ +    --disable-bsr-anycrlf \ +    --disable-coverage \ +    --disable-ebcdic \ +    --disable-fuzz-support \ +    --disable-jit-sealloc \ +    --disable-never-backslash-C \ +    --enable-newline-is-lf \ +    --enable-pcre2-8 \ +    --enable-pcre2-16 \ +    --enable-pcre2-32 \ +    --enable-pcre2grep-callout \ +    --enable-pcre2grep-jit \ +    --disable-pcre2grep-libbz2 \ +    --disable-pcre2grep-libz \ +    --disable-pcre2test-libedit \ +    --enable-pcre2test-libreadline \ +    --disable-rebuild-chartables \ +    --enable-shared \ +    --enable-static \ +    --enable-unicode \ +    --disable-valgrind \ +    --disable-silent-rules + +%make_build + +%install +%make_install +%delete_la + +%check +%make_build check + +%files +%license %{_pkgdocdir}/{COPYING,LICENCE} +%exclude %{_pkgdocdir}/ChangeLog +%doc AUTHORS NEWS HACKING README +%{_libdir}/libpcre2-8.so.* +%{_libdir}/libpcre2-posix.so.* +%{_libdir}/libpcre2-16.so.* +%{_libdir}/libpcre2-32.so.* +%{_bindir}/pcre2grep +%{_bindir}/pcre2test + +%files devel +%{_includedir}/*.h +%{_libdir}/*.so +%{_libdir}/*.a +%{_libdir}/pkgconfig/* +%{_bindir}/pcre2-config +%doc ./src/pcre2demo.c + +%files help +%{_mandir}/man1/* +%{_mandir}/man3/* +%{_pkgdocdir}/*.txt +%{_pkgdocdir}/html/ + +%changelog +* Sun Nov 24 2024 Funda Wang <fundawang@yeah.net> - 10.44-1 +- update to 10.44 + +* Tue Nov 19 2024 yanglongkang <yanglongkang@h-partners.com> - 10.42-11 +- DESC:sync patches from upstream + +* Thu Oct 31 2024 xujing <xujing125@huawei.com> - 10.42-10 +- DESC:sync patches to fix grep testcase failed + +* Tue Sep 03 2024 dongyuzhen <dongyuzhen@h-partners.com> - 10.42-9 +- DESC:Remove incorrect optimization in DFA matching when partial matching and (*F) are involved + +* Tue Jul 23 2024 fuanan <fuanan3@h-partners.com> - 10.42-8 +- DESC:document better possible multiline matching misses + +* Tue May 07 2024 xujing <xujing125@huawei.com> - 10.42-7 +- DESC:Fixing an issue using empty character sets in jit + +* Wed Mar 06 2024 xujing <xujing125@huawei.com> - 10.42-6 +- DESC:exclude ChangeLog to avoid x86_64 conflict with i686 + +* Mon Jan 22 2024 xujing <xujing125@huawei.com> - 10.42-5 +- DESC:Sanity checks for ctype functions +       Fix incorrect class character matches in JIT + +* Mon Jan 22 2024 xujing <xujing125@huawei.com> - 10.42-4 +- DESC:sync patches from upstream to fix some bugs + +* Thu Dec 14 2023 xujing <xujing125@huawei.com> - 10.42-3 +- DESC:fix a possible integer overflow in DFA matching (#305) + +* Mon Dec 04 2023 Jingwiw  <wangjingwei@iscas.ac.cn> - 10.42-2 +- enable riscv jit and fix error for sv48-sv57 + +* Tue Jul 18 2023 zhangchenglin <zhangchenglin@kylinos.cn> - 10.42-1 +- upgrade to 10.42-1 + +* Mon Jun 26 2023 yangmingtai <yangmingtai@huawei.com> - 10.40-4 +- DESC:sync community patches + +* Thu Mar 16 2023 yangmingtai <yangmingtai@huawei.com> - 10.40-3 +- DESC:sync community patches + +* Sat Nov 26 2022 huyubiao <huyubiao@huawei.com> - 10.40-2 +- Update the Source0 URL. + +* Fri Nov 18 2022 dillon chen <dillon.chen@gmail.com> - 10.40-1 +- update to 10.40 + +* Mon Nov 14 2022 zhaozhen <zhaozhen@loongson.cn> - 10.39-5 +- Type:enhancement +- ID:NA +- SUG:NA +- DESC:fix build error for loongarch64 + +* Thu Nov 3 2022 wuzx<wuzx1226@qq.com> - 10.39-4 +- Add sw64 architecture + +* Tue Oct 18 2022 yangmingtai <yangmingtai@huawei.com> - 10.39-3 +- DESC:sync community patchs + +* Sat May 28 2022 yangmingtai <yangmingtai@huawei.com> - 10.39-2 +- DESC:fix CVE-2022-1586 and CVE-2022-1587 + +* Tue Feb 8 2022 yangzhuangzhuang <yangzhuangzhuang1@h-partners.com> - 10.39-1 +- Type:requirement +- ID:NA +- SUG:NA +- DESC:update to 10.39 + +* Thu Jan 21 2021 yixiangzhike <zhangxingliang3@huawei.com> - 10.36-1 +- Type:requirement +- ID:NA +- SUG:NA +- DESC:update to 10.36 + +* Fri Jul 24 2020 zhangxingliang <zhangxingliang3@huawei.com> - 10.35-1 +- Type:update +- ID:NA +- SUG:NA +- DESC:update to 10.35 + +* Tue Jun 2 2020 whoisxxx <zhangxuzhou4@huawei.com> - 10.33-4 +- DESC: Disable jit for RISC-V + +* Tue Apr 7 2020 openEuler Buildteam <buildteam@openeuler.org> - 10.33-3 +- Type:cves +- ID:CVE-2019-20454 +- SUG:NA +- DESC:fix CVE-2019-20454 + +* Mon Feb 3 2020 openEuler Buildteam <buildteam@openeuler.org> - 10.33-2 +- Fix stack buffer overflow + +* Sat Sep 14 2019 openEuler Buildteam <buildteam@openeuler.org> - 10.33-1 +- Package init @@ -0,0 +1 @@ +9d1fe11e2e919c7b395e3e8f0a5c3eec  pcre2-10.44.tar.bz2  | 
