- 14 Nov, 2019 1 commit
-
-
Clemens Backes authored
In Liftoff, we have a good estimate about how big the generated code might get. Also, we often compile hundreds of functions which each hold an assembler buffer alive until we finally add that code to the wasm module. In order to reduce memory consumption in Liftoff, this CL reduces {AssemblerBase::kMinimalBufferSize} from 4096 to 128, and adds {AssemblerBase::kDefaultBufferSize} to be used instead. R=jkummerow@chromium.org Change-Id: I7029bf501244770f4824a86b233d7f99c4b7910b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1914559Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#64958}
-
- 13 Sep, 2019 1 commit
-
-
Clemens Hammacher authored
After https://crrev.com/c/1800575 and https://crrev.com/c/1803343, which tried to fix this on occuring compile errors, this CL systematically adds the <memory> include to each header that uses {std::unique_ptr}. R=sigurds@chromium.org TBR=mlippautz@chromium.org,alph@chromium.org,rmcilroy@chromium.org,verwaest@chromium.org Bug: v8:9396 Change-Id: If7f9c3140842f9543135dddd7344c0f357999da0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1803349Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#63767}
-
- 10 Sep, 2019 1 commit
-
-
Clemens Hammacher authored
Since we switched to C++14 now, we can use {std::make_unique} instead of our own {base::make_unique} from {template-utils.h}. R=mstarzinger@chromium.org, yangguo@chromium.org Bug: v8:9687 No-Try: true Change-Id: I660eb30038bbb079cee93c7861cd87ccd134f01b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1789300 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#63642}
-
- 21 May, 2019 1 commit
-
-
Yang Guo authored
Bug: v8:9247 TBR=bmeurer@chromium.org,neis@chromium.org NOPRESUBMIT=true Change-Id: Ia1e49d1aac09c4ff9e05d58fab9d08dd71198878 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1621931Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#61682}
-
- 07 Feb, 2019 1 commit
-
-
Sigurd Schneider authored
Drive-by: Refactor FlushInstructionCache to its own header. This removes dependencies of objects.cc and code.cc Bug: v8:8562 Change-Id: If23f3b9d4f2068e08c61c0f4b070ecfe1b9a6cc0 Reviewed-on: https://chromium-review.googlesource.com/c/1456081Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#59435}
-
- 30 Jan, 2019 1 commit
-
-
Jakob Gruber authored
Bug: v8:8758 Change-Id: Ifd0c66f27ab5fb33032b243d3a33c0b797b9af17 Reviewed-on: https://chromium-review.googlesource.com/c/1442644 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#59205}
-
- 17 Jan, 2019 1 commit
-
-
Clemens Hammacher authored
Refactor the AllocateAssemblerBuffer helper for the new Assembler API. This is the only non-mechanical part, all other callsites that create Assembler instances can be trivially changed to the new API. This will be done in a separate CL. R=mstarzinger@chromium.org Bug: v8:8689, v8:8562 Change-Id: I6c150748eeea778d9b70f41fd66fbb1221035a1b Reviewed-on: https://chromium-review.googlesource.com/c/1415490 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#58881}
-
- 29 Nov, 2018 1 commit
-
-
Andreas Haas authored
The problem were missing V8_EXPORT_PRIVATE and V8_EXPORT. The unittests test if the trap handler only handles those traps it is supposed to handle: * Only handle traps when the thread-in-wasm flag is set. * Only handle traps of the right type, i.e. memory access violations. * Only handle traps at recorded instructions. The tests also test the consistency of the thread-in-wasm flag. I made one change in the trap handler where that consistency could be violated. All tests are executed with the default trap handler provided by V8, and with the trap handler callback installed in a test signal/exception handler. Patchset 1 is the original CL. R=mstarzinger@chromium.org Change-Id: I172d94f24cdba4c3a1f7f344825b059dbb59da79 Reviewed-on: https://chromium-review.googlesource.com/c/1351024Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#57947}
-
- 27 Nov, 2018 3 commits
-
-
Michael Starzinger authored
This unifies the order of i-cache flushing and permission changing throughout V8. According to cctest/test-icache flushing after the permission change is not robust on some ARM32 and ARM64 devices. There have been observed failures of {TestFlushICacheOfExecutable} on some devices. So far there haven't been any observed failures of the corresponding {TestFlushICacheOfWritable} test. Also the order of flushing before the permission change is the natural order in which the GC currently performs operations. Until we see concrete data substantiating the opposite, the following is the supported and intended order throughout V8: exec -> perm(RW) -> patch -> flush -> perm(RX) -> exec This CL tries to establish said order throughout the codebase. R=ulan@chromium.org TEST=cctest/test-icache BUG=v8:8507,chromium:845877 Change-Id: Ic945082e643aa2d142d222a7913a99816aff4644 Reviewed-on: https://chromium-review.googlesource.com/c/1351025Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#57869}
-
Clemens Hammacher authored
This reverts commit 4644b32e. Reason for revert: Link errors on win64: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Win64%20-%20debug/25950 Original change's description: > [wasm] Add more unit tests for trap handler > > The unittests test if the trap handler only handles those traps it > is supposed to handle: > * Only handle traps when the thread-in-wasm flag is set. > * Only handle traps of the right type, i.e. memory access violations. > * Only handle traps at recorded instructions. > > The tests also test the consistency of the thread-in-wasm flag. I made > one change in the trap handler where that consistency could be > violated. > > All tests are executed with the default trap handler provided by V8, > and with the trap handler callback installed in a test signal/exception > handler. > > Change-Id: I03904bb6effd2e8694d3f4d1fbf62bc38002646e > Reviewed-on: https://chromium-review.googlesource.com/c/1340246 > Commit-Queue: Andreas Haas <ahaas@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Cr-Commit-Position: refs/heads/master@{#57858} TBR=mstarzinger@chromium.org,ahaas@chromium.org,mark@chromium.org Change-Id: Iac2f20c73744226885ea1810813863a21c5faf8c No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/1351021Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#57861}
-
Andreas Haas authored
The unittests test if the trap handler only handles those traps it is supposed to handle: * Only handle traps when the thread-in-wasm flag is set. * Only handle traps of the right type, i.e. memory access violations. * Only handle traps at recorded instructions. The tests also test the consistency of the thread-in-wasm flag. I made one change in the trap handler where that consistency could be violated. All tests are executed with the default trap handler provided by V8, and with the trap handler callback installed in a test signal/exception handler. Change-Id: I03904bb6effd2e8694d3f4d1fbf62bc38002646e Reviewed-on: https://chromium-review.googlesource.com/c/1340246 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#57858}
-
- 20 Nov, 2018 1 commit
-
-
Michael Starzinger authored
R=ulan@chromium.org Change-Id: Ib2eb33688517324884c4172560387242c71094fb Reviewed-on: https://chromium-review.googlesource.com/c/1342518Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#57627}
-
- 18 Sep, 2018 1 commit
-
-
Ross McIlroy authored
BUG=v8:8157 Change-Id: I66bac3897eaad640b5723cdd0ec900e40cce1214 Reviewed-on: https://chromium-review.googlesource.com/1226917 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Rodolph Perfetta <rodolph.perfetta@arm.com> Cr-Commit-Position: refs/heads/master@{#55988}
-
- 06 Sep, 2018 1 commit
-
-
Igor Sheludko authored
... like AllocatePage[s](), FreePages() and SetPermissions(). This CL also changes base::PageAllocator to cache AllocatePageSize and CommitPageSize values returned by the OS. This is a necessary cleanup before introducing BoundedPageAllocator. Bug: v8:8096 Change-Id: Ifb7cdd2caa6a1b029ce0fca6545c61df9d281be2 Reviewed-on: https://chromium-review.googlesource.com/1209343Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#55690}
-
- 07 Aug, 2018 1 commit
-
-
Michael Starzinger authored
This adds initial support for concurrently patching jump table slots. It is needed once different Isolates share code (for the --wasm-shared-code feature). We need to ensure that instructions holding the target address within a jump table slot do not cross cache-line boundaries. To do this, the jump table has been split into consecutive pages. Note that this also adds a stress test for multiple threads hammering at a single slot concurrently. The test is currently limited to the ia32 and the x64 architecture, but will be extended to cover others. The test reliably triggers tearing of the target address on almost every run of the test and hence serves to prevent regressions. R=clemensh@chromium.org TEST=cctest/test-jump-table-assembler BUG=v8:8018 Change-Id: Ife56bbb61ffcae5d8906ca7b8c604b195603707c Reviewed-on: https://chromium-review.googlesource.com/1163664 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#54942}
-
- 26 Jul, 2018 1 commit
-
-
Georgia Kouveli authored
The tests were not flushing the i-cache before calling the generated code. Use Factory::NewCode to make sure that the i-cache is flushed instead. Bug: v8:7977 Change-Id: I9c7c6f0d0e31700634e50279e75858a5d74603d8 Reviewed-on: https://chromium-review.googlesource.com/1150165Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> Cr-Commit-Position: refs/heads/master@{#54711}
-
- 24 Jul, 2018 1 commit
-
-
Clemens Hammacher authored
This is a reland of a462a785 Original change's description: > [turboassembler] Introduce hard-abort mode > > For checks and assertions (mostly for debug code, like stack alignment > or zero extension), we had two modes: Emit a call to the {Abort} > runtime function (the default), and emit a debug break (used for > testing, enabled via --trap-on-abort). > In wasm, where we cannot just call a runtime function because code must > be isolate independent, we always used the trap-on-abort behaviour. > This causes problems for our fuzzers, which do not catch SIGTRAP, and > hence do not detect debug code failures. > > This CL introduces a third mode ("hard abort"), which calls a C > function via {ExternalReference}. The C function still outputs the > abort reason, but does not print the stack trace. It then aborts via > "OS::Abort", just like the runtime function. > This will allow fuzzers to detect the crash and even find a nice error > message. > > Even though this looks like a lot of code churn, it is actually not. > Most added lines are new tests, and other changes are minimal. > > R=mstarzinger@chromium.org > > Bug: chromium:863799 > Change-Id: I77c58ff72db552d49014614436259ccfb49ba87b > Reviewed-on: https://chromium-review.googlesource.com/1142163 > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Cr-Commit-Position: refs/heads/master@{#54592} Bug: chromium:863799 Change-Id: I7729a47b4823a982a8e201df36520aa2b6ef5326 Reviewed-on: https://chromium-review.googlesource.com/1146100Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#54656}
-
- 20 Jul, 2018 2 commits
-
-
Sigurd Schneider authored
This reverts commit a462a785. Reason for revert: Breaks a TurboAssembler test: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Arm/7726 Original change's description: > [turboassembler] Introduce hard-abort mode > > For checks and assertions (mostly for debug code, like stack alignment > or zero extension), we had two modes: Emit a call to the {Abort} > runtime function (the default), and emit a debug break (used for > testing, enabled via --trap-on-abort). > In wasm, where we cannot just call a runtime function because code must > be isolate independent, we always used the trap-on-abort behaviour. > This causes problems for our fuzzers, which do not catch SIGTRAP, and > hence do not detect debug code failures. > > This CL introduces a third mode ("hard abort"), which calls a C > function via {ExternalReference}. The C function still outputs the > abort reason, but does not print the stack trace. It then aborts via > "OS::Abort", just like the runtime function. > This will allow fuzzers to detect the crash and even find a nice error > message. > > Even though this looks like a lot of code churn, it is actually not. > Most added lines are new tests, and other changes are minimal. > > R=mstarzinger@chromium.org > > Bug: chromium:863799 > Change-Id: I77c58ff72db552d49014614436259ccfb49ba87b > Reviewed-on: https://chromium-review.googlesource.com/1142163 > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Cr-Commit-Position: refs/heads/master@{#54592} TBR=mstarzinger@chromium.org,clemensh@chromium.org Change-Id: I60c011cfe262ccebbb9abf32699a9fe17e72a3c8 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:863799 Reviewed-on: https://chromium-review.googlesource.com/1145431 Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#54597}
-
Clemens Hammacher authored
For checks and assertions (mostly for debug code, like stack alignment or zero extension), we had two modes: Emit a call to the {Abort} runtime function (the default), and emit a debug break (used for testing, enabled via --trap-on-abort). In wasm, where we cannot just call a runtime function because code must be isolate independent, we always used the trap-on-abort behaviour. This causes problems for our fuzzers, which do not catch SIGTRAP, and hence do not detect debug code failures. This CL introduces a third mode ("hard abort"), which calls a C function via {ExternalReference}. The C function still outputs the abort reason, but does not print the stack trace. It then aborts via "OS::Abort", just like the runtime function. This will allow fuzzers to detect the crash and even find a nice error message. Even though this looks like a lot of code churn, it is actually not. Most added lines are new tests, and other changes are minimal. R=mstarzinger@chromium.org Bug: chromium:863799 Change-Id: I77c58ff72db552d49014614436259ccfb49ba87b Reviewed-on: https://chromium-review.googlesource.com/1142163 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#54592}
-