Commit Graph

40616 Commits

Author SHA1 Message Date
Toon Verwaest
626b5af7e1 [runtime] Use UnseededNumberDictionary to encode the array_buffer_transfer_map
SeededNumberDictionaries are used to implement element backing stores of JSObjects, not internally used dictionaries. This saves space for the anyway unused PropertyDetails entry (1/3 fields).

Bug: 
Change-Id: I6fe9fae6de500dd0bcb722f51a7543952c7813e9
Reviewed-on: https://chromium-review.googlesource.com/543343
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46124}
2017-06-22 10:18:01 +00:00
Toon Verwaest
269eaa8280 [runtime] Simplify signatures of keys-related dict methods
Bug: 
Change-Id: I252a293cfb6c7cce41d4c585078d78609f4419b7
Reviewed-on: https://chromium-review.googlesource.com/543035
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46123}
2017-06-22 09:32:30 +00:00
Michael Starzinger
e6c2df47e1 [fullcodegen] Deprecate usage of patching BinaryOpICStub.
This switches all uses of the patching {BinaryOpICStub} over to the
respective existing and non-patching CSA-builtins, and removes some
supporting code. It also removes the inlined SMI handling.

R=verwaest@chromium.org
BUG=v8:6408

Change-Id: If547c0127bfcafbd01ccb33b702b1868006ebcb1
Reviewed-on: https://chromium-review.googlesource.com/541398
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46122}
2017-06-22 09:29:20 +00:00
Toon Verwaest
baa4d4faea [runtime] Remove "name" argument from DeleteNormalizedProperty
Bug: 
Change-Id: I335dc1259f2468e91f8fb6d5a3b13a601c807a79
Reviewed-on: https://chromium-review.googlesource.com/544875
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46121}
2017-06-22 09:27:20 +00:00
Andreas Haas
d0ea6140c2 [wasm] Throttle the amount of unfinished work in async compilation
This CL does same changes as
https://chromium-review.googlesource.com/c/540763/, but for async
compilation instead of for parallel compilation. The biggest difference
is that for async compilation I start background tasks again when half
of the memory is free again and not when all the memory is free again.

Original description:

It is possible that the foreground task is unable to clear the
scheduled unfinished work, eventually leading to an OOM.

We use either code_range on 64 bit, or the capacity of the code space,
as a heuristic for how much memory to use for compilation.

The change avoids blocking the background threads while we're over the
memory threshold. This is to avoid starving the GC.

R=mtrofin@chromium.org

Change-Id: I7399e2474f72f6727e6e50176dd7ba95cdcd3238
Reviewed-on: https://chromium-review.googlesource.com/543477
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Mircea Trofin <mtrofin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46120}
2017-06-22 09:08:30 +00:00
Michael Lippautz
baf954759b [heap] Implement workstealing bag based on segments
Bug: chromium:651354
Change-Id: I8aa122f48986f494146d4e896b254846de7ce295
Reviewed-on: https://chromium-review.googlesource.com/543500
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46119}
2017-06-22 09:05:30 +00:00
Jochen Eisinger
c4852ea94c Pull tracing related methods out of Platform
This will allow for embedders to easily implement their own Platform
without duplicating the tracing controller code.

BUG=v8:6511
R=fmeawad@chromium.org

Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
Change-Id: I7c64933d12b2cf53f0636fbc87f6ad5d22019f5c
Reviewed-on: https://chromium-review.googlesource.com/543015
Commit-Queue: Jochen Eisinger <jochen@chromium.org>
Reviewed-by: Fadi Meawad <fmeawad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46118}
2017-06-22 08:58:40 +00:00
Toon Verwaest
a1a05e5e86 [runtime] Remove UND::DeleteKey and Shrink in DeleteProperty
Bug: 
Change-Id: Id05ac179899cfa802575c90ea1745375e2833825
Reviewed-on: https://chromium-review.googlesource.com/542617
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46117}
2017-06-22 08:32:30 +00:00
Daniel Ehrenberg
d54ffadfda [scopes] Fix sloppy-mode block-scoped function hoisting edge case
In edge cases such as the following, sloppy-mode block-scoped function
hoisting is expected to occur:

  eval(`
    with({a: 1}) {
      function a() {}
    }
  `)

In this case, there should be the equivalent of a var declaration
outside of the eval, which gets set to the value of the local function
a when the body of the with is executed.

Previously, the way that var declarations are hoisted out of eval
meant that the assignment to that var was an ordinary DYNAMIC_GLOBAL
assignment. However, such a lookup mode meant that the object in the
with scope received the assignment!

This patch fixes that error by marking the assignments produced by
the sloppy mode block scoped function hoisting desugaring so as to
generate a different runtime call which skips with scopes.

Bug: chromium:720247, v8:5135
Change-Id: Ie36322ddc9ca848bf680163e8c016f50d4597748
Reviewed-on: https://chromium-review.googlesource.com/529230
Commit-Queue: Daniel Ehrenberg <littledan@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46116}
2017-06-22 08:18:55 +00:00
Michael Starzinger
2a0bfdb50e [ast] Remove dead fields from BinaryOperation expression.
R=marja@chromium.org

Change-Id: I8a1ad2e64f5ec755fe5ce5949bf9b455696bd3f4
Reviewed-on: https://chromium-review.googlesource.com/543056
Reviewed-by: Marja Hölttä <marja@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46115}
2017-06-22 08:17:50 +00:00
Andreas Haas
d17f437e5b [wasm] Cleanup async compilation slightly
This CL addresses some post-commit comments on
https://chromium-review.googlesource.com/c/532993/.

R=mtrofin@chromium.org

Change-Id: I1e078faf5e3fdb3bb4cbe6d6e1434fbd253f77df
Reviewed-on: https://chromium-review.googlesource.com/543236
Reviewed-by: Mircea Trofin <mtrofin@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46114}
2017-06-22 08:11:10 +00:00
Michael Starzinger
224e8ae324 Remove dead effects system.
R=marja@chromium.org

Change-Id: I34ace4425d091e7104b37079a455176af08c250d
Reviewed-on: https://chromium-review.googlesource.com/543498
Reviewed-by: Marja Hölttä <marja@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46113}
2017-06-22 08:07:48 +00:00
Jochen Eisinger
417123dd4f Deprecate old-style allow code-gen callback
BUG=chromium:732736
R=marja@chromium.org

Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
Change-Id: I3b3dfdd0c55a7ec267ae26765901497611d39d29
Reviewed-on: https://chromium-review.googlesource.com/543158
Reviewed-by: Marja Hölttä <marja@chromium.org>
Commit-Queue: Jochen Eisinger <jochen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46112}
2017-06-22 07:25:08 +00:00
v8-autoroll
afd689463a Update V8 DEPS.
Rolling v8/build: 9ffcabd..68d4fc6

Rolling v8/third_party/catapult: a64c010..76def89

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

Change-Id: I6ecd01bde7a297b42539fcc5a31a367b2406e606
Reviewed-on: https://chromium-review.googlesource.com/544595
Reviewed-by: v8 autoroll <v8-autoroll@chromium.org>
Commit-Queue: v8 autoroll <v8-autoroll@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46111}
2017-06-22 03:31:37 +00:00
Mircea Trofin
65dc7e81a5 [tools] Simple turn-key utility to locally collect code coverage.
Collect code coverage by compiling for one or more target architectures
and then running tests, in the same directory. This way, gcov aggregates
results.

Bug: 
Change-Id: I3bf05416c535c0c566e48d4e73adc4eb49ba2793
Reviewed-on: https://chromium-review.googlesource.com/527522
Commit-Queue: Mircea Trofin <mtrofin@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46110}
2017-06-21 23:45:20 +00:00
jyan
43f1461255 PPC/s390: [compiler] Drive optimizations with feedback vector (reland)
Port 24b7026d73

Original Commit Message:

    For interpreted functions, use the optimized code slot in the feedback
    vector to store an optimization marker (optimize/in optimization queue)
    rather than changing the JSFunction's code object. Then, adapt the
    self-healing mechanism to also dispatch based on this optimization
    marker. Similarly, replace SFI marking with optimization marker checks
    in CompileLazy.

    This allows JSFunctions to share optimization information (replacing
    shared function marking) without leaking this information across native
    contexts. Non I+TF functions (asm.js or --no-turbo) use a
    CheckOptimizationMarker shim which generalises the old
    CompileOptimized/InOptimizationQueue builtins and also checks the same
    optimization marker as CompileLazy and InterpreterEntryTrampoline.

    This is a reland of https://chromium-review.googlesource.com/c/509716

R=leszeks@chromium.org, joransiu@ca.ibm.com, bjaideep@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
LOG=N

Review-Url: https://codereview.chromium.org/2947903002
Cr-Commit-Position: refs/heads/master@{#46109}
2017-06-21 22:12:18 +00:00
gdeepti
9f33191a04 [wasm] Remove double check for --experimental-wasm-simd flag
This was left over from the previous CL to change S128LoadMem/S128StoreMem to
use prefixed opcodes. Decoding prefixed opcodes already checks for the
prototype flag.

BUG=V8:6020

R=bbudge@chromium.org

Review-Url: https://codereview.chromium.org/2946303002
Cr-Commit-Position: refs/heads/master@{#46108}
2017-06-21 22:04:50 +00:00
Adam Klein
c52d7e723d [cleanup] Remove CreateIterResultObject from crankshaft and full-codegen
This will make it easier if we want to split it into two intrinsics, one
for creating an object with `done == true` and one with `done == false`.

Also remove apparently-dead method FullCodegen::EmitCreateIteratorResult.

Bug: v8:6408, v8:6409
Change-Id: I3d6022a9eff517dd8b664d65950502c22447b364
Reviewed-on: https://chromium-review.googlesource.com/543567
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46107}
2017-06-21 19:59:18 +00:00
bakkot
76078e140a Reland "[parser] Forbid \08 in strict strings"
(Reland: NeedsManualRebaseline'd newly-fixed layout test in Chromium.)

This was never legal; the spec only allows '\0' in strict-mode strings
or templates when not followed by a decimal digit. Previously we were
only enforcing that it not be followed by an _octal_ digit.

This was already fixed for numeric literals, but not for escape
sequences in strings.

BUG=v8:6504

Review-Url: https://codereview.chromium.org/2948903002
Cr-Commit-Position: refs/heads/master@{#46106}
2017-06-21 17:41:46 +00:00
Alexey Kozyatinskiy
d9be9fd88d Added v8::Module::GetModuleRequestPosition method
This method returns position of importing stmt in module source.

R=neis@chromium.org

Bug: chromium:721589
Change-Id: I8639796a001fdfec7cf5aa1bf1a27493f7a757a9
Reviewed-on: https://chromium-review.googlesource.com/541322
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46105}
2017-06-21 16:00:14 +00:00
Toon Verwaest
95d18f7b31 [runtime] Replace SeededNumberDictionary::AddNumberEntry with Add
UpdateMaxNumberKey calls are moved to clients, who do have the
dictionary-holder.  ::Add should basically always UpdateMaxNumberKey. I'm
reducing the number of entry points before looking into how to guarantee this.

Bug: 
Change-Id: Iefe8a7fdf7c1e0a6d731bfd948d22849714498a9
Reviewed-on: https://chromium-review.googlesource.com/542895
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46104}
2017-06-21 15:51:02 +00:00
Jaideep Bajwa
12b2c5ec10 Update AUTHOR file with ibm's new email format
R=marja@chromium.org, mstarzinger@chromium.org
BUG=
LOG=N

Change-Id: Ida5496ac957343c63177697c39e502d952881a26
Reviewed-on: https://chromium-review.googlesource.com/535755
Reviewed-by: Marja Hölttä <marja@chromium.org>
Commit-Queue: Jaideep Bajwa <bjaideep@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#46103}
2017-06-21 15:20:06 +00:00
Michael Starzinger
f3fd12adcb [ast] Remove two unused assembler label fields.
R=marja@chromium.org

Change-Id: I3986d7a5627849ac09ff563fc57aac9bbaeaefa7
Reviewed-on: https://chromium-review.googlesource.com/543497
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Marja Hölttä <marja@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46102}
2017-06-21 15:15:06 +00:00
Leszek Swirski
234d1f8a4b [bitvector] Allow BitVector to resize
Allows BitVector to resize, updating its own data and data length to
match the new length. We can fast-path resizes which fit into the same
data length (since high bits are already zero), and replace the pattern
where a BitVector is cloned using CopyFrom.

Change-Id: If79ca782c516e93b2a27c5e335e263554d522e88
Reviewed-on: https://chromium-review.googlesource.com/539522
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46101}
2017-06-21 15:13:05 +00:00
Georg Neis
4f065cd141 [test262] Remove outdated SKIPs from status file.
R=littledan@chromium.org

Bug: v8:1569
Cq-Include-Trybots: master.tryserver.v8:v8_linux_noi18n_rel_ng
Change-Id: I9c598afca288c68a64bf15c39e1043c6c37b6add
Reviewed-on: https://chromium-review.googlesource.com/543139
Reviewed-by: Daniel Ehrenberg <littledan@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46100}
2017-06-21 14:59:47 +00:00
Toon Verwaest
b186ca9c75 [runtime] Move MaxNumberKey and NextEnumerationIndex to the subclasses that use it
Bug: 
Change-Id: Ica3ebd998ad44d24c401cfb74cf5cbe3a6164c47
Reviewed-on: https://chromium-review.googlesource.com/541344
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46099}
2017-06-21 14:58:44 +00:00
Ulan Degenbaev
af1c9e345d [heap] Fix data race in runtime functions that use std::sort.
BUG=chromium:694255

Change-Id: I52237650b2e80428d21acfa2c4993a07d224b8c5
Reviewed-on: https://chromium-review.googlesource.com/542819
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46098}
2017-06-21 14:57:38 +00:00
Mythri
ef4957baec Set the number of ticks required to optimize based on function size.
Currently, the number of ticks to wait before optimizing is a constant (if
sufficient feedback is available). This cl changes it so that, larger
functions would have to wait longer for optimizing. The number of ticks
required scales linearly with the function size.

Bug: 
Change-Id: Id27bea715cf15960667cf63381b1cbe8dac94428
Reviewed-on: https://chromium-review.googlesource.com/538614
Commit-Queue: Mythri Alle <mythria@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46097}
2017-06-21 14:45:46 +00:00
Peter Marshall
736693c498 [lsan] Remove suppression for JSArrayBuffer::SetupAllocatingData.
I can't reproduce any issues with an lsan build, so we will remove
this for now and keep an eye out.

Bug: v8:6315
Change-Id: Iad2a1b23f3614ec9a09a83bb01e235969c3f9fcc
Reviewed-on: https://chromium-review.googlesource.com/542835
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Peter Marshall <petermarshall@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46096}
2017-06-21 13:38:54 +00:00
jgruber
63a7fa5aa3 [coverage] Improve source range precision
This CL improves reported source range precision in a couple of ways:

Source ranges are now standardized to consist of an inclusive start
index and an exclusive end index (similar to what's reported for
functions). For example:

0123456789  // Offset.
{ f(); }    // Block represented as range {0,8}.

Duplicate singleton ranges (i.e. same start and end offsets) are now
merged (this only becomes relevant once jump statement coverage is
added). For example:

for (.) break;  // Break- and loop continuation have same positions.

SourceRangeScope incorrectly collected starting position
(unconditionally) and end position (when no semi-colon was present).

01234567890123  // Offset.
for (.) break   // Loop body range is {8,13}, was {6,9}.

Bug: v8:6000
Change-Id: I62e7c70cc894a20f318330a2fbbcedc47da2b5db
Reviewed-on: https://chromium-review.googlesource.com/541358
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Marja Hölttä <marja@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46095}
2017-06-21 13:33:54 +00:00
Ulan Degenbaev
d1c2c8ed8f [heap] Fix a markbit data race in deserializer.
BUG=chromium:694255

Change-Id: Icd949cb6cd3c7405dbdf1933f6239851443f87a8
Reviewed-on: https://chromium-review.googlesource.com/542616
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46094}
2017-06-21 13:32:49 +00:00
Ross McIlroy
69a645d3c6 [TurboFan] Enable typed lowering of JSStringConcat to ConsString allocation.
Adds typed lowering of JSStringConcat to ConsString allocation if the
following conditions hold:
 - All concatinations will result in a ConsString of >= ConString::kMinLength
 - No concatinations will result in a empty string in the RHS unless there is
   a sequential string in the LHS.

This also means JSStringConcat needs an eager checkpoint since it can
deopt if throwing a RangeError when the string length protector is valid.

BUG=v8:6243

Change-Id: I01ca79f884df467c10f2c032c72d51b5199c1a3c
Reviewed-on: https://chromium-review.googlesource.com/526636
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46093}
2017-06-21 13:31:45 +00:00
Michael Lippautz
d03768b008 [heap] Avoid repeated loads of object size
The iterator already provides the size.

Bug: chromium:651354
Change-Id: I683bfe5c82441bf39c21b18daa58eba91b798c64
Reviewed-on: https://chromium-review.googlesource.com/543495
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46092}
2017-06-21 13:30:40 +00:00
Michael Achenbach
1911518736 [build] Switch cfi bot to gn
NOTRY=true

Bug: chromium:645890,chromium:726584
Change-Id: Ie16650d7e8912233407a7f5b2dcb98f917869bdc
Reviewed-on: https://chromium-review.googlesource.com/541319
Reviewed-by: Daniel Vogelheim <vogelheim@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46091}
2017-06-21 13:29:36 +00:00
Toon Verwaest
3568a433fb [runtime] Merge *NumberDictionary::Set and AtNumberPut
Bug: 
Change-Id: Idf5673ef3262c64d1c214362accc42554dbc2e69
Reviewed-on: https://chromium-review.googlesource.com/541340
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46090}
2017-06-21 13:28:32 +00:00
Michael Starzinger
94c95971c9 [fullcodegen] Deprecate usage of patching ToBooleanICStub.
This switches all uses of the patching {ToBooleanICStub} over to the
existing and non-patching {ToBoolean} CSA-builtin, and removes some
supporting code.

R=verwaest@chromium.org
BUG=v8:6408

Change-Id: Iab60c95e6b54e426408390e056b679f6227e7ce0
Reviewed-on: https://chromium-review.googlesource.com/539576
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46089}
2017-06-21 13:27:25 +00:00
Michael Starzinger
b7ba63e931 [deoptimizer] Simplify Runtime_NotifyDeoptimized a bit.
R=jarin@chromium.org

Change-Id: I0cf5eb57b0f1528f08bc47b3bfddced5cff1abf2
Reviewed-on: https://chromium-review.googlesource.com/543118
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46088}
2017-06-21 12:34:17 +00:00
bmeurer
217012973c [turbofan] Introduce new JSConstructWithArrayLike operator.
Add a new JSConstructWithArrayLike operator that is backed by the
ConstructWithArrayLike builtin (similar to what was done before
for the JSCallWithArrayLike operator), and use that operator to
optimize Reflect.construct inlining in TurboFan. This is handled
uniformly with JSConstructWithSpread in the JSCallReducer.

Also add missing test coverage for Reflect.construct in optimized
code, especially for some interesting corner cases.

R=petermarshall@chromium.org
BUG=v8:4587,v8:5269

Review-Url: https://codereview.chromium.org/2949813002
Cr-Commit-Position: refs/heads/master@{#46087}
2017-06-21 12:31:59 +00:00
Michael Starzinger
72a597fa21 [turbofan] Move RegisterWeakObjectsInOptimizedCode.
This addresses a TODO about the correct location of the helper function
in question, it is now internal to TurboFan instead of being shared.

R=jarin@chromium.org

Change-Id: I7e6112e9bc9759255a416fa2e2a9f92a8e4248c8
Reviewed-on: https://chromium-review.googlesource.com/542840
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46086}
2017-06-21 12:27:24 +00:00
Michael Lippautz
ee35abf125 [heap] Build proper iterator for iterating live objects
- Iterator advancing is kept mainly unchanged.
- The iterator stores the size of the object which is to be used by the
  caller in follow ups. This way we might be able to avoid further out
  of line loads.
- The iteartor follows the regular std conventions allowing range based
  loops.

Bug: chromium:651354
Change-Id: I8928224a62d3a48a48145a2d00279a28608bc634
Reviewed-on: https://chromium-review.googlesource.com/543335
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46085}
2017-06-21 12:20:14 +00:00
Michael Lippautz
0b92f0723c [heap] Cleanup RemoveRange in VisitBlackObjects
Bug: 
Change-Id: I0e49aec183cfb5cd71f82862718cdbc62add0247
Reviewed-on: https://chromium-review.googlesource.com/543038
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46084}
2017-06-21 12:18:39 +00:00
Michael Starzinger
9c38b8ae04 [ast] Simplify assignment of OSR entry ids.
R=verwaest@chromium.org

Change-Id: I39921052ddf0934f1a626f3e1e458280475ae265
Reviewed-on: https://chromium-review.googlesource.com/539515
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46083}
2017-06-21 12:17:35 +00:00
Ulan Degenbaev
7e192a91b8 [heap] Fix data race in Heap::MoveElements.
BUG=chromium:694255

Change-Id: Id15b12ab821de4af7518b658dc63e35bde483312
Reviewed-on: https://chromium-review.googlesource.com/541325
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46082}
2017-06-21 12:16:31 +00:00
mcgreevy
25f86761e6 Roll v8 isolate binaries to match the chromium versions.
The chromium versions were rolled here: https://codereview.chromium.org/2949663002/

BUG=chromium:692940

Review-Url: https://codereview.chromium.org/2950003002
Cr-Commit-Position: refs/heads/master@{#46081}
2017-06-21 12:15:36 +00:00
Ross McIlroy
1b64598dd5 [Interpreter] Inline some functions to improve expression depth of binary ops.
Inlines some functions to improve reduce the stack requirements for
chains of binary operations in the bytecode generator, thereby
enabling support of deeper expression stacks.

BUG=chromium:731861

Change-Id: I5ca437d507e9b2a7eb74f33deaa708ecd646077b
Reviewed-on: https://chromium-review.googlesource.com/541356
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46080}
2017-06-21 12:15:25 +00:00
Andreas Haas
49101b5267 [wasm] Remove dead code
R=clemensh@chromium.org

Change-Id: Iee0296d138f892f5d734cadbc28361746c191c3c
Reviewed-on: https://chromium-review.googlesource.com/542855
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46079}
2017-06-21 11:01:14 +00:00
Andreas Haas
6828887b85 [wasm] Remove the wasm-asmjs fuzzer
The fuzzer has already been removed from chromium. In addition I removed
code which was only used by this fuzzer.

BUG=chromium:734550
R=clemensh@chromium.org
CC=mstarzinger@chromium.org

Change-Id: I2ff4614e4d64131412ead759318e5c38e38f5d3d
Reviewed-on: https://chromium-review.googlesource.com/542816
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46078}
2017-06-21 10:59:35 +00:00
Ross McIlroy
811643b49b Reland: [IdentityMap] Fix size if GC short-cuts objects.
BUG=chromium:704132

Change-Id: I5be333888215718c2680f5a442fe26ffd988f04e
Reviewed-on: https://chromium-review.googlesource.com/541443
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46077}
2017-06-21 09:37:20 +00:00
v8-autoroll
0838b93855 Update V8 DEPS.
Rolling v8/build: 97e4bb9..9ffcabd

Rolling v8/buildtools: 9a65473..b92ff91

Rolling v8/third_party/catapult: c2d7f3a..a64c010

Rolling v8/tools/clang: 7659b77..9bb118e

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

Change-Id: I2335882b10ab4b13793177c02bd6f40d99158a1f
Reviewed-on: https://chromium-review.googlesource.com/542136
Reviewed-by: v8 autoroll <v8-autoroll@chromium.org>
Commit-Queue: v8 autoroll <v8-autoroll@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46076}
2017-06-21 03:35:04 +00:00
Bill Budge
73ca1690ae [WASM SIMD] Eliminate boolean vector materialization in SIMD tests.
- Now that there are no boolean vector types, we can directly test the
  results of relational ops.

Bug: v8:6020
Change-Id: Id2139133ae3a548a9985a26a3427cbeddc6272a6
Reviewed-on: https://chromium-review.googlesource.com/536176
Reviewed-by: Aseem Garg <aseemgarg@chromium.org>
Commit-Queue: Bill Budge <bbudge@chromium.org>
Cr-Commit-Position: refs/heads/master@{#46075}
2017-06-20 23:04:43 +00:00