Commit Graph

44272 Commits

Author SHA1 Message Date
Clemens Hammacher
bc293c246a [Liftoff] Introduce LiftoffRegister type
LiftoffRegister is an abstraction over Register and DoubleRegister.
Many functions in Liftoff do not need to distinguish GP and FP
registers. LiftoffRegister allows to implement most functions
generically. Accessors allow to convert them back to Register or
DoubleRegister.
Both register types are represented in a unified index space, which
allows to extend this concept to more register types and implement
aliasing in a straight-forward manner.
Many functions currently only implement the GP case. FP will be added
later.

R=titzer@chromium.org

Bug: v8:6600
Change-Id: I043b787bc09dd1a06506ad515eb325b8ea19746d
Reviewed-on: https://chromium-review.googlesource.com/793390
Reviewed-by: Ben Titzer <titzer@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49780}
2017-12-01 10:08:24 +00:00
Shiyu Zhang
ffcb51b243 [ic] Do not convert undefined key to undefined_string.
In the special case of KeyedLoadIC, where the key is always undefined,
LowerCheckEqualsInternalizedString fails and triggers deoptimization
loops. It's because {exp}, which is undefined_string, does not match
{val}, which is undefined_value.

This patch drops the convertion from undefined_value to undefined_string
for undefined key in KeyedLoadIC. It makes undefined key be able to pass
LowerCheckEqualsInternalizedString and avoids the deoptimization loops.

Bug: 
Change-Id: Ie15358e705490fb2e4907f4d37a3ef7921f74844
Reviewed-on: https://chromium-review.googlesource.com/789613
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49779}
2017-12-01 09:52:25 +00:00
Camillo Bruni
2a50797d40 [runtime] Reset the current context when leaving the runtime in the CEntryStub
This CL introduces a Context::kInvalidContext sentinel value to make clear that
no context is active. We silently accept smi 0 (= nullptr) as a non-set context
which usually was the default value making it hard to ensure whether this
happened on purpose or not.


Change-Id: I5c35616f26b0b64c1cd976563a6eeb0ce474927d
Reviewed-on: https://chromium-review.googlesource.com/790291
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49778}
2017-12-01 09:51:06 +00:00
Georg Neis
faffab96a2 [bigint,compiler] Add tests for Turbofan.
Bug: v8:6791
Change-Id: I1c57fc697dc143fec8bfd67db16c7bc4f840462d
Reviewed-on: https://chromium-review.googlesource.com/800620
Commit-Queue: Georg Neis <neis@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49777}
2017-12-01 07:48:44 +00:00
Georg Neis
dd54b5b008 [bigint,compiler] Adapt TruncatePointerTaggedToBit.
It reflects the semantics of ToBoolean, so it must be adapted for
bigints.

Bug: v8:6791
Change-Id: I18931df21528463dacf5ad50fa8264b1c968c6b5
Reviewed-on: https://chromium-review.googlesource.com/799831
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49776}
2017-12-01 07:00:54 +00:00
v8-autoroll
08e623b422 Update V8 DEPS.
Rolling v8/build: 64dd7ca..a7ac13d

Rolling v8/buildtools: 505de88..282996b

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/9968f9b..280aff0

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

Change-Id: I906b25bd37386e64137a37a0706ca2b0103a0143
Reviewed-on: https://chromium-review.googlesource.com/803034
Reviewed-by: v8 autoroll <v8-autoroll@chromium.org>
Commit-Queue: v8 autoroll <v8-autoroll@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49775}
2017-12-01 04:51:44 +00:00
jing.bao
6f52d980b4 [ia32][wasm] Add S128 Zero/Not/And/Or/Xor
Bug: 
Change-Id: I0868da7ee73f1c7637d9c79b6c78f27557cd14a4
Reviewed-on: https://chromium-review.googlesource.com/792653
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Bill Budge <bbudge@chromium.org>
Commit-Queue: Jing Bao <jing.bao@intel.com>
Cr-Commit-Position: refs/heads/master@{#49774}
2017-12-01 02:15:14 +00:00
Jakob Kummerow
d84efe121b [bigint] Implement BigInt::Exponentiate
Bug: v8:6791
Change-Id: I976876a4956b5c65f6f3788389f42d394d08dc99
Reviewed-on: https://chromium-review.googlesource.com/788513
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49773}
2017-12-01 00:38:28 +00:00
Alexey Kozyatinskiy
ae26aab1bd [inspector] convert protocol definition into the pdl format
R=pfeldman@chromium.org

Bug: none
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I9005cd355f05143daeb125d851d18ff2c0924256
Reviewed-on: https://chromium-review.googlesource.com/801338
Reviewed-by: Pavel Feldman <pfeldman@chromium.org>
Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49772}
2017-11-30 22:51:18 +00:00
Michal Majewski
d96edb59d7 [test] Rename flag for forcing slow path.
TBR=jgruber@chromium.org

Bug: v8:7120
Change-Id: I50b852a4526103d56b3a2c60c4a88b5ecaecf9bb
Reviewed-on: https://chromium-review.googlesource.com/801270
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49771}
2017-11-30 20:36:42 +00:00
Michael Achenbach
fc50e2c4c9 Revert "[objects] No longer create short external strings."
This reverts commit e42e7fc800.

Reason for revert: Speculative revert for:
https://crbug.com/v8/7149

Original change's description:
> [objects] No longer create short external strings.
> 
> This fixes String::MakeExternal() to bail out if the subject string
> doesn't fit a regular ExternalString, instead of creating a short
> external string. The observation here is that for short external strings
> the overhead of having to have the StringResource plus going to the
> runtime/C++ for each and every character access from JavaScript land
> is probably bigger than the anticipated benefits.
> 
> If this turns out to be wrong and there's a real benefit, we should make
> use of ThinStrings instead of having a separate way to represent
> external strings.
> 
> Bug: v8:6621, v8:7109, v8:7145
> Change-Id: I4b75da08b82a72027c782a69de9c8eaf3cca1d4d
> Reviewed-on: https://chromium-review.googlesource.com/799750
> Reviewed-by: Yang Guo <yangguo@chromium.org>
> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#49735}

TBR=yangguo@chromium.org,bmeurer@chromium.org

Change-Id: I3f5cfa9ab5c99ddce1d61ede9ed9515cb3936cdd
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:6621, v8:7109, v8:7145, v8:7149
Reviewed-on: https://chromium-review.googlesource.com/801675
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49770}
2017-11-30 20:04:41 +00:00
Ulan Degenbaev
63b6b7557f [heap] Print marking worklist only in debug mode.
This save ~40KB of code size in release mode.

Bug: 
Change-Id: Ibdf7e64bb2592f53a4edf07665016dd5a65714a0
Reviewed-on: https://chromium-review.googlesource.com/801515
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49769}
2017-11-30 19:51:19 +00:00
Clemens Hammacher
b9a649c1ce Revert "[wasm] Gracefully handle malformed custom sections in WebAssembly.Module.customSections()."
This reverts commit 163c1c8262.

Reason for revert: Throws std::bad_alloc on linux: https://build.chromium.org/p/client.v8/builders/V8%20Linux/builds/21927; needs investigation.

Original change's description:
> [wasm] Gracefully handle malformed custom sections in WebAssembly.Module.customSections().
> 
> R=​clemensh@chromium.org
> BUG=chromium:789952
> 
> Change-Id: Ida627fa6cdeacff01a0ec4d20e58281f17528010
> Reviewed-on: https://chromium-review.googlesource.com/800941
> Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
> Commit-Queue: Ben Titzer <titzer@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#49767}

TBR=titzer@chromium.org,clemensh@chromium.org

Change-Id: I63fbd8f55025f53c453e91d0f7a181c21ae53a39
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:789952
Reviewed-on: https://chromium-review.googlesource.com/801554
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49768}
2017-11-30 19:07:55 +00:00
Ben L. Titzer
163c1c8262 [wasm] Gracefully handle malformed custom sections in WebAssembly.Module.customSections().
R=clemensh@chromium.org
BUG=chromium:789952

Change-Id: Ida627fa6cdeacff01a0ec4d20e58281f17528010
Reviewed-on: https://chromium-review.googlesource.com/800941
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Ben Titzer <titzer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49767}
2017-11-30 18:25:09 +00:00
Ulan Degenbaev
5b7e1a01f4 [heap] Annotate accesses to used instance size field of a map as atomic.
This fixes false positive data race reported by TSAN.

Bug: chromium:790004
Change-Id: I6335af1735fe9ea77a26cc9919ec4f089b004cdf
Reviewed-on: https://chromium-review.googlesource.com/800936
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49766}
2017-11-30 17:50:49 +00:00
Michael Lippautz
9fbbe2a474 [heap] Full MC/Minor MC: Add support for ThinString
This reverts commit b4d2f3eb99.

Bug: chromium:651354, chromium:788113
Change-Id: I04b7541e7eb69f737d45e90bbfec591cf8f8190f
Reviewed-on: https://chromium-review.googlesource.com/800552
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49765}
2017-11-30 16:40:59 +00:00
Camillo Bruni
1385b092e8 [log] Support first function execution logging with --log-function-events
Bug: chromium:757467
Change-Id: I52f8100e0c8b4ac07e1f875e44cb468fa8ce572b
Reviewed-on: https://chromium-review.googlesource.com/793611
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49764}
2017-11-30 16:38:59 +00:00
Ali Ijaz Sheikh
6331766224 [heap] Add missing steps for Add/Remove observers (reland^2)
(Previously landed as #48513 / e770879eee)
(Previously landed as #48606 / d0e3fb4f2e)

CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel

Bug: 
Change-Id: I302fb52fb47b6c9d59dd2b28eb9923c37881c15b
Reviewed-on: https://chromium-review.googlesource.com/794857
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ali Ijaz Sheikh <ofrobots@google.com>
Cr-Commit-Position: refs/heads/master@{#49763}
2017-11-30 16:35:14 +00:00
Georg Neis
6f0268867a [compiler] Remove obsolete comments.
R=jarin@chromium.org

Bug: 
Change-Id: I90c124253a9e307f914d889406965ada4c5ba404
Reviewed-on: https://chromium-review.googlesource.com/800070
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49762}
2017-11-30 16:34:09 +00:00
Georg Neis
7da9f78916 [compiler] Fix editing mistake.
In my previous typer changes I had forgotten to remove one line.

R=jarin@chromium.org

Bug: 
Change-Id: If9e9984c23273707548c2d7329f9fa715a170a90
Reviewed-on: https://chromium-review.googlesource.com/800270
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49761}
2017-11-30 16:29:19 +00:00
Michael Starzinger
3ed1f280f3 [csa] Switch {VariableList} to be a std::vector.
R=cbruni@chromium.org
BUG=v8:7109

Cq-Include-Trybots: master.tryserver.v8:v8_linux_noi18n_rel_ng
Change-Id: I076b5b7760a454680de0e4247eb625a964905652
Reviewed-on: https://chromium-review.googlesource.com/796431
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49760}
2017-11-30 15:53:17 +00:00
Georgia Kouveli
1228c556b6 [arm64] ArgumentsAdaptorTrampoline fix for jssp removal.
Even though a previous patch made the number of slots pushed/claimed on
the stack aligned, the boundary between frames was not a multiple of
two slots as well. We were pushing the number of arguments (which belongs
in the ArgumentAdaptor frame) together with the arguments to pass to the
callee (which belong to the frame of the callee). Those need to be
separated so we can drop the arguments without messing up the alignment.

Bug: v8:6644
Change-Id: I259c58db33a7c2726e5a3c74bcd67496f607d1d0
Reviewed-on: https://chromium-review.googlesource.com/793047
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com>
Cr-Commit-Position: refs/heads/master@{#49759}
2017-11-30 15:30:16 +00:00
Jeremy Roman
1de9248e4f Eliminate JsonParser::factory_ member.
This is always equal to isolate_ (so getting it from the isolate is totally
free), and this makes the code slightly smaller while avoiding a few loads
and stores here and there.

Change-Id: Ib648cd0a1f6ea7cbb73a0188ec92cd091ce34792
Reviewed-on: https://chromium-review.googlesource.com/794046
Reviewed-by: Marja Hölttä <marja@chromium.org>
Commit-Queue: Jeremy Roman <jbroman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49758}
2017-11-30 14:53:41 +00:00
Clemens Hammacher
c7d81cdf4e [cleanup] Remove dead flags
R=mstarzinger@chromium.org

Bug: v8:7109
Change-Id: Id5e5c653136dd0cb5d8dcd2cf61d7941ec7ff61b
Reviewed-on: https://chromium-review.googlesource.com/800075
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49757}
2017-11-30 14:35:01 +00:00
Michal Majewski
3b06511052 Reland "[test] Creating command before execution phase."
This is a reland of 98cc9e862f
Original change's description:
> [test] Creating command before execution phase.
> 
> Immutable command class with shell, flags and
> environment.
> 
> Command creation moved from worker to the main
> process. Because of that there is no need to send
> test cases beyond process boundaries and load test
> suites in worker processes.
> 
> Bug: v8:6917
> Change-Id: Ib6a44278095b4f7141eb9b96802fe3e8117678a6
> Reviewed-on: https://chromium-review.googlesource.com/791710
> Commit-Queue: Michał Majewski <majeski@google.com>
> Reviewed-by: Michael Achenbach <machenbach@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#49746}

Bug: v8:6917
Change-Id: I49c29a8db813c47909f2cc45070ac7721a447c7a
Reviewed-on: https://chromium-review.googlesource.com/800370
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michał Majewski <majeski@google.com>
Cr-Commit-Position: refs/heads/master@{#49756}
2017-11-30 13:47:40 +00:00
Michael Achenbach
bbd9e4a76b Revert "[heap] Minor MC: Support ThinString"
This reverts commit 6b29f1cf28.

Reason for revert: Breaks many bots. Please no notry:
https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20verify%20csa/builds/4512

Original change's description:
> [heap] Minor MC: Support ThinString
> 
> No-try: true
> Bug: chromium:651354, chromium:788113
> Change-Id: I53cc2f04974671982371d1c26c71bd559450a5aa
> Reviewed-on: https://chromium-review.googlesource.com/800176
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Hannes Payer <hpayer@chromium.org>
> Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#49752}

TBR=ulan@chromium.org,hpayer@chromium.org,mlippautz@chromium.org

Change-Id: I0a5f47f144ae9c8d2ba279243124fa10ec99e165
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:651354, chromium:788113
Reviewed-on: https://chromium-review.googlesource.com/800491
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49755}
2017-11-30 13:43:29 +00:00
Jakob Gruber
b4d2f3eb99 Revert "[heap] Minor MC: Support ThinString"
This reverts commit 6b29f1cf28.

Reason for revert: https://build.chromium.org/p/client.v8/builders/V8%20Linux64/builds/21671

Original change's description:
> [heap] Minor MC: Support ThinString
> 
> No-try: true
> Bug: chromium:651354, chromium:788113
> Change-Id: I53cc2f04974671982371d1c26c71bd559450a5aa
> Reviewed-on: https://chromium-review.googlesource.com/800176
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Hannes Payer <hpayer@chromium.org>
> Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#49752}

TBR=ulan@chromium.org,hpayer@chromium.org,mlippautz@chromium.org

Change-Id: I6268c5c090377cb97a3e8cdf1bb4b19b3c6876da
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:651354, chromium:788113
Reviewed-on: https://chromium-review.googlesource.com/800610
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49754}
2017-11-30 13:42:24 +00:00
Clemens Hammacher
8cf73e85b2 [wasm] Make the "jco" gdb macro also print WasmCode
Using the "jco" gdb macro on a WasmCode address would currently crash.
With this change, you can also use it to print code objects off the gc
heap.

R=titzer@chromium.org
CC=wasm-team@google.com

Bug: v8:7140, v8:6876
Change-Id: I21daf58b6b4734e3d052b66284b95938b4f57d40
Reviewed-on: https://chromium-review.googlesource.com/796416
Reviewed-by: Ben Titzer <titzer@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49753}
2017-11-30 13:22:49 +00:00
Michael Lippautz
6b29f1cf28 [heap] Minor MC: Support ThinString
No-try: true
Bug: chromium:651354, chromium:788113
Change-Id: I53cc2f04974671982371d1c26c71bd559450a5aa
Reviewed-on: https://chromium-review.googlesource.com/800176
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49752}
2017-11-30 13:13:29 +00:00
Michael Lippautz
9ac877fa77 [heap] Minor MC: Free and prefree empty remembered set buckets
No-try: true
Bug: chromium:651354, chromium:788113
Change-Id: Iff2051751c4688c307e8f23ddd08de203974e842
Reviewed-on: https://chromium-review.googlesource.com/800272
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49751}
2017-11-30 13:03:09 +00:00
Michael Hablich
bb23ab8346 Updated version to 6.5
TBR=machenbach@chromium.org
NOTRY=true

Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
Change-Id: I9d074745843b550603c0b68f2b397a121a494504
Reviewed-on: https://chromium-review.googlesource.com/800173
Commit-Queue: Michael Hablich <hablich@chromium.org>
Reviewed-by: Michael Hablich <hablich@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49750}
2017-11-30 12:54:29 +00:00
Ulan Degenbaev
21650958ba [runtime] Use methods instead of static functions in RuntimeCallStats.
Bug: chromium:758183
Change-Id: If43122140626207e3f972ccb7d048e012db3ed02
Reviewed-on: https://chromium-review.googlesource.com/796771
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Marja Hölttä <marja@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49749}
2017-11-30 12:39:39 +00:00
Michael Lippautz
776721396a [heap] Minor MC: Fix task computation
No-try: true
Bug: chromium:651354, chromium:788113
Change-Id: I8955b322b826c0a59f85c32bb2c1ec8c9d4e0761
Reviewed-on: https://chromium-review.googlesource.com/800330
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49748}
2017-11-30 12:37:19 +00:00
Michael Achenbach
d8b369d2be Revert "[test] Creating command before execution phase."
This reverts commit 98cc9e862f.

Reason for revert: Breaks test isolation:
https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20builder/builds/29746

Original change's description:
> [test] Creating command before execution phase.
> 
> Immutable command class with shell, flags and
> environment.
> 
> Command creation moved from worker to the main
> process. Because of that there is no need to send
> test cases beyond process boundaries and load test
> suites in worker processes.
> 
> Bug: v8:6917
> Change-Id: Ib6a44278095b4f7141eb9b96802fe3e8117678a6
> Reviewed-on: https://chromium-review.googlesource.com/791710
> Commit-Queue: Michał Majewski <majeski@google.com>
> Reviewed-by: Michael Achenbach <machenbach@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#49746}

TBR=machenbach@chromium.org,sergiyb@chromium.org,majeski@google.com

Change-Id: I44b99468d18fd093833f4185dad067a9eeaf2bc1
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:6917
Reviewed-on: https://chromium-review.googlesource.com/800292
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49747}
2017-11-30 12:32:31 +00:00
Michal Majewski
98cc9e862f [test] Creating command before execution phase.
Immutable command class with shell, flags and
environment.

Command creation moved from worker to the main
process. Because of that there is no need to send
test cases beyond process boundaries and load test
suites in worker processes.

Bug: v8:6917
Change-Id: Ib6a44278095b4f7141eb9b96802fe3e8117678a6
Reviewed-on: https://chromium-review.googlesource.com/791710
Commit-Queue: Michał Majewski <majeski@google.com>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49746}
2017-11-30 12:30:09 +00:00
Sergiy Byelozyorov
3350608823 [tools] Double timeout for JSTests
R=machenbach@chromium.org

Bug: chromium:775123
Change-Id: I8ca24e48c978b754b8cf9d455ae9314d730104c3
Reviewed-on: https://chromium-review.googlesource.com/800071
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Sergiy Byelozyorov <sergiyb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49745}
2017-11-30 12:12:09 +00:00
Benedikt Meurer
ced5628226 [turbofan] Use proper string map in NewConsString.
Finally address that long-standing TODO where ConsString allocation in
TurboFan would always go for the two byte map instead of choosing the
one byte map if the inputs are one byte strings.

Bug: v8:5269, v8:7109
Change-Id: Ibcfceaf499ceebef0ef928ebc5f204bcacf29bc0
Reviewed-on: https://chromium-review.googlesource.com/799700
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49744}
2017-11-30 12:08:09 +00:00
Ulan Degenbaev
cf7fa2eb08 [runtime] Refactor RuntimeCallStats counters to use enums.
Currently RuntimeCallStats stores CounterIds as inner pointers.
This patch replaces them with enums and removes static table.

Bug: chromium:758183
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
Change-Id: Icb4030fc3ad3dd02e9c2648ce7c43b6f2d47fa9d
Reviewed-on: https://chromium-review.googlesource.com/796477
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49743}
2017-11-30 11:32:53 +00:00
Andreas Haas
603d52f393 [d8] Fix --enable-tracing
This CL fixes an issue with --enable-tracing which was introduced
recently where the tracing file was closed too early. In addition it
adds a test for --enable-tracing to avoid such an issue in the future.

R=machenbach@chromium.org, rmcilroy@chromium.org

Change-Id: I1b3699a4dfbe27230ac1d21d5f6bc7b2ee9ed435
Reviewed-on: https://chromium-review.googlesource.com/796214
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49742}
2017-11-30 10:53:37 +00:00
Michael Achenbach
df659b17ed [test] Refactor variant flags
This derives two global variables to ease adding new variants.

Bug: chromium:788104
Change-Id: Ibe933dc0999f6dfa0ae8bf2afa0a5de8e44aefca
Reviewed-on: https://chromium-review.googlesource.com/799790
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Reviewed-by: Sergiy Byelozyorov <sergiyb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49741}
2017-11-30 10:41:57 +00:00
Michael Lippautz
c99c9c3e96 [testing] Add minor MC variant
No-try: true
Bug: v8:788113
Change-Id: I6e9c659cc5658f4da361552936551adb594f56d9
Reviewed-on: https://chromium-review.googlesource.com/799872
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49740}
2017-11-30 10:02:57 +00:00
Michael Achenbach
9095b279fa [build] Enable slow-fast-switch feature on a subset of bots
This prefixes the flag to be more uniform with existing flags and makes
it available as a gn argument.

The switch feature is enabled on a subset of bots, the linux64 release
trybot and all sanitizers. Note, this doesn't switch to slow paths -
it just allows to use the runtime flag on those bots.

Bug: v8:7120
Change-Id: I706a7a9bd503c13d5432cac9a13a909f4f32a0a7
Reviewed-on: https://chromium-review.googlesource.com/798412
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49739}
2017-11-30 09:51:37 +00:00
Jochen Eisinger
abe77c57df Turn DCHECKs in FindSharedFunctionInfo into CHECKs
When we try to get a function literal with an ID beyond the
last known ID we easily create out-of-bound read bugs. It's preferable
to crash in this situation.

BUG=chromium:789764
R=marja@chromium.org

Change-Id: I4f35e9231ef6af18204bbac96df3652c3d30c29f
Reviewed-on: https://chromium-review.googlesource.com/798411
Reviewed-by: Marja Hölttä <marja@chromium.org>
Commit-Queue: Jochen Eisinger <jochen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49738}
2017-11-30 09:43:27 +00:00
Jakob Gruber
f34c58a062 [regexp] Ensure handles are freed inside RegExpReplace loop
Handles created inside each loop iteration should be freed as the
current iteration goes out of scope.

TBR=yangguo@chromium.org

Bug: v8:7122, chromium:763839
Change-Id: I70a95457c773b26792d87734dab62bc8f4f5fbd0
Reviewed-on: https://chromium-review.googlesource.com/796794
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49737}
2017-11-30 09:10:57 +00:00
Jakob Gruber
a812ecdcea [test] Disable --force-slow-path for mjsunit/es6/array-iterator-turbo
This test expects certain functions to be optimized, which does not
happen if we force array objects onto the slow path.

Bug: v8:7122
Change-Id: I716954fff564f1c4f0782b3452557ec89a3b4307
Reviewed-on: https://chromium-review.googlesource.com/796860
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49736}
2017-11-30 09:05:57 +00:00
Benedikt Meurer
e42e7fc800 [objects] No longer create short external strings.
This fixes String::MakeExternal() to bail out if the subject string
doesn't fit a regular ExternalString, instead of creating a short
external string. The observation here is that for short external strings
the overhead of having to have the StringResource plus going to the
runtime/C++ for each and every character access from JavaScript land
is probably bigger than the anticipated benefits.

If this turns out to be wrong and there's a real benefit, we should make
use of ThinStrings instead of having a separate way to represent
external strings.

Bug: v8:6621, v8:7109, v8:7145
Change-Id: I4b75da08b82a72027c782a69de9c8eaf3cca1d4d
Reviewed-on: https://chromium-review.googlesource.com/799750
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49735}
2017-11-30 08:57:07 +00:00
Clemens Hammacher
bb64e34f0c [wasm] Add "freeze" flag to test lazy compilation
In order to test that we don't repeatedly go through the
WasmCompileLazy runtime function, add a flag to the
LazyCompilationOrchestrator to "freeze" it, i.e. disallow any further
lazy compilation.
In tests, use this flag to first call a method, then freeze lazy
compilation, then call the method again to assert that no further lazy
compilation is triggered.

This test currently fails with --wasm-jit-to-native, so disable it for
that variant.

R=titzer@chromium.org
CC=mtrofin@chromium.org

Bug: v8:7140, chromium:788441, v8:5991
Change-Id: I18a40d302c24041740d8a54351d06ed968f4beec
Reviewed-on: https://chromium-review.googlesource.com/796430
Reviewed-by: Mircea Trofin <mtrofin@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49734}
2017-11-30 08:54:12 +00:00
Clemens Hammacher
b15be58f3a [wasm] [cleanup] Fix WasmCode::Kind enum names
According to the style guide, enum names they must either be
capitalized, or start with a "k". I prefer the kFoo syntax.

R=mtrofin@chromium.org

Bug: v8:7109
Change-Id: I9c06c4cb05b05ec50de8d68d118f1a0807938426
Reviewed-on: https://chromium-review.googlesource.com/796856
Reviewed-by: Mircea Trofin <mtrofin@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49733}
2017-11-30 08:53:07 +00:00
Marja Hölttä
c08ab6dacc [cleanup] Add STATIC_ASSERTs for JSFunction size to relevant places.
Makes it easier to modify JSFunction; the failing asserts will tell which places
need to be modified.

Change-Id: I70c7cd0b89cf05964b4730990fb3d7f23927437a
Reviewed-on: https://chromium-review.googlesource.com/781689
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Marja Hölttä <marja@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49732}
2017-11-30 08:03:16 +00:00
Benedikt Meurer
500d7b9315 [turbofan] Introduce a dedicated StringLength operator.
Strings are immutable in JavaScript land (contrast with the runtime,
where we can truncate strings that haven't escaped to JavaScript yet),
so the length of a String is immutable. Thus loading the length of a
String is a pure operation and should be expressed as such (i.e. doesn't
depend on control or effect). The StringLength operator does exactly
this and is hooked up to the effect chain in the EffectControlLinearizer.

This will eventually allow us to simplify the optimization of string
concatention and other operations that are a bit cumbersome in TurboFan
currently, and it will also allow us to optimize string operations
across effectful operations, for example combining multiple invocations
to String#slice with the same inputs.

Bug: v8:5269, v8:6936, v8:7109, v8:7137
Change-Id: Iffcccbb0c7fc4cfe1281c10e7af24b40eba4c987
Reviewed-on: https://chromium-review.googlesource.com/799690
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49731}
2017-11-30 06:55:06 +00:00