Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(661)

Issue 539153002: Port and integrate the irregexp engine from V8 (Closed)

Created:
6 years, 3 months ago by jgruber1
Modified:
6 years ago
CC:
reviews_dartlang.org, ricow1, vm-dev_dartlang.org, jakob.gruber_gmail.com
Visibility:
Public.

Description

Port and integrate the irregexp engine from V8 This commit contains port of the entire irregexp codebase parsing, through generation of the internal irregexp IR, to emission of dart VM IR, and finally function compilation and execution. Four new IR instructions are introduced: * IndirectGotoInstr: Jumps to an address specified as its parameter. * IndirectEntryInstr: The target of an indirect goto. * CaseInsensitiveCompareUC16Instr: Performs a case-insensitive comparison of the specified string regions. * LoadCodeUnitsInstr: Loads one or more code units from a string. BUG=

Patch Set 1 #

Total comments: 76

Patch Set 2 : Updated to current version #

Total comments: 14

Patch Set 3 : Addressed comments, additional documentation, minor tweaks. #

Patch Set 4 : Break long lines in regexp_test.dart #

Patch Set 5 : MIPS support, a fix for ARM, comments #

Patch Set 6 : Port remaining V8 regexp tests and fix exposed bugs. #

Total comments: 117

Patch Set 7 : Squashed all irregexp CLs, addressed comments. #

Total comments: 10

Patch Set 8 : Explicitly null IC-Data, whitespace fixes in tests. #

Total comments: 27

Patch Set 9 : Addressed Florian's & Ian's comments. #

Patch Set 10 : Addressed comments. #

Patch Set 11 : Do not break JSCRE build. #

Patch Set 12 : Do not break JSCRE build, pt 2. #

Total comments: 28

Patch Set 13 : Addressed comments. #

Patch Set 14 : Missed a TODO. #

Total comments: 14

Patch Set 15 : Addressed Ivan's comments. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+24653 lines, -100 lines) Patch
M runtime/lib/regexp.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3 chunks +34 lines, -0 lines 0 comments Download
M runtime/lib/regexp_patch.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5 chunks +123 lines, -3 lines 0 comments Download
M runtime/lib/string_patch.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2 chunks +38 lines, -0 lines 0 comments Download
M runtime/vm/compiler.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 12 chunks +130 lines, -17 lines 0 comments Download
M runtime/vm/debugger.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/flow_graph.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +3 lines, -0 lines 0 comments Download
M runtime/vm/flow_graph_compiler.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3 chunks +8 lines, -1 line 0 comments Download
M runtime/vm/flow_graph_optimizer.h View 1 6 7 8 9 10 11 12 13 14 1 chunk +13 lines, -0 lines 0 comments Download
M runtime/vm/flow_graph_optimizer.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 8 chunks +91 lines, -2 lines 0 comments Download
M runtime/vm/flow_graph_range_analysis.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +16 lines, -0 lines 0 comments Download
M runtime/vm/flow_graph_type_propagator.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4 chunks +36 lines, -0 lines 0 comments Download
M runtime/vm/growable_array.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +4 lines, -0 lines 0 comments Download
M runtime/vm/il_printer.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2 chunks +35 lines, -0 lines 0 comments Download
M runtime/vm/intermediate_language.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 chunks +222 lines, -0 lines 0 comments Download
M runtime/vm/intermediate_language.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5 chunks +38 lines, -0 lines 0 comments Download
M runtime/vm/intermediate_language_arm.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3 chunks +146 lines, -0 lines 0 comments Download
M runtime/vm/intermediate_language_arm64.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3 chunks +117 lines, -0 lines 0 comments Download
M runtime/vm/intermediate_language_ia32.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3 chunks +167 lines, -0 lines 0 comments Download
M runtime/vm/intermediate_language_mips.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3 chunks +117 lines, -0 lines 0 comments Download
M runtime/vm/intermediate_language_x64.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3 chunks +129 lines, -0 lines 0 comments Download
M runtime/vm/intrinsifier.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +1 line, -0 lines 0 comments Download
M runtime/vm/intrinsifier_arm.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2 chunks +41 lines, -0 lines 0 comments Download
M runtime/vm/intrinsifier_arm64.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2 chunks +42 lines, -0 lines 0 comments Download
M runtime/vm/intrinsifier_ia32.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2 chunks +41 lines, -1 line 0 comments Download
M runtime/vm/intrinsifier_mips.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2 chunks +43 lines, -0 lines 0 comments Download
M runtime/vm/intrinsifier_x64.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2 chunks +40 lines, -0 lines 0 comments Download
M runtime/vm/method_recognizer.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4 chunks +26 lines, -0 lines 0 comments Download
M runtime/vm/object.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 7 chunks +52 lines, -0 lines 0 comments Download
M runtime/vm/object.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5 chunks +27 lines, -0 lines 0 comments Download
M runtime/vm/parser.h View 1 6 7 8 9 10 11 12 13 14 5 chunks +9 lines, -0 lines 0 comments Download
M runtime/vm/parser.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4 chunks +28 lines, -0 lines 0 comments Download
M runtime/vm/raw_object.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3 chunks +7 lines, -1 line 0 comments Download
M runtime/vm/raw_object_snapshot.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2 chunks +2 lines, -0 lines 0 comments Download
A runtime/vm/regexp.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +1422 lines, -0 lines 0 comments Download
A runtime/vm/regexp.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +4851 lines, -0 lines 0 comments Download
A runtime/vm/regexp_assembler.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +619 lines, -0 lines 0 comments Download
A runtime/vm/regexp_assembler.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +1837 lines, -0 lines 0 comments Download
A runtime/vm/regexp_ast.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +393 lines, -0 lines 0 comments Download
A runtime/vm/regexp_ast.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +363 lines, -0 lines 0 comments Download
A runtime/vm/regexp_parser.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +176 lines, -0 lines 0 comments Download
A runtime/vm/regexp_parser.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +1070 lines, -0 lines 0 comments Download
M runtime/vm/symbols.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 3 chunks +39 lines, -0 lines 0 comments Download
A runtime/vm/unibrow.h View 1 6 7 8 9 10 11 12 13 14 1 chunk +72 lines, -0 lines 0 comments Download
A runtime/vm/unibrow.cc View 1 6 7 8 9 10 11 12 13 14 1 chunk +915 lines, -0 lines 0 comments Download
A runtime/vm/unibrow-inl.h View 1 6 7 8 9 10 11 12 13 14 1 chunk +48 lines, -0 lines 0 comments Download
M runtime/vm/unicode.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +1 line, -1 line 0 comments Download
M runtime/vm/vm_sources.gypi View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2 chunks +11 lines, -0 lines 0 comments Download
M tests/co19/co19-runtime.status View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2 chunks +0 lines, -6 lines 0 comments Download
M tests/language/language.status View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +0 lines, -1 line 0 comments Download
A tests/language/regex/RegExp_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +69 lines, -0 lines 0 comments Download
A tests/language/regex/UC16_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +29 lines, -0 lines 0 comments Download
A + tests/language/regex/alternative-length-miscalculation_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +10 lines, -9 lines 0 comments Download
A tests/language/regex/alternatives_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +28 lines, -0 lines 0 comments Download
A tests/language/regex/ascii-regexp-subject_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +30 lines, -0 lines 0 comments Download
A tests/language/regex/assertion_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +95 lines, -0 lines 0 comments Download
A tests/language/regex/backreferences_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +26 lines, -0 lines 0 comments Download
A tests/language/regex/bol-with-multiline_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +19 lines, -0 lines 0 comments Download
A tests/language/regex/bol_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +35 lines, -0 lines 0 comments Download
A tests/language/regex/capture-3_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +94 lines, -0 lines 0 comments Download
A tests/language/regex/capture_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +29 lines, -0 lines 0 comments Download
A tests/language/regex/captures_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +12 lines, -0 lines 0 comments Download
A tests/language/regex/char-insensitive_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +33 lines, -0 lines 0 comments Download
A + tests/language/regex/character-match-out-of-order_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +4 lines, -16 lines 0 comments Download
A tests/language/regex/compile-crash_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +17 lines, -0 lines 0 comments Download
A tests/language/regex/compile_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +24 lines, -0 lines 0 comments Download
A tests/language/regex/constructor_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +18 lines, -0 lines 0 comments Download
A tests/language/regex/dotstar_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +145 lines, -0 lines 0 comments Download
A tests/language/regex/early-acid3-86_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +19 lines, -0 lines 0 comments Download
A tests/language/regex/ecma-regex-examples_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +48 lines, -0 lines 0 comments Download
A tests/language/regex/extended-characters-match_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +24 lines, -0 lines 0 comments Download
A tests/language/regex/extended-characters-more_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +16 lines, -0 lines 0 comments Download
A tests/language/regex/find-first-asserted_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +15 lines, -0 lines 0 comments Download
A tests/language/regex/global_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +165 lines, -0 lines 0 comments Download
A tests/language/regex/indexof_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +46 lines, -0 lines 0 comments Download
A tests/language/regex/invalid-range-in-class_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +36 lines, -0 lines 0 comments Download
A tests/language/regex/lastindex_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +24 lines, -0 lines 0 comments Download
A tests/language/regex/look-ahead_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +15 lines, -0 lines 0 comments Download
A tests/language/regex/lookahead_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +141 lines, -0 lines 0 comments Download
A + tests/language/regex/loop-capture_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +4 lines, -17 lines 0 comments Download
A tests/language/regex/malformed-escapes_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +41 lines, -0 lines 0 comments Download
A tests/language/regex/many-brackets_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +28 lines, -0 lines 0 comments Download
A tests/language/regex/multiline_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +94 lines, -0 lines 0 comments Download
A tests/language/regex/negative-special-characters_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +75 lines, -0 lines 0 comments Download
A tests/language/regex/no-extensions_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +49 lines, -0 lines 0 comments Download
A tests/language/regex/non-bmp_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +26 lines, -0 lines 0 comments Download
A + tests/language/regex/non-capturing-backtracking_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +8 lines, -8 lines 0 comments Download
A tests/language/regex/non-capturing-groups_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +27 lines, -0 lines 0 comments Download
A tests/language/regex/non-character_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +27 lines, -0 lines 0 comments Download
A tests/language/regex/non-greedy-parentheses_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +21 lines, -0 lines 0 comments Download
A + tests/language/regex/norepeat_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +9 lines, -8 lines 0 comments Download
A tests/language/regex/overflow_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +23 lines, -0 lines 0 comments Download
A tests/language/regex/parentheses_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +268 lines, -0 lines 0 comments Download
A tests/language/regex/pcre-test-4_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +1007 lines, -0 lines 0 comments Download
A tests/language/regex/pcre_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +6597 lines, -0 lines 0 comments Download
A tests/language/regex/quantified-assertions_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +28 lines, -0 lines 0 comments Download
A tests/language/regex/range-bound-ffff_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +14 lines, -0 lines 0 comments Download
A tests/language/regex/range-out-of-order_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +14 lines, -0 lines 0 comments Download
A tests/language/regex/ranges-and-escaped-hyphens_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +61 lines, -0 lines 0 comments Download
A tests/language/regex/regexp_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +570 lines, -0 lines 0 comments Download
A + tests/language/regex/regress-6-9-regexp_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +6 lines, -9 lines 0 comments Download
A tests/language/regex/regress-regexp-codeflush_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +37 lines, -0 lines 0 comments Download
A tests/language/regex/regress-regexp-construct-result_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +26 lines, -0 lines 0 comments Download
A tests/language/regex/repeat-match-waldemar_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +39 lines, -0 lines 0 comments Download
A tests/language/regex/results-cache_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +59 lines, -0 lines 0 comments Download
A tests/language/regex/stack-overflow2_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +17 lines, -0 lines 0 comments Download
A tests/language/regex/stack-overflow_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +18 lines, -0 lines 0 comments Download
A tests/language/regex/standalones_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +60 lines, -0 lines 0 comments Download
A tests/language/regex/toString_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +50 lines, -0 lines 0 comments Download
A tests/language/regex/unicode-handling_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +55 lines, -0 lines 0 comments Download
A tests/language/regex/unicodeCaseInsensitive_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +79 lines, -0 lines 0 comments Download
A tests/language/regex/util.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +46 lines, -0 lines 0 comments Download
A tests/language/regex/zero-length-alternatives_test.dart View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +260 lines, -0 lines 0 comments Download

Messages

Total messages: 29 (4 generated)
jgruber1
All tests in our current vm suite pass. This still produces unoptimized code, so performance ...
6 years, 3 months ago (2014-09-04 15:04:04 UTC) #2
jgruber1
Correction: co19/LibTest/core/RegExp/Pattern_semantics/firstMatch_Term_A04_t01 Fails, but we exhibit the same behavior as in V8. Pinged Lasse on ...
6 years, 3 months ago (2014-09-04 15:05:26 UTC) #3
ricow1
dbc https://codereview.chromium.org/539153002/diff/1/tests/language/regex/regexp_test.dart File tests/language/regex/regexp_test.dart (right): https://codereview.chromium.org/539153002/diff/1/tests/language/regex/regexp_test.dart#newcode11 tests/language/regex/regexp_test.dart:11: void assertEquals(actual, expected, [message]) => Expect.equals(actual, expected, message); ...
6 years, 3 months ago (2014-09-05 05:47:41 UTC) #5
ricow1
a little more nit https://codereview.chromium.org/539153002/diff/1/runtime/vm/regexp.h File runtime/vm/regexp.h (right): https://codereview.chromium.org/539153002/diff/1/runtime/vm/regexp.h#newcode1126 runtime/vm/regexp.h:1126: intptr_t max_lookahead, indentation
6 years, 3 months ago (2014-09-05 05:49:58 UTC) #6
jgruber1
https://codereview.chromium.org/539153002/diff/1/runtime/vm/regexp.h File runtime/vm/regexp.h (right): https://codereview.chromium.org/539153002/diff/1/runtime/vm/regexp.h#newcode1126 runtime/vm/regexp.h:1126: intptr_t max_lookahead, On 2014/09/05 05:49:58, ricow1 wrote: > indentation ...
6 years, 3 months ago (2014-09-05 06:17:26 UTC) #7
Florian Schneider
First round of comments on the regexp back-end. https://codereview.chromium.org/539153002/diff/1/runtime/lib/regexp.cc File runtime/lib/regexp.cc (right): https://codereview.chromium.org/539153002/diff/1/runtime/lib/regexp.cc#newcode95 runtime/lib/regexp.cc:95: const ...
6 years, 3 months ago (2014-09-16 11:11:49 UTC) #8
jgruber1
The initial CL has been completely overhauled: * We now use the optimizing compiler pipeline. ...
6 years, 3 months ago (2014-09-22 18:58:06 UTC) #9
srdjan
DBC https://codereview.chromium.org/539153002/diff/20001/runtime/lib/regexp.cc File runtime/lib/regexp.cc (right): https://codereview.chromium.org/539153002/diff/20001/runtime/lib/regexp.cc#newcode99 runtime/lib/regexp.cc:99: // This function is intrinsified. See Intrinsifier::JSRegExp_ExecuteMatch. We ...
6 years, 3 months ago (2014-09-22 22:34:08 UTC) #11
jgruber1
https://codereview.chromium.org/539153002/diff/20001/runtime/lib/regexp.cc File runtime/lib/regexp.cc (right): https://codereview.chromium.org/539153002/diff/20001/runtime/lib/regexp.cc#newcode99 runtime/lib/regexp.cc:99: // This function is intrinsified. See Intrinsifier::JSRegExp_ExecuteMatch. On 2014/09/22 ...
6 years, 3 months ago (2014-09-23 10:58:47 UTC) #12
Florian Schneider
Here are more comments. I'm partially through regexp_assembler.cc, and will continue tomorrow. Overall I think ...
6 years, 2 months ago (2014-10-01 17:04:15 UTC) #13
Vyacheslav Egorov (Google)
initial comments https://codereview.chromium.org/539153002/diff/100001/runtime/lib/regexp.cc File runtime/lib/regexp.cc (right): https://codereview.chromium.org/539153002/diff/100001/runtime/lib/regexp.cc#newcode107 runtime/lib/regexp.cc:107: #ifdef DEBUG Empty #ifdef ? https://codereview.chromium.org/539153002/diff/100001/runtime/lib/regexp_patch.dart File ...
6 years, 2 months ago (2014-10-01 20:13:22 UTC) #14
Florian Schneider
https://codereview.chromium.org/539153002/diff/100001/runtime/vm/intermediate_language.h File runtime/vm/intermediate_language.h (right): https://codereview.chromium.org/539153002/diff/100001/runtime/vm/intermediate_language.h#newcode2248 runtime/vm/intermediate_language.h:2248: Value* offset_from_start_; Remove this member. SetInputAt(0,...) already stores it. ...
6 years, 2 months ago (2014-10-02 11:58:12 UTC) #15
jgruber1
Squashed all irregexp commits as requested, addressed comments, PTAL. https://codereview.chromium.org/539153002/diff/100001/runtime/lib/regexp.cc File runtime/lib/regexp.cc (right): https://codereview.chromium.org/539153002/diff/100001/runtime/lib/regexp.cc#newcode101 runtime/lib/regexp.cc:101: ...
6 years, 2 months ago (2014-10-03 18:59:54 UTC) #16
zerny-google
This looks really good! Inlined are a few nits/comments. https://codereview.chromium.org/539153002/diff/110001/runtime/lib/regexp_patch.dart File runtime/lib/regexp_patch.dart (right): https://codereview.chromium.org/539153002/diff/110001/runtime/lib/regexp_patch.dart#newcode50 runtime/lib/regexp_patch.dart:50: ...
6 years, 2 months ago (2014-10-07 12:18:35 UTC) #18
Florian Schneider
https://codereview.chromium.org/539153002/diff/120001/runtime/vm/intrinsifier_arm64.cc File runtime/vm/intrinsifier_arm64.cc (right): https://codereview.chromium.org/539153002/diff/120001/runtime/vm/intrinsifier_arm64.cc#newcode1540 runtime/vm/intrinsifier_arm64.cc:1540: __ LoadClassId(R1, R1, PP); I don't think you can ...
6 years, 2 months ago (2014-10-07 12:49:37 UTC) #19
jgruber1
https://codereview.chromium.org/539153002/diff/110001/runtime/lib/regexp_patch.dart File runtime/lib/regexp_patch.dart (right): https://codereview.chromium.org/539153002/diff/110001/runtime/lib/regexp_patch.dart#newcode50 runtime/lib/regexp_patch.dart:50: static final LinkedList<_JSSyntaxRegExpHashKey> _leastRecentlyUsed = On 2014/10/07 12:18:35, zerny-google ...
6 years, 2 months ago (2014-10-07 15:00:25 UTC) #20
Florian Schneider
LGTM from my side.
6 years, 2 months ago (2014-10-07 15:31:30 UTC) #21
Vyacheslav Egorov (Google)
LGTM with comments from me too https://codereview.chromium.org/539153002/diff/120001/runtime/vm/compiler.cc File runtime/vm/compiler.cc (right): https://codereview.chromium.org/539153002/diff/120001/runtime/vm/compiler.cc#newcode84 runtime/vm/compiler.cc:84: class StandardCompilationPipeline : ...
6 years, 2 months ago (2014-10-07 15:48:30 UTC) #22
jgruber1
https://codereview.chromium.org/539153002/diff/120001/runtime/vm/compiler.cc File runtime/vm/compiler.cc (right): https://codereview.chromium.org/539153002/diff/120001/runtime/vm/compiler.cc#newcode84 runtime/vm/compiler.cc:84: class StandardCompilationPipeline : public CompilationPipeline { On 2014/10/07 15:48:30, ...
6 years, 2 months ago (2014-10-07 17:16:51 UTC) #23
Ivan Posva
First round of comments. -Ivan https://codereview.chromium.org/539153002/diff/160001/runtime/lib/regexp.cc File runtime/lib/regexp.cc (right): https://codereview.chromium.org/539153002/diff/160001/runtime/lib/regexp.cc#newcode7 runtime/lib/regexp.cc:7: #include "vm/compiler.h" Why is ...
6 years, 2 months ago (2014-10-09 09:54:15 UTC) #24
jgruber1
Fixes uploaded. https://codereview.chromium.org/539153002/diff/160001/runtime/lib/regexp.cc File runtime/lib/regexp.cc (right): https://codereview.chromium.org/539153002/diff/160001/runtime/lib/regexp.cc#newcode7 runtime/lib/regexp.cc:7: #include "vm/compiler.h" On 2014/10/09 09:54:15, Ivan Posva ...
6 years, 2 months ago (2014-10-09 13:36:17 UTC) #25
Ivan Posva
Next round of comments. -Ivan https://codereview.chromium.org/539153002/diff/160001/runtime/lib/regexp.cc File runtime/lib/regexp.cc (right): https://codereview.chromium.org/539153002/diff/160001/runtime/lib/regexp.cc#newcode36 runtime/lib/regexp.cc:36: if (!RegExpParser::ParseRegExp(pattern, multi_line, &compileData)) ...
6 years, 2 months ago (2014-10-10 06:35:54 UTC) #26
Vyacheslav Egorov (Google)
https://codereview.chromium.org/539153002/diff/180001/runtime/vm/intermediate_language.h File runtime/vm/intermediate_language.h (right): https://codereview.chromium.org/539153002/diff/180001/runtime/vm/intermediate_language.h#newcode2240 runtime/vm/intermediate_language.h:2240: // and passed to IndirectGoto as an input. On ...
6 years, 2 months ago (2014-10-10 08:08:09 UTC) #27
jgruber1
https://codereview.chromium.org/539153002/diff/160001/runtime/lib/regexp.cc File runtime/lib/regexp.cc (right): https://codereview.chromium.org/539153002/diff/160001/runtime/lib/regexp.cc#newcode36 runtime/lib/regexp.cc:36: if (!RegExpParser::ParseRegExp(pattern, multi_line, &compileData)) { On 2014/10/10 06:35:53, Ivan ...
6 years, 2 months ago (2014-10-10 09:29:44 UTC) #28
Vyacheslav Egorov (Google)
6 years, 2 months ago (2014-10-10 09:43:25 UTC) #29
https://codereview.chromium.org/539153002/diff/180001/runtime/vm/regexp.cc
File runtime/vm/regexp.cc (right):

https://codereview.chromium.org/539153002/diff/180001/runtime/vm/regexp.cc#ne...
runtime/vm/regexp.cc:4190: fn.set_parameter_types(
On 2014/10/10 09:29:44, jgruber wrote:
> On 2014/10/10 06:35:54, Ivan Posva wrote:
> > These parameter arrays should be allocated only once and shared between all
> > regiexp functions. They are identical among all of them.
> 
> Where should they be cached? FYI, CreateMethodExtractor also creates new
> parameter types/names arrays each time it is called. I added a TODO in the
> meantime.

For starters they could be cached outside of this function in the caller. 

That's a small easy win, but I don't think any further engineering with caching
them globally is worth it in terms of memory consumption, unless there is a case
where 10000s of RegExps are floating around.

Powered by Google App Engine
This is Rietveld 408576698