- 24 Apr, 2018 1 commit
-
-
Clemens Hammacher authored
Passing a pointer of the needed type, and then reading using ReadUnalignedValue is pointless, since the compiler can assume alignment of the pointer value. This CL fixes the remaining external refs of wasm to take an Address to a single buffer. R=ahaas@chromium.org Bug: v8:7570, v8:3770 Change-Id: If8a7324a4703e1e900cb3c5644baef207e6a371d Reviewed-on: https://chromium-review.googlesource.com/1023406 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#52754}
-
- 20 Apr, 2018 1 commit
-
-
Clemens Hammacher authored
Instead of passing multiple pointers to input and output, or to two input values, just pass one pointer which holds all inputs and where the output is written. This also reduces the size of generated Turbofan graphs, since only one stack slot is needed and less arguments are passed to the call. It also fixes undefined behaviour, since we were passing a pointer e.g. as {uint64_t*}, but accessed it using {ReadUnalignedValue}. Now we pass an Address, which does not have any alignment constraints. R=ahaas@chromium.org Bug: v8:3770, v8:6600 Change-Id: I54ef80b7e27f77587a9062560c0b3e01d6593e6d Reviewed-on: https://chromium-review.googlesource.com/1019147 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#52702}
-
- 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}
-
- 12 Jan, 2018 1 commit
-
-
Clemens Hammacher authored
These opcodes will always call out to a C function for now. R=titzer@chromium.org Bug: v8:6600 Change-Id: I0ba8984d593c0203b46c2814dec4c091754df99a Reviewed-on: https://chromium-review.googlesource.com/860924 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#50551}
-
- 02 Dec, 2017 1 commit
-
-
Mathias Bynens authored
This patch normalizes the casing of hexadecimal digits in escape sequences of the form `\xNN` and integer literals of the form `0xNNNN`. Previously, the V8 code base used an inconsistent mixture of uppercase and lowercase. Google’s C++ style guide uses uppercase in its examples: https://google.github.io/styleguide/cppguide.html#Non-ASCII_Characters Moreover, uppercase letters more clearly stand out from the lowercase `x` (or `u`) characters at the start, as well as lowercase letters elsewhere in strings. BUG=v8:7109 TBR=marja@chromium.org,titzer@chromium.org,mtrofin@chromium.org,mstarzinger@chromium.org,rossberg@chromium.org,yangguo@chromium.org,mlippautz@chromium.org NOPRESUBMIT=true Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: I790e21c25d96ad5d95c8229724eb45d2aa9e22d6 Reviewed-on: https://chromium-review.googlesource.com/804294 Commit-Queue: Mathias Bynens <mathias@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#49810}
-
- 06 Nov, 2017 1 commit
-
-
Clemens Hammacher authored
This is a reland of 7d231e57, fixed to avoid instantiating CountLeadingZeros for bits==0. Original change's description: > [bits] Consolidate Count{Leading,Trailing}Zeros > > Instead of having one method for 32 bit integers and one for 64 bit, > plus a templatized version to choose from those two, just implement one > version which handles unsigned integers of any size. Also, make them > constexpr. > The Count{Leading,Trailing}Zeros{32,64} methods are kept for now in > order to keep the amount of code changes small. Also, sometimes it > improves readability by stating exactly the size of the argument, > especially for leading zeros (where zero-extending would add more > leading zeros). > > CountLeadingZeros now uses a binary search inspired implementation > as proposed in Hacker's Delight. It's more than 20% faster on x64 if > the builtins are disabled. > CountTrailingZeros falls back to CountPopulation instead of counting in > a naive loop. This is ~50% faster. > > R=mstarzinger@chromium.org > > Change-Id: I1d8bf1d7295b930724163248150444bd17fbb34e > Reviewed-on: https://chromium-review.googlesource.com/741231 > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Cr-Commit-Position: refs/heads/master@{#49106} Change-Id: Icdff2510ec66d1c96a1912cef29d77d8550994ee Reviewed-on: https://chromium-review.googlesource.com/753903Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#49138}
-
- 04 Nov, 2017 1 commit
-
-
Michael Achenbach authored
This reverts commit 7d231e57. Reason for revert: Breaks revert for win-clang: https://build.chromium.org/p/tryserver.chromium.win/builders/win_clang/builds/342755 Original change's description: > [bits] Consolidate Count{Leading,Trailing}Zeros > > Instead of having one method for 32 bit integers and one for 64 bit, > plus a templatized version to choose from those two, just implement one > version which handles unsigned integers of any size. Also, make them > constexpr. > The Count{Leading,Trailing}Zeros{32,64} methods are kept for now in > order to keep the amount of code changes small. Also, sometimes it > improves readability by stating exactly the size of the argument, > especially for leading zeros (where zero-extending would add more > leading zeros). > > CountLeadingZeros now uses a binary search inspired implementation > as proposed in Hacker's Delight. It's more than 20% faster on x64 if > the builtins are disabled. > CountTrailingZeros falls back to CountPopulation instead of counting in > a naive loop. This is ~50% faster. > > R=mstarzinger@chromium.org > > Change-Id: I1d8bf1d7295b930724163248150444bd17fbb34e > Reviewed-on: https://chromium-review.googlesource.com/741231 > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Cr-Commit-Position: refs/heads/master@{#49106} TBR=mstarzinger@chromium.org,clemensh@chromium.org Change-Id: Iceeb35bf9c7539a1013c9bdbc47118008611bef2 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/753463Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#49123}
-
- 03 Nov, 2017 1 commit
-
-
Clemens Hammacher authored
Instead of having one method for 32 bit integers and one for 64 bit, plus a templatized version to choose from those two, just implement one version which handles unsigned integers of any size. Also, make them constexpr. The Count{Leading,Trailing}Zeros{32,64} methods are kept for now in order to keep the amount of code changes small. Also, sometimes it improves readability by stating exactly the size of the argument, especially for leading zeros (where zero-extending would add more leading zeros). CountLeadingZeros now uses a binary search inspired implementation as proposed in Hacker's Delight. It's more than 20% faster on x64 if the builtins are disabled. CountTrailingZeros falls back to CountPopulation instead of counting in a naive loop. This is ~50% faster. R=mstarzinger@chromium.org Change-Id: I1d8bf1d7295b930724163248150444bd17fbb34e Reviewed-on: https://chromium-review.googlesource.com/741231Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#49106}
-
- 04 Oct, 2017 1 commit
-
-
Eric Holk authored
CCalls have significantly less overhead than runtime calls which will improve runtime performance on programs that make lots of transitions between JS and Wasm. Bug: v8:5277 Change-Id: If09dea97f24eb43753847e2b894ebc1ba5168c23 Reviewed-on: https://chromium-review.googlesource.com/688481 Commit-Queue: Eric Holk <eholk@chromium.org> Reviewed-by:
Mircea Trofin <mtrofin@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#48297}
-
- 12 May, 2017 1 commit
-
-
ivica.bogosavljevic authored
TEST=wasm-spec-tests/tests/set_local,wasm-spec-tests/tests/imports BUG= Review-Url: https://codereview.chromium.org/2859223004 Cr-Commit-Position: refs/heads/master@{#45279}
-
- 15 Dec, 2016 1 commit
-
-
ahaas authored
Some instructions in WebAssembly trap for some inputs, which means that the execution is terminated and (at least at the moment) a JavaScript exception is thrown. Examples for traps are out-of-bounds memory accesses, or integer divisions by zero. Without the TrapIf and TrapUnless operators trap check in WebAssembly introduces 5 TurboFan nodes (branch, if_true, if_false, trap-reason constant, trap-position constant), in addition to the trap condition itself. Additionally, each WebAssembly function has four TurboFan nodes (merge, effect_phi, 2 phis) whose number of inputs is linear to the number of trap checks in the function. Especially for functions with high numbers of trap checks we observe a significant slowdown in compilation time, down to 0.22 MiB/s in the sqlite benchmark instead of the average of 3 MiB/s in other benchmarks. By introducing a TrapIf common operator only a single node is necessary per trap check, in addition to the trap condition. Also the nodes which are shared between trap checks (merge, effect_phi, 2 phis) would disappear. First measurements suggest a speedup of 30-50% on average. This CL only implements TrapIf and TrapUnless on x64. The implementation is also hidden behind the --wasm-trap-if flag. Please take a special look at how the source position is transfered from the instruction selector to the code generator, and at the context that is used for the runtime call. R=titzer@chromium.org Review-Url: https://codereview.chromium.org/2562393002 Cr-Commit-Position: refs/heads/master@{#41720}
-
- 13 Sep, 2016 1 commit
-
-
bmeurer authored
Also unify the Pow implementation somewhat. There are still some inconsistencies with the FPU version for x64/ia32, but that has to be resolved separately. R=ahaas@chromium.org, mvstanton@chromium.org BUG=v8:5086 Review-Url: https://codereview.chromium.org/2333663002 Cr-Commit-Position: refs/heads/master@{#39368}
-
- 26 Jul, 2016 1 commit
-
-
ivica.bogosavljevic authored
Fix failure in mjsunit/wasm/embenchen/box2d on 32-bit architectures that do not support unaligned access. This test fails because WasmGraphBuilder::BuildCFuncInstruction allocates space for doubles using StackSlot turbofan operator, but this space is not guaranteed to be 8 bytes aligned if SP itself is not 8 bytes aligned (which is the case on 32-bit architectures). BUG=mjsunit/wasm/embenchen/box2d Review-Url: https://codereview.chromium.org/2177863002 Cr-Commit-Position: refs/heads/master@{#38039}
-
- 20 Jul, 2016 1 commit
-
-
ahaas authored
This CL more or less reverts commit https://codereview.chromium.org/2107733002/ The use of the MathPow code stub that was introduced by that commit caused problems on arm64, and the MathPow code stub was also an obstacle in the implementation of parallel code generation. In addition this CL turns on the mjsunit/wasm/embenchen tests for arm64 which were turned off because of problems with MathPow on arm64. R=titzer@chromium.org, bradnelson@chromium.org Review-Url: https://codereview.chromium.org/2166793002 Cr-Commit-Position: refs/heads/master@{#37911}
-
- 21 Apr, 2016 1 commit
-
-
ahaas authored
This patch provides a new implementation of popcnt and ctz in the case where the platform does not provide these instructions. Instead of building a TF graph which implements it we now call a C function. Additionally I turned on additional tests in test-run-wasm-64.cc R=titzer@chromium.org Review URL: https://codereview.chromium.org/1857363003 Cr-Commit-Position: refs/heads/master@{#35685}
-
- 06 Apr, 2016 1 commit
-
-
ahaas authored
1) I moved the implementations of the wrapper functions into a new cc file so that I can use these wrapper functions in tests. 2) I made a generic test for all tests in test-run-calls-to-external-references.cc. In the new test we only compare the result of a function call through an external reference with the result of a direct function call. This is sufficient because we only want to test function calls through external references work here. The implementation of these functions are tested somewhere else. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1853123002 Cr-Commit-Position: refs/heads/master@{#35289}
-
- 15 Mar, 2016 1 commit
-
-
ahaas authored
On 32-bit systems these instructions are compiled to calls to C functions. The TF node for the function call is already generated in the wasm compiler, the lowering of the I64 parameters is done in the Int64Lowering. We use the return value of the C function to determine whether the calculation should trap or not. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1804513002 Cr-Commit-Position: refs/heads/master@{#34768}
-
- 14 Mar, 2016 1 commit
-
-
ahaas authored
On 32-bit systems I64XConvertFXX instructions are compiled to calls to C functions. The TF node for the function call is already generated in the wasm compiler, the lowering of the I64 parameter is done in the Int64Lowering. We use the return value of the C function to determine whether the conversion should trap or not. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1775903002 Cr-Commit-Position: refs/heads/master@{#34738}
-
- 04 Mar, 2016 1 commit
-
-
ahaas authored
On 32-bit systems FXXXConvertI64 instructions are compiled to calls to C functions. The TF node for the function call is already generated in the wasm compiler, the lowering of the I64 parameter is done in the Int64Lowering. R=titzer@chromium.org, yangguo@chromium.org Review URL: https://codereview.chromium.org/1738623003 Cr-Commit-Position: refs/heads/master@{#34487}
-