yangguo@chromium.org
67d0506622
Correctly initialize regexp global cache.
...
R=ulan@chromium.org
BUG=148378
Review URL: https://chromiumcodereview.appspot.com/10905239
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12491 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-09-12 15:26:43 +00:00
yangguo@chromium.org
7cbca775ee
Reland regexp global optimizations.
...
BUG=
Review URL: https://chromiumcodereview.appspot.com/10872010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12396 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-08-28 09:37:41 +00:00
yangguo@chromium.org
01d8e3d4f5
Revert r12258, r12300 and r12302 (global regexp).
...
R=ulan@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/10825472
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12350 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-08-21 09:46:23 +00:00
yangguo@chromium.org
3605fcbe63
Fix indexing bug in regexp, part 2.
...
The previous fix initialized the start index incorrectly.
BUG=
Review URL: https://chromiumcodereview.appspot.com/10834291
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12302 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-08-13 15:53:40 +00:00
yangguo@chromium.org
960b1af12f
Fix wrong indexing in global regexp.
...
R=ulan@chromium.org
BUG=142087
Review URL: https://chromiumcodereview.appspot.com/10824278
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12300 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-08-13 15:26:46 +00:00
yangguo@chromium.org
e0954ca592
Take advantage of batched results when matching global regexp.
...
BUG=
TEST=regexp-global.js
Review URL: https://chromiumcodereview.appspot.com/10831126
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12258 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-08-06 09:06:27 +00:00
sanjoy@chromium.org
9e4fbb45c1
One Zone per CompilationInfo.
...
The CompilationInfo record now saves a Zone, and the compiler pipeline
allocates memory from the Zone in the CompilationInfo. Before
compiling a function, we create a Zone on the stack and save a pointer
to that Zone to the CompilationInfo; which then gets picked up and
allocated from.
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10534139
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11877 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-20 08:58:41 +00:00
yangguo@chromium.org
a075583479
Unbreak interpreted regexp.
...
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10535164
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11825 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-14 17:06:16 +00:00
svenpanne@chromium.org
1212a122b7
MIPS: Remove TLS access for current Zone.
...
Port r11761 (769624bf)
Original commit message:
By passing around a Zone object explicitly we no longer need to do a
TLS access at the sites that allocate memory from the current Zone.
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10537108
Patch from Akos Palfi <palfia@homejinni.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11769 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-12 06:43:13 +00:00
sanjoy@chromium.org
6125718f37
Remove TLS access for current Zone.
...
By passing around a Zone object explicitly we no longer need to do a
TLS access at the sites that allocate memory from the current Zone.
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10534006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11761 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-11 12:42:31 +00:00
erikcorry
e957b2d51b
Fix lint.
...
Review URL: http://codereview.chromium.org/10542100
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11758 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-11 12:32:14 +00:00
erikcorry
afc9b8e9a9
Fix optimization of Unicode regexp with ASCII subject to respect repeat counts.
...
bug=131923
Review URL: http://codereview.chromium.org/10544093
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11754 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-11 11:18:04 +00:00
sanjoy@chromium.org
98db16d94f
Progress towards making Zones independent of Isolates and Threads.
...
This CL changes some parts of the code to explicitly pass around a
Zone. Not passing in a zone is okay too (in fact most of v8 still
doesn't), but that may incur a TLS lookup.
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10443114
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11709 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-04 14:42:58 +00:00
yangguo@chromium.org
85e3fba8a3
Remove unnecessary code for non-zero-length global regexps.
...
Also fixing a bug in the arm implementation.
BUG=
TEST=regexp-global.js
Review URL: https://chromiumcodereview.appspot.com/10383280
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11704 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-04 08:49:17 +00:00
erik.corry@gmail.com
ae4fcd9702
Limit work done analyzing regexps with very large fanout.
...
BUG=128821
Review URL: https://chromiumcodereview.appspot.com/10448117
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11696 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-06-01 11:28:52 +00:00
erik.corry@gmail.com
047a7cfee0
Avoid overdeep recursion in regexp where a guarded expression with a
...
minimum repetition count is inside another quantifier.
Bug=129926
Review URL: https://chromiumcodereview.appspot.com/10451092
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11686 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-31 11:59:04 +00:00
danno@chromium.org
9910edbb9a
Implement tracking and optimizations of packed arrays
...
R=jkummerow@chromium.org
TEST=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10170030
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11636 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-23 14:24:29 +00:00
yangguo@chromium.org
578fc3cc2d
Implement loop for global regexps in regexp assembler.
...
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com/10386090
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11623 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-22 14:05:44 +00:00
erik.corry@gmail.com
80256c7452
Fix crash bug in VisitChoice (bug=126272).
...
Review URL: https://chromiumcodereview.appspot.com/10332035
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11519 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-07 13:23:56 +00:00
erik.corry@gmail.com
baf7ebd6da
Fix assert triggered in fast/regex/pcre-test-4.html We were not filtering out
...
all the nodes that had non-ASCII characters. That has been fixed, but because
of the protection against over-deep recursion when filtering it is wrong to
assert that all nodes were filtered. This change therefore also makes sure we
can cope with non-filtered nodes by adding back some code removed in
https://chromiumcodereview.appspot.com/10174017/
Review URL: https://chromiumcodereview.appspot.com/10358008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11487 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-05-03 08:22:12 +00:00
erik.corry@gmail.com
d511b69e86
Regexp: Remove nodes from the regexp that cannot match because
...
they contain non-ASCII characters and the input string is ASCII.
Remove unused Clone() method.
Review URL: https://chromiumcodereview.appspot.com/10174017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11445 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-26 09:11:19 +00:00
erik.corry@gmail.com
83cbc638dc
Remove some unused stuff from regexp implementation.
...
Review URL: https://chromiumcodereview.appspot.com/10205010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11423 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-24 09:34:13 +00:00
erik.corry@gmail.com
6a1b70ccbc
Regexp: Unify the lookahead code for the BoyerMoore-like skipping
...
and the lookahead code for simplifying \b. Also cache lookahead
results on the nodes, fix a memory leak and remove some character
class code we are no longer using.
Review URL: https://chromiumcodereview.appspot.com/9961009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11345 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-17 08:06:53 +00:00
erik.corry@gmail.com
965fea65c2
Switch regexp strategy for regexps that are just plain
...
strings with a small alphabet. We already have code
that handles these regexps well, we were just not always
activating it.
Review URL: https://chromiumcodereview.appspot.com/9959096
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11218 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-03 12:24:55 +00:00
erikcorry
f14b93a508
Regexp: Improve the speed that we scan for an initial point where a non-anchored
...
regexp can match by using a Boyer-Moore-like table. This is done by identifying
non-greedy non-capturing loops in the nodes that eat any character one at a time.
For example in the middle of the regexp /foo[\s\S]*?bar/ we find such a loop.
There is also such a loop implicitly inserted at the start of any non-anchored
regexp.
When we have found such a loop we look ahead in the nodes to find the set of
characters that can come at given distances. For example for the regexp
/.?foo/ we know that there are at least 3 characters ahead of us, and the sets
of characters that can occur are [any, [f, o], [o]]. We find a range in the
lookahead info where the set of characters is reasonably constrained. In our
example this is from index 1 to 2 (0 is not constrained). We can now look 3
characters ahead and if we don't find one of [f, o] (the union of [f, o] and
[o]) then we can skip forwards by the range size (in this case 2).
For Unicode input strings we do the same, but modulo 128.
We also look at the first string fed to the regexp and use that to get a hint
of the character frequencies in the inputs. This affects the assessment of
whether the set of characters is 'reasonably constrained'.
We still have the old lookahead mechanism, which uses a wide load of multiple
characters followed by a mask and compare to determine whether a match is
possible at this point.
Review URL: http://codereview.chromium.org/9965010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11204 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-04-02 09:38:07 +00:00
erik.corry@gmail.com
356cf1ed0a
RegExp: Add support for table-based character class
...
code generation. This is performance neutral for
all our tests, but a factor 6 faster for the Unicode
based regexp in the new test (and much more compact
code).
Review URL: https://chromiumcodereview.appspot.com/9854020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11189 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-30 07:43:48 +00:00
erik.corry@gmail.com
bfb1e9e702
Fix edge case for case independent regexp character classes.
...
http://code.google.com/p/v8/issues/detail?id=2032
Review URL: https://chromiumcodereview.appspot.com/9860029
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11147 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-27 08:42:37 +00:00
erik.corry@gmail.com
03cfc4363b
Fix input and output to handle UTF16 surrogate pairs.
...
Review URL: https://chromiumcodereview.appspot.com/9600009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@11007 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-03-12 12:35:28 +00:00
svenpanne@chromium.org
3df99e7eb7
Thread the current isolate through a few places, avoiding Isolate::Current().
...
This removes approx. 12k calls of Isolate::Current() in string-tagcloud.
Review URL: https://chromiumcodereview.appspot.com/9490004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10856 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-28 10:32:02 +00:00
mstarzinger@chromium.org
417a01accf
Fix RegExp white-space character class to match BOMs.
...
R=rossberg@chromium.org
TEST=test262/S15.10.2.12_A?_T1,mjsunit/regexp
Review URL: https://chromiumcodereview.appspot.com/9426032
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10770 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-02-20 17:50:53 +00:00
erik.corry@gmail.com
70da367f6b
More spelling changes.
...
Review URL: http://codereview.chromium.org/9231009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10407 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-16 12:38:59 +00:00
erik.corry@gmail.com
48f239e087
Spellling mistakes.
...
Review URL: http://codereview.chromium.org/9123031
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10403 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2012-01-16 09:46:21 +00:00
lrn@chromium.org
93f5bfdb98
Make the irregexp interpreter throw on stack overflow.
...
BUG=v8:904
Review URL: http://codereview.chromium.org/8387027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9780 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-26 06:37:57 +00:00
erik.corry@gmail.com
338ab857b9
Remove a static initializer that could potentially slow down startup time.
...
BUG=1753
Review URL: http://codereview.chromium.org/8198005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9551 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-07 14:41:08 +00:00
kmillikin@chromium.org
1f12cc4099
Simplify calling generated code from the runtime.
...
Instead of expecting Object** arrays at the outermost level, expect
Handle<Object> arrays and reinterpret_cast them only just before invoking
the generated code.
R=rossberg@chromium.org ,fschneider@chromium.org
BUG=
TEST=
Review URL: http://codereview.chromium.org/8133020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9537 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-10-06 09:31:38 +00:00
jkummerow@chromium.org
1db6be7f2b
Fix a few clang warnings (which -Werror treats as errors)
...
Review URL: http://codereview.chromium.org/7779033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9141 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-09-06 07:41:45 +00:00
yangguo@chromium.org
d74cceb2bc
Removing bogus check introduced in r9027.
...
Review URL: http://codereview.chromium.org/7781013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9060 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-08-29 14:04:01 +00:00
yangguo@chromium.org
77141f78ff
Tentative implementation of string slices (hidden under the flag --string-slices).
...
TEST=test/mjsunit/string-slices.js
Review URL: http://codereview.chromium.org/7477045
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9027 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-08-26 13:03:30 +00:00
lrn@chromium.org
13dd915a2a
Fix typo in assert.
...
Also remove the requirement to have an AssertNoAllocation object when getting the flat content. We actually do allow allocation, it's just GC's we don't allow.
Review URL: http://codereview.chromium.org/7710018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@9001 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-08-23 13:23:30 +00:00
lrn@chromium.org
9eb7d4a53c
Replace ToAsciiVector and ToUC16Vector with single function that returns a tagged value.
...
The tag tells whether the content is ASCII or UC16, or even if the string wasn't flat.
BUG: v8:1633
Review URL: http://codereview.chromium.org/7709024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8999 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-08-23 12:22:12 +00:00
vitalyr@chromium.org
3ae6f64b0d
Remove TLS load in regexp code.
...
Spotted while reviewing Yang's patch.
R=yangguo@chromium.org
Review URL: http://codereview.chromium.org/7585005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8846 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-08-05 12:31:37 +00:00
whesse@chromium.org
e37a45c336
Fix presubmit error in copyright message.
...
Use new gcc flag -Wno-unused-but-set-variable only on linux.
TBR=fschneider@chromium.org
BUG=
TEST=
Review URL: http://codereview.chromium.org/7457018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8689 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-20 08:45:30 +00:00
whesse@chromium.org
47e03a0000
fix -Wunused-but-set-variable for gcc-4.6 on x64
...
* src/third_party/valgrind/valgrind.h: Update from upstream valgrind
r11899, so as to get around some unused value warnings. Also adds
support for darwin.
This version of valgrind.h differs from the original in that all
instances of "unsigned long long int" have been replaced with
"uint64_t", as the former is not allowed in ISO C++ 89.
See https://bugs.kde.org/show_bug.cgi?id=211926 for the upstream bug
report.
* src/x64/cpu-x64.cc:
* src/builtins.cc:
* src/conversions-inl.h:
* src/debug.cc:
* src/frames.cc:
* src/full-codegen.cc:
* src/jsregexp.cc:
* src/objects.cc:
* src/parser.cc:
* src/platform-linux.cc:
* src/x64/code-stubs-x64.cc:
* src/x64/deoptimizer-x64.cc:
* src/x64/full-codegen-x64.cc:
* src/x64/lithium-codegen-x64.cc:
* src/x64/regexp-macro-assembler-x64.cc:
* src/x64/stub-cache-x64.cc: Remove a number of assigned but
unreferenced variables.
* SConstruct (CCTEST_EXTRA_FLAGS): Punt on -Wunused-but-set-variable for
the test suite.
BUG=1291
TEST=A build and tools/test.py passes.
Review URL: http://codereview.chromium.org/7400023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8688 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-20 08:09:58 +00:00
ricow@chromium.org
82e53270dc
Ensure that regexps always have code object, even if GC happened while running multiple times in runtime.
...
Review URL: http://codereview.chromium.org/7316018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8560 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-07 10:04:56 +00:00
ricow@chromium.org
0f682143d9
Introduce code flushing of RegExp code.
...
Due to issues relating mostly to chrome extensions we have lately been
running into OOMs that are caused by our executable space running
out. This change introduces flushing of code from regexps if we have
not used the code for 5 mark sweeps.
The approach is different from the normal function code flusing. Here
we make a copy of the code inside the data array, and exchange the
original code with a smi determined by the sweep_generation (a new
heap variable increased everytime we do mark sweep/compact). If we
encounter a smi in EnsureCompiled we simply reinstate the code
object. If, in the marking phase of mark sweep, we find a regexp that
already have a smi in the code field, and this is more than 5
generations old we flush the code from the saved index.
Review URL: http://codereview.chromium.org/7282026
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8532 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-07-05 06:19:53 +00:00
erik.corry@gmail.com
c95ecb1fcd
Refix issue 1472. The previous fix worked for the example in the bug
...
report, but was not general enough to catch all cases. This is a new
approach. Includes regression test!
Review URL: http://codereview.chromium.org/7193007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8318 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-17 08:01:12 +00:00
erik.corry@gmail.com
dc66620251
Avoid OOM on regexps with nested quantifiers.
...
http://code.google.com/p/v8/issues/detail?id=1472
Review URL: http://codereview.chromium.org/7170014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8302 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-15 20:15:40 +00:00
mikhail.naganov@gmail.com
3b2470d296
Fix presubmit errors catched by a more recent version of cpplint.py.
...
Mainly, there were errors concerning blank lines before and after class access
control sections [whitespace/blank_line].
BEFORE an access control section (e.g. public:, private:) there should be a
blank line (except for the section right after the class declaration).
AFTER an access control section there should be no blank line.
TBR=ager@chromium.org
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8193 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-07 07:17:46 +00:00
vitalyr@chromium.org
37eb9b3031
Kill some dead code: classic frame element and const lists.
...
R=ager@chromium.org
Review URL: http://codereview.chromium.org/7111034
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8187 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-06-06 15:43:08 +00:00
vitalyr@chromium.org
179702df03
Inline more zone stuff.
...
R=ager@chromium.org
Review URL: http://codereview.chromium.org/7066004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8009 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-05-23 22:23:50 +00:00