• littledan's avatar
    Add ES2015 RegExp full subclassing semantics behind a flag · 92a571e5
    littledan authored
    This patch implements ES2015 RegExp subclassing semantics, namely the
    hardest part where RegExp.prototype.exec and certain flag getters can
    be overridden in order to provide different behavior. This change is
    hidden behind a new flag, --harmony-regexp-exec. The flag guards the
    behavior by installing entirely different implementations of the
    methods which follow the new semantics.
    
    Preliminary performance tests show a 3-4x regression in the Octane
    RegExp benchmark. The new code doesn't call out into several fast
    paths that the old code supported, so this is expected.
    
    The patch is tested mostly by test262, where most RegExp tests are fixed,
    with the exception of deliberate spec violations for web compatibility,
    and for the 'sticky' flag, which is not dynamically read by this patch
    in all cases but rather statically compiled into the RegExp. The latter
    will require a follow-on patch to implement. A small additional set of
    tests verifies one particular case, mostly to check whether the flag
    mechanism works.
    
    R=adamk,yangguo@chromium.org
    LOG=Y
    BUG=v8:4602
    
    Review URL: https://codereview.chromium.org/1596483005
    
    Cr-Commit-Position: refs/heads/master@{#35068}
    92a571e5
Name
Last commit
Last update
..
blink_tests Loading commit data...
cfi Loading commit data...
gcmole Loading commit data...
generate_shim_headers Loading commit data...
gyp Loading commit data...
jsfunfuzz Loading commit data...
luci-go Loading commit data...
ninja Loading commit data...
oom_dump Loading commit data...
perf Loading commit data...
perf_tests Loading commit data...
profviz Loading commit data...
release Loading commit data...
sanitizers Loading commit data...
sodium Loading commit data...
testrunner Loading commit data...
unittests Loading commit data...
v8.xcodeproj Loading commit data...
vim Loading commit data...
visual_studio Loading commit data...
DEPS Loading commit data...
OWNERS Loading commit data...
SourceMap.js Loading commit data...
android-build.sh Loading commit data...
android-ll-prof.sh Loading commit data...
android-run.py Loading commit data...
android-sync.sh Loading commit data...
bash-completion.sh Loading commit data...
check-inline-includes.sh Loading commit data...
check-static-initializers.gyp Loading commit data...
check-static-initializers.isolate Loading commit data...
check-static-initializers.sh Loading commit data...
check-unused-bailouts.sh Loading commit data...
codemap.js Loading commit data...
compare-table-gen.js Loading commit data...
concatenate-files.py Loading commit data...
consarray.js Loading commit data...
cpu.sh Loading commit data...
cross_build_gcc.sh Loading commit data...
csvparser.js Loading commit data...
detect-builtins.js Loading commit data...
disasm.py Loading commit data...
draw_instruction_graph.sh Loading commit data...
eval_gc_nvp.py Loading commit data...
eval_gc_time.sh Loading commit data...
external-reference-check.py Loading commit data...
find-commit-for-patch.py Loading commit data...
find_depot_tools.py Loading commit data...
freebsd-tick-processor Loading commit data...
fuzz-harness.sh Loading commit data...
gc-nvp-to-csv.py Loading commit data...
gc-nvp-trace-processor.py Loading commit data...
gc_nvp_common.py Loading commit data...
gdb-v8-support.py Loading commit data...
gdbinit Loading commit data...
gen-postmortem-metadata.py Loading commit data...
generate-builtins-tests.py Loading commit data...
generate-ten-powers.scm Loading commit data...
grokdump.py Loading commit data...
ic-explorer.html Loading commit data...
isolate_driver.py Loading commit data...
js2c.py Loading commit data...
jsmin.py Loading commit data...
linux-tick-processor Loading commit data...
ll_prof.py Loading commit data...
logreader.js Loading commit data...
mac-nm Loading commit data...
mac-tick-processor Loading commit data...
mingw-generate-makefiles.sh Loading commit data...
nacl-run.py Loading commit data...
parser-shell.cc Loading commit data...
parser-shell.gyp Loading commit data...
perf-to-html.py Loading commit data...
plot-timer-events Loading commit data...
presubmit.py Loading commit data...
process-heap-prof.py Loading commit data...
profile.js Loading commit data...
profile_view.js Loading commit data...
run-deopt-fuzzer.gyp Loading commit data...
run-deopt-fuzzer.isolate Loading commit data...
run-deopt-fuzzer.py Loading commit data...
run-llprof.sh Loading commit data...
run-perf.sh Loading commit data...
run-tests.py Loading commit data...
run-valgrind.gyp Loading commit data...
run-valgrind.isolate Loading commit data...
run-valgrind.py Loading commit data...
run.py Loading commit data...
run_perf.py Loading commit data...
shell-utils.h Loading commit data...
splaytree.js Loading commit data...
stats-viewer.py Loading commit data...
test-server.py Loading commit data...
tick-processor.html Loading commit data...
tickprocessor-driver.js Loading commit data...
tickprocessor.js Loading commit data...
trace-maps-processor.py Loading commit data...
try_perf.py Loading commit data...
v8-info.sh Loading commit data...
v8-rolls.sh Loading commit data...
v8heapconst.py Loading commit data...
v8heapconst.py.tmpl Loading commit data...
verify_source_deps.py Loading commit data...
whitespace.txt Loading commit data...
windows-tick-processor.bat Loading commit data...