This ports RegExp.prototype.exec to a TurboFan builtin.
LastMatchInfo is now stored on the context in order to be able to access
it from the stub.
Unmodified RegExp instances go through a fast path of accessing the
lastIndex property as an in-object field, while modified instances call
into runtime for lastIndex loads and stores.
Octane/regexp shows slight improvements (between 0 and 5%) with this CL.
BUG=v8:5339
Review-Url: https://codereview.chromium.org/2375953002
Cr-Commit-Position: refs/heads/master@{#39899}
Reason for revert:
Speculative revert for christmas tree
Original issue's description:
> Reland: [modules] Properly initialize declared variables.
>
> Before evaluating a module, all variables declared at the top-level
> in _any_ of the modules in the dependency graph must be initialized.
> This is observable because a module A can access a variable imported
> from module B (e.g. a function) at a point when module B's body hasn't
> been evaluated yet.
>
> We achieve this by implementing modules internally as generators with
> two states (not initialized, initialized).
>
> R=adamk@chromium.org
> BUG=v8:1569
> CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_win_dbg
>
> Committed: https://crrev.com/f4dfb6fbe1cdd9a0f287a1a9c496e1f69f6f5d20
> Committed: https://crrev.com/8c52a411583e870bd5ed100864caa58f491c5d88
> Cr-Original-Commit-Position: refs/heads/master@{#39871}
> Cr-Commit-Position: refs/heads/master@{#39892}
TBR=adamk@chromium.org,mstarzinger@chromium.org,machenbach@chromium.org,neis@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:1569
Review-Url: https://codereview.chromium.org/2387593002
Cr-Commit-Position: refs/heads/master@{#39896}
- added inspector test suite definition in testcfg.py
- added JS infrastructure for tests in protocol-test.js
BUG=chromium:635948
R=dgozman@chromium.org,alph@chromium.org
Review-Url: https://codereview.chromium.org/2370743003
Cr-Commit-Position: refs/heads/master@{#39895}
First stab at strongly typing the wasm compiled module FixedArray. The goal
is to improve maintainability of the data structures living on the JS heap.
My goal is to do so just for the first level, since we plan to eventually
avoid copying the metadata bits that are currently copied from the decoded
structures (export/import metadata, etc).
Subsequent CLs will try and consolidate internal functions working off the
compiled module as members, and evaluate what the actual interface with the
rest of the world of this type should be - we may be able to completely
move it in the cc file, for instance.
BUG=
Committed: https://crrev.com/6e03b72d9d7c0d69a4222981687757ffb0737236
Review-Url: https://codereview.chromium.org/2340623003
Cr-Original-Commit-Position: refs/heads/master@{#39890}
Cr-Commit-Position: refs/heads/master@{#39894}
Reason for revert:
Forgot to correctly clone a heap number. Reverting to fix.
Original issue's description:
> [wasm] Strongly typed compiled module
>
> First stab at strongly typing the wasm compiled module FixedArray. The goal
> is to improve maintainability of the data structures living on the JS heap.
>
> My goal is to do so just for the first level, since we plan to eventually
> avoid copying the metadata bits that are currently copied from the decoded
> structures (export/import metadata, etc).
>
> Subsequent CLs will try and consolidate internal functions working off the
> compiled module as members, and evaluate what the actual interface with the
> rest of the world of this type should be - we may be able to completely
> move it in the cc file, for instance.
>
> BUG=
>
> Committed: https://crrev.com/6e03b72d9d7c0d69a4222981687757ffb0737236
> Cr-Commit-Position: refs/heads/master@{#39890}
TBR=bradnelson@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=
Review-Url: https://codereview.chromium.org/2383623003
Cr-Commit-Position: refs/heads/master@{#39893}
Before evaluating a module, all variables declared at the top-level
in _any_ of the modules in the dependency graph must be initialized.
This is observable because a module A can access a variable imported
from module B (e.g. a function) at a point when module B's body hasn't
been evaluated yet.
We achieve this by implementing modules internally as generators with
two states (not initialized, initialized).
R=adamk@chromium.org
BUG=v8:1569
CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_win_dbg
Committed: https://crrev.com/f4dfb6fbe1cdd9a0f287a1a9c496e1f69f6f5d20
Review-Url: https://codereview.chromium.org/2375793002
Cr-Original-Commit-Position: refs/heads/master@{#39871}
Cr-Commit-Position: refs/heads/master@{#39892}
- added test runner, that takes file names and V8 flags as arguments and run scripts from passed files with passed flags in frontend context
BUG=chromium:635948
R=dgozman@chromium.org,alph@chromium.org
Review-Url: https://codereview.chromium.org/2372793002
Cr-Commit-Position: refs/heads/master@{#39891}
First stab at strongly typing the wasm compiled module FixedArray. The goal
is to improve maintainability of the data structures living on the JS heap.
My goal is to do so just for the first level, since we plan to eventually
avoid copying the metadata bits that are currently copied from the decoded
structures (export/import metadata, etc).
Subsequent CLs will try and consolidate internal functions working off the
compiled module as members, and evaluate what the actual interface with the
rest of the world of this type should be - we may be able to completely
move it in the cc file, for instance.
BUG=
Review-Url: https://codereview.chromium.org/2340623003
Cr-Commit-Position: refs/heads/master@{#39890}
- added the channel implementation,
- added inspector implementation,
- added v8::Extension for communication between backend and frontend.
BUG=chromium:635948
R=dgozman@chromium.org,alph@chromium.org
Review-Url: https://codereview.chromium.org/2368393003
Cr-Commit-Position: refs/heads/master@{#39888}
Note that the offset can still be out of bounds, even after grow memory. The calculation of the remaining size can overflow.
R=gdeepti@chromium.org
BUG=chromium:644670
Review-Url: https://codereview.chromium.org/2376153003
Cr-Commit-Position: refs/heads/master@{#39886}
Uses the base hashmap to store the ConstantArrayBuilder's constant map,
which slightly improves the performance of ConstantArrayBuilder::Insert.
Includes a small overload of the hashmap LookupOrInsert method, which
allows passing in a value creation function instead of just default
initialising new values.
On Octane's codeload, this gives (on my machine) a 0.27% improvement,
which doesn't sound like a lot but I guess every little helps.
Review-Url: https://codereview.chromium.org/2336553002
Cr-Commit-Position: refs/heads/master@{#39883}
Adds a fast-path test and branch for the turbofan graph generated by
BytecodeGraphBuilder for dynamic global lookups.
BUG=v8:5263
Review-Url: https://codereview.chromium.org/2374983003
Cr-Commit-Position: refs/heads/master@{#39882}
The label names were reversed - an external string is a short external
string if (instance_type | kShortExternalStringMask) != 0.
R=ishell@chromium.org
BUG=
Review-Url: https://codereview.chromium.org/2380073002
Cr-Commit-Position: refs/heads/master@{#39880}
Making new nodes inside of exception-handled blocks fiddles around with the
current environment to merge the exception paths. In particular, the current
environment pointer is mutated. This patch ensures that when we merge the fast
and slow paths of the LdaContextLookup, we actually merge the correct
environment and do not accidentally merge the exceptional environment.
BUG=chromium:651394
Review-Url: https://codereview.chromium.org/2379043002
Cr-Commit-Position: refs/heads/master@{#39878}
The test now checks the case when an observer is added after tracing is started.
BUG=chromium:406277
Review-Url: https://codereview.chromium.org/2376953002
Cr-Commit-Position: refs/heads/master@{#39874}
Reason for revert:
Suspect for causing win64 debug problems:
https://build.chromium.org/p/client.v8/builders/V8%20Win64%20-%20debug/builds/12646
Original issue's description:
> [modules] Properly initialize declared variables.
>
> Before evaluating a module, all variables declared at the top-level
> in _any_ of the modules in the dependency graph must be initialized.
> This is observable because a module A can access a variable imported
> from module B (e.g. a function) at a point when module B's body hasn't
> been evaluated yet.
>
> We achieve this by implementing modules internally as generators with
> two states (not initialized, initialized).
>
> R=adamk@chromium.org
> BUG=v8:1569
>
> Committed: https://crrev.com/f4dfb6fbe1cdd9a0f287a1a9c496e1f69f6f5d20
> Cr-Commit-Position: refs/heads/master@{#39871}
TBR=adamk@chromium.org,mstarzinger@chromium.org,neis@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:1569
Review-Url: https://codereview.chromium.org/2379063002
Cr-Commit-Position: refs/heads/master@{#39873}
Before evaluating a module, all variables declared at the top-level
in _any_ of the modules in the dependency graph must be initialized.
This is observable because a module A can access a variable imported
from module B (e.g. a function) at a point when module B's body hasn't
been evaluated yet.
We achieve this by implementing modules internally as generators with
two states (not initialized, initialized).
R=adamk@chromium.org
BUG=v8:1569
Review-Url: https://codereview.chromium.org/2375793002
Cr-Commit-Position: refs/heads/master@{#39871}
Reason for revert:
Introduces an infinite loop (see comment).
Original issue's description:
> [builtins] migrate C++ String Iterator builtins to baseline TurboFan
>
> Migrate newly added C++ String Iterator builtins to TFJ builtins, per
> step 4. of the String Iterator Baseline Implementation section of the design doc
>
> BUG=v8:5388
> R=bmeurer@chromium.org, mstarzinger@chromium.org
>
> Committed: https://crrev.com/f9a2c8b1112c4e915df8bc5f7ea1fccdf7a33ff8
> Cr-Commit-Position: refs/heads/master@{#39765}
TBR=bmeurer@chromium.org,mstarzinger@chromium.org,caitp@igalia.com
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=v8:5388
Review-Url: https://codereview.chromium.org/2374123005
Cr-Commit-Position: refs/heads/master@{#39870}
This is useful for my upcoming work on OSR typing, which needs
to create checkpoints (which in turn require environments).
Review-Url: https://codereview.chromium.org/2379643003
Cr-Commit-Position: refs/heads/master@{#39869}
Make MatchFun a template parameter in TemplateHashMapImpl, moving the
PointersMatch function down to an implementation which extends
TemplateHashMapImpl to void* key and value (i.e. the same as the current
HashMap and ZoneHashMap typedefs).
This will allow other instantiations of TemplateHashMapImpl, with
different MatchFun values, e.g. std::equal_to, to have their key
equality test inlined, rather than calling a function pointer,
Review-Url: https://codereview.chromium.org/2354593002
Cr-Commit-Position: refs/heads/master@{#39868}
- added a inspector folder,
- added related GN and gyp files,
- added task handling infrastructure for test runner.
BUG=chromium:635948
R=dgozman@chromium.org,alph@chromium.org
Review-Url: https://codereview.chromium.org/2361623006
Cr-Commit-Position: refs/heads/master@{#39866}
Add simplified operator reduction rule that reduces
CheckedTaggedSignedToInt32(ConvertTaggedHoleToUndefined(x))
to
CheckedTaggedSignedToInt32(x)
which avoids the unnecessary hole to undefined conversion, as the check
operation will fail equally on either hole or undefined.
BUG=v8:5267
R=jarin@chromium.org
Review-Url: https://codereview.chromium.org/2384453002
Cr-Commit-Position: refs/heads/master@{#39863}
This is useful for correctness fuzzing where different compilers might
overflow the stack in different points.
Review-Url: https://codereview.chromium.org/2381773003
Cr-Commit-Position: refs/heads/master@{#39862}
This flag was disabled by default, and has been broken for a long time.
BUG=
Review-Url: https://codereview.chromium.org/2374063004
Cr-Commit-Position: refs/heads/master@{#39858}
Strings takes a considerate amount of time and times out on
many platforms. Generally the iterations need to be reduced
to free resources.
NOTRY=true
TBR=hablich@chromium.org
Review-Url: https://codereview.chromium.org/2374393002
Cr-Commit-Position: refs/heads/master@{#39856}
Tracing CPU profiler allows V8 to automatically collect CPU profile when tracing
is started with category v8.cpu_profile2 enabled.
BUG=chromium:406277
Review-Url: https://codereview.chromium.org/2378143003
Cr-Commit-Position: refs/heads/master@{#39855}
Reason for revert:
No real improvement as we still lack the ability to promote from
scavenges/young gen GCs.
Let's keep this in mind for later.
Original issue's description:
> [heap] Remove border page
>
> A page now belongs either the nursery *or* the intermediate gen. The page that
> contained objects of both spaces is removed in this change.
>
> BUG=chromium:636331
>
> Committed: https://crrev.com/42ece47446f0dbd3779d6e0e00dce97a1931a9f9
> Cr-Commit-Position: refs/heads/master@{#39778}
TBR=ulan@chromium.org,hpayer@chromium.org
BUG=chromium:636331
Review-Url: https://codereview.chromium.org/2383443002
Cr-Commit-Position: refs/heads/master@{#39854}
This ports the platform-specific SubStringStub to TurboFan.
It also contains a minor bug-fix for the case when the requested substring
length equals the subject string length, but the start index is not equal to 0.
The old stub implementation returned the subject string, while the new
implementation calls into runtime, which finally results in a thrown exception.
BUG=v8:5415
Committed: https://crrev.com/49be31921536716706a6790fbbf9c346b975af16
Review-Url: https://codereview.chromium.org/2355793003
Cr-Original-Commit-Position: refs/heads/master@{#39653}
Cr-Commit-Position: refs/heads/master@{#39851}