• 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
Name
Last commit
Last update
build_overrides Loading commit data...
custom_deps Loading commit data...
docs Loading commit data...
gni Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.flake8 Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
COMMON_OWNERS Loading commit data...
DEPS Loading commit data...
ENG_REVIEW_OWNERS Loading commit data...
INFRA_OWNERS Loading commit data...
INTL_OWNERS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
MIPS_OWNERS Loading commit data...
OWNERS Loading commit data...
PPC_OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
S390_OWNERS Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...