Commit Graph

49906 Commits

Author SHA1 Message Date
Georg Neis
969a0548d1 [builtins] Fix String#pad{Start,End} for a large maxLength argument.
If maxLength is larger than String::kMaxLength, we used to throw
immediately. However, we must first look at the filler argument, which
is observable. Moreover, if the filler is empty, we must return the
input unchanged.

Bug: v8:8078
Change-Id: Ic3d135f9e25da56df45b059144e45e19dda9c3d8
Reviewed-on: https://chromium-review.googlesource.com/1188313
Commit-Queue: Georg Neis <neis@chromium.org>
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55414}
2018-08-24 19:50:09 +00:00
v8-ci-autoroll-builder
defec4f6c4 Update V8 DEPS.
Rolling v8/build: cbc08db..f4d0db4

Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/f62079a..1e44d06

Rolling v8/third_party/depot_tools: dd765da..7b7eb88

Rolling v8/third_party/fuchsia-sdk: 454f3b2..3ec92c8

Rolling v8/third_party/icu: 297a4dd..a191af9

Rolling v8/third_party/instrumented_libraries: 323cf32..d8cf40c

Rolling v8/tools/clang: 45de59d..b31d680

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

Change-Id: If5e7643d5977ee2c837677dc8fa73b1c0608be36
Reviewed-on: https://chromium-review.googlesource.com/1188526
Commit-Queue: V8 Autoroller <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com>
Reviewed-by: V8 Autoroller <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#55413}
2018-08-24 17:28:25 +00:00
Ali Ijaz Sheikh
f9648465e1 [tracing] free strdup'd memory
ASAN complained about this on another commit:
https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux64%20ASAN/26688
causing revert: https://chromium-review.googlesource.com/c/v8/v8/+/1162122

Change-Id: I3bb16177be9d49496db024ce92fd4354b12d8cc3
Reviewed-on: https://chromium-review.googlesource.com/1187832
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ali Ijaz Sheikh <ofrobots@google.com>
Cr-Commit-Position: refs/heads/master@{#55412}
2018-08-24 17:21:03 +00:00
Dan Elphick
855d4b48a2 Create bytecode handlers and add them to the builtins table
This doubles the size of the snapshot since it creates all of the
handlers twice (and it doesn't use any of these new ones). However it's
all behind a flag.

For now all bytecode handlers are marked as being not Isolate
independent to prevent snapshot creation failures.

Bug: v8:8068
Change-Id: Id49f521445643d9fc6b141353f0a29b585160e10
Reviewed-on: https://chromium-review.googlesource.com/1185100
Commit-Queue: Dan Elphick <delphick@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55411}
2018-08-24 16:43:14 +00:00
Michael Starzinger
dc5cb1f077 [wasm][test] Fix typo in module-memory test.
R=sigurds@chromium.org
TEST=mjsunit/wasm/module-memory

Change-Id: I30b52a09d8655340199dc449aaa91e6a351e2111
Reviewed-on: https://chromium-review.googlesource.com/1188567
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Ben Titzer <titzer@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55410}
2018-08-24 14:18:18 +00:00
Hai Dang
2346275c08 Weaken the checks of IsFastJSArrayWithNoCustomIteration.
In the case where the array is a fast packed array, the CSA no longer needs
to check whether the prototype has elements. This only needed when the array
is holey.

This is a follow-up of CL #1183671.

Change-Id: I0087b827200995c741141f3183bf9a2c748d3b55
Reviewed-on: https://chromium-review.googlesource.com/1188315
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Commit-Queue: Hai Dang <dhai@google.com>
Cr-Commit-Position: refs/heads/master@{#55409}
2018-08-24 13:55:14 +00:00
Benedikt Meurer
e81480cd82 [turbofan] Handle CheckHeapObject as rename in LoadElimination.
Thus far the LoadElimination didn't consider CheckHeapObject a renaming
operation and would therefore miss opportunities to eliminate redundant
loads or map checks where the input is not checked for sminess in all
cases. This kind of pattern is very common with code that results from
builtin inlining in JSCallReducer, as here we don't unconditionally
insert CheckHeapObject nodes if we can tell from the graph that the
receiver already has a certain map (by walking the effect chain
upwards).

Bug: v8:8070
Change-Id: I980f382205757a754f93a5741de1ee08b75ee070
Reviewed-on: https://chromium-review.googlesource.com/1188129
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55408}
2018-08-24 13:44:58 +00:00
Benedikt Meurer
318e5230ea [turbofan] Handle LoadField with type mismatch in LoadElimination.
This allows to replace redundant LoadField's whose type doesn't match
the type of the replacement, by just turning those LoadField's into
TypeGuard's.

Bug: v8:8070
Change-Id: Ia329bb536f8829be27e070e90e9eaae0618dac7a
Reviewed-on: https://chromium-review.googlesource.com/1188131
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55407}
2018-08-24 13:43:54 +00:00
jgruber
a839bd42bd [ia32] Unalias kRootRegister and kJavaScriptCallExtraArg1Register
In preparation for kRootRegister support on ia32.

Bug: v8:6666
Change-Id: I6bbc87734d189bb8cde5d057a54f8155606d142d
Reviewed-on: https://chromium-review.googlesource.com/1188319
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55406}
2018-08-24 13:16:52 +00:00
Maya Lekova
136ecbb9bf Revert "[heap] Reland: Reuse object evacuation information for slot recording in Scavenger."
This reverts commit 177e0aa380.

Reason for revert: Causes a flaky test on Windows - https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Win64%20-%20msvc/4373

Bug: v8:8087

Original change's description:
> [heap] Reland: Reuse object evacuation information for slot recording in Scavenger.
> 
> This reverts commit 5876d8f58d.
> 
> Bug: chromium:852420
> Change-Id: I318587f20409f98d05278fc0b4c14da09d259cd3
> Reviewed-on: https://chromium-review.googlesource.com/1188128
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Commit-Queue: Hannes Payer <hpayer@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#55393}

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

Change-Id: If553b74f8443ad98822a2a3d147dc8963346043c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:852420
Reviewed-on: https://chromium-review.googlesource.com/1188542
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Commit-Queue: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55405}
2018-08-24 13:15:50 +00:00
Georg Neis
394d198f27 [turbofan] Use precise types for ObjectData* members.
Now that we always instantiate the right ObjectData subclass, we can
give precise types to members.

R=jarin@chromium.org

Bug: v8:7790
Change-Id: Ic2194de90f458ddccbeb9f101903e5865fb4eb41
Reviewed-on: https://chromium-review.googlesource.com/1187103
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55404}
2018-08-24 12:51:06 +00:00
Florian Sattler
819efd1e2f [parser] Reduced test size to not timeout on atom
This halfs the test size but also halfs the baseline for the score to
make it comparable.

Bug: v8:7926
Change-Id: Id3769def6a555ef1bddf8dd5e54c04b8652e5b54
Reviewed-on: https://chromium-review.googlesource.com/1188465
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Florian Sattler <sattlerf@google.com>
Cr-Commit-Position: refs/heads/master@{#55403}
2018-08-24 12:48:06 +00:00
Georg Neis
f2d6d5165b [turbofan] Mechanically create the right *Data object.
Also define classes NativeContext and InternalizedString. Those object
kinds were already part of our Object hierarchy but didn't have their
own class, which was inconvenient.

R=jarin@chromium.org, mslekova@chromium.org

Bug: v8:7790
Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
Change-Id: Ic443a2b2e34afc89bc924e845d995e3f287a2535
Reviewed-on: https://chromium-review.googlesource.com/1185592
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55402}
2018-08-24 12:46:26 +00:00
Bret Sepulveda
29879461ce Stop manual unescaping of script source data when preprocessing logs.
It appears that the fields are already being unescaped elsewhere,
perhaps by the JSON writer. So if we unescape when adding the source
filename and contents, unescaping will happen again later and plain
backslashes will be interpreted as escape codes.

Bug: v8:6240
Change-Id: Ic66b9017ae685d6dd12944ee8d254991e26fbd32
Reviewed-on: https://chromium-review.googlesource.com/1186625
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Bret Sepulveda <bsep@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55401}
2018-08-24 12:30:48 +00:00
Michael Starzinger
f1aef71dd5 [wasm][test] Make module-memory test thread resilient.
R=titzer@chromium.org
TEST=mjsunit/wasm/module-memory

Change-Id: If190f4f75feb0560bfb608b5ec01234c95e1f715
Reviewed-on: https://chromium-review.googlesource.com/1188464
Reviewed-by: Ben Titzer <titzer@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55400}
2018-08-24 12:27:15 +00:00
Toon Verwaest
8baea46e27 [scanner] Merge after_multiline_comment into after_line_terminator
Change-Id: I228bbd81807fdfac9e760576f89aeb133e45cf61
Reviewed-on: https://chromium-review.googlesource.com/1186326
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55399}
2018-08-24 12:19:33 +00:00
Michael Starzinger
0b87c5709b [wasm] Print handler tables together with WasmCode.
R=ahaas@chromium.org
BUG=v8:8091

Change-Id: I648e5a957e02d32e51c94175a6596801ca5ebd9e
Reviewed-on: https://chromium-review.googlesource.com/1188310
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55398}
2018-08-24 12:09:08 +00:00
jgruber
9d341c4c18 [ia32] Fix off-heap trampoline handling
This fixes several issues related to off-heap trampoline handling on
ia32.

Unlike other architectures, ia32 uses a pc-relative call/jump for the
off-heap trampoline. That means we cannot skip reloc info emission,
and we need to relocate when the buffer grows during code generation.

Finally, inlined trampolines must not clobber and thus also need to
use a pc-relative call/jump.

Drive-by: Use PreserveRootIA32 config only for whitelisted builtins to
build successfully by default.

Bug: v8:6666
Change-Id: I2b72147c6c70036cd13d8b22e2c80ade786c47b8
Reviewed-on: https://chromium-review.googlesource.com/1188316
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55397}
2018-08-24 12:07:53 +00:00
Sreten Kovacevic
2794401cbe [mips64] Port [memory] Replace Memory class with templated Memory functions.
Original commit d67d91dbe6

Change-Id: I2787a090e8794b91a7f08635ce73f925e1021477
Reviewed-on: https://chromium-review.googlesource.com/1188317
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Sreten Kovacevic <skovacevic@wavecomp.com>
Cr-Commit-Position: refs/heads/master@{#55396}
2018-08-24 12:03:23 +00:00
Michael Starzinger
287bb6a543 [arm64] Mitigate flake in JumpTablePatchingStress.
R=sigurds@chromium.org
TEST=cctest/test-jump-table-assembler/JumpTablePatchingStress
BUG=v8:8085

Change-Id: Iad786172541a2a72d2b774b60da87f40d70ca71d
Reviewed-on: https://chromium-review.googlesource.com/1188135
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55395}
2018-08-24 11:50:38 +00:00
Maya Lekova
4f40d83b07 [mjsunit] Disable a flaky regression test on Arm
Bug: v8:8090
Change-Id: I6f8a4d2bcfa25bcc83f29e5fd39f9e72ba18d4ac
Reviewed-on: https://chromium-review.googlesource.com/1188132
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55394}
2018-08-24 11:49:33 +00:00
Hannes Payer
177e0aa380 [heap] Reland: Reuse object evacuation information for slot recording in Scavenger.
This reverts commit 5876d8f58d.

Bug: chromium:852420
Change-Id: I318587f20409f98d05278fc0b4c14da09d259cd3
Reviewed-on: https://chromium-review.googlesource.com/1188128
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Hannes Payer <hpayer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55393}
2018-08-24 11:48:17 +00:00
Michael Starzinger
a500f20175 [test] Remove %SetFlags runtime test method.
This method introduces an inherent race because it allows changing
global static flag variables from concurrently running Isolates (or
Workers). Since there are not too many use-cases left, the method in
question can be removed entirely.

R=hpayer@chromium.org

Change-Id: I9798730dd775b04f0bc83f18ed5982672e76e5d5
Reviewed-on: https://chromium-review.googlesource.com/1186731
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55392}
2018-08-24 10:48:39 +00:00
Ross McIlroy
464dbb7e80 Revert "[Tests] Fix some OOM failures on Android by explicitly setting max_old_space_size."
This reverts commit bca38dbf29.

Reason for revert: Makes ODROIDs flaky.
BUG=v8:8086

Original change's description:
> [Tests] Fix some OOM failures on Android by explicitly setting max_old_space_size.
>
> BUG=v8:8040
>
> Change-Id: I8de22af3978f2a8eb844eabdb757bd635050f901
> Reviewed-on: https://chromium-review.googlesource.com/1181432
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#55227}

TBR=ulan@chromium.org,rmcilroy@chromium.org

Bug: v8:8040
Change-Id: Ife980e8706ebbff4d86d87739c2f621d7a976039
Reviewed-on: https://chromium-review.googlesource.com/1188322
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55391}
2018-08-24 10:41:39 +00:00
Benedikt Meurer
f310c28bba [turbofan] Make backing store load eliminatable for %ArrayIteratorPrototype%.next().
Place the LoadField for the backing store of the [[IteratedObject]]
before the diamond to make it possible to eliminate this LoadField
in LoadElimination later, when used in `for..of` or destructing.

This further improves the performance of `for..of` in the micro
benchmark on the tracking bug from

  console.timeEnd: forOf, 191.726000
  console.timeEnd: traditional, 107.572000
  console.timeEnd: forOf, 137.288000
  console.timeEnd: traditional, 102.976000
  console.timeEnd: forOf, 137.506000
  console.timeEnd: traditional, 103.089000

to around

  console.timeEnd: forOf, 195.238000
  console.timeEnd: traditional, 107.078000
  console.timeEnd: forOf, 128.980000
  console.timeEnd: traditional, 103.106000
  console.timeEnd: forOf, 128.525000
  console.timeEnd: traditional, 103.072000

so roughly another ~7% improvement (with untrusted code mitigations
turned off).

Bug: v8:8070
Change-Id: I34831c503384f0cc44b95317dd84403f2ed8ecd5
Reviewed-on: https://chromium-review.googlesource.com/1188138
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55390}
2018-08-24 10:38:23 +00:00
Stephan Herhut
89bea4c050 Reland "Use new arraybuffer deleter interface in d8"
This is a reland of 524215be1a

Original change's description:
> Use new arraybuffer deleter interface in d8
> 
> With this cl we start using the custom deleter to free externalized
> array buffers. This also allows us to keep wasm memories registered
> with the wasm memory tracker and thereby to propagate that a memory
> is wasm allocated over postMessage calls.
> 
> Bug: v8:8073, chromium:836800
> Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng
> Change-Id: I57e3ea44d9c6633ada7996677dd1de4da810ab64
> Reviewed-on: https://chromium-review.googlesource.com/1186681
> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
> Commit-Queue: Stephan Herhut <herhut@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#55361}

Bug: v8:8073, chromium:836800
Change-Id: Ia3c057ced496363cfdd07eed16ed1d0c7a3f3084
Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng
Reviewed-on: https://chromium-review.googlesource.com/1188222
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Stephan Herhut <herhut@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55389}
2018-08-24 10:37:09 +00:00
Florian Sattler
3268077990 [parser] PreParserIdentifier member reordering
Restricting the enum to uint8_t and reorder type for better alignment.

Bug: v8:7926
Change-Id: Ib37d600a189d12bac3c6aa8cf4b88970f8547548
Reviewed-on: https://chromium-review.googlesource.com/1188125
Commit-Queue: Florian Sattler <sattlerf@google.com>
Reviewed-by: Marja Hölttä <marja@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55388}
2018-08-24 10:28:57 +00:00
Dominik Inführ
ff7434107c [heap-profiler] Location for object's constructor
Add location information in heap snapshot for objects where the
constructor can be determined.

Bug: chromium:854097
Change-Id: Ieb2ab70a65809ecc9dfa0d73a33fa57add430465
Reviewed-on: https://chromium-review.googlesource.com/1179156
Commit-Queue: Dominik Inführ <dinfuehr@google.com>
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Alexei Filippov <alph@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55387}
2018-08-24 10:01:48 +00:00
Tobias Tebbi
13565ee252 [turbofan] escape analysis: remove TypeGuard renamings of dematerialized allocations from the effect chain
Change-Id: Ie7b43feda381647523cb8cc3e7965823d3006063
Reviewed-on: https://chromium-review.googlesource.com/1188140
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55386}
2018-08-24 09:53:53 +00:00
Toon Verwaest
5e5d5df49a [scanner] Use TokenDesc* rather TokenDesc to keep track of the stream
This embeds LiteralBuffers in the TokenDesc directly so that we do not need to
figure out which one is free; as well as newline tracking. Instead of copying
around TokenDesc we now just update the pointer to keep track of the state.
Based on this architecture we'll be able to precompute more tokens at once.


Change-Id: Ie2e1a95f91713f7ab619fc8632f1eb644884a51f
Reviewed-on: https://chromium-review.googlesource.com/1184911
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55385}
2018-08-24 09:37:11 +00:00
Simon Zünd
3470086988 [array] Properly handle COW arrays in Array.p.reverse fast-path
Instead of using the slow-path for COW arrays, we now properly copy
them and use the fast-path.

R=jgruber@chromium.org

Change-Id: Iebbad5f761d97c5400c457877571c7930269d52f
Reviewed-on: https://chromium-review.googlesource.com/1188130
Commit-Queue: Simon Zünd <szuend@google.com>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55384}
2018-08-24 09:35:50 +00:00
Igor Sheludko
57c8c85b9f [ptr-compr] Fix assert in LayoutDescriptor which failed with 31-bit Smis.
Bug: v8:7703, chromium:876696
Change-Id: Ida3243414215b2ef75a9875ca31cf5a68274f7e0
Reviewed-on: https://chromium-review.googlesource.com/1185186
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55383}
2018-08-24 09:17:36 +00:00
Creddy
2856afccbb Change type elements kind in empty array boilerplate desc from PACKED_ELEMENTS to PACKED_SMI_ELEMENTS
The default array elements kind should be PACKED_SMI_ELEMENTS (top of type lattice)  to allow type
transitions to other types.

Change-Id: Icda969d0553628ef75d6c26bf6f32fef46512f0f
Reviewed-on: https://chromium-review.googlesource.com/1188133
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Chandan Reddy <chandanreddy@google.com>
Cr-Commit-Position: refs/heads/master@{#55382}
2018-08-24 09:12:05 +00:00
Lei Zhang
ee062769e3 Fix the MSVC build.
In LiftoffCompiler::EmitTypeConversion() there is a DCHECK_EQ() where
one argument is implicitly converted to bool. This confuses MSVC, which
causes it to think the two arguments to DCHECK_EQ() do not have the same
type. Fix this with an explicit bool conversion!!

This does not affect the "v8_win64_msvc_compile_rel" bot, presumably
because it is a release bot with DCHECKs turned off.

Change-Id: I602ddae7a970e17388730e895eafd4ec78de7602
Reviewed-on: https://chromium-review.googlesource.com/1187702
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55381}
2018-08-24 09:02:33 +00:00
jgruber
0dee838293 Clean up stack argument handling in interface descriptors
Prior to this, it was possible to explicitly specify machine types for
stack arguments, but these were simply ignored and treated as
tagged-by-default when creating the actual CallDescriptor.

This verifies that all stack args specified in the descriptor are
actually given tagged types, and fails early if that is not the
case.

Bug: v8:6666
Change-Id: Idb543a11c976d0260fea60d31e30c21b15b32256
Reviewed-on: https://chromium-review.googlesource.com/1186642
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55380}
2018-08-24 08:53:45 +00:00
Bret Sepulveda
152c93d8fc Stop logging Builtin functions as LazyCompile (reland).
Builtin functions were being logged via both LogCodeObjects and
LogCompiledFunctions. The latter assumes the code in question has a
Name and so would end up logging an unattributable entry. This patch
stops logging that entry.

Bug: v8:8061
Change-Id: Iebc9bfa9618986afdbf8b1b71b64bf17a1f4196a
Reviewed-on: https://chromium-review.googlesource.com/1184923
Reviewed-by: Peter Marshall <petermarshall@chromium.org>
Commit-Queue: Bret Sepulveda <bsep@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55379}
2018-08-24 08:44:01 +00:00
Florian Sattler
93d03643da [parser] Decreased size of Bailout/Abort reason.
This reduces the enum size to only take up one byte, hence decreasing
class size.

Bug: v8:7926
Change-Id: Ie50cfcd48541e44394814f375fd72f2b65722fdf
Reviewed-on: https://chromium-review.googlesource.com/1186582
Commit-Queue: Florian Sattler <sattlerf@google.com>
Reviewed-by: Marja Hölttä <marja@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55378}
2018-08-24 08:42:50 +00:00
Michaël Zasso
91de4f500e [embedder-tracing] Fix usage of std::isinf
Introduced in https://chromium-review.googlesource.com/1183431.
The namespace was missing making compilation of Node.js with GCC fail.

Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng
Change-Id: I55c1117ab347db17fd8acfa92c653e8cf737586f
Reviewed-on: https://chromium-review.googlesource.com/1188126
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Michaël Zasso <mic.besace@gmail.com>
Cr-Commit-Position: refs/heads/master@{#55377}
2018-08-24 08:39:03 +00:00
Michael Lippautz
cfa5fec62f [embedder-tracing] Only expose GC call when used with --expose_gc
Bug: chromium:843903
Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng
Change-Id: Ie959e443fdf5dce92c4cd42ef62ec914a13b867e
Reviewed-on: https://chromium-review.googlesource.com/1187151
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55376}
2018-08-24 08:35:20 +00:00
Florian Sattler
c8f9ba0687 Reland "[parser] Removed unnecessary copies"
This is a reland of d16bce9db8

Original change's description:
> [parser] Removed unnecessary copies
> 
> Bug: v8:8015
> Change-Id: I2ee074559484b9865dc1a27e6ea697ca311ee7ee
> Reviewed-on: https://chromium-review.googlesource.com/1185198
> Reviewed-by: Marja Hölttä <marja@chromium.org>
> Commit-Queue: Florian Sattler <sattlerf@google.com>
> Cr-Commit-Position: refs/heads/master@{#55327}

Bug: v8:8015
Change-Id: I63cf34898f4bbdba84f44e3769301d028ea49965
Reviewed-on: https://chromium-review.googlesource.com/1188142
Reviewed-by: Marja Hölttä <marja@chromium.org>
Commit-Queue: Florian Sattler <sattlerf@google.com>
Cr-Commit-Position: refs/heads/master@{#55375}
2018-08-24 08:11:42 +00:00
Benedikt Meurer
cfd752afa1 [turbofan] Fix --trace-turbo-load-elimination.
The LoadElimination must be able to print Maps, so we need to allow
handle dereferencing here.

Change-Id: Id39a6db5a4f40ec6212404b3aa30a36fdd1ba57e
Reviewed-on: https://chromium-review.googlesource.com/1188127
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55374}
2018-08-24 08:04:27 +00:00
Benedikt Meurer
280361d2b5 [turbofan] Handle initializing stores properly for alias analysis.
In LoadElimination leverage the fact that initializing stores (i.e.
stores to freshly allocated objects) cannot touch existing objects,
since the object can only escape once it's fully initialized and
then all accesses will happen on the FinishRegion node instead of
the naked Allocate node.

This helps to eliminate the redundant map checks and "length" accesses
to arrays, since TurboFan now knows that the iterated array cannot
alias with neither the freshly allocated ArrayIterator nor the
freshly allocated IterResultObject instances. This improves the times
on the benchmark in the tracking bug from

  console.timeEnd: forOf, 188.111000
  console.timeEnd: traditional, 116.380000
  console.timeEnd: forOf, 170.721000
  console.timeEnd: traditional, 108.209000
  console.timeEnd: forOf, 168.491000
  console.timeEnd: traditional, 108.839000

to

  console.timeEnd: forOf, 192.501000
  console.timeEnd: traditional, 106.909000
  console.timeEnd: forOf, 138.364000
  console.timeEnd: traditional, 103.232000
  console.timeEnd: forOf, 138.755000
  console.timeEnd: traditional, 102.928000

when running with untrusted code mitigations turned off, and thus
corresponds to a ~18% performance improvement, roughly cutting the
performance difference between the traditional for loop and the for..of
loop in half.

Besides for..of loops this will also help with array destructuring
patterns where TurboFan also emitted redundant map checks on the array
and didn't eliminate the redundant "length" accesses.

Bug: v8:8070
Change-Id: Iab283247f6d304d1e3c7c147f32ab957577aad21
Reviewed-on: https://chromium-review.googlesource.com/1188124
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55373}
2018-08-24 07:46:47 +00:00
Kanghua Yu
afff62b4ab [csa] Apply constant folding to remaining helper functions.
This also refactors CodeAssembler::Branch(condition,true_label,false_label)
to support constant folding, and adds Branch(condition,true_label,false_body)
variants for special cases.

Change-Id: Ifc04442657295124a95c60f76efde5c46de6f1b5
Reviewed-on: https://chromium-review.googlesource.com/1186136
Commit-Queue: Kanghua Yu <kanghua.yu@intel.com>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55372}
2018-08-24 07:36:29 +00:00
Simon Zünd
27040aac02 [jstest] Fix ElementsKind of the array that gets sorted
This CL fixes the "sort-lengths" benchmark so the ElementsKind of the
array to sort is PACKED_SMI again. This was somehow broken.

R=jgruber@chromium.org

Change-Id: I129e001eae4c88e9f99174b3494193232d933c3f
Reviewed-on: https://chromium-review.googlesource.com/1188122
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Simon Zünd <szuend@google.com>
Cr-Commit-Position: refs/heads/master@{#55371}
2018-08-24 07:35:07 +00:00
Maya Lekova
20f8e28eb9 Revert "Reland "[Intl] move Date.prototype.toLocale{,Date,Time}String to C++""
This reverts commit 8093b4f313.

Reason for revert: Breaks the following layout & non-layout bots in "fast/js/date-proto-generic-invocation.html" test
https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8-Blink%20Win/14570
https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8-Blink%20Linux%2064/25795
https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8-Blink%20Linux%2064%20(dbg)/13317
https://ci.chromium.org/p/v8/builders/luci.v8.ci/Linux%20Tests%20(dbg)(1)/6565

Original change's description:
> Reland "[Intl] move Date.prototype.toLocale{,Date,Time}String to C++"
> 
> This is a reland of 8e57cd51fd
> 
> Original change's description:
> > [Intl] move Date.prototype.toLocale{,Date,Time}String to C++
> > 
> > Bug: v8:7961
> > Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
> > Change-Id: Ie75eb443fc0907a4e1e4cafd4f5c06c23794f5a9
> > Reviewed-on: https://chromium-review.googlesource.com/1156123
> > Commit-Queue: Frank Tang <ftang@chromium.org>
> > Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#55239}
> 
> Bug: v8:7961
> Change-Id: Ib7dd3b7b3d363b7b8cb2dcd89a5d591fab592c81
> Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
> Reviewed-on: https://chromium-review.googlesource.com/1185763
> Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
> Commit-Queue: Frank Tang <ftang@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#55368}

TBR=jshin@chromium.org,gsathya@chromium.org,ftang@chromium.org

Change-Id: I9ba94daecaca38e86a1f07b649931079ca88b28d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:7961
Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
Reviewed-on: https://chromium-review.googlesource.com/1188143
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Commit-Queue: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55370}
2018-08-24 07:28:08 +00:00
Simon Zünd
837fec91a4 [array] Replace JS Array.p.reverse with a Torque implementation
This CL adds a baseline implementation for Array.p.reverse in Torque,
as well as fastpaths for PACKED elements kinds.

Support for sparse JSArrays was removed.

R=jgruber@chromium.org, petermarshall@chromium.org

Bug: v8:7624
Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
Change-Id: I12900fbbb44746f1c5d36b78be826e14b88b4f69
Reviewed-on: https://chromium-review.googlesource.com/1185600
Commit-Queue: Simon Zünd <szuend@google.com>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55369}
2018-08-24 05:57:20 +00:00
Frank Tang
8093b4f313 Reland "[Intl] move Date.prototype.toLocale{,Date,Time}String to C++"
This is a reland of 8e57cd51fd

Original change's description:
> [Intl] move Date.prototype.toLocale{,Date,Time}String to C++
> 
> Bug: v8:7961
> Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
> Change-Id: Ie75eb443fc0907a4e1e4cafd4f5c06c23794f5a9
> Reviewed-on: https://chromium-review.googlesource.com/1156123
> Commit-Queue: Frank Tang <ftang@chromium.org>
> Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#55239}

Bug: v8:7961
Change-Id: Ib7dd3b7b3d363b7b8cb2dcd89a5d591fab592c81
Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
Reviewed-on: https://chromium-review.googlesource.com/1185763
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55368}
2018-08-24 00:27:17 +00:00
Michael Achenbach
5876d8f58d Revert "[heap] Reuse object evacuation information for slot recording in Scavenger."
This reverts commit adea021bbf.

Reason for revert:
https://crbug.com/v8/8087

Original change's description:
> [heap] Reuse object evacuation information for slot recording in Scavenger.
> 
> Bug: chromium:852420
> Change-Id: If092b5c8b093b313807687a27bc29bebd1c4ee5f
> Reviewed-on: https://chromium-review.googlesource.com/1187143
> Commit-Queue: Hannes Payer <hpayer@chromium.org>
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#55364}

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

Change-Id: I480328e852c09f460a38e141eb7d2960c5001d35
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:852420
Reviewed-on: https://chromium-review.googlesource.com/1187301
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55367}
2018-08-23 19:15:07 +00:00
Michael Achenbach
eb1eaf6361 Revert "Use new arraybuffer deleter interface in d8"
This reverts commit 524215be1a.

Reason for revert: Breaks cfi:
https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux64%20-%20cfi/16422

Original change's description:
> Use new arraybuffer deleter interface in d8
> 
> With this cl we start using the custom deleter to free externalized
> array buffers. This also allows us to keep wasm memories registered
> with the wasm memory tracker and thereby to propagate that a memory
> is wasm allocated over postMessage calls.
> 
> Bug: v8:8073, chromium:836800
> Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng
> Change-Id: I57e3ea44d9c6633ada7996677dd1de4da810ab64
> Reviewed-on: https://chromium-review.googlesource.com/1186681
> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
> Commit-Queue: Stephan Herhut <herhut@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#55361}

TBR=mstarzinger@chromium.org,herhut@chromium.org

Change-Id: I64c4e76d8d68bad8df4ba3297c099b9b44eabc7c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:8073, chromium:836800
Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng
Reviewed-on: https://chromium-review.googlesource.com/1187241
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55366}
2018-08-23 18:29:23 +00:00
Bruce Dawson
6930df0f1c Use PAGE_TARGETS_INVALID when allocating code pages
PAGE_TARGETS_INVALID tells CFG (Control Flow Guard) to mark all
addresses as invalid indirect branch targets. This makes exploits more
difficult. The benefit is minor because most of the code in the Chrome
process doesn't use the CFG checks, but this will close off a few
weaknesses and is the direction we will want to go in eventually
anyway (with specific targets or call sites opted-in to allowing
calls, using SetProcessValidCallTargets).

PAGE_TARGETS_INVALID may ultimately cause CFG to not allocate memory -
that is implied by Windows Internals 7th Edition - and if that is
implemented then this change will save some modest amount of memory.

PAGE_TARGETS_INVALID was introduced in Windows 10 - according to
Windows Internals Part 1 7th Edition - prior to that it will cause
VirtualAlloc to fail.

Bug: chromium:870054
Change-Id: Ib1784fba37cc0ecb5fe5df595f1519531b3b3a20
Reviewed-on: https://chromium-review.googlesource.com/1186025
Commit-Queue: Bruce Dawson <brucedawson@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55365}
2018-08-23 18:27:42 +00:00