• Jakob Gruber's avatar
    Reland "[regexp] Limit the size of inlined choice nodes" · 10842cad
    Jakob Gruber authored
    This is a reland of 6a0e7224
    
    Original change's description:
    > [regexp] Limit the size of inlined choice nodes
    >
    > Codegen for unicode property escapes (e.g.: /\p{L}/u) can produce huge
    > code objects. This effect can be further magnified through inlining,
    > leading to exponential code growth in the size of the pattern.
    >
    > This CL is a (fairly hacky) way to avoid exponential growth. We
    > recognize choice nodes with 'many' choices and disable inlining for
    > them. In the future we should fix this properly, either by using the
    > code size budget correctly, or by improving codegen for property
    > escapes.
    >
    > Bug: v8:10441
    > Change-Id: I817f145251ec8b1b9906cc735c9e9bdb004c98ed
    > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2170229
    > Commit-Queue: Jakob Gruber <jgruber@chromium.org>
    > Reviewed-by: Yang Guo <yangguo@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#67433}
    
    Tbr: yangguo@chromium.org
    Bug: v8:10441
    Change-Id: I9a16cc9e8248cb46d3d16a4e2d250968cc1b7b39
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2172679Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
    Commit-Queue: Jakob Gruber <jgruber@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#67462}
    10842cad
regexp-compiler-tonode.cc 61.3 KB