- 02 May, 2019 1 commit
-
-
Seth Brenith authored
On Windows, expanding the stack by more than 4 KB at a time can cause access violations. This change fixes a few known cases (and includes unit tests for those), and attempts to make stack expansion more consistent overall by using the AllocateStackSpace helper method everywhere we can, even when the offset is a small constant. On arm64, there was already a consistent method for stack pointer manipulation using the Claim and Drop methods, so Claim is updated to touch every page. Bug: v8:9017 Change-Id: I2dbbceeebbdefaf45803e9b621fe83f52234a395 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1570666 Commit-Queue: Seth Brenith <seth.brenith@microsoft.com> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#61186}
-
- 30 Apr, 2019 1 commit
-
-
Joey Gouly authored
This is an extension of 138d2dfc. Change-Id: Icb10aab6e6799ab4f45dcbd26fc69206dbef29bb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1588430 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#61131}
-
- 29 Mar, 2019 1 commit
-
-
Joey Gouly authored
This is a reland of e3be96d6 The failure was due to not sign extendint the immediate for 64-bit adds on 32-bit platforms. Original change's description: > [liftoff] Introduce emit_{i64,i32}_add with immediate > > This allows immediates to be encoded directly into instructions, rather than > mov-ing constants to registers first. > > This patch only changes emit_{i64,i32}_add, other emit_ functions will be changed once > this approach has been approved. > > Bug: v8:9038 > > Change-Id: I0c7306c2da0dae26f1c6e2465a9565adbf0bda84 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1524482 > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Reviewed-by: Clemens Hammacher <clemensh@chromium.org> > Cr-Commit-Position: refs/heads/master@{#60506} Bug: v8:9038 Change-Id: I7dd1112827d037d900fd36cce71206388642605b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1543730Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#60521}
-
- 28 Mar, 2019 2 commits
-
-
Clemens Hammacher authored
This reverts commit e3be96d6. Reason for revert: Fails on ia32: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux/31041 Original change's description: > [liftoff] Introduce emit_{i64,i32}_add with immediate > > This allows immediates to be encoded directly into instructions, rather than > mov-ing constants to registers first. > > This patch only changes emit_{i64,i32}_add, other emit_ functions will be changed once > this approach has been approved. > > Bug: v8:9038 > > Change-Id: I0c7306c2da0dae26f1c6e2465a9565adbf0bda84 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1524482 > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Reviewed-by: Clemens Hammacher <clemensh@chromium.org> > Cr-Commit-Position: refs/heads/master@{#60506} TBR=clemensh@chromium.org,martyn.capewell@arm.com,joey.gouly@arm.com Change-Id: I131b13dc7178e31919fc2fffacec72c0697d93a6 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:9038 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1543354Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#60508}
-
Joey Gouly authored
This allows immediates to be encoded directly into instructions, rather than mov-ing constants to registers first. This patch only changes emit_{i64,i32}_add, other emit_ functions will be changed once this approach has been approved. Bug: v8:9038 Change-Id: I0c7306c2da0dae26f1c6e2465a9565adbf0bda84 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1524482 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#60506}
-
- 28 Jan, 2019 1 commit
-
-
Clemens Hammacher authored
Now that I saw the typo I cannot unsee it anymore, but somehow this typo went unrecognized for nearly 12 months (since https://crrev.com/c/904443). R=ahaas@chromium.org Bug: v8:8562 Change-Id: Iafaeb2313dcfa305007c3c87e8f0440d8b15980e Reviewed-on: https://chromium-review.googlesource.com/c/1436021Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#59125}
-
- 17 Jan, 2019 1 commit
-
-
Clemens Hammacher authored
Refactor all call sites to use the new API introduced in https://crrev.com/c/1411347 and remove the legacy constructors. R=mstarzinger@chromium.org Bug: v8:8689, v8:8562 Change-Id: Id73686413726b2860f551dd200ef4b8823ef3034 Reviewed-on: https://chromium-review.googlesource.com/c/1415491Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58884}
-
- 16 Jan, 2019 1 commit
-
-
Clemens Hammacher authored
When generating an Assembler, you currently have two choices: Either let the Assembler allocate a growable internal buffer, which is owned by the Assembler. Or provide an externally allocated buffer, which cannot grow. This CL changes this interface to allow providing any implementation of a buffer. The provided buffer can be a view to an externally owned buffer, which still can grow. This will be used to split WebAssembly compilation and code submission. The buffer needs to be able to grow, but cannot be owned by the Assembler because it has to survive until the code is submitted. R=mstarzinger@chromium.org Bug: v8:8689 Change-Id: Ib6c5ebffc8b71d0778944abac34f02c5cc7dbd79 Reviewed-on: https://chromium-review.googlesource.com/c/1411347 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#58848}
-
- 11 Jan, 2019 1 commit
-
-
Clemens Hammacher authored
In the degenerate case where we wanted to emit {x = x - x} (where {x} is any register), ia32 and x64 generated wrong code (producing {-x + -x} instead). Fix this by special casing this case. R=ahaas@chromium.org Bug: chromium:919308 Change-Id: I9cd9818d2a678450ac6530107e7a5cbb625ddb8d Reviewed-on: https://chromium-review.googlesource.com/c/1405029 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#58731}
-
- 04 Jan, 2019 1 commit
-
-
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 2 commits
-
-
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}
-
- 02 Jan, 2019 1 commit
-
-
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}
-
- 20 Dec, 2018 1 commit
-
-
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}
-
- 28 Nov, 2018 1 commit
-
-
George Wort authored
This allows f32 floor, ceil, trunc, and nearest_int to use a C fallback in Liftoff in the same way that f64 rounding can. Bug: v8:6600 Change-Id: I8b88d806633bcfe2d2dfac9defaf60e551bf21b1 Reviewed-on: https://chromium-review.googlesource.com/c/1353898 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#57909}
-
- 15 Nov, 2018 1 commit
-
-
Clemens Hammacher authored
With just five cache registers, Liftoff can run out of memory on a 64bit shift. This CL solves this by using a parallel register move and pinning less registers. R=ahaas@chromium.org Bug: chromium:894307 Change-Id: I91ed0fee00ceb452841e5d1bb10905be6702dcce Reviewed-on: https://chromium-review.googlesource.com/c/1337580 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#57552}
-
- 16 Oct, 2018 1 commit
-
-
Sigurd Schneider authored
Change-Id: I861babb77f224626f6cdb88a7be08db75f5cf327 Bug: v8:6666 Reviewed-on: https://chromium-review.googlesource.com/c/1283089Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#56698}
-
- 12 Oct, 2018 1 commit
-
-
Clemens Hammacher authored
On ia32, we were pinning too many registers, resulting in no unpinned byte registers left (we only have three byte registers since {ebx} is reserved for the root register). It turns out that on most paths, we don't actually need to pin any registers, since {Store} is often the last call for an operation (like any store or set_global). If registers need to be pinned, only pass those that must be kept alive across the {Store}. This allows to compute a more narrow set of pinned registers on demand inside {Store}. Plus minor drive-by changes. R=titzer@chromium.org Bug: chromium:894374, chromium:894307, v8:6600 Change-Id: Ic4d7131784c193dc7a2abf0e504d9973f6d5c5f1 Reviewed-on: https://chromium-review.googlesource.com/c/1275819 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#56587}
-
- 09 Oct, 2018 1 commit
-
-
Clemens Hammacher authored
Drive-by: Fix a bug in {ProcessParameter} which was uncovered by this CL. R=titzer@chromium.org CC=sigurds@chromium.org, jgruber@chromium.org Bug: v8:6666 Change-Id: Ia775e8b4b9fdb9cecc226bdd870319a73950c18f Reviewed-on: https://chromium-review.googlesource.com/c/1270589 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#56477}
-
- 14 Sep, 2018 1 commit
-
-
Clemens Hammacher authored
This implements the five sign extension opcodes for ia32 and x64 (and bails out on other architectures). R=titzer@chromium.org Bug: v8:6600 Change-Id: Ibb8bae0e229e276b346f2d054b51864a0995a096 Reviewed-on: https://chromium-review.googlesource.com/1174533 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#55898}
-
- 12 Sep, 2018 3 commits
-
-
Clemens Hammacher authored
This is a reland of 6afe7d18. The reason for the revert is fixed in https://crrev.com/c/1219633. Original change's description: > [Liftoff] Implement f32.copysign and f64.copysign > > These are two of the few missing instructions. This CL implements them > for ia32 and x64, and bails out on other platforms. > On x64, we are using the BTR instruction since we cannot have 64-bit > immediates. > > Drive-by: Fix naming of existing bt/bts instructions on x64. > > R=titzer@chromium.org > > Bug: v8:6600 > Change-Id: Ib8532ca811160cd61f4ba7c06b04ce093861c872 > Reviewed-on: https://chromium-review.googlesource.com/1174383 > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Reviewed-by: Ben Titzer <titzer@chromium.org> > Cr-Commit-Position: refs/heads/master@{#55780} Bug: v8:6600 Change-Id: Ie14ba3a14848ba8e67f97e66d3379178f35dea40 TBR=titzer@chromium.org Change-Id: Ie14ba3a14848ba8e67f97e66d3379178f35dea40 Reviewed-on: https://chromium-review.googlesource.com/1219693Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#55817}
-
Clemens Hammacher authored
This reverts commit f0f5f877. Reason for revert: Merge conflict (does not compile). Original change's description: > Reland "[Liftoff] Implement f32.copysign and f64.copysign" > > This is a reland of 6afe7d18. > The reason for the revert is fixed in https://crrev.com/c/1219633. > > Original change's description: > > [Liftoff] Implement f32.copysign and f64.copysign > > > > These are two of the few missing instructions. This CL implements them > > for ia32 and x64, and bails out on other platforms. > > On x64, we are using the BTR instruction since we cannot have 64-bit > > immediates. > > > > Drive-by: Fix naming of existing bt/bts instructions on x64. > > > > R=titzer@chromium.org > > > > Bug: v8:6600 > > Change-Id: Ib8532ca811160cd61f4ba7c06b04ce093861c872 > > Reviewed-on: https://chromium-review.googlesource.com/1174383 > > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > > Reviewed-by: Ben Titzer <titzer@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#55780} > > Bug: v8:6600 > Change-Id: I4baeec6b02b17450988cfa7fedd5037f9cfe1638 > Reviewed-on: https://chromium-review.googlesource.com/1219508 > Reviewed-by: Ben Titzer <titzer@chromium.org> > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Cr-Commit-Position: refs/heads/master@{#55812} TBR=titzer@chromium.org,clemensh@chromium.org Change-Id: Iae075a8f5225f1678691698bf3a304faa5ae2aab No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:6600 Reviewed-on: https://chromium-review.googlesource.com/1220747Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#55813}
-
Clemens Hammacher authored
This is a reland of 6afe7d18. The reason for the revert is fixed in https://crrev.com/c/1219633. Original change's description: > [Liftoff] Implement f32.copysign and f64.copysign > > These are two of the few missing instructions. This CL implements them > for ia32 and x64, and bails out on other platforms. > On x64, we are using the BTR instruction since we cannot have 64-bit > immediates. > > Drive-by: Fix naming of existing bt/bts instructions on x64. > > R=titzer@chromium.org > > Bug: v8:6600 > Change-Id: Ib8532ca811160cd61f4ba7c06b04ce093861c872 > Reviewed-on: https://chromium-review.googlesource.com/1174383 > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Reviewed-by: Ben Titzer <titzer@chromium.org> > Cr-Commit-Position: refs/heads/master@{#55780} Bug: v8:6600 Change-Id: I4baeec6b02b17450988cfa7fedd5037f9cfe1638 Reviewed-on: https://chromium-review.googlesource.com/1219508Reviewed-by:
Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#55812}
-
- 11 Sep, 2018 2 commits
-
-
Clemens Hammacher authored
This reverts commit 6afe7d18. Reason for revert: Failures (-2e+66 vs. -2e+66): https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux%20-%20debug/22148 Original change's description: > [Liftoff] Implement f32.copysign and f64.copysign > > These are two of the few missing instructions. This CL implements them > for ia32 and x64, and bails out on other platforms. > On x64, we are using the BTR instruction since we cannot have 64-bit > immediates. > > Drive-by: Fix naming of existing bt/bts instructions on x64. > > R=titzer@chromium.org > > Bug: v8:6600 > Change-Id: Ib8532ca811160cd61f4ba7c06b04ce093861c872 > Reviewed-on: https://chromium-review.googlesource.com/1174383 > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Reviewed-by: Ben Titzer <titzer@chromium.org> > Cr-Commit-Position: refs/heads/master@{#55780} TBR=titzer@chromium.org,clemensh@chromium.org Change-Id: I4377c13346b42b65e8db04cbd15fc2f906113f65 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:6600 Reviewed-on: https://chromium-review.googlesource.com/1219446Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#55783}
-
Clemens Hammacher authored
These are two of the few missing instructions. This CL implements them for ia32 and x64, and bails out on other platforms. On x64, we are using the BTR instruction since we cannot have 64-bit immediates. Drive-by: Fix naming of existing bt/bts instructions on x64. R=titzer@chromium.org Bug: v8:6600 Change-Id: Ib8532ca811160cd61f4ba7c06b04ce093861c872 Reviewed-on: https://chromium-review.googlesource.com/1174383 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#55780}
-
- 04 Sep, 2018 1 commit
-
-
Clemens Hammacher authored
Since https://crrev.com/c/1112003, the memory size is stored as size_t instead of uint32_t in order to support 4GB memories. Loading it as uint32_t only works on little-endian systems, and only for memory sizes <4GB. This CL fixes this to load and process the memory size as pointer-sized value. Additional platform-specific methods are added to perform a shift by a constant value. This can be reused to improve the generated code for other shifts. R=titzer@chromium.org Bug: v8:8130, v8:6600 Change-Id: Ifa688a3ed0e2809190571f24bdf47a7f53880b3d Reviewed-on: https://chromium-review.googlesource.com/1203950 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#55609}
-
- 10 Aug, 2018 1 commit
-
-
Clemens Hammacher authored
Most platforms do not need these methods. Thus, make them private to the mips headers. R=titzer@chromium.org Bug: v8:6600 Change-Id: I3fb1a2a3fd9a53dfc55b45763c150911db43b537 Reviewed-on: https://chromium-review.googlesource.com/1169203Reviewed-by:
Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#55032}
-
- 27 Jul, 2018 1 commit
-
-
Ben L. Titzer authored
Add codegen support for up to 4GiB memories in Liftoff code. This CL also adds three new mjsunit tests that stress large WASM memories (1, 2, and 4 GiB) and checks that accesses near these boundaries properly generate traps. Note there is still some trickiness around the setting of: 1.) the flag --wasm-max-mem-pages 2.) wasm-limits.h kSpecMaxWasmMemoryPages = 65536 3.) wasm-limits.h kV8MaxWasmMemoryPages = 32767 In particular, the allocation of memories is still limited to 3.) and the runtime flag can only lower this limit. The above means that the tests for 2GiB and 4GiB memories will silently OOM by design until 3.) is changed (though they currently pass with manual testing). I argue it is better to include these tests up front, since they will immediately trigger if their memory allocation succeeds. Therefore the plan is to lift the restriction on 3.) after removing all other other internal V8 limitations including array buffers and views. R=clemensh@chromium.org CC=mstarzinger@chromium.org BUG=v8:7881 Change-Id: I3205ac2daf5c9a84364c670a2c3ef2258e5649f6 Reviewed-on: https://chromium-review.googlesource.com/1151309 Commit-Queue: Ben Titzer <titzer@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#54754}
-
- 06 Jul, 2018 1 commit
-
-
Sigurd Schneider authored
This CL surfaces AssemblerOptions to CodeAssembler::GenerateCode and to pipeline methods. To allow forward declaring AssemblerOptions, AssemblerBase::Options was moved out of the AssemblerBase class. Bug: v8:6666 Change-Id: If9fc50d3d4767bb5dd39a0c3b6e094021f4cae2b Reviewed-on: https://chromium-review.googlesource.com/1127039 Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#54286}
-
- 02 Jul, 2018 1 commit
-
-
Clemens Hammacher authored
On Windows (32-bit), we need to emit explicit stack limit checks for stack frames bigger than one page (4kB). This CL implements this by emitting corresponding code at the end of Liftoff functions if needed. R=mstarzinger@chromium.org Bug: v8:7908, v8:6600 Change-Id: Iacb3e7afdd433a4e68620d9230bd0ba473611da8 Reviewed-on: https://chromium-review.googlesource.com/1120175 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#54141}
-
- 28 Jun, 2018 1 commit
-
-
Michael Starzinger authored
This loads the stack limit address from the instance object instead of embedding it into the instruction stream. It is another piece towards making the generated code independent of the Isolate. R=clemensh@chromium.org BUG=v8:7424 Change-Id: I9381956adf2d7c42f6626708229cfdd5c4ca114f Reviewed-on: https://chromium-review.googlesource.com/1117189 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#54076}
-
- 21 Jun, 2018 1 commit
-
-
Ben L. Titzer authored
This completes the transition to Assembler::Options, which reduces the assemblers's dependency on isolates, and there is now only one way to create an Assembler, which is to use the options. Note that some operations on assemblers still need an isolate, such as GetCode(), and in these cases, the isolate is an additional argument to the method. R=jgruber@chromium.org CC=mstarzinger@chromium.org Change-Id: I413209d816c63a7c3640f1c226764693dcad1e7f Reviewed-on: https://chromium-review.googlesource.com/1106169 Commit-Queue: Ben Titzer <titzer@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#53925}
-
- 11 Jun, 2018 1 commit
-
-
Michael Starzinger authored
This switches Liftoff code to use WebAssembly runtime stubs instead of builtin calls for handling traps, similar to what we use in TurboFan generated code as well. R=clemensh@chromium.org BUG=v8:7424 Change-Id: If2554067b3e294220306c67861bb1fb14db7b492 Reviewed-on: https://chromium-review.googlesource.com/1087275 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#53644}
-
- 07 Jun, 2018 1 commit
-
-
Michael Starzinger authored
This makes all runtime calls compiled by Liftoff load the respective CEntry builtin from the instance object instead of embedding it into the instruction stream. Another step towards making the code independent of the originating Isolate. As a drive-by this also changes one implicit runtime call in the stack check in the TurboFan backend in a similar fashion. R=clemensh@chromium.org BUG=v8:7424 Change-Id: Ifab5995aa95250d6fae60ef5debb98aee2b6fc0c Reviewed-on: https://chromium-review.googlesource.com/1089067 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#53578}
-
- 05 Jun, 2018 1 commit
-
-
Igor Sheludko authored
This CL introduces a new gn argument: v8_enable_pointer_compression which is false by default. All the changes done in this CL are made under this flag. Upper half-word of a Smi word must be properly sign-extended according to the sign of the lower-half containing the actual Smi value. Bug: v8:7703 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I2b52ab49cd18c7c613130705de445fef44c30ac5 Reviewed-on: https://chromium-review.googlesource.com/1061175Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#53519}
-
- 18 May, 2018 1 commit
-
-
Vincent Belliard authored
For AArch64, clean correctly the pools when the compilation is aborted Bug: v8:6600 Change-Id: I4bacdbeae49290ece0ce1bf47319bf7076fec37c Reviewed-on: https://chromium-review.googlesource.com/1066151 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#53263}
-
- 14 May, 2018 1 commit
-
-
Predrag Rudic authored
Change-Id: I1815de5bc5fc955014cba8099e8c704a23a2e9be Reviewed-on: https://chromium-review.googlesource.com/1044187Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#53148}
-