- 31 Jul, 2018 1 commit
-
-
Georgia Kouveli authored
MakeAssemblerBufferExecutable now flushes the i-cache, so we do not need to do that again. Change-Id: I46f5619167114cdb84064ef363106bee64282d1f Reviewed-on: https://chromium-review.googlesource.com/1152813Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> Cr-Commit-Position: refs/heads/master@{#54822}
-
- 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}
-
- 30 Apr, 2018 1 commit
-
-
Georgia Kouveli authored
This includes the following changes: - Limit code space to 128 MB. - Use direct branches wherever possible. - Where not possible, continue using load literal followed by an indirect branch. - Sort RelocInfo by target_address_address for the serializer, since mixing load literal instructions and branch instructions messes up that order. - Ensure we always wipe out targets in the serializer (not just for the snapshot) in order to be able to distinguish between constant pool entries and branch instructions. Change-Id: I1a1029ce2a5f72a3a94802daf267d14a42c7c790 Reviewed-on: https://chromium-review.googlesource.com/939175Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> Cr-Commit-Position: refs/heads/master@{#52885}
-
- 14 Apr, 2018 1 commit
-
-
Jakob Kummerow authored
The "Address" type is V8's general-purpose type for manipulating memory addresses. Per the C++ spec, pointer arithmetic and pointer comparisons are undefined behavior except within the same array; since we generally don't operate within a C++ array, our general-purpose type shouldn't be a pointer type. Bug: v8:3770 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;master.tryserver.blink:linux_trusty_blink_rel Change-Id: Ib96016c24a0f18bcdba916dabd83e3f24a1b5779 Reviewed-on: https://chromium-review.googlesource.com/988657 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#52601}
-
- 13 Apr, 2018 2 commits
-
-
jgruber authored
This is mostly a simple copy & paste of the stub implementation from code-stubs-arch.cc to builtins-arch.cc. The conversion allows removal of a special case for the DoubleToIStub within the compiler & wasm pipelines, and also makes the following builtins isolate-independent (in conjunction with https://crrev.com/c/1006581): TFC BitwiseAnd TFC BitwiseOr TFC BitwiseXor TFC Exponentiate TFC ShiftLeft TFC ShiftRight TFC ShiftRightLogical TFJ AtomicsAdd TFJ AtomicsAnd TFJ AtomicsCompareExchange TFJ AtomicsExchange TFJ AtomicsLoad TFJ AtomicsOr TFJ AtomicsStore TFJ AtomicsSub TFJ AtomicsXor TFJ MathClz32 TFJ MathImul TFJ MathPow TFJ NumberParseInt TFJ StringFromCharCode TFJ TypedArrayFrom TFJ TypedArrayOf TFJ TypedArrayPrototypeMap Drive-by: dead code removal & TODOs in code-stubs.h. Bug: v8:6666 Change-Id: I763cba2242bcadc2d130b0aaa16a9787212b466a Reviewed-on: https://chromium-review.googlesource.com/1012024 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#52591}
-
jgruber authored
This changes DoubleToIStub to return its result on the stack instead of a specific return register. In a follow-up, the DoubleToIStub could be converted into a builtin. Bug: v8:6666 Change-Id: I7852e1586c8f7b56bc5d2545a7bf6238dd2ad650 Reviewed-on: https://chromium-review.googlesource.com/1009702 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#52587}
-
- 09 Apr, 2018 1 commit
-
-
Jakob Kummerow authored
There is no good reason to have the meat of most objects' initialization logic in heap.cc, all wrapped by the CALL_HEAP_FUNCTION macro. Instead, this CL changes the protocol between Heap and Factory to be AllocateRaw, and all object initialization work after (possibly retried) successful raw allocation happens in the Factory. This saves about 20KB of binary size on x64. Original review: https://chromium-review.googlesource.com/c/v8/v8/+/959533 Originally landed as r52416 / f9a2e24b Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng Change-Id: Id072cbe6b3ed30afd339c7e502844b99ca12a647 Reviewed-on: https://chromium-review.googlesource.com/1000540 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#52492}
-
- 06 Apr, 2018 2 commits
-
-
Michael Achenbach authored
This reverts commit f9a2e24b. Reason for revert: gc stress failures not all fixed by follow up. Original change's description: > [cleanup] Refactor the Factory > > There is no good reason to have the meat of most objects' initialization > logic in heap.cc, all wrapped by the CALL_HEAP_FUNCTION macro. Instead, > this CL changes the protocol between Heap and Factory to be AllocateRaw, > and all object initialization work after (possibly retried) successful > raw allocation happens in the Factory. > > This saves about 20KB of binary size on x64. > > Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng > Change-Id: Icbfdc4266d7be8b48d2fe085f03411743dc6a0ca > Reviewed-on: https://chromium-review.googlesource.com/959533 > Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> > Reviewed-by: Hannes Payer <hpayer@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Cr-Commit-Position: refs/heads/master@{#52416} TBR=jkummerow@chromium.org,yangguo@chromium.org,mstarzinger@chromium.org,hpayer@chromium.org Change-Id: Idbbc53478742f3e9525eee83342afc6aedae122f No-Presubmit: true No-Tree-Checks: true No-Try: true Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng Reviewed-on: https://chromium-review.googlesource.com/999414Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#52420}
-
Jakob Kummerow authored
There is no good reason to have the meat of most objects' initialization logic in heap.cc, all wrapped by the CALL_HEAP_FUNCTION macro. Instead, this CL changes the protocol between Heap and Factory to be AllocateRaw, and all object initialization work after (possibly retried) successful raw allocation happens in the Factory. This saves about 20KB of binary size on x64. Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng Change-Id: Icbfdc4266d7be8b48d2fe085f03411743dc6a0ca Reviewed-on: https://chromium-review.googlesource.com/959533 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#52416}
-
- 05 Apr, 2018 1 commit
-
-
jgruber authored
In order to clarify the difference between, e.g., InstructionStart and instruction_start, rename as follows: Code::instruction_start -> raw_instruction_start Code::instruction_end -> raw_instruction_end Code::instruction_size -> raw_instruction_size The difference between the camel-case and raw_* function families is in how they handle off-heap-trampoline Code objects. For example, when called on an off-heap-trampoline: raw_instruction_start returns the trampoline's entry point, while InstructionStart returns the off-heap code's entry point (located in the .text section of the binary). Some callsites were updated to call the camel-case function family as appropriate. Bug: v8:6666 Change-Id: I4a572f47c2d161a853599d7c17879e263b0d1a87 Reviewed-on: https://chromium-review.googlesource.com/997532 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#52387}
-
- 29 Mar, 2018 1 commit
-
-
Martyn Capewell authored
Register x25 is not reserved for anything else, so return it to the Turbofan register allocator. Change-Id: Ic905831683a825a1e1dd682552fd459dfc2323fe Reviewed-on: https://chromium-review.googlesource.com/980976Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Martyn Capewell <martyn.capewell@arm.com> Cr-Commit-Position: refs/heads/master@{#52301}
-
- 09 Feb, 2018 1 commit
-
-
Michael Starzinger authored
This refactors the instruction cache simulation to now be maintained process-wide (as opposed to be per Isolate). It prepares for allowing to share code between Isolates (e.g. WebAssembly or shared builtins) while still allowing to simulate execution of such shared code. R=clemensh@chromium.org Change-Id: I5a6f083f4e32597565dc646f13b4445014c0daaa Reviewed-on: https://chromium-review.googlesource.com/909130Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#51219}
-
- 16 Jan, 2018 1 commit
-
-
Martyn Capewell authored
Remove remaining references to jssp, and return register to the allocator. Bug: v8:6644 Change-Id: Ia6938e6c9548cd45d8c9c12032920b32d3da3c4c Reviewed-on: https://chromium-review.googlesource.com/866747Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Martyn Capewell <martyn.capewell@arm.com> Cr-Commit-Position: refs/heads/master@{#50613}
-
- 15 Jan, 2018 1 commit
-
-
Martyn Capewell authored
Remove SetStackPointer function and update assembler tests. Bug: v8:6644 Change-Id: I5ea26e57b848d56433c84d8eea22d7e9b761e6bb Reviewed-on: https://chromium-review.googlesource.com/864147Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Martyn Capewell <martyn.capewell@arm.com> Cr-Commit-Position: refs/heads/master@{#50571}
-
- 08 Jan, 2018 1 commit
-
-
Clemens Hammacher authored
In order to remove the CALL_GENERATED_CODE macro, it helps a lot to unify the interfaces of the simulators and make the Call method variadic in the number of arguments. This CL does that for each simulator. A follow-up CL will then completely remove the CALL_GENERATED_CODE macro and replace uses with the (new) GeneratedCode wrapper. R=mstarzinger@chromium.org Bug: v8:7182 Change-Id: I1f81445ec2faba30f0bd233b022ae1f0fae4e96f Reviewed-on: https://chromium-review.googlesource.com/850873 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#50413}
-
- 04 Jan, 2018 1 commit
-
-
Sathya Gunasekaran authored
This patch breaks out bailout reasons into two enum classes. This helps save 3 bits on the SharedFunctionInfo as we don't have to track the abort reasons. Change-Id: Ic2e7e7e32b0fa31491f1c6f0003a61390d68fd97 Reviewed-on: https://chromium-review.googlesource.com/848244Reviewed-by:
Ben Titzer <titzer@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#50364}
-
- 07 Dec, 2017 1 commit
-
-
Michael Starzinger authored
R=clemensh@chromium.org BUG=v8:6792 Change-Id: Ia2567112ab86f42729337e539f9aaa1719d9a39f Reviewed-on: https://chromium-review.googlesource.com/811305Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#49929}
-
- 05 Dec, 2017 1 commit
-
-
Martyn Capewell authored
Fix cctests to maintain an aligned stack pointer, and delete a couple that don't make sense if only an aligned stack pointer is allowed. Bug: v8:6644 Change-Id: Ib825df0f93515ec408169018eb97ab587f1f14b6 Reviewed-on: https://chromium-review.googlesource.com/808386Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Martyn Capewell <martyn.capewell@arm.com> Cr-Commit-Position: refs/heads/master@{#49866}
-
- 14 Nov, 2017 1 commit
-
-
Bill Budge authored
This is a reland of 4899bcb6 This is a reland of b73ee334 Original change's description: > [Memory] Use OS::Allocate for all OS memory allocations. > > - Eliminates OS::ReserveRegion and OS::ReserveAlignedRegion. > - Changes OS::Allocate to take alignment parameter, reorders parameters > to match page_allocator. > - Since the size of memory allocation can be deduced, don't return the > amount of memory allocated. > - Changes reservation of aligned address space. Before we would reserve > (size + alignment) rounded up to page size. This is too much, because > maximum misalignment is (alignment - page_size). > - On Windows and Cygwin, we release an oversize allocation and > immediately retry at the aligned address in the allocation. If we > lose the address due to a race, we just retry. > - Clean up all the calls to OS::Allocate in codegen and tests by adding > helper AllocateSystemPage function (allocation.h) and > AllocateAssemblerBuffer (cctest.h). > - Changes 'assm' to 'masm' in some targets for consistency when using > a macro-assembler. > > - Eliminates OS::ReleaseRegion, replacing with calls to OS::Free. > - Adds bool return value to OS::Free. > - Cleans up types of flags, protection on Windows and Cygwin. > Bug: chromium:756050 > Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng > Change-Id: I306dbe042cc867670fdc935abca29db074b0da71 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: Iad3c025334e8f8d7d647be99a36a11ee449c9087 Reviewed-on: https://chromium-review.googlesource.com/767014 Commit-Queue: Bill Budge <bbudge@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#49363}
-
- 11 Nov, 2017 1 commit
-
-
Jakob Gruber authored
Revert this and its follow-up as suspect for current canary OOM crasher. This reverts commit 4899bcb6. This reverts commit b73ee334. TBR=adamk@chromium.org,hpayer@chromium.org Bug: chromium:783708 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: I4c00582e7ab2df22216ad6732e2843e9958db0c0 Reviewed-on: https://chromium-review.googlesource.com/765447Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#49315}
-
- 09 Nov, 2017 1 commit
-
-
Bill Budge authored
This is a reland of 7e78506f Original change's description: > [Memory] Use OS::Allocate for all OS memory allocations. > > - Eliminates OS::ReserveRegion and OS::ReserveAlignedRegion. > - Changes OS::Allocate to take alignment parameter, reorders parameters > to match page_allocator. > - Since the size of memory allocation can be deduced, don't return the > amount of memory allocated. > - Changes reservation of aligned address space. Before we would reserve > (size + alignment) rounded up to page size. This is too much, because > maximum misalignment is (alignment - page_size). > - On Windows and Cygwin, we release an oversize allocation and > immediately retry at the aligned address in the allocation. If we > lose the address due to a race, we just retry. > - Clean up all the calls to OS::Allocate in codegen and tests by adding > helper AllocateSystemPage function (allocation.h) and > AllocateAssemblerBuffer (cctest.h). > - Changes 'assm' to 'masm' in some targets for consistency when using > a macro-assembler. > > Bug: chromium:756050 > Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng > Change-Id: I306dbe042cc867670fdc935abca29db074b0da71 > Reviewed-on: https://chromium-review.googlesource.com/749848 > Commit-Queue: Bill Budge <bbudge@chromium.org> > Reviewed-by: Michael Lippautz <mlippautz@chromium.org> > Reviewed-by: Hannes Payer <hpayer@chromium.org> > Cr-Commit-Position: refs/heads/master@{#49235} Bug: chromium:756050 Change-Id: I333f7a6aea0bcb608d01cafb43e94893a4625b15 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Reviewed-on: https://chromium-review.googlesource.com/758509Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#49273}
-
- 08 Nov, 2017 2 commits
-
-
Bill Budge authored
This reverts commit 7e78506f. Reason for revert: Broke Android build on Arm64. Original change's description: > [Memory] Use OS::Allocate for all OS memory allocations. > > - Eliminates OS::ReserveRegion and OS::ReserveAlignedRegion. > - Changes OS::Allocate to take alignment parameter, reorders parameters > to match page_allocator. > - Since the size of memory allocation can be deduced, don't return the > amount of memory allocated. > - Changes reservation of aligned address space. Before we would reserve > (size + alignment) rounded up to page size. This is too much, because > maximum misalignment is (alignment - page_size). > - On Windows and Cygwin, we release an oversize allocation and > immediately retry at the aligned address in the allocation. If we > lose the address due to a race, we just retry. > - Clean up all the calls to OS::Allocate in codegen and tests by adding > helper AllocateSystemPage function (allocation.h) and > AllocateAssemblerBuffer (cctest.h). > - Changes 'assm' to 'masm' in some targets for consistency when using > a macro-assembler. > > Bug: chromium:756050 > Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng > Change-Id: I306dbe042cc867670fdc935abca29db074b0da71 > Reviewed-on: https://chromium-review.googlesource.com/749848 > Commit-Queue: Bill Budge <bbudge@chromium.org> > Reviewed-by: Michael Lippautz <mlippautz@chromium.org> > Reviewed-by: Hannes Payer <hpayer@chromium.org> > Cr-Commit-Position: refs/heads/master@{#49235} TBR=bbudge@chromium.org,hpayer@chromium.org,mlippautz@chromium.org Change-Id: Ic09de4d63c19746a62e804b1f889817ffaebc330 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:756050 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Reviewed-on: https://chromium-review.googlesource.com/758625Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#49242}
-
Bill Budge authored
- Eliminates OS::ReserveRegion and OS::ReserveAlignedRegion. - Changes OS::Allocate to take alignment parameter, reorders parameters to match page_allocator. - Since the size of memory allocation can be deduced, don't return the amount of memory allocated. - Changes reservation of aligned address space. Before we would reserve (size + alignment) rounded up to page size. This is too much, because maximum misalignment is (alignment - page_size). - On Windows and Cygwin, we release an oversize allocation and immediately retry at the aligned address in the allocation. If we lose the address due to a race, we just retry. - Clean up all the calls to OS::Allocate in codegen and tests by adding helper AllocateSystemPage function (allocation.h) and AllocateAssemblerBuffer (cctest.h). - Changes 'assm' to 'masm' in some targets for consistency when using a macro-assembler. Bug: chromium:756050 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: I306dbe042cc867670fdc935abca29db074b0da71 Reviewed-on: https://chromium-review.googlesource.com/749848 Commit-Queue: Bill Budge <bbudge@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Cr-Commit-Position: refs/heads/master@{#49235}
-
- 03 Nov, 2017 1 commit
-
-
Bill Budge authored
- Sanitize Windows page size / alignment code. - Reorder some methods to match header file. - Rename AllocateAlignment to AllocatePageSize to be consistent with CommitPageSize. - Eliminate OS::Allocate overload with is_executable argument. - Eliminate base::OS::AllocateGuarded - it's not implemented. Bug: chromium:756050 Change-Id: I046bb019cddde0c0063d617adc2c94a23989d9d1 Reviewed-on: https://chromium-review.googlesource.com/742684 Commit-Queue: Bill Budge <bbudge@chromium.org> Reviewed-by:
Bill Budge <bbudge@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#49114}
-
- 18 Oct, 2017 1 commit
-
-
Pierre Langlois authored
The DoubleToI stub is no longer called outside of TurboFan, and always in the same way: - The parameter is on top of the stack. - The stub is always called in a slow path. - It truncates. Therefore, we can simplify it to only support this case and remove dead code. On top of this, since the stub is always considered to be on a slow path for all backends, this patch takes the opportunity to remove the `skip_fastpath` optimisation. This would generate a stub which does not handle all inputs, assuming that the backend already handled some of the inputs in a fast path. Removing this allows the stub to have the same behaviour on all targets. On Arm, this patch reworks the stub a little. We could use ip instead of saving and restoring a register on the stack. Also, comments would mention that we assume the exponent to be greater than 31 when the it can be 30 or higher. As done for Arm64, let's check this at runtime in debug mode. On Arm64, we can also implement the stub without pushing and poping off the stack. It needs 2 general purpose and a double scratch registers which we have reserved already (ip0, ip1 and d30). This removes the need to check that the stack pointer is always 16-bytes aligned. Finally, this also fixes a potential bug on Arm64, in the `GetAllocatableRegisterThatIsNotOneOf` method which is now removed. We were picking an allocatable double register when we meant to pick a general one. Bug: v8:6644 Change-Id: I88d4597f377c9fc05432d5922a0d7129b6d19b47 Reviewed-on: https://chromium-review.googlesource.com/720963Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Pierre Langlois <pierre.langlois@arm.com> Cr-Commit-Position: refs/heads/master@{#48671}
-
- 01 Sep, 2017 1 commit
-
-
Michael Starzinger authored
R=jkummerow@chromium.org Change-Id: I8937933e9ec5b4bd150f5a044700716db458f365 Reviewed-on: https://chromium-review.googlesource.com/645691Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#47758}
-
- 03 Aug, 2017 1 commit
-
-
Michael Starzinger authored
This removes the obsolete {Crankshaft} factory method as it returns the same configuration as the {Turbofan} factory by now. We now consistently use {RegisterConfiguration::Default} everywhere. R=jkummerow@chromium.org BUG=v8:6408 Change-Id: I6be25774aa6714ef4dc1ef6856bb6dbc95593a29 Reviewed-on: https://chromium-review.googlesource.com/597858Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#47109}
-
- 31 May, 2017 1 commit
-
-
neis authored
Instead of allocating and embedding certain heap numbers into the code during code assembly, emit dummies but record the allocation requests. Later then, in Assembler::GetCode, allocate the heap numbers and patch the code by replacing the dummies with the actual objects. The RelocInfos for the embedded objects are already recorded correctly when emitting the dummies. R=jarin@chromium.org BUG=v8:6048 Review-Url: https://codereview.chromium.org/2900683002 Cr-Commit-Position: refs/heads/master@{#45635}
-
- 15 Mar, 2017 1 commit
-
-
Marja Hölttä authored
BUG=v8:5294 Change-Id: I6214c50c7d1344210a80763b066e5ec56df1265a Reviewed-on: https://chromium-review.googlesource.com/453460 Commit-Queue: Marja Hölttä <marja@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#43820}
-
- 27 Jun, 2016 1 commit
-
-
bbudge authored
Replaces ArchDefault method with Crankshaft and Turbofan getters. Eliminates IsAllocated method on Register, FloatRegister, DoubleRegister. Eliminates ToString method too. Changes call sites to access appropriate arch default RegisterConfiguration. LOG=N BUG= Review-Url: https://codereview.chromium.org/2092413002 Cr-Commit-Position: refs/heads/master@{#37297}
-
- 09 Dec, 2015 1 commit
-
-
jochen authored
Embedders still can use those APIs by default test-api.cc still has an exception to use the old APIs... BUG=v8:4143 R=vogelheim@chromium.org LOG=n Review URL: https://codereview.chromium.org/1505803004 Cr-Commit-Position: refs/heads/master@{#32701}
-
- 25 Nov, 2015 1 commit
-
-
jochen authored
We always want to have an Isolate, so just use an extra ctor arg BUG=2487 R=yangguo@chromium.org,mstarzinger@chromium.org LOG=n Review URL: https://codereview.chromium.org/1476763002 Cr-Commit-Position: refs/heads/master@{#32277}
-
- 23 Nov, 2015 1 commit
-
-
jochen authored
BUG=2487 R=yangguo@chromium.org LOG=n Review URL: https://codereview.chromium.org/1468943002 Cr-Commit-Position: refs/heads/master@{#32176}
-
- 16 Nov, 2015 1 commit
-
-
jochen authored
BUG=4134 R=epertoso@chromium.org LOG=n Review URL: https://codereview.chromium.org/1451733002 Cr-Commit-Position: refs/heads/master@{#32011}
-
- 02 Oct, 2015 3 commits
-
-
danno authored
Previous to this patch, both the lithium and TurboFan register allocators tracked allocated registers by "indices", rather than the register codes used elsewhere in the runtime. This patch ensures that codes are used everywhere, and in the process cleans up a bunch of redundant code and adds more structure to how the set of allocatable registers is defined. Some highlights of changes: * TurboFan's RegisterConfiguration class moved to V8's top level so that it can be shared with Crankshaft. * Various "ToAllocationIndex" and related methods removed. * Code that can be easily shared between Register classes on different platforms is now shared. * The list of allocatable registers on each platform is declared as a list rather than implicitly via the register index <-> code mapping. Committed: https://crrev.com/80bc6f6e11f79524e3f1ad05579583adfd5f18b2 Cr-Commit-Position: refs/heads/master@{#30913} Committed: https://crrev.com/7b7a8205d9a00c678fb7a6e032a55fecbc1509cf Cr-Commit-Position: refs/heads/master@{#31075} Review URL: https://codereview.chromium.org/1287383003 Cr-Commit-Position: refs/heads/master@{#31087}
-
danno authored
Revert of Reland: Remove register index/code indirection (patchset #20 id:380001 of https://codereview.chromium.org/1287383003/ ) Reason for revert: Failures on MIPS Original issue's description: > Remove register index/code indirection > > Previous to this patch, both the lithium and TurboFan register > allocators tracked allocated registers by "indices", rather than > the register codes used elsewhere in the runtime. This patch > ensures that codes are used everywhere, and in the process cleans > up a bunch of redundant code and adds more structure to how the > set of allocatable registers is defined. > > Some highlights of changes: > > * TurboFan's RegisterConfiguration class moved to V8's top level > so that it can be shared with Crankshaft. > * Various "ToAllocationIndex" and related methods removed. > * Code that can be easily shared between Register classes on > different platforms is now shared. > * The list of allocatable registers on each platform is declared > as a list rather than implicitly via the register index <-> > code mapping. > > Committed: https://crrev.com/80bc6f6e11f79524e3f1ad05579583adfd5f18b2 > Cr-Commit-Position: refs/heads/master@{#30913} > > Committed: https://crrev.com/7b7a8205d9a00c678fb7a6e032a55fecbc1509cf > Cr-Commit-Position: refs/heads/master@{#31075} TBR=akos.palfi@imgtec.com,bmeurer@chromium.org,jarin@chromium.org,paul.lind@imgtec.com,titzer@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1380863004 Cr-Commit-Position: refs/heads/master@{#31083}
-
danno authored
Previous to this patch, both the lithium and TurboFan register allocators tracked allocated registers by "indices", rather than the register codes used elsewhere in the runtime. This patch ensures that codes are used everywhere, and in the process cleans up a bunch of redundant code and adds more structure to how the set of allocatable registers is defined. Some highlights of changes: * TurboFan's RegisterConfiguration class moved to V8's top level so that it can be shared with Crankshaft. * Various "ToAllocationIndex" and related methods removed. * Code that can be easily shared between Register classes on different platforms is now shared. * The list of allocatable registers on each platform is declared as a list rather than implicitly via the register index <-> code mapping. Committed: https://crrev.com/80bc6f6e11f79524e3f1ad05579583adfd5f18b2 Cr-Commit-Position: refs/heads/master@{#30913} Review URL: https://codereview.chromium.org/1287383003 Cr-Commit-Position: refs/heads/master@{#31075}
-
- 28 Sep, 2015 1 commit
-
-
mstarzinger authored
R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1365803004 Cr-Commit-Position: refs/heads/master@{#30963}
-