- 06 Oct, 2017 27 commits
-
-
Jakob Kummerow authored
The twodigit_t code path emitted a library call rather than a hardware "div" instruction. This is because compilers are playing it safe: "div" can overflow when the divisor is too small. Our algorithm carefully avoids this though, so using the hardware "div" instruction is safe. This speeds up a microbenchmark by almost 50%. Bug: v8:6791 Change-Id: I35a73f8acdaca24f18327fbdaf7f53c4fd450c40 Reviewed-on: https://chromium-review.googlesource.com/686002Reviewed-by: Ben Smith <binji@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#48351}
-
Eric Holk authored
The typical pattern for using BuildCCall was to create a stack-allocated array of arguments, which was passed to BuildCCall. BuildCCall then would allocate scratch space using WasmGraphBuilder::Buffer and copy the arguments into the scratch space. This copy is unnecessary and also the use of Buffer can lead to silently overwriting scratch space that may be used higher up the stack. Now BuildCCall takes all of the functions parameters as arguments and stores this directly in a stack-allocated buffer, avoiding the use of Buffer at all and all its associated pitfalls. Change-Id: Ia0de9a90350d7fcbbb1b05d28e735d790a5f9143 Reviewed-on: https://chromium-review.googlesource.com/701638Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Eric Holk <eholk@chromium.org> Cr-Commit-Position: refs/heads/master@{#48350}
-
Ulan Degenbaev authored
This reverts commit f3c8da56. Reason for revert: GC stress failures https://build.chromium.org/p/client.v8/builders/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot/builds/15396 Original change's description: > [heap] Use weak cell in normalized map cache. > > This replaces ad-hoc weakness in normalized map cache with weak cell. > > Bug: chromium:694255 > Change-Id: I6a12301b2176fe3723b56178a65582cfb412f7d2 > Reviewed-on: https://chromium-review.googlesource.com/704834 > Commit-Queue: Ulan Degenbaev <ulan@chromium.org> > Reviewed-by: Michael Lippautz <mlippautz@chromium.org> > Cr-Commit-Position: refs/heads/master@{#48344} TBR=ulan@chromium.org,mlippautz@chromium.org Change-Id: I0b2d39a1dcff6416998ab36506ee950220c87e89 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:694255 Reviewed-on: https://chromium-review.googlesource.com/705194Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#48349}
-
Benedikt Meurer authored
Make calls like new Array(n) new A(n) (where A is a subclass of Array) inlinable into TurboFan. We do this by speculatively checking that n is an unsigned integer that is not greater than JSArray::kInitialMaxFastElementArray, and then lowering the backing store allocation to a builtin call. The speculative optimization is either protected by the AllocationSite for the Array constructor invocation (if we have one), or by a newly introduced global protector cell that is used for Array constructor invocations that don't have an AllocationSite, i.e. the ones from Array#map, Array#filter, or from subclasses of Array. Next step will be to implement the backing store allocations inline in TurboFan, but that requires Loop support in the GraphAssembler, so it's done as a separate CL. This should further boost the performance. This boosts the ARES6 ML benchmark by up to 8% on the steady state, and also improves monomorphic Array#map calls by around 20-25% on the initial setup. Bug: v8:6399 Tbr: ulan@chromium.org Change-Id: I7c8bdecf7c814ce52db6ee3051c3206a4f7d4bb6 Reviewed-on: https://chromium-review.googlesource.com/704639 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#48348}
-
Sathya Gunasekaran authored
Also delete duplicated code Bug: v8:6404 Change-Id: I7f24d99573a854254aa0fd332fe5c947f93e0552 Reviewed-on: https://chromium-review.googlesource.com/704223Reviewed-by: Camillo Bruni <cbruni@chromium.org> Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#48347}
-
Adam Klein authored
This brings V8's behavior in line with both the spec and with other engines. This also fixes the (now-incorrect) DCHECK in BytecodeGenerator relating to the delete operator's application to a VariableProxy. Bug: v8:6697, v8:6721 Change-Id: I413c02af235b0bb652eb4c5d5c971e2cf80e0906 Reviewed-on: https://chromium-review.googlesource.com/703894Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by: Caitlin Potter <caitp@igalia.com> Reviewed-by: Mythri Alle <mythria@chromium.org> Commit-Queue: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#48346}
-
Adam Klein authored
Also remove vogelheim (no longer on the team) for clarity. Change-Id: Ida6d058252f17b71bb158308657ae2d18b52c2b2 Reviewed-on: https://chromium-review.googlesource.com/703161Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Marja Hölttä <marja@chromium.org> Reviewed-by: Daniel Ehrenberg <littledan@chromium.org> Cr-Commit-Position: refs/heads/master@{#48345}
-
Ulan Degenbaev authored
This replaces ad-hoc weakness in normalized map cache with weak cell. Bug: chromium:694255 Change-Id: I6a12301b2176fe3723b56178a65582cfb412f7d2 Reviewed-on: https://chromium-review.googlesource.com/704834 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#48344}
-
Michael Lippautz authored
Bug: Change-Id: I2bebb92d2f5ed245bd7b20ee3ed1c6804605f837 Reviewed-on: https://chromium-review.googlesource.com/704644 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#48343}
-
Hannes Payer authored
Bug: Change-Id: I780c83686b741e4d63a49ccb119a920c817d5a0a Reviewed-on: https://chromium-review.googlesource.com/704718Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Hannes Payer <hpayer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48342}
-
Michael Starzinger authored
R=clemensh@chromium.org TEST=mjsunit/regress/regress-crbug-772056 BUG=chromium:772056 Change-Id: I199262aa128ab395382520b1439ecc60ed141d4a Reviewed-on: https://chromium-review.googlesource.com/704582Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#48341}
-
Michael Achenbach authored
NOTRY=true Bug: chromium:772010 Change-Id: I510121accd739f1b8239720154d45846e83b3662 Reviewed-on: https://chromium-review.googlesource.com/704818Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#48340}
-
Michael Lippautz authored
Bug: Change-Id: I6b853f9462793c14aca3cc45c735ddcef6ed6155 Reviewed-on: https://chromium-review.googlesource.com/704637 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#48339}
-
Ulan Degenbaev authored
Bug: chromium:771966 Change-Id: I146b279c4713b7dd716c6d55ca5e6c6e23a3ad7e Reviewed-on: https://chromium-review.googlesource.com/704740Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#48338}
-
Camillo Bruni authored
Bug: v8:6873 Change-Id: I1f544065dfec406bf3e4f16df38e80a1b1f7a173 Reviewed-on: https://chromium-review.googlesource.com/702281Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#48337}
-
Benedikt Meurer authored
Bug: chromium:772190, v8:6819, v8:6820, v8:6831 Change-Id: Ied2dc954ff7575043988087d96782cfbb99e9ec8 Reviewed-on: https://chromium-review.googlesource.com/704578Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48336}
-
Clemens Hammacher authored
Avoid splitting functionality in two interface calls and passing around a void* between them. R=kschimpf@chromium.org Change-Id: I0e12ff0295852ce5c36f7c3fb3b2c51dc0f2677e Reviewed-on: https://chromium-review.googlesource.com/702484Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#48335}
-
Jaroslav Sevcik authored
Currently, the transition elements kind operation invalidates the elements of all other arrays. In particular, if we loop over matrix elements using two nested loops, and do possibly transitioning access a[i][j] in every iteration, we invalidate the load elimination state for the array 'a' because a[i][j] might transition elements kind for the 'a[i]' array. As a result, the 'a[i]' access cannot be hoisted from the inner loop. With this CL, we figure out that transitioning 'a[i]' cannot affect 'a' because we know that 'a' does not have the transition's source map. In the micro-benchmark below, the time for summing up the elements of 100x100 matrix improves by factor of 1.7 (from ~340ms to ~190ms). function matrixSum(a) { let s = 0; let rowCount = a.length; let columnCount = a[0].length; for (let i = 0; i < rowCount; i++) { for (let j = 0; j < columnCount ; j++) { s += a[i][j]; } } return s; } // Setup the matrices: // Smi elements. var ma = [[1, 2], [3, 4]]; // Holey double elements. var b = Array(100); for (let i = 0; i < 100; i++) b[i] = 1.1; var mb = []; for (let i = 0; i < 100; i++) mb[i] = b; // Warmup. matrixSum(mb); matrixSum(mb); matrixSum(ma); matrixSum(mb); matrixSum(ma); %OptimizeFunctionOnNextCall(matrixSum); function runner(m) { let s = 0; for (let i = 0; i < 1e4; i++) { s += matrixSum(m); } return s; } // Make sure the runner does not know the elements kinds. %NeverOptimizeFunction(runner); // Measure. console.time("Sum"); runner(mb); console.timeEnd("Sum"); Bug: v8:6344 Change-Id: Ie0642d8693ed63116b1aaed7d2f261fcb64729fe Reviewed-on: https://chromium-review.googlesource.com/704634 Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48334}
-
Ben L. Titzer authored
R=clemensh@chromium.org Bug: v8:6756 Change-Id: I3b25b89f3ead5c856be5c7ba3c7c236e595ce8de Reviewed-on: https://chromium-review.googlesource.com/695524 Commit-Queue: Ben Titzer <titzer@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#48333}
-
Clemens Hammacher authored
And other cleanups to reuse computed function names, and use EmbeddedVector instead of ScopedVector (stack allocated instead of heap allocated). R=titzer@chromium.org Change-Id: Id293946dc9aa574e7d185ff23b87068bca74549f Reviewed-on: https://chromium-review.googlesource.com/690474Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#48332}
-
Benedikt Meurer authored
Bug: v8:6399 Tbr: jarin@chromium.org Change-Id: I98b4f2e3d9990fc38c7b5b2fac181e32ed4faa13 Reviewed-on: https://chromium-review.googlesource.com/704635Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48331}
-
Benjamin Peterson authored
Change-Id: I3ed30f539df5e9f02db8ca7934d2b68ad9437535 Reviewed-on: https://chromium-review.googlesource.com/694422 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#48330}
-
Benedikt Meurer authored
Bug: chromium:771971, v8:6882 Change-Id: Id1a602306bc89a5f96e180f70d6f713015d2dbb6 Reviewed-on: https://chromium-review.googlesource.com/702834Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48329}
-
Michael Lippautz authored
Bug: Change-Id: I1ca4246174e16dc3577f31a9e3a8333aadc17415 Reviewed-on: https://chromium-review.googlesource.com/702894Reviewed-by: Yang Guo <yangguo@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#48328}
-
Michael Lippautz authored
Bug: Change-Id: I824f42cf6159f94204ee3e3c26a6af18e717b11e Reviewed-on: https://chromium-review.googlesource.com/702874Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#48327}
-
Benedikt Meurer authored
This repairs the performance regression on Octane/EarleyBoyer and JetStream/EarleyBoyer benchmarks. Bug: chromium:772268, v8:6367, v8:6278, v8:6344 Change-Id: Ibc144a35b37c5822f88712550d8db09386241341 Reviewed-on: https://chromium-review.googlesource.com/704574Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#48326}
-
Benedikt Meurer authored
Array (subclass) constructor calls with 0 parameters are now properly turned into inline allocations, also Array (subclass) constructor calls with exactly one parameter, which is either known to not be a Number or which is a known integer in the valid loop unrolling range. Also refactor the general JSCreateArray lowering logic to properly support Array subclasses, i.e. deal with inobject properties and initial maps correctly. This boosts performance of those cases significantly (and will allow us to reduce the complexity of the Array constructor significantly long-term). For example the simple case new Array("a", "b", "c", "d", "e", "f", "g") is now around 10x faster than before. Bug: v8:6399 Change-Id: I70661971398524ee0c6a349ee559b98a962a6266 Reviewed-on: https://chromium-review.googlesource.com/703134 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#48325}
-
- 05 Oct, 2017 13 commits
-
-
Deepti Gandluri authored
Fix disassembly of atomic operations for the inspector. BUG=v8:6842,v8:6532 Change-Id: I3701b55c28b10561d1726e2c0b9fe2e1b2c76b8e Reviewed-on: https://chromium-review.googlesource.com/703468 Commit-Queue: Brad Nelson <bradnelson@chromium.org> Reviewed-by: Brad Nelson <bradnelson@chromium.org> Reviewed-by: Ben Smith <binji@chromium.org> Cr-Commit-Position: refs/heads/master@{#48324}
-
Jakob Kummerow authored
Power-of-two radixes were supported already; this adds all others (with 2 <= radix <= 36). Bonus: fix digit_div fallback path for divisors with no leading zeros. Bug: v8:6791 Change-Id: Id472667f057ad13338e0d8257a899490490e6f8f Reviewed-on: https://chromium-review.googlesource.com/693316 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Daniel Ehrenberg <littledan@chromium.org> Cr-Commit-Position: refs/heads/master@{#48323}
-
Aseem Garg authored
This adds a new simd lowering execution mode for simd and re-enables the lowering tests R=titzer@chromium.org,gdeepti@chromium.org,bbudge@chromium.org,mtrofin@chromium.org BUG=v8:6020 Change-Id: Ice6b7ff2f5973804d379c88241d49b811429a965 Reviewed-on: https://chromium-review.googlesource.com/698928 Commit-Queue: Aseem Garg <aseemgarg@chromium.org> Reviewed-by: Ben Titzer <titzer@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#48322}
-
Alexei Filippov authored
BUG=chromium:760649 Change-Id: I13f3ad28ce3870ef57aa53eef684727656dcdff2 Reviewed-on: https://chromium-review.googlesource.com/701264 Commit-Queue: Alexei Filippov <alph@chromium.org> Reviewed-by: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#48321}
-
Adam Klein authored
The code used to rely on all such loops having a block scope around them, but that is no longer the case for loops whose loop variables are VAR-declared. This patch introduces a new DeclarationDescriptor::Kind for such variables, and sets it during parsing, allowing the variable declaration code to note them as assigned appropriately. Bug: chromium:768158 Change-Id: I0cd60e8c8c735681be9dbb9344a93156af09c952 Reviewed-on: https://chromium-review.googlesource.com/701624Reviewed-by: Marja Hölttä <marja@chromium.org> Commit-Queue: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#48320}
-
Sathya Gunasekaran authored
This allows us to remove the loop while calculating the hash value and just use the HashMask as the mask for ComputeIntegerHash. This previously overflowed on 32-bit systems failing the Smi::IsValid check. Bug: v8:6404 Change-Id: I84610a7592fa9d7ce4fa5cef7903bd50b8e8a4df Reviewed-on: https://chromium-review.googlesource.com/702675Reviewed-by: Adam Klein <adamk@chromium.org> Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#48319}
-
Georgia Kouveli authored
Bug: v8:6644 Change-Id: I35c5a5095d0e154b4df0b6903e510587e869a2d4 Reviewed-on: https://chromium-review.googlesource.com/686822Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> Cr-Commit-Position: refs/heads/master@{#48318}
-
Max Moroz authored
R=ahaas@chromium.org, ochang@chromium.org Bug: Chromium:539572 Change-Id: I9e94a03c9173d0a17cb1a18dc8740972ff794368 Reviewed-on: https://chromium-review.googlesource.com/701601 Commit-Queue: Max Moroz <mmoroz@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#48317}
-
Ulan Degenbaev authored
Bug: chromium:771966 Change-Id: Iac5ee55c0d31de477f21f091f4be015a1ca8d00c Reviewed-on: https://chromium-review.googlesource.com/702382Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#48316}
-
Michael Hablich authored
The default component for src/ was Blink>JavaScript>Runtime before. Unfortunately this is only partly true and tools that use the information in the OWNERS file often misassign issues because of it. R=machenbach@chromium.org NOTRY=true Change-Id: I81457da1394a410fd494702f206af69857109c1c Reviewed-on: https://chromium-review.googlesource.com/701758Reviewed-by: Michael Hablich <hablich@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Sergiy Byelozyorov <sergiyb@chromium.org> Commit-Queue: Michael Hablich <hablich@chromium.org> Cr-Commit-Position: refs/heads/master@{#48315}
-
Andreas Haas authored
At the moment we check only in the module-decoder if the sections in a module appear at most once. The code section, however, we process already before this check. With this CL we check that there is at most one code section before we start processing it. R=clemensh@chromium.org TEST=WasmStreamingDecoderTest.TwoCodeSections Bug: chromium:771916 Change-Id: Icc79d5a87ab39f450a35c688f74ea5e67cae4b3c Reviewed-on: https://chromium-review.googlesource.com/702379Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#48314}
-
Ulan Degenbaev authored
This makes the test robust for stress GC flags. Bug: Change-Id: Ica65987f0ee09fbdb4aab233dea4c51db5b19459 Reviewed-on: https://chromium-review.googlesource.com/702436Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#48313}
-
Ulan Degenbaev authored
If sweeping is not making progress and there are many young generation GCs happening, then this can lead to accumulation of memory chunks in the unmapper queue. Bug: chromium:771966 Change-Id: Ief73ada0d17198a80b668850c6d2e7ea413113e7 Reviewed-on: https://chromium-review.googlesource.com/702479Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#48312}
-