Commit Graph

29679 Commits

Author SHA1 Message Date
verwaest
1134688ced Introduce a code stub version of Array.prototype.push
This roughly doubles performance for generic Array.prototype.push.

BUG=

Review URL: https://codereview.chromium.org/1816553002

Cr-Commit-Position: refs/heads/master@{#34987}
2016-03-22 12:51:40 +00:00
ishell
a7ac81f41a [es6] Don't disable ES6 tail call elimination when Debugger is on.
BUG=v8:4698
LOG=N

Review URL: https://codereview.chromium.org/1819073003

Cr-Commit-Position: refs/heads/master@{#34986}
2016-03-22 12:39:26 +00:00
mstarzinger
9d3e055212 [presubmit] Disable linter check for alpha-sorted includes.
The linter (i.e. cpplint.py) no longer needs to check for alpha-sorted
include directives because our source formatting (i.e. clang-format)
will take care of this by now. This is the current default configuration
of the underlying linter anyways.

Note that the two tools disagree about the correct ordering about files
containing dash characters. The ordering suggested by the formatter is
more natural. Having the formatter trigger linter errors is not a good
situation to be in.

R=jochen@chromium.org

Review URL: https://codereview.chromium.org/1822003002

Cr-Commit-Position: refs/heads/master@{#34985}
2016-03-22 12:27:12 +00:00
mstarzinger
5836807ea8 [es6] Ship new ES6 instanceof operator semantics.
R=hablich@chromium.org
BUG=v8:4447
LOG=n

Review URL: https://codereview.chromium.org/1820903002

Cr-Commit-Position: refs/heads/master@{#34984}
2016-03-22 11:42:11 +00:00
epertoso
d158bf14b3 [Interpreter] TurboFan implementation of intrinsics.
Introduces a bytecode whose handler executes the equivalent of %_IsArray and %_IsJSReceiver without a runtime call.

BUG=v8:4822
LOG=y

Review URL: https://codereview.chromium.org/1645763003

Cr-Commit-Position: refs/heads/master@{#34983}
2016-03-22 11:36:05 +00:00
mythria
27338320f4 [Interpreter] Fixes CopyBytecodeArray to copy interrupt_budget field.
Fixes CopyBytecodeArray to set the interrupt_budget field.

BUG=v8:4280,v8:4690
LOG=N

Review URL: https://codereview.chromium.org/1809123003

Cr-Commit-Position: refs/heads/master@{#34982}
2016-03-22 11:05:21 +00:00
mstarzinger
31d3c8a074 [compiler] Move PassesFilter onto SharedFunctionInfo.
The JSFunction::PassesFilter predicate is not fine-grained enough to
actually distinguish different closures and hence can be changed into
SharedFunctionInfo::PassesFilter instead. This will allow the compiler
to use is more broadly.

R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/1823033002

Cr-Commit-Position: refs/heads/master@{#34981}
2016-03-22 10:02:15 +00:00
hpayer
3a69da3988 [heap] Adding fine grained timer scopes to external callbacks.
BUG=

Review URL: https://codereview.chromium.org/1806283004

Cr-Commit-Position: refs/heads/master@{#34980}
2016-03-22 08:17:35 +00:00
ishell
66e22b79e8 [crankshaft] Always generate lazy bailout points for tail calls ...
... because Debugger could still require them to inspect optimized frames.

BUG=chromium:596473, v8:4698
LOG=N

Review URL: https://codereview.chromium.org/1816113002

Cr-Commit-Position: refs/heads/master@{#34979}
2016-03-22 08:15:47 +00:00
mtrofin
1da4b88e82 [turbofan] Fix operands for VisitDiv on Intel.
The idiv instruction has 2 registers as output. This needs to be
modeled so that the move optimizer won't incorrectly elide away
moves.

BUG=

Review URL: https://codereview.chromium.org/1818323002

Cr-Commit-Position: refs/heads/master@{#34978}
2016-03-22 08:04:48 +00:00
jarin
e1bd9af173 [turbofan] Add more sanity checks to representation inference.
The CL also add guard nodes to places where we assume that certain
values are numbers.

Review URL: https://codereview.chromium.org/1821133002

Cr-Commit-Position: refs/heads/master@{#34977}
2016-03-22 06:50:52 +00:00
bmeurer
1d0df88b11 [intrinsics] Remove unused intrinsic %_IncrementStatsCounter.
This was once meant to be used for JavaScript code stubs, but since we
found a better way to do code stubs using TurboFan, we don't need this
runtime entry and intrinsic anymore.

R=jarin@chromium.org

Review URL: https://codereview.chromium.org/1821123002

Cr-Commit-Position: refs/heads/master@{#34976}
2016-03-22 06:35:39 +00:00
zhengxing.li
4c0ad04919 X87: [es6] Faster implementation of OrdinaryHasInstance.
port b6419fa229 (r34959)

  original commit message:
  Now implemented as a builtin that delegates to the InstanceOfStub. That
  stub was parameterized to fallback to either Runtime_InstanceOf or to
  Runtime_OrdinaryHasInstance depending on the --harmony-instanceof flag.
  Once the feature stabilizes and the flag is no longer needed, we can get
  rid of this parameterization again.

BUG=

Review URL: https://codereview.chromium.org/1821113002

Cr-Commit-Position: refs/heads/master@{#34975}
2016-03-22 06:25:27 +00:00
zhengxing.li
400f6c5038 X87: Extends testb and cmpb/cmpw instruction support in the ia32 assembler.
port 22523f25b1 (r34925)

  original commit message:
  This is in preparation for a CL that does the equivalent of http://crrev.com/1780193003 for ia32.

BUG=

Review URL: https://codereview.chromium.org/1823943002

Cr-Commit-Position: refs/heads/master@{#34974}
2016-03-22 05:39:56 +00:00
akos.palfi
9deff0fa26 MIPS: Fix '[stubs] Split ToNumberStub into reusable subparts.'
BUG=

Review URL: https://codereview.chromium.org/1824893002

Cr-Commit-Position: refs/heads/master@{#34973}
2016-03-22 05:39:55 +00:00
zhengxing.li
9640015ec4 X87: [crankshaft] Fixing ES6 tail call elimination.
port acbb968ded (r34920)

  original commit message:
  In case when F inlined normal call to G which tail calls H we should not write translation for G for the tail call site.
  Otherwise we will see G in a stack trace inside H.

  This CL also enables all existing tests related to ES6 tail call elimination and adds more combinations.

BUG=

Review URL: https://codereview.chromium.org/1819273003

Cr-Commit-Position: refs/heads/master@{#34972}
2016-03-22 04:20:59 +00:00
zhengxing.li
236d7005b6 X87: [stubs] Split ToNumberStub into reusable subparts.
port b7aa4c3ab3 (r34922)

  original commit message:
  Split ToNumberStub into the entry ToNumberStub, and two new stubs,
  StringToNumberStub and NonNumberToNumberStub, which can be used when we
  already know something about the input (i.e. in various branches of the
  code stubs, or in TurboFan graphs).

  Also introduce an appropriate StringToNumber simplified operator for
  TurboFan, that is pure and is lowered to an invocation of the newly
  added StringToNumberStub.

BUG=

Review URL: https://codereview.chromium.org/1816423002

Cr-Commit-Position: refs/heads/master@{#34971}
2016-03-22 04:15:55 +00:00
v8-autoroll
dcee82d61e Update V8 DEPS.
Rolling v8/third_party/android_tools to 19728471dd63a968668288488403286b68e4ae9e

TBR=machenbach@chromium.org,vogelheim@chromium.org,hablich@chromium.org

Review URL: https://codereview.chromium.org/1821943002

Cr-Commit-Position: refs/heads/master@{#34970}
2016-03-22 03:38:37 +00:00
caitpotter88
4720062073 [es7] stage --harmony_exponentiation_operator
BUG=v8:3915
LOG=N
R=adamk@chromium.org, littledan@chromium.org, rossberg@chromium.org

Review URL: https://codereview.chromium.org/1823683004

Cr-Commit-Position: refs/heads/master@{#34969}
2016-03-21 23:11:13 +00:00
jfb
ed76b66aab wasm: add flag to dump modules
Flags --dump_wasm_module and --dump_wasm_module_path=/path/to/folder allow us to run a bunch of tests and capture all of the wasm module files including the ones that come from the .js and .cc tests which are built on the fly, as well as the asm2wasm tests.

The files are all uniquely named `HASH.{ok,failed}.wasm`.

This will be especilly useful for fuzz testing, but could also be used for other tests including non-V8 tests.

For now I manually hacked tools/testrunner/local/execution.py so that tools/run-tests.py can output the modules. We may want to ad a flag to run-tests.py proper if this turns out to be useful.

R=bradnelson@chromium.org, titzer@chromium.org, kcc@chromium.org

Review URL: https://codereview.chromium.org/1816583003

Cr-Commit-Position: refs/heads/master@{#34968}
2016-03-21 21:42:59 +00:00
bradnelson
cca5c3f630 Fix conversion to float32, typing issue, split apart asm-wasm tests.
Add missing conversions from other types to f32 in fround.
Restrict fround() to only float, double, signed, unsigned (no unions / intish).
Restrict Bitwise operations to intish, particularly |0, when not applied to a foreign function.

Adding more exhaustive tests of stdlib Math, move to a separate file.
Adding tests of interesting values for the stdlib asm.js functions.

BUG= https://bugs.chromium.org/p/v8/issues/detail?id=4203
TEST=test-asm-validator,asm-wasm
R=titzer@chromium.org,rossberg@chromium.org
LOG=N

Review URL: https://codereview.chromium.org/1804243003

Cr-Commit-Position: refs/heads/master@{#34967}
2016-03-21 20:34:40 +00:00
caitpotter88
e6f4b7491c [parser] implement error reporting for Scanner
Enables the Scanner to provide a better error message when errors occur
in escape sequences, numbers, strings, etc.

BUG=v8:4829, v8:3230
LOG=N
R=adamk@chromium.org, littledan@chromium.org

Review URL: https://codereview.chromium.org/1793913002

Cr-Commit-Position: refs/heads/master@{#34966}
2016-03-21 20:27:44 +00:00
mlippautz
34fe5ee929 [heap] Optimize migration of objects
* Better inlining
* Avoid vtable lookup for visitor

BUG=chromium:524425
LOG=N

Review URL: https://codereview.chromium.org/1818013002

Cr-Commit-Position: refs/heads/master@{#34965}
2016-03-21 19:43:33 +00:00
adamk
249bf75e0c Remove runtime flags for Proxy and Reflect
Both of them shipped in Chrome 49 without incident.

Also move relevant tests from harmony/ to es6/.

Review URL: https://codereview.chromium.org/1815773002

Cr-Commit-Position: refs/heads/master@{#34964}
2016-03-21 19:40:02 +00:00
caitpotter88
609d7958ba [cleanup] add missing #undef SCANNER_ACCESSORS to parser-base.h
BUG=

Review URL: https://codereview.chromium.org/1819813003

Cr-Commit-Position: refs/heads/master@{#34963}
2016-03-21 19:24:29 +00:00
ishell
e6dca379b6 [crankshaft] Check if the function is callable before generating a tail call via Call builtin.
This is necessary to ensure that "Called non callable" exception will get a proper message and stack trace even for calls at tail position.

BUG=chromium:595615, v8:4698
LOG=N

Review URL: https://codereview.chromium.org/1818003002

Cr-Commit-Position: refs/heads/master@{#34962}
2016-03-21 19:24:28 +00:00
yangguo
5dedb164eb [regexp] require exact match for unicode property names.
R=littledan@chromium.org
BUG=v8:4810
LOG=N

Review URL: https://codereview.chromium.org/1824613002

Cr-Commit-Position: refs/heads/master@{#34961}
2016-03-21 19:22:24 +00:00
ulan
5ff7901e24 Fix JSInliningHeuristic::CandidateCompare predicate.
STL requires comparison to be a strict weak ordering.

In particular the predicate should be antisymmetric:
f(x, y) implies !f(y, x).

BUG=v8:4848
LOG=NO

Review URL: https://codereview.chromium.org/1818043004

Cr-Commit-Position: refs/heads/master@{#34960}
2016-03-21 18:26:39 +00:00
mstarzinger
b6419fa229 [es6] Faster implementation of OrdinaryHasInstance.
Now implemented as a builtin that delegates to the InstanceOfStub. That
stub was parameterized to fallback to either Runtime_InstanceOf or to
Runtime_OrdinaryHasInstance depending on the --harmony-instanceof flag.
Once the feature stabilizes and the flag is no longer needed, we can get
rid of this parameterization again.

R=bmeurer@chromium.org
BUG=v8:4447
LOG=n

Review URL: https://codereview.chromium.org/1819813002

Cr-Commit-Position: refs/heads/master@{#34959}
2016-03-21 18:05:53 +00:00
vogelheim
09ac4f295c Revert of Parser: Make skipping HTML comments optional. (patchset #6 id:140001 of https://codereview.chromium.org/1801203002/ )
Reason for revert:
Violates ES6 spec (crbug.com/4850), and implementation was over-eager. Will revert for now.

Original issue's description:
> Parser: Make skipping HTML comments optional.
>
> API change: This adds a new flag skip_html_comments to v8::ScriptOriginOptions. This flag controls whether V8 will attempt to honour HTML-style comments in JS sources.
>
> (That is: Gracefully ignore <!-- ... ---> in JS sources, which was a popular technique in the early days of JavaScript, to prevent non-JS-enabled browsers from displaying script sources to uses.)
>
> The flag defaults to 'true' when using v8::ScriptOrigin constructor, which preserves the existing behaviour. Embedders which are happy with the existing behaviour will thus not need any changes.
>
> BUG=chromium:573887
> LOG=Y
>
> Committed: https://crrev.com/91d344288aa51ed03eaaa1cb3e368ac1e82f0173
> Cr-Commit-Position: refs/heads/master@{#34904}

TBR=jochen@chromium.org,rossberg@chromium.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=chromium:573887, v8:4850
LOG=Y

Review URL: https://codereview.chromium.org/1817163003

Cr-Commit-Position: refs/heads/master@{#34958}
2016-03-21 17:50:22 +00:00
ishell
35a14c75e3 Disable ES6 tail call elimination for native functions.
We don't want them to disappear from the stack traces.

BUG=v8:4698
LOG=N

Review URL: https://codereview.chromium.org/1818063002

Cr-Commit-Position: refs/heads/master@{#34957}
2016-03-21 17:44:57 +00:00
verwaest
f7bac43d4a Simplify JSArray::HasReadOnlyLength
BUG=

Review URL: https://codereview.chromium.org/1823613002

Cr-Commit-Position: refs/heads/master@{#34956}
2016-03-21 17:13:29 +00:00
oth
48d082af38 [interpreter] Add support for scalable operands.
This change introduces wide prefix bytecodes to support wide (16-bit)
and extra-wide (32-bit) operands. It retires the previous
wide-bytecodes and reduces the number of operand types.

Operands are now either scalable or fixed size. Scalable operands
increase in width when a bytecode is prefixed with wide or extra-wide.

The bytecode handler table is extended to 256*3 entries. The
first 256 entries are used for bytecodes with 8-bit operands,
the second 256 entries are used for bytecodes with operands that
scale to 16-bits, and the third group of 256 entries are used for
bytecodes with operands that scale to 32-bits.

LOG=N
BUG=v8:4747,v8:4280

Review URL: https://codereview.chromium.org/1783483002

Cr-Commit-Position: refs/heads/master@{#34955}
2016-03-21 17:09:49 +00:00
mstarzinger
d50d7e1851 [interpreter] Drop overprotective --harmony-instanceof check.
The check in question will trigger because one of our unit tests still
emits the bytecode (i.e. unittests/BytecodeArrayBuilderTest) even when
the flag is turned on by default.

R=rmcilroy@chromium.org
TEST=unittests/BytecodeArrayBuilderTest.AllBytecodesGenerated

Review URL: https://codereview.chromium.org/1820753003

Cr-Commit-Position: refs/heads/master@{#34954}
2016-03-21 16:48:50 +00:00
jyan
faaf8512bf S390: Disable gcc generation of mul-add in cctests
Generated code performs distinct floating multiply and add/subtract
operations. Tests fail when GCC uses mul-add to calculate the
expected result since these instructions provide higher accuracy due
to the lack of an intermediate round.

R=machenbach@chromium.org, mbrandy@us.ibm.com, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=

Review URL: https://codereview.chromium.org/1812823008

Cr-Commit-Position: refs/heads/master@{#34953}
2016-03-21 16:43:35 +00:00
mlippautz
fdb0784d0a [heap] Remove LocalStoreBuffer and add slots in parallel
Now that we have page-local remembered sets (due to refilling in page
granularity) we can perform all updates on the sets during compaction in
parallel without caching slots locally.

BUG=chromium:524425
LOG=N
NOTRY=true

Review URL: https://codereview.chromium.org/1811573002

Cr-Commit-Position: refs/heads/master@{#34952}
2016-03-21 16:01:01 +00:00
bbudge
7ec8eccef4 Add Simd128Value code stubs.
LOG=N
BUG=v8:4124

Review URL: https://codereview.chromium.org/1706053002

Cr-Commit-Position: refs/heads/master@{#34951}
2016-03-21 15:47:02 +00:00
ssanfilippo
a4afba532a [Interpreter] Fix incorrect tail call code generated when using Abort.
Previous to this change, the dummy Return inside
InterpreterAssembler::Abort caused TurboFan to emit incorrect code for
handlers that made use of this call. The stack pointer would not be
incremented before tail calling into the next handler, causing it to
push on top on the caller's frame instead of overwriting it.

BUG=v8:4280
LOG=N

Review URL: https://codereview.chromium.org/1819853002

Cr-Commit-Position: refs/heads/master@{#34950}
2016-03-21 15:17:39 +00:00
mlippautz
731ebc0e99 [tools] Default to stdin for processing in eval_gc_time.sh
NOTRY=true
BUG=

Review URL: https://codereview.chromium.org/1817063002

Cr-Commit-Position: refs/heads/master@{#34949}
2016-03-21 15:08:57 +00:00
jkummerow
6703cce1b7 [crankshaft] Delete unused Hydrogen-BCH code
Bounds check hoisting was known to be buggy and has never been turned on.
Since Crankshaft is deprecated, nobody is going to spend time fixing it,
so let's just get rid of it.

BUG=v8:4155,v8:4849
LOG=n
R=bmeurer@chromium.org

Review URL: https://codereview.chromium.org/1823623002

Cr-Commit-Position: refs/heads/master@{#34948}
2016-03-21 15:07:06 +00:00
mstarzinger
3360ba08e8 [crankshaft] Enable ES6 instanceof optimization.
Note that this optimization only kicks in with --harmony-instanceof
being enabled as well. By itself this optimization itself does not
trigger.

R=bmeurer@chromium.org
BUG=v8:4447
LOG=n

Review URL: https://codereview.chromium.org/1817043002

Cr-Commit-Position: refs/heads/master@{#34947}
2016-03-21 14:49:30 +00:00
machenbach
76f677fc6d [CQ] Reduce code-coverage experiment factor.
BUG=chromium:568949
LOG=n
TBR=kjellander@chromium.org, tandrii@chromium.org
NOTRY=true
NOPRESUBMIT=true

Review URL: https://codereview.chromium.org/1822703002

Cr-Commit-Position: refs/heads/master@{#34946}
2016-03-21 14:40:51 +00:00
yangguo
18cdb9cd48 [serializer] tweak startup serializer for warming up.
Code that we want to keep after warming up may have context-dependent
inline caches. Clear these to avoid running into IC misses after
deserialization.

R=vogelheim@chromium.org
BUG=v8:4836
LOG=N

Review URL: https://codereview.chromium.org/1811263002

Cr-Commit-Position: refs/heads/master@{#34945}
2016-03-21 14:30:14 +00:00
verwaest
47f64a76c5 Inline fast-path interceptor access in the IC utilities
BUG=

Committed: https://crrev.com/b3bda50ddd9e30b718ae7972d9dd0d095113f634
Cr-Commit-Position: refs/heads/master@{#34892}

Review URL: https://codereview.chromium.org/1810083003

Cr-Commit-Position: refs/heads/master@{#34944}
2016-03-21 14:21:25 +00:00
machenbach
6734df936a [test] Skip some flaky cpu profiler tests on windows.
BUG=v8:2999,v8:4751
LOG=n
NOTRY=true
TBR=hablich@chromium.org

Review URL: https://codereview.chromium.org/1820813003

Cr-Commit-Position: refs/heads/master@{#34943}
2016-03-21 14:17:56 +00:00
verwaest
536d8cbbad Speed up PrototypeHasNoElements and drop the "fast" path before, it's now slower.
BUG=

Review URL: https://codereview.chromium.org/1815663002

Cr-Commit-Position: refs/heads/master@{#34942}
2016-03-21 14:16:07 +00:00
hlopko
e3680e9c68 [heap] Move mark-compact specific code to MarkCompactEpilogue
BUG=
LOG=no

Review URL: https://codereview.chromium.org/1812203002

Cr-Commit-Position: refs/heads/master@{#34941}
2016-03-21 14:03:55 +00:00
mstarzinger
02a015b1c1 [es6] Rebaseline tests of 'instanceof' error messages.
This rebaselines all our internal tests for error messages thrown by the
implementation of 'instanceof' to the new ES6 semantics. It also applies
a minor rephrasing to the messages in question.

R=rossberg@chromium.org
BUG=v8:4447
LOG=n

Review URL: https://codereview.chromium.org/1822663002

Cr-Commit-Position: refs/heads/master@{#34940}
2016-03-21 14:01:50 +00:00
rmcilroy
e2b3d0534d [Interpreter] Remove unecessary store of BytecodeArray in CallPrologue.
The BytecodeArray shouldn't have changed since it was last loaded from the stack
frame, so this store is unecessary.

BUG=v8:4280
LOG=N

Review URL: https://codereview.chromium.org/1807673009

Cr-Commit-Position: refs/heads/master@{#34939}
2016-03-21 13:39:07 +00:00
yangguo
25d33be76a [regexp] Fix issues with character range limit.
R=jochen@chromium.org
BUG=chromium:595634
LOG=N

Review URL: https://codereview.chromium.org/1820823003

Cr-Commit-Position: refs/heads/master@{#34938}
2016-03-21 13:39:06 +00:00