- 10 Aug, 2020 1 commit
-
-
Ng Zhi An authored
With a displacement of int32_t min (-2^31), and a displacement mode of kNegativeDisplacement, we will try to negate this constant, but the result will not fit in an int32_t, leading to a runtime crash. Check for this special case in CanBeImmediate, and return false. Bug: chromium:1091892 Change-Id: I7f18153d13805f2836dd5c8e1bc098f1e9600566 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2341095 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#69311}
-
- 12 Aug, 2019 1 commit
-
-
Jakob Gruber authored
This removes LoadStackPointer and its last remaining use in the interpreter assembler. Bug: v8:9534 Change-Id: I19aafb12c5fd50248841a3d92448e64243c723ad Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1748729 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#63164}
-
- 28 May, 2019 1 commit
-
-
Clemens Hammacher authored
Especially for function types, this increases readability significantly. Also the style guide recommends for 'using' over 'typedef'. R=mstarzinger@chromium.org Bug: v8:9183 Change-Id: If2d17863de39383f5a35e089298d37408791ce4b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1631415 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#61872}
-
- 27 May, 2019 1 commit
-
-
Clemens Hammacher authored
This replaces all typedefs that define types and not functions by the equivalent "using" declaration. This was done mostly automatically using this command: ag -l '\btypedef\b' src test | xargs -L1 \ perl -i -p0e 's/typedef ([^*;{}]+) (\w+);/using \2 = \1;/sg' Patchset 2 then adds some manual changes for typedefs for pointer types, where the regular expression did not match. R=mstarzinger@chromium.org TBR=yangguo@chromium.org, jarin@chromium.org Bug: v8:9183 Change-Id: I6f6ee28d1793b7ac34a58f980b94babc21874b78 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1631409 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#61849}
-
- 23 May, 2019 1 commit
-
-
Yang Guo authored
TBR=bmeurer@chromium.org,leszeks@chromium.org Bug: v8:9247 Change-Id: I8d14d0192ea8c705f8274e8e61a162531826edb6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1624220Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Hannes Payer <hpayer@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#61769}
-
- 08 Mar, 2019 1 commit
-
-
Clemens Hammacher authored
It's not being used, and causes compile errors on windows because of a name clash (see referenced bugs). R=mstarzinger@chromium.org CC=tebbi@chromium.org, jarin@chromium.org Bug: v8:8953 Change-Id: I22dcdbcbe92f92c390a2f2cdd289dda7f7dc4eb1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1505794Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#60117}
-
- 18 Feb, 2019 1 commit
-
-
Victor Costan authored
Googletest is (at last) converging with industry-standard terminology [1]. We previously called test suites "test cases", which was rather confusing for folks coming from any other testing framework. Chrome now has a googletest version that supports _TEST_SUITE_ macros instead of _TEST_CASE_, so this CL cleans up some of the outdated usage. [1] https://github.com/google/googletest/blob/master/googletest/docs/primer.md#beware-of-the-nomenclature Bug: chromium:925652 Change-Id: I3cd02b9fa6dbece1594bbfd50a21ad7503c2aab9 Reviewed-on: https://chromium-review.googlesource.com/c/1475654Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Victor Costan <pwnall@chromium.org> Cr-Commit-Position: refs/heads/master@{#59666}
-
- 12 Nov, 2018 1 commit
-
-
Ben L. Titzer authored
This CL splits the backend of TurboFan off into its own directory, without changing namespaces. This makes ownership management a bit more fine-grained with a logical separation. R=mstarzinger@chromium.org,jarin@chromium.org,adamk@chromium.org Change-Id: I2ac40d6ca2c4f04b8474b630aae0286ecf79ef42 Reviewed-on: https://chromium-review.googlesource.com/c/1308333 Commit-Queue: Ben Titzer <titzer@chromium.org> Reviewed-by: Adam Klein <adamk@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#57437}
-
- 16 Oct, 2018 1 commit
-
-
Benedikt Meurer authored
The InstructionSelector on x64 was missing the ability to properly match comparisons of memory operands with zero, i.e. it used to turn something like Word32Equal(Load[Uint8](o, i), Int32Constant(0)) into movzbl reg, [o,i] cmp 0, reg even requiring a temporary register. Now with this change it generates the proper cmpb [o,i], 0 sequence. R=sigurds@chromium.org Bug: v8:8238 Change-Id: I52a71bbf95c85e11cb275f0f4a5726a6873cde95 Reviewed-on: https://chromium-review.googlesource.com/c/1281342Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#56677}
-
- 14 Jun, 2018 1 commit
-
-
jgruber authored
The stack check instruction sequence is pattern-matched in instruction-selector-{ia32,x64}.cc and replaced with its own specialized opcode, for which we later generate an efficient stack check in a single instruction. But this pattern matching has never worked for CSA-generated code. The matcher expected LoadStackPointer in the right operand and the external reference load in the left operand. CSA generated exactly vice-versa. This CL does a few things; it 1. reverts the recent change to load the limit from smi roots: Revert "[csa] Load the stack limit from smi roots" This reverts commit 507c29c9. 2. tweaks the CSA instruction sequence to output what the matcher expects. 3. refactors stack check matching into a new StackCheckMatcher class. 4. typifies CSA::PerformStackCheck as a drive-by. Bug: v8:6666,v8:7844 Change-Id: I9bb879ac10bfe7187750c5f9e7834dc4accf28b5 Reviewed-on: https://chromium-review.googlesource.com/1099068Reviewed-by: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#53737}
-
- 29 Jan, 2018 1 commit
-
-
Jaroslav Sevcik authored
Bug: v8:5267 Change-Id: I649554733fdbd00c8e82b09aca35b0ff1f823560 Reviewed-on: https://chromium-review.googlesource.com/890262Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#50919}
-
- 15 Jan, 2018 1 commit
-
-
Tobias Tebbi authored
Bug: Change-Id: Icf0c43ef5bd3b3d3055d9606f22d3126b31016e3 Reviewed-on: https://chromium-review.googlesource.com/866930 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#50595}
-
- 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}
-
- 13 Mar, 2017 1 commit
-
-
shiyu.zhang authored
With this change, on ia32 and x64, a load from memory into a register can be replaced by a memory operand for integer binops if it makes sense. BUG= Review-Url: https://codereview.chromium.org/2728533003 Cr-Commit-Position: refs/heads/master@{#43739}
-
- 23 Feb, 2017 1 commit
-
-
Marja Hölttä authored
BUG=v8:5294 Change-Id: If45f25aae8de526027b7851cb4efe0ccf4a7c4b1 Reviewed-on: https://chromium-review.googlesource.com/444226 Commit-Queue: Marja Hölttä <marja@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#43388}
-
- 18 Oct, 2016 1 commit
-
-
zhengxing.li authored
movzxbl/movsxbl/movzxwl/movsxwl operations implicitly zero-extend to 64-bit on x64, So It's not necessary to generate a "movl" instruction to zero-extend. For example, movzxbl/movl instruction sequence occurs frequently in v8 interpreter bytecode handler. such as: kind = BYTECODE_HANDLER name = LdaSmi compiler = turbofan Instructions (size = 76) 0x184870a3ce40 0 430fbe442601 movsxbl rax,[r14+r12*1+0x1] 0x184870a3ce46 6 48c1e020 REX.W shlq rax, 32 0x184870a3ce4a 10 498d5c2402 REX.W leaq rbx,[r12+0x2] 0x184870a3ce4f 15 420fb61433 movzxbl rdx,[rbx+r14*1] 0x184870a3ce54 20 8bd2 movl rdx,rdx <---------------------- here is a redundant "movl" 0x184870a3ce56 22 4883fa1e REX.W cmpq rdx,0x1e 0x184870a3ce5a 26 0f8518000000 jnz 56 (0x184870a3ce78) This CL also referenced to CL #36038 (https://codereview.chromium.org/1950013003 ) for adding test cases. BUG= Review-Url: https://codereview.chromium.org/2427483002 Cr-Commit-Position: refs/heads/master@{#40375}
-
- 18 Aug, 2016 1 commit
-
-
epertoso authored
[turbofan/x64] Load word64 followed by a shift right 32 -> load (and sign-extend if necessary) high 32bit. We were missing this optimization in a few cases because TruncateInt64ToInt32 was also interfering. Also removed the equivalent from simplified-lowering.cc, as the arm64 instruction selector has a similar optimization. R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2252333002 Cr-Commit-Position: refs/heads/master@{#38711}
-
- 08 Aug, 2016 2 commits
-
-
ahaas authored
This CL changes the semantics of FloatXXSub to match the semantics of the semantics of FloatXXSubPreserveNan. Therefore there is no need anymore for the FloatXXSubPreserveNan operators. The optimizations in VisitFloatXXSub which are removed in this CL have already been moved to machine-operator-reducer.cc in https://codereview.chromium.org/2226663002 R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/2220973002 Cr-Commit-Position: refs/heads/master@{#38437}
-
epertoso authored
Before this change we would first load an 8/16/32-bit value from memory into a 32-bit register, then zero/sign-extend from that register to a 64-bit one. Now we replace that pattern with a single movsx/movzx. Ported from http://crrev.com/2183923003 R=bmeurer@chromium.org Committed: https://crrev.com/4abecb7a27bd5fa073d0ff5fadb0c2bb248ef9f4 Review-Url: https://codereview.chromium.org/2220483003 Cr-Original-Commit-Position: refs/heads/master@{#38388} Cr-Commit-Position: refs/heads/master@{#38428}
-
- 05 Aug, 2016 2 commits
-
-
machenbach authored
Revert of [x64] Zero/sign-extend loads to 64-bit registers. (patchset #1 id:20001 of https://codereview.chromium.org/2220483003/ ) Reason for revert: Breaks tree: https://build.chromium.org/p/client.v8/builders/V8%20Linux64%20-%20debug/builds/10969 Original issue's description: > [x64] Zero/sign-extend loads to 64-bit registers. > > Before this change we would first load an 8/16/32-bit value from memory into a 32-bit register, then zero/sign-extend from that register to a 64-bit one. Now we replace that pattern with a single movsx/movzx. > > Ported from http://crrev.com/2183923003 > > R=bmeurer@chromium.org > > Committed: https://crrev.com/4abecb7a27bd5fa073d0ff5fadb0c2bb248ef9f4 > Cr-Commit-Position: refs/heads/master@{#38388} TBR=bmeurer@chromium.org,epertoso@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review-Url: https://codereview.chromium.org/2221473002 Cr-Commit-Position: refs/heads/master@{#38389}
-
epertoso authored
Before this change we would first load an 8/16/32-bit value from memory into a 32-bit register, then zero/sign-extend from that register to a 64-bit one. Now we replace that pattern with a single movsx/movzx. Ported from http://crrev.com/2183923003 R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/2220483003 Cr-Commit-Position: refs/heads/master@{#38388}
-
- 11 Dec, 2015 1 commit
-
-
jarin authored
Review URL: https://codereview.chromium.org/1513383003 Cr-Commit-Position: refs/heads/master@{#32803}
-
- 10 Dec, 2015 1 commit
-
-
jarin authored
MachineType is now a class with two enum fields: - MachineRepresentation - MachineSemantic Both enums are usable on their own, and this change switches some places from using MachineType to use just MachineRepresentation. Most notably: - register allocator now uses just the representation. - Phi and Select nodes only refer to representations. Review URL: https://codereview.chromium.org/1513543003 Cr-Commit-Position: refs/heads/master@{#32738}
-
- 29 Oct, 2015 1 commit
-
-
mstarzinger authored
R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1424983003 Cr-Commit-Position: refs/heads/master@{#31646}
-
- 26 Oct, 2015 1 commit
-
-
rmcilroy authored
Adds support for loading from and storing to outer context variables. Also adds support for declaring functions on contexts and locals. Finally, fixes a couple of issues with StaContextSlot where we weren't emitting the write barrier and therefore would crash in the GC. Also added code so that --print-bytecode will output the function name before the bytecodes, and replaces MachineType with StoreRepresentation in RawMachineAssembler::Store and updates tests. BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1425633002 Cr-Commit-Position: refs/heads/master@{#31584}
-
- 11 Apr, 2015 1 commit
-
-
Weiliang Lin authored
R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1072343002 Cr-Commit-Position: refs/heads/master@{#27768}
-
- 08 Apr, 2015 1 commit
-
-
Benedikt Meurer authored
These operators compute the absolute floating point value of some arbitrary input, and are implemented without any branches (i.e. using vabs on arm, and andps/andpd on x86). R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/1066393002 Cr-Commit-Position: refs/heads/master@{#27662}
-
- 07 Apr, 2015 1 commit
-
-
bmeurer authored
We can use xorps/xorpd on Intel CPUs to flip the sign bit. Ideally we'd use a RIP-relative 128-bit constant in the code object, as OCaml/GCC does, however that requires 128-bit alignment for code objects, which is not yet implemented. So for now we materialize the mask inline. R=dcarney@chromium.org Review URL: https://codereview.chromium.org/1046893002 Cr-Commit-Position: refs/heads/master@{#27611}
-
- 30 Mar, 2015 1 commit
-
-
bmeurer authored
This adds the basics necessary to support float32 operations in TurboFan. The actual functionality required to detect safe float32 operations will be added based on this later. Therefore this does not affect production code except for some cleanup/refactoring. In detail, this patchset contains the following features: - Add support for float32 operations to arm, arm64, ia32 and x64 backends. - Add float32 machine operators. - Add support for float32 constants to simplified lowering. - Handle float32 representation for phis in simplified lowering. In addition, contains the following (related) cleanups: - Fix/unify naming of backend instructions. - Use AVX comparisons when available. - Extend ArchOpcodeField to 9 bits (required for arm64). - Refactor some code duplication in instruction selectors. BUG=v8:3589 LOG=n R=dcarney@chromium.org Review URL: https://codereview.chromium.org/1044793002 Cr-Commit-Position: refs/heads/master@{#27509}
-
- 20 Mar, 2015 1 commit
-
-
Benedikt Meurer authored
R=dcarney@chromium.org, yangguo@chromium.org BUG=v8:3952 LOG=n Review URL: https://codereview.chromium.org/1021183002 Cr-Commit-Position: refs/heads/master@{#27329}
-
- 09 Mar, 2015 1 commit
-
-
Benedikt Meurer authored
Avoid loading the stack pointer and the stack limit into allocatable registers first, but generate a cmp rsp,[limit] instead. R=dcarney@chromium.org Review URL: https://codereview.chromium.org/989203002 Cr-Commit-Position: refs/heads/master@{#27065}
-
- 23 Feb, 2015 1 commit
-
-
bmeurer authored
Revert of [x64] Improve instruction selection for TruncateInt64ToInt32. (patchset #1 id:1 of https://codereview.chromium.org/936323004/) Reason for revert: Breaks SQLite Original issue's description: > [x64] Improve instruction selection for TruncateInt64ToInt32. > > R=svenpanne@chromium.org > > Committed: https://crrev.com/64a2717529e2197f3a789adabf86ca36f5eb764c > Cr-Commit-Position: refs/heads/master@{#26739} TBR=svenpanne@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/928723003 Cr-Commit-Position: refs/heads/master@{#26791}
-
- 19 Feb, 2015 1 commit
-
-
Benedikt Meurer authored
R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/936323004 Cr-Commit-Position: refs/heads/master@{#26739}
-
- 18 Feb, 2015 1 commit
-
-
bmeurer authored
R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/938513003 Cr-Commit-Position: refs/heads/master@{#26712}
-
- 05 Dec, 2014 1 commit
-
-
danno authored
Achieve more than parity with modes currently handled on ia32 in preparation for porting the entire mechanism to ia32, including supporting mul of constants 3, 5 and 9 with "leal" instructions. TEST=unittests Review URL: https://codereview.chromium.org/774193003 Cr-Commit-Position: refs/heads/master@{#25677}
-
- 01 Dec, 2014 2 commits
-
-
Weiliang Lin authored
BUG= R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/764863002 Patch from Weiliang Lin <weiliang.lin@intel.com>. Cr-Commit-Position: refs/heads/master@{#25582}
-
danno authored
Only use "addl" and "subl" in cases that have been measured to be faster (currently only immediate operations). Review URL: https://codereview.chromium.org/735293004 Cr-Commit-Position: refs/heads/master@{#25580}
-
- 24 Nov, 2014 1 commit
-
-
jarin authored
Resets the scaled exponent to 0 when the scaling match fails. BUG= Review URL: https://codereview.chromium.org/756643002 Cr-Commit-Position: refs/heads/master@{#25491}
-
- 21 Nov, 2014 1 commit
-
-
danno authored
They generally cause regressions on most modern Intel chips. Replace them with addl/subl. Review URL: https://codereview.chromium.org/737153003 Cr-Commit-Position: refs/heads/master@{#25466}
-
- 20 Nov, 2014 1 commit
-
-
Daniel Clifford authored
- Use "leal" for subtraction of integer constant when non-constant input to subtract is used more than once. - Use "incl", "decl", and "addl" when they are smaller/cheaper than their leal/addl/subl equivalant. R=titzer@chromium.org Review URL: https://codereview.chromium.org/738073002 Cr-Commit-Position: refs/heads/master@{#25439}
-