- 31 Jan, 2019 2 commits
-
-
Igor Sheludko authored
Bug: v8:8621, v8:8562 Change-Id: I79014f92ba95d21b31ff28cb615a01aa00d0d5d6 Reviewed-on: https://chromium-review.googlesource.com/c/1448271 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#59245}
-
Igor Sheludko authored
movXXXp are replaced with respective movXXXq. Drive-by cleanup: unified the way we generate movq with other mov instructions. Bug: v8:8621, v8:8562 Change-Id: I5c65dccf4e460cad5c3cee3dfabfd6ce39abc244 Reviewed-on: https://chromium-review.googlesource.com/c/1446096 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#59243}
-
- 30 Jan, 2019 2 commits
-
-
Igor Sheludko authored
addp, andp, cmpp, decp, incp, leap, negp, orp, subp, testp, xorp, shrp, sarp, shlp are replaced with respective quad-word instructions. Some wrongly-used xxxp instructions in regexp code are replaced with xxxl. Bug: v8:8621, v8:8562 Change-Id: If5fe3229a35805b8ef84d3e1ffa05cf9ed91ceef Reviewed-on: https://chromium-review.googlesource.com/c/1446451Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#59217}
-
Jakob Gruber authored
This is an initial step towards clarifying the layout of the instruction area. As follow-ups, we should remove additional safepoint and handler table offset parameters, and perhaps alter Code::safepoint_table_offset (handler_table) semantics to always contain a real offset and avoid the magic 0 signifying nonexistent tables. Bug: v8:8758 Change-Id: I9f54629ff3ddad69904b0e1ce2a58e047397aa15 Reviewed-on: https://chromium-review.googlesource.com/c/1434036 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@{#59202}
-
- 29 Jan, 2019 2 commits
-
-
Clemens Hammacher authored
This is not needed generally, and might prevent catching bugs where labels are not bound correctly. Instead, only unuse labels on errors. R=mstarzinger@chromium.org Change-Id: I1dc77ea21ca80c5be801f17ba284908e1c04abe0 Reviewed-on: https://chromium-review.googlesource.com/c/1443051 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#59173}
-
Clemens Hammacher authored
On Liftoff bailout, instead of binding all unbound labels (to avoid triggering DCHECKS in their destructor), just Unuse them. R=mstarzinger@chromium.org Bug: chromium:924843 Change-Id: Icf581bca06eaa7369ab2bbd5d805112289d6a801 Reviewed-on: https://chromium-review.googlesource.com/c/1442645Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#59172}
-
- 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}
-
- 25 Jan, 2019 1 commit
-
-
Andreas Haas authored
Anyref parameters can exist across GC runs. Therefore the GC has to know where anyref parameters are on the stack so that it can mark them in its marking phase, and update them in the compaction phase. Already in a previous CL we grouped all anyref parameters so that they can be found more easily in a stack frame, see https://crrev.com/c/1371827. In this CL we implement the stack scanning itself. Note that anyref parameters are not scanned while iterating over the caller's frame (to which they actually belong), but while iterating over the callee's frame. The reason is that with tail-calls, only the callee knows how many tagged stack parameters (aka anyref parameters) there are. R=mstarzinger@chromium.org also-by=mstarzinger@chromium.org Bug: v8:7581 Change-Id: I7a41ce11d06c0d420146fdb0bb8d5606f28824d7 Reviewed-on: https://chromium-review.googlesource.com/c/1424955 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#59099}
-
- 22 Jan, 2019 2 commits
-
-
Peter Marshall authored
Some includes in log.h were only needed by log.cc so move them there. Some were not needed at all, so remove them completely. Drive-by cleanup FunctionEvent(), which was never called without args for the last parameters which had default values. Change-Id: Id8b0c634c4d39d3c278ab3d932ed7af4142fd9c9 Reviewed-on: https://chromium-review.googlesource.com/c/1425914Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#59003}
-
Peter Marshall authored
Everything was including log.h through heap-inl.h, so remove that include by moving the one user into heap.cc, and then fix all the include errors. This reduces the log.h include ball from ~550 to ~100. Change-Id: I6d09bc2f365b48645fcfdc695a68ea12539a745d Reviewed-on: https://chromium-review.googlesource.com/c/1424198 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#58981}
-
- 21 Jan, 2019 4 commits
-
-
Michael Starzinger authored
This removes the unused "argument count" field from the safepoint table as the field was unused by now and always contained the value zero. Also note that associating a callee's argument count with the call-site is not compatible with tail-call support. When tail-calling a function with a different number of arguments, the information associated with the call-site becomes stale. The number of arguments is a property of the callee, not of the call-site in the caller. For this reason the field in question is not usable to support reference types in function arguments (at least when tail-calls are also supported). R=ahaas@chromium.org Change-Id: If667d729267f2dd2642b755c54235cc08ca9b141 Reviewed-on: https://chromium-review.googlesource.com/c/1402548Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#58969}
-
Clemens Hammacher authored
The temp registers might be needed by the assembler, so avoid using them in LiftoffAssembler. Use Liftoff cache registers instead. This might introduce additional spills if all registers are in use, but this is unlikely. This also simplifies the logic to ensure non-aliasing of certain registers. R=ahaas@chromium.org Bug: chromium:922933, v8:6600 Change-Id: Ie929d9de0b6f4f41c6117d820b6a367dd0a342f7 Reviewed-on: https://chromium-review.googlesource.com/c/1424862Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58961}
-
Clemens Hammacher authored
This is a reland of 4e1d7c87. Failure on arm and arm64 is fixed by https://crrev.com/c/1411885. Original change's description: > [wasm] Split compilation in three stages > > In order to refactor ownership between objects in wasm compilation, the > compilation (executed by background tasks) is split in three stages: > getting a compilation unit (while holding a mutex), executing the work > (without any mutex and without keeping the NativeModule alive), and > submitting the work (with a mutex again). > > This CL prepares this design by splitting compilation from submission. > Both steps are still executed right after each other. This will be > changed in a follow-up CL. > > R=titzer@chromium.org > CC=mstarzinger@chromium.org > > Bug: v8:8689 > Change-Id: I2f92aee8e2f2d45470d8c63314ed026341630902 > Reviewed-on: https://chromium-review.googlesource.com/c/1414920 > Reviewed-by: Ben Titzer <titzer@chromium.org> > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Cr-Commit-Position: refs/heads/master@{#58929} TBR=titzer@chromium.org Bug: v8:8689 Change-Id: I58ff07d0e0ac8df0f6ee23c416f992954f4673d2 Reviewed-on: https://chromium-review.googlesource.com/c/1422748Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58959}
-
Clemens Hammacher authored
Fix fixes a minor DCHECK error, which fired because usually only LiftoffRegisters of the same type should be compared against each other. In the RegisterReuseMap we store both register pairs and single registers, hence check for pair vs non-pair comparisons explicitly. R=ahaas@chromium.org Bug: v8:6600, chromium:922670 Change-Id: I18beb61b6b1906cc42bcf6e7dfdd5eb803e874d7 Reviewed-on: https://chromium-review.googlesource.com/c/1421921Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58956}
-
- 18 Jan, 2019 2 commits
-
-
Michael Achenbach authored
This reverts commit 4e1d7c87. Reason for revert: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux%20-%20arm%20-%20sim%20-%20debug/14986 Original change's description: > [wasm] Split compilation in three stages > > In order to refactor ownership between objects in wasm compilation, the > compilation (executed by background tasks) is split in three stages: > getting a compilation unit (while holding a mutex), executing the work > (without any mutex and without keeping the NativeModule alive), and > submitting the work (with a mutex again). > > This CL prepares this design by splitting compilation from submission. > Both steps are still executed right after each other. This will be > changed in a follow-up CL. > > R=titzer@chromium.org > CC=mstarzinger@chromium.org > > Bug: v8:8689 > Change-Id: I2f92aee8e2f2d45470d8c63314ed026341630902 > Reviewed-on: https://chromium-review.googlesource.com/c/1414920 > Reviewed-by: Ben Titzer <titzer@chromium.org> > Commit-Queue: Clemens Hammacher <clemensh@chromium.org> > Cr-Commit-Position: refs/heads/master@{#58929} TBR=titzer@chromium.org,clemensh@chromium.org Change-Id: Ic3d0287b354ef5f834b76bc2cdc096d2231f4477 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:8689 Reviewed-on: https://chromium-review.googlesource.com/c/1422917Reviewed-by: Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#58932}
-
Clemens Hammacher authored
In order to refactor ownership between objects in wasm compilation, the compilation (executed by background tasks) is split in three stages: getting a compilation unit (while holding a mutex), executing the work (without any mutex and without keeping the NativeModule alive), and submitting the work (with a mutex again). This CL prepares this design by splitting compilation from submission. Both steps are still executed right after each other. This will be changed in a follow-up CL. R=titzer@chromium.org CC=mstarzinger@chromium.org Bug: v8:8689 Change-Id: I2f92aee8e2f2d45470d8c63314ed026341630902 Reviewed-on: https://chromium-review.googlesource.com/c/1414920Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58929}
-
- 17 Jan, 2019 2 commits
-
-
Ben L. Titzer authored
This CL adds a helper function that simplifies a bounds check pattern that appears repeatedly in the code. R=clemensh@chromium.org Change-Id: I8c617515b34eb2d262d58a239a29c1515de2d92d Reviewed-on: https://chromium-review.googlesource.com/c/1417611 Commit-Queue: Ben Titzer <titzer@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58892}
-
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}
-
- 15 Jan, 2019 1 commit
-
-
Michael Starzinger authored
This switches the experimental exception handling implementation to the new proposal where 'catch' blocks behave in a catch-all fashion and a new 'br_on_exn' operation is used to check for a certain exception type and extract the exception values on a match. R=clemensh@chromium.org TEST=unittests/FunctionBodyDecoderTest,mjsunit/wasm/exceptions BUG=v8:8091 Change-Id: Ib12ba28b3aa2a7d831312a83abcb00bf56d0adc3 Reviewed-on: https://chromium-review.googlesource.com/c/1409431 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58832}
-
- 14 Jan, 2019 2 commits
-
-
Clemens Hammacher authored
The background compile tasks should not access the NativeModule during the main compile phase. This CL moves on of the accessed fields into the {CompilationEnv}. It is initialized from the existing field on the {NativeModule}. R=titzer@chromium.org Bug: v8:8689 Change-Id: I9738e2fb4681a035cbacf3c9e00b9e5cc9419416 Reviewed-on: https://chromium-review.googlesource.com/c/1409423Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58793}
-
Clemens Hammacher authored
Instead, pass it as a parameter to the compilation. This makes compilation units slimmer with the end goal of them being just the function index and execution tier. It also makes ownership handling of the NativeModule easier. R=titzer@chromium.org Bug: v8:8343, v8:7921 Change-Id: I0522c894569c71d8b7245f5ed5612ab2a249e1ad Reviewed-on: https://chromium-review.googlesource.com/c/1406668Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58776}
-
- 11 Jan, 2019 2 commits
-
-
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}
-
Clemens Hammacher authored
In {Assembler::and_} we might need to use the scratch register. Thus use a free LiftoffRegister instead to emit i32 popcnt. R=ahaas@chromium.org CC=george.wort@arm.com Bug: chromium:918284 Change-Id: Ia814899bf6e33dd4989fd09329542b4bc09b48df Reviewed-on: https://chromium-review.googlesource.com/c/1405036Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58723}
-
- 10 Jan, 2019 1 commit
-
-
Clemens Hammacher authored
Use the right register type for the temporary register. R=titzer@chromium.org Bug: v8:6600, chromium:917588 Change-Id: Ia2617f6b406924ca7f496608fd495faf04dff25b Reviewed-on: https://chromium-review.googlesource.com/c/1403127Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58711}
-
- 09 Jan, 2019 2 commits
-
-
Clemens Hammacher authored
Since register can be used multiple times on the stack, they can also be spilled into multiple stack slots. At merge points, we then might have to reload the spilled slots. A DCHECK currently checks that each register is only loaded once. Instead of failing, just load the first stack slot, the others are statically known to contain the same value anyways. R=ahaas@chromium.org Bug: v8:6600, chromium:919533 Change-Id: Ic0c806238b2997f006829b4b509a50468a55befa Reviewed-on: https://chromium-review.googlesource.com/c/1403124Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58676}
-
Predrag Rudic authored
Ivica Bogosavljevic is no longer part of MIPS V8 team, and therefore his name is removed from OWNERS. TBR=mstarzinger@chromium.org NOTRY=true No-Presubmit: true Change-Id: I1ea6745b795573a17362dfd869528ddf78b8ab41 Reviewed-on: https://chromium-review.googlesource.com/c/1402775 Commit-Queue: Predrag Rudic <prudic@wavecomp.com> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#58667}
-
- 08 Jan, 2019 2 commits
-
-
Clemens Hammacher authored
If we have both f32 and f64 locals, we use the same register to hold their zero value. On stack transfers, we might thus encounter the same fp register with both the f32 and f64 type. Explicitly allow that case to happen. R=ahaas@chromium.org Bug: chromium:918917, v8:6600 Change-Id: I6937008d38853fe2bdccd9715e1a2499cf6bf7c6 Reviewed-on: https://chromium-review.googlesource.com/c/1398225Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58623}
-
Clemens Hammacher authored
We currently hold the register list for {move_src_regs_} in the {StackTransferRecipe} class, and only compute src use counts for executing the moves. Since the use counts and the register list are redundant, just compute the use counts right away, and get rid of the register list. This saves one iteration of the register list in {ExecuteMoves}. R=ahaas@chromium.org Bug: v8:6600, v8:8423 Change-Id: I832fb0d1c1d3afe536289162a81a49b73313e7f4 Reviewed-on: https://chromium-review.googlesource.com/c/1397670 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#58611}
-
- 07 Jan, 2019 3 commits
-
-
Clemens Hammacher authored
We currently iterate the list of unexecuted register moves repeatedly, always executing the moves whose destination register is not being used as source register any more. This can lead to quadratic execution times if only a small number of moves is processed in every iteration. This CL refactors this such that we iterate the moves at most three times: Once for executing moves which can be executed right away (fast path) and for computing the source register use counts. A second time to execute all remaining non-cyclic moves, and a third time to execute cyclic moves. During the second and third iteration, whenever we decrement the source register use count, we check whether it drops to zero and execute the respective move right away. R=ahaas@chromium.org Bug: v8:6600, v8:8423 Change-Id: I503328f5ae5f0208e35d53c71b4c289d75799892 Reviewed-on: https://chromium-review.googlesource.com/c/1397703 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#58588}
-
Clemens Hammacher authored
Stack transfers consist of a number of register moves plus a number of register loads. We currently store both in separate vectors. This CL changes that to be stored in arrays indexed by the destination register (such that it behaves like a map). This avoids any dynamically growing structures. Measured locally, this speeds up stack transfer processing by ~10%, which translates to ~0.5% of overall Liftoff compilation time. R=ahaas@chromium.org Bug: v8:6600, v8:8423 Change-Id: Id532960dcc12f228507ed75e392ad4c57710593f Reviewed-on: https://chromium-review.googlesource.com/c/1396278 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#58587}
-
Clemens Hammacher authored
This is a fully semantically preserving CL, it just moves code around a bit to make the follow-up CL easier to review. R=ahaas@chromium.org Bug: v8:6600, v8:8423 Change-Id: I0de80b18faa3ae570894cbd8073c495a5731d255 Reviewed-on: https://chromium-review.googlesource.com/c/1396096Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58569}
-
- 04 Jan, 2019 2 commits
-
-
Predrag Rudic authored
Redefinition of GetHalfStackSlot after commit 5ea59597. Change-Id: Ib2b1fe6bd130c6737a73ef55b09dc80f4cd9b3fb Reviewed-on: https://chromium-review.googlesource.com/c/1396077Reviewed-by: Sreten Kovacevic <skovacevic@wavecomp.com> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Predrag Rudic <prudic@wavecomp.com> Cr-Commit-Position: refs/heads/master@{#58543}
-
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 5 commits
-
-
Clemens Hammacher authored
The number of registers is very small, so any integer type is big enough anyway. Just use the simplest one, which is int. R=ahaas@chromium.org Bug: v8:6600 Change-Id: I9762a5c934848b810b7937ee603cd183f883d557 Reviewed-on: https://chromium-review.googlesource.com/c/1394548Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58524}
-
Clemens Hammacher authored
We currently de-duplicate used registers also in regions which do not need merging. In those regions though it can never happen that we need to pass different values from any merge input. Apart from introducing unnecessary register moves, this also causes a DCHECK to fail, because we might later want to merge back different registers into one. Assume this initial stack state (where each letter is a register): [A B B C] If in any child block the two Bs get de-duplicated so something like [A B D C] then we run into trouble when merging back this state into the parent state, because both B and D would need to be put into B. In this case we can statically infer that B and D must hold the same value anyway, but having this situation does not make much sense in the first place, so the DCHECK fires correctly. R=titzer@chromium.org Bug: v8:8423, chromium:917412 Change-Id: I24c36b062e04a134cf7051725afab98126753f31 Reviewed-on: https://chromium-review.googlesource.com/c/1392190 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#58522}
-
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}
-
Clemens Hammacher authored
Bring mips in line with the ia32 and arm implementions. 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: Id8812114df84fbddd4aa2570306526d291bface6 Reviewed-on: https://chromium-review.googlesource.com/c/1392188 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#58514}
-
- 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}
-