- 07 Jan, 2019 3 commits
-
-
Clemens Hammacher authored
We currently iterate the list of unexecuted register moves repeatedly, always executing the moves whose destination register is not being used as source register any more. This can lead to quadratic execution times if only a small number of moves is processed in every iteration. This CL refactors this such that we iterate the moves at most three times: Once for executing moves which can be executed right away (fast path) and for computing the source register use counts. A second time to execute all remaining non-cyclic moves, and a third time to execute cyclic moves. During the second and third iteration, whenever we decrement the source register use count, we check whether it drops to zero and execute the respective move right away. R=ahaas@chromium.org Bug: v8:6600, v8:8423 Change-Id: I503328f5ae5f0208e35d53c71b4c289d75799892 Reviewed-on: https://chromium-review.googlesource.com/c/1397703 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#58588}
-
Clemens Hammacher authored
Stack transfers consist of a number of register moves plus a number of register loads. We currently store both in separate vectors. This CL changes that to be stored in arrays indexed by the destination register (such that it behaves like a map). This avoids any dynamically growing structures. Measured locally, this speeds up stack transfer processing by ~10%, which translates to ~0.5% of overall Liftoff compilation time. R=ahaas@chromium.org Bug: v8:6600, v8:8423 Change-Id: Id532960dcc12f228507ed75e392ad4c57710593f Reviewed-on: https://chromium-review.googlesource.com/c/1396278 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#58587}
-
Clemens Hammacher authored
This is a fully semantically preserving CL, it just moves code around a bit to make the follow-up CL easier to review. R=ahaas@chromium.org Bug: v8:6600, v8:8423 Change-Id: I0de80b18faa3ae570894cbd8073c495a5731d255 Reviewed-on: https://chromium-review.googlesource.com/c/1396096Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58569}
-
- 04 Jan, 2019 2 commits
-
-
Predrag Rudic authored
Redefinition of GetHalfStackSlot after commit 5ea59597. Change-Id: Ib2b1fe6bd130c6737a73ef55b09dc80f4cd9b3fb Reviewed-on: https://chromium-review.googlesource.com/c/1396077Reviewed-by: Sreten Kovacevic <skovacevic@wavecomp.com> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Predrag Rudic <prudic@wavecomp.com> Cr-Commit-Position: refs/heads/master@{#58543}
-
Clemens Hammacher authored
The {movsx_b} instruction can only take byte registers (or operands) as source. Ensure that for i8 sign extensions to i64, the src register is moved to a temporary byte register first, similar to the same operation on i32 a few lines above. R=ahaas@chromium.org Bug: chromium:918149, v8:6600 Change-Id: I17bc942127baee57279a7fc0caac9d82bd7c6bfb Reviewed-on: https://chromium-review.googlesource.com/c/1394555Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58542}
-
- 03 Jan, 2019 5 commits
-
-
Clemens Hammacher authored
The number of registers is very small, so any integer type is big enough anyway. Just use the simplest one, which is int. R=ahaas@chromium.org Bug: v8:6600 Change-Id: I9762a5c934848b810b7937ee603cd183f883d557 Reviewed-on: https://chromium-review.googlesource.com/c/1394548Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58524}
-
Clemens Hammacher authored
We currently de-duplicate used registers also in regions which do not need merging. In those regions though it can never happen that we need to pass different values from any merge input. Apart from introducing unnecessary register moves, this also causes a DCHECK to fail, because we might later want to merge back different registers into one. Assume this initial stack state (where each letter is a register): [A B B C] If in any child block the two Bs get de-duplicated so something like [A B D C] then we run into trouble when merging back this state into the parent state, because both B and D would need to be put into B. In this case we can statically infer that B and D must hold the same value anyway, but having this situation does not make much sense in the first place, so the DCHECK fires correctly. R=titzer@chromium.org Bug: v8:8423, chromium:917412 Change-Id: I24c36b062e04a134cf7051725afab98126753f31 Reviewed-on: https://chromium-review.googlesource.com/c/1392190 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#58522}
-
Clemens Hammacher authored
On x64 the {kScratchRegister} cannot be held in a {LiftoffRegister}, since it is not a valid cache register. Also, the code unnecessarily checked whether there is an unused cache register, but then didn't use it. Simplify the logic to always use the scratch register, just distinguish between 4-byte and 8-byte moves. On ia32 we did not move 64-bit values correctly if we didn't have unused registers and needed to move via the stack. R=titzer@chromium.org Bug: v8:6600, chromium:917588, chromium:917450 Change-Id: I0bbe946c6ac8fca62f85711ae47afdac9c02ae6b Reviewed-on: https://chromium-review.googlesource.com/c/1391755Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58521}
-
Clemens Hammacher authored
Instead, always pass an index and an enum pointing to either half. R=titzer@chromium.org Bug: v8:6600, v8:8562 Change-Id: I7e73bd97bfc7ebf644b242980aa0a73cd5f18949 Reviewed-on: https://chromium-review.googlesource.com/c/1392189 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#58516}
-
Clemens Hammacher authored
Bring mips in line with the ia32 and arm implementions. Instead of computing the "half index" manually, pass the index and an enum pointing to either half. R=titzer@chromium.org Bug: v8:6600 Change-Id: Id8812114df84fbddd4aa2570306526d291bface6 Reviewed-on: https://chromium-review.googlesource.com/c/1392188 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#58514}
-
- 02 Jan, 2019 2 commits
-
-
Clemens Hammacher authored
Bring ia32 in line with the arm implemention. Instead of computing the "half index" manually, pass the index and an enum pointing to either half. R=titzer@chromium.org Bug: v8:6600 Change-Id: Ia3799a42fe2b9890aa4076d2e09947380331348e Reviewed-on: https://chromium-review.googlesource.com/c/1391758 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#58501}
-
Clemens Hammacher authored
And use it in several places in wasm. R=tebbi@chromium.org Bug: v8:8562 Change-Id: I1e857baf33e99849eb32ac2c94e39d7f27b180c8 Reviewed-on: https://chromium-review.googlesource.com/c/1391757 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#58495}
-
- 27 Dec, 2018 1 commit
-
-
Clemens Hammacher authored
Prevent aliasing between problematic registers for shift operations with int64 values in the arm port of Liftoff. Bug: v8:6600, chromium:912592 Change-Id: I905f0a657626fdfac3e41fe2878e918e3c779a8f Reviewed-on: https://chromium-review.googlesource.com/c/1388564 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58480}
-
- 21 Dec, 2018 5 commits
-
-
George Wort authored
Ensure that GetUnusedRegister is always called before acquiring the scratch register in case it is needed for spilling the value of the used register. Bug: v8:6600, chromium:910824 Change-Id: I93ae684ad504584807dfa6227b6af14609c6bcf5 Reviewed-on: https://chromium-review.googlesource.com/c/1387498Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58442}
-
Clemens Hammacher authored
Before computing the merge state, compute the list of free registers. This list is used when we need a register for ensuring single register use. It avoids picking a register which is in use by a not-yet-visited merge slot, which would then have to be moved to another register or to the stack. On epic, this saves ~10.5% generated code size in Liftoff. R=herhut@chromium.org Bug: v8:8423 Change-Id: If9fac24abbfe2273bf18d9cb287c7c05a59b2118 Reviewed-on: https://chromium-review.googlesource.com/c/1387488 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Stephan Herhut <herhut@chromium.org> Cr-Commit-Position: refs/heads/master@{#58435}
-
Clemens Hammacher authored
This silences the new presubmit check for the whole src/wasm directory. This change uncovered that MSVC is a bit behind with noexcept annotations on standard containers. This makes all implicit constructors and assignment operators noexcept(false) if the class contains any standard container. Thus disable noexcept on MSVC for now. R=tebbi@chromium.org CC=marja@chromium.org Bug: v8:8616, v8:7999 Change-Id: Ica86ac84a5b8a835dcea9b783c7987d9b850241a Reviewed-on: https://chromium-review.googlesource.com/c/1386869 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#58430}
-
Clemens Hammacher authored
This replaces another use of std::vector. Stack states (consisting of locals plus operand stack) are also typically small, thus optimize for those cases. Using StackVector as part of CacheState requires the definition of move constructors and copy constructors, plus a few other methods. R=tebbi@chromium.org Bug: v8:8423 Change-Id: I5d39c1ebc4d6d65e4849dd06c556114cd2cd36ff Reviewed-on: https://chromium-review.googlesource.com/c/1380053 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#58429}
-
Clemens Hammacher authored
Since FallThruTo is often followed by PopControl, we can save a few cache state copy operations in Liftoff by merging the two. On epic workloads, this saves ~18% of Steal operations and ~22% of Split operations. R=herhut@chromium.org Bug: v8:8423 Change-Id: I99900eaa49ae14ead6a0c08b69da2175730e077e Reviewed-on: https://chromium-review.googlesource.com/c/1384093Reviewed-by: Stephan Herhut <herhut@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58420}
-
- 20 Dec, 2018 2 commits
-
-
Clemens Hammacher authored
Avoid named constructors for Value and Control and the hack to also have them on subclasses. Instead, add a new template type and a constructor to create the subtype from this template. Instead of the named constructors on the subtype, we now create a template and initialize the subtype from the template. R=herhut@chromium.org Bug: v8:8562 Change-Id: I374fc4104ab1ae5769c587bdf5a4ca7f9a0a10d7 Reviewed-on: https://chromium-review.googlesource.com/c/1382454Reviewed-by: Stephan Herhut <herhut@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58408}
-
Clemens Hammacher authored
The source register of {movsx_b} must be a byte register. Drive-by: Add missing sign extension opcodes to wasm-constants.js. R=herhut@chromium.org Bug: chromium:916869 Change-Id: I571c1ea2a0e197afefc810f306eed238250cd5e0 Reviewed-on: https://chromium-review.googlesource.com/c/1386110Reviewed-by: Stephan Herhut <herhut@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58394}
-
- 19 Dec, 2018 2 commits
-
-
Igor Sheludko authored
Also added != 0 for readability in checks like: if (FIELD_SIZE(kFooOffset) != 0) {...} Bug: v8:8477, v8:8562 Change-Id: Ibc305103475e6ec029e89e7ad095ec0a1fa30189 Reviewed-on: https://chromium-review.googlesource.com/c/1382743 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58360}
-
Igor Sheludko authored
These load operations will decompress values if pointer compression is enabled. Bug: v8:7703 Change-Id: I4c5cef39a735f3b03e36d27c0e5e7c21653bbbc0 Reviewed-on: https://chromium-review.googlesource.com/c/1382742 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58356}
-
- 18 Dec, 2018 1 commit
-
-
Clemens Hammacher authored
This CL introduces our own minimal SmallVector implementation and uses it in several places (more might follow). I measured that in the majority of cases, these vectors are quite small (<= 8 elements), so we will avoid any heap allocation in those cases. R=mstarzinger@chromium.org CC=titzer@chromium.org Bug: v8:8423 Change-Id: I93a26b3303a10fe1dc93186430e20333ea4970a8 Reviewed-on: https://chromium-review.googlesource.com/c/1378178 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#58323}
-
- 17 Dec, 2018 3 commits
-
-
Sigurd Schneider authored
This is a reland of 3ad101f5 Original change's description: > [assembler] Split out CPUFeatures into its own file > > This reduces the preprocessor expanded source size by 84,675 LoC: > > gen ( 20 files): 71,349 to 1,523,934 ( 21x) > src ( 624 files): 367,410 to 53,253,894 ( 145x) > test ( 392 files): 490,503 to 37,436,176 ( 76x) > third_party ( 432 files): 239,085 to 9,547,902 ( 40x) > total ( 1520 files): 1,183,031 to 102,736,424 ( 87x) > > to > > gen ( 20 files): 71,349 to 1,523,794 ( 21x) > src ( 624 files): 367,411 to 53,186,896 ( 145x) > test ( 392 files): 490,504 to 37,418,639 ( 76x) > third_party ( 432 files): 239,085 to 9,547,902 ( 40x) > total ( 1520 files): 1,183,033 to 102,651,749 ( 87x) > > > Change-Id: Ia8a79092051a42815b65e86a0784297915368c9b > Reviewed-on: https://chromium-review.googlesource.com/c/1291471 > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Reviewed-by: Clemens Hammacher <clemensh@chromium.org> > Reviewed-by: Marja Hölttä <marja@chromium.org> > Commit-Queue: Sigurd Schneider <sigurds@chromium.org> > Cr-Commit-Position: refs/heads/master@{#58266} TBR=marja@chromium.org,clemensh@chromium.org,ulan@chromium.org Change-Id: I5b857666508b1c80dcadd0b470aada37dd49077e Reviewed-on: https://chromium-review.googlesource.com/c/1379872Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#58278}
-
Maya Lekova authored
This reverts commit 3ad101f5. Reason for revert: Broken Android Arm64 debug builder - https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Android%20Arm64%20-%20debug%20builder/3089 Original change's description: > [assembler] Split out CPUFeatures into its own file > > This reduces the preprocessor expanded source size by 84,675 LoC: > > gen ( 20 files): 71,349 to 1,523,934 ( 21x) > src ( 624 files): 367,410 to 53,253,894 ( 145x) > test ( 392 files): 490,503 to 37,436,176 ( 76x) > third_party ( 432 files): 239,085 to 9,547,902 ( 40x) > total ( 1520 files): 1,183,031 to 102,736,424 ( 87x) > > to > > gen ( 20 files): 71,349 to 1,523,794 ( 21x) > src ( 624 files): 367,411 to 53,186,896 ( 145x) > test ( 392 files): 490,504 to 37,418,639 ( 76x) > third_party ( 432 files): 239,085 to 9,547,902 ( 40x) > total ( 1520 files): 1,183,033 to 102,651,749 ( 87x) > > > Change-Id: Ia8a79092051a42815b65e86a0784297915368c9b > Reviewed-on: https://chromium-review.googlesource.com/c/1291471 > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Reviewed-by: Clemens Hammacher <clemensh@chromium.org> > Reviewed-by: Marja Hölttä <marja@chromium.org> > Commit-Queue: Sigurd Schneider <sigurds@chromium.org> > Cr-Commit-Position: refs/heads/master@{#58266} TBR=ulan@chromium.org,marja@chromium.org,sigurds@chromium.org,clemensh@chromium.org Change-Id: I111f9bbef9e66cd1ee7f4206b6af1097f7c50e66 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/1379933Reviewed-by: Maya Lekova <mslekova@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#58268}
-
Sigurd Schneider authored
This reduces the preprocessor expanded source size by 84,675 LoC: gen ( 20 files): 71,349 to 1,523,934 ( 21x) src ( 624 files): 367,410 to 53,253,894 ( 145x) test ( 392 files): 490,503 to 37,436,176 ( 76x) third_party ( 432 files): 239,085 to 9,547,902 ( 40x) total ( 1520 files): 1,183,031 to 102,736,424 ( 87x) to gen ( 20 files): 71,349 to 1,523,794 ( 21x) src ( 624 files): 367,411 to 53,186,896 ( 145x) test ( 392 files): 490,504 to 37,418,639 ( 76x) third_party ( 432 files): 239,085 to 9,547,902 ( 40x) total ( 1520 files): 1,183,033 to 102,651,749 ( 87x) Change-Id: Ia8a79092051a42815b65e86a0784297915368c9b Reviewed-on: https://chromium-review.googlesource.com/c/1291471Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Marja Hölttä <marja@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#58266}
-
- 13 Dec, 2018 1 commit
-
-
Clemens Hammacher authored
When finishing a one-armed if, the else state has to be merged into the end state. We did this before by switching to the else state, then doing the merge. This CL changes this to avoid the switch. Drive-by: Add a few missing "const" qualifiers. The style guide forbids non-const l-value references. R=titzer@chromium.org Bug: v8:8423, v8:6600 Change-Id: Iab2aeca393147fba55493bebabd27bc4d77baa0f Reviewed-on: https://chromium-review.googlesource.com/c/1375656Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58222}
-
- 12 Dec, 2018 4 commits
-
-
Clemens Hammacher authored
This information is already stored in ControlBase::stack_depth. R=titzer@chromium.org Bug: v8:8423 Change-Id: Ie707878b5d7ee5180e44881086d05a590c0dea21 Reviewed-on: https://chromium-review.googlesource.com/c/1373786Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58199}
-
Clemens Hammacher authored
Should be num_locals, and const. R=titzer@chromium.org Bug: v8:8562 Change-Id: I60889c9912ef95d344ede4d7755028116feee47e Reviewed-on: https://chromium-review.googlesource.com/c/1373784Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58197}
-
Ben Smith authored
`memory.init` copies bytes from a passive data segment to linear memory. `memory.drop` is an instruction that informs the wasm VM that the instance no longer needs access to the passive data segment. Information about the passive data segments, including their contents, length, and whether they are dropped, is stored in the `WasmInstanceObject` as primitive arrays. Bug: v8:7747 Change-Id: I1515c8868c9be227743456a539126c15280b5365 Reviewed-on: https://chromium-review.googlesource.com/c/1370691Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Ben Smith <binji@chromium.org> Cr-Commit-Position: refs/heads/master@{#58196}
-
Clemens Hammacher authored
Neither the TF backend nor Liftoff use the signature, thus remove it. R=titzer@chromium.org Bug: v8:8423 Change-Id: I909e9a0095cac67aaefaebcb4240f7d9829e4c87 Reviewed-on: https://chromium-review.googlesource.com/c/1373777Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58190}
-
- 11 Dec, 2018 1 commit
-
-
Clemens Hammacher authored
Instead, return directly when branching to the outermost block. When falling through the end of the function block, generate a standard return, otherwise do not generate a return at the end of the function block. R=titzer@chromium.org Bug: v8:8423 Change-Id: I3c5ffacfa4ef7a960d41bea62920bd98e63d78df Reviewed-on: https://chromium-review.googlesource.com/c/1369958 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#58151}
-
- 10 Dec, 2018 2 commits
-
-
Ben Smith authored
This implementation currently only supports the optimized tier. Bug: v8:7747 Change-Id: Ia1af29b11a5d3e8a48b122f6cf3240c9f5948bfb Reviewed-on: https://chromium-review.googlesource.com/c/1364710Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Ben Smith <binji@chromium.org> Cr-Commit-Position: refs/heads/master@{#58137}
-
Clemens Hammacher authored
Instead of branching to the end merge of the outermost block, we should return directly. This often generates shorter and faster code, since the merge is omitted. R=titzer@chromium.org Bug: v8:6600, v8:8423 Change-Id: Id5e92b05d3fbbcdb69e4a8bf48629d6031d85291 Reviewed-on: https://chromium-review.googlesource.com/c/1358411Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58129}
-
- 04 Dec, 2018 2 commits
-
-
Clemens Hammacher authored
This is a reland of c2aaf0a6 Original change's description: > [wasm][liftoff] Optimize one-armed ifs > > Do not implement one-armed ifs by emulating an empty else branch. In > Liftoff, we can generate better code and save compile time by handling > this specially. If the merge point at the end of the if is not reached > by the if-branch, we do not need to generate any merge code. > > R=titzer@chromium.org > > Bug: v8:6600, v8:8423 > Change-Id: Ie8ea69dd7491f225605a8e1b986d275d869aa90b > Reviewed-on: https://chromium-review.googlesource.com/c/1356508 > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Reviewed-by: Ben Titzer <titzer@chromium.org> > Cr-Commit-Position: refs/heads/master@{#57968} Bug: v8:6600, v8:8423 Change-Id: I6d5eea9f860486768779a33bf6bd7b87cbfc2af0 Reviewed-on: https://chromium-review.googlesource.com/c/1361040Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58024}
-
Clemens Hammacher authored
This reverts commit c2aaf0a6. Reason for revert: Benchmarks fail, and ClusterFuzz is not happy (issue 911406, issue 911271) Original change's description: > [wasm][liftoff] Optimize one-armed ifs > > Do not implement one-armed ifs by emulating an empty else branch. In > Liftoff, we can generate better code and save compile time by handling > this specially. If the merge point at the end of the if is not reached > by the if-branch, we do not need to generate any merge code. > > R=titzer@chromium.org > > Bug: v8:6600, v8:8423 > Change-Id: Ie8ea69dd7491f225605a8e1b986d275d869aa90b > Reviewed-on: https://chromium-review.googlesource.com/c/1356508 > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Reviewed-by: Ben Titzer <titzer@chromium.org> > Cr-Commit-Position: refs/heads/master@{#57968} TBR=titzer@chromium.org,clemensh@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: v8:6600, v8:8423 Change-Id: I5cb3b069f40e34f34da4013e666f6ff293752567 Reviewed-on: https://chromium-review.googlesource.com/c/1360633Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58012}
-
- 03 Dec, 2018 2 commits
-
-
George Wort authored
Move lhs into dst when lhs == rhs. Bug: v8:6600, chromium:910223 Change-Id: I5bcb01b57705c52f363a43b2036f0ade0fd451e7 Reviewed-on: https://chromium-review.googlesource.com/c/1357041 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#57996}
-
Clemens Hammacher authored
Since all other values are not used any more if we return, we don't need to spill anything (as might happen during {PopToRegister}). Instead, just load the top stack value into the return register(s). R=titzer@chromium.org Bug: v8:6600, v8:8423 Change-Id: Ibfd02d20191459c7b136ab9a48f0cf1a53b3385d Reviewed-on: https://chromium-review.googlesource.com/c/1358391 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#57995}
-
- 30 Nov, 2018 1 commit
-
-
Clemens Hammacher authored
Do not implement one-armed ifs by emulating an empty else branch. In Liftoff, we can generate better code and save compile time by handling this specially. If the merge point at the end of the if is not reached by the if-branch, we do not need to generate any merge code. R=titzer@chromium.org Bug: v8:6600, v8:8423 Change-Id: Ie8ea69dd7491f225605a8e1b986d275d869aa90b Reviewed-on: https://chromium-review.googlesource.com/c/1356508 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#57968}
-
- 29 Nov, 2018 1 commit
-
-
Clemens Hammacher authored
This adds error functions that receive offsets instead of pc, since the streaming compiler stores different sections in different buffers, so computing pointer differences between different sections does not work. We keep the pc-based methods for now to reduce code-churn and complexity at the different call sites. R=ahaas@chromium.org CC=binji@chromium.org Bug: v8:8238 Change-Id: I1aa68740bdda93c3341431aa7a81ac01ecfb71bb Reviewed-on: https://chromium-review.googlesource.com/c/1354463Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#57944}
-