• Iain Ireland's avatar
    [regexp] Refactor to simplify embedding irregexp · 40d1b660
    Iain Ireland authored
    Some code at the interface between irregexp and the rest of V8 uses
    V8-specific APIs that are not used elsewhere in irregexp. For example,
    only a handful of functions in irregexp call or are called from
    generated code. When embedding irregexp into SpiderMonkey, these
    functions are an obstacle, because they are dead code, but still have
    to compile.
    
    To simplify the process of embedding, this patch does two things:
    
    1. It moves StringCharacterPosition out of irregexp and into
    objects/string, renaming it "AddressOfCharacterAt".
    
    2. It guards the following set of functions with
    '#ifndef COMPILING_IRREGEXP_FOR_EXTERNAL_EMBEDDER':
    - IrregexpInterpreter::MatchForCallFromJs
    - NativeRegExpMacroAssembler::CheckStackGuardState
    - NativeRegExpMacroAssembler::Match
    - NativeRegExpMacroAssembler::Execute
    
    This will have no effect in a V8 build, but can be defined by
    SpiderMonkey or another embedder to omit the problematic functions.
    
    In the future, if we attempt to make a cleaner separation between V8
    and irregexp, these functions will be a good place to start defining
    the API boundary.
    
    R=jgruber@chromium.org
    
    Bug: v8:10303
    Change-Id: I9f531a36e4f13440cafb0d0ade921f4c09f39c05
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2097220Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
    Commit-Queue: Jakob Gruber <jgruber@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#66750}
    40d1b660
regexp-interpreter.cc 35.7 KB