- 08 Jan, 2019 24 commits
-
-
Jakob Kummerow authored
Bug: v8:3770 Change-Id: I9214212454034cf1238cab43dc34d8d9f8ed2d37 Reviewed-on: https://chromium-review.googlesource.com/c/1398222Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#58627}
-
Clemens Hammacher authored
Backend is split out, so remove backend owners from src/compiler. Also, mention explicitly in src/compiler/backend that also all src/compiler owners are owners there. R=titzer@chromium.org No-Try: true Change-Id: I5409946f65bf27337b715af555083a4804fbb8dd Reviewed-on: https://chromium-review.googlesource.com/c/1400411Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58626}
-
Andreas Haas authored
This CL adds support for anyref in WebAssembly.Global objects. Note that the specification is not complete yet in this area. I did the following changes: - I renamed the `array_buffer` field of WasmGlobalObject to `untagged_buffer` - I added an additional field of type FixedArray, `tagged_buffer`. - In the constructor of WasmGlobalObject I allocate either the former or the latter, but not both. - In the WebAssembly.Global constructor I added special handling for the case where no initial value is provided. In that case I set the inital value to `null` and not to `undefined`. R=titzer@chromium.org Bug: v8:7581 Change-Id: I7e4855d7e6c04a9bcdc7ebd450caca5819d060e2 Reviewed-on: https://chromium-review.googlesource.com/c/1398226 Commit-Queue: Andreas Haas <ahaas@chromium.org> Reviewed-by: Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#58625}
-
Dan Elphick authored
Change Object::GetPropertyNames/GetOwnPropertyNames from V8_DEPRECATE_SOON to V8_DEPRECATED. Bug: v8:7286, v8:8562 Change-Id: I2c601e6bf729e8fb68be8bc9a7b1618da61934af Reviewed-on: https://chromium-review.googlesource.com/c/1393285Reviewed-by: Yang Guo <yangguo@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#58624}
-
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}
-
Stephan Herhut authored
On ia32, the instruction selector uses movsx_b to compile the wasm SignExtendWord8ToInt32 instruction. movsx_b requires a byte register as input. However, not all allocatable registers on ia32 are. As we cannot currently express constraints on subsets of registers, this change now forces the input to movsx_b into eax. Bug: chromium:919572 Change-Id: I39bd391974954ec9044940c3164398109eb78908 Reviewed-on: https://chromium-review.googlesource.com/c/1400409Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Stephan Herhut <herhut@chromium.org> Cr-Commit-Position: refs/heads/master@{#58622}
-
Dan Elphick authored
Only look 5 frames up the stack when looking for a DCHECK to move the frame to to prevent excessive iteration especially after a stack overflow. Change-Id: I227c46596f09c9af0a47e6673d3165eaccb75163 Reviewed-on: https://chromium-review.googlesource.com/c/1400408Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#58621}
-
Jakob Kummerow authored
Two uses in the API needed adaptation; all other uses have already been subsumed by the new implementation (previously known as NeverReadOnlySpaceObjectPtr, here renamed to NeverReadOnlySpaceObject). Bug: v8:3770 Change-Id: Idf0e4a98a407b9afea22e8790da34cf017b892a5 Reviewed-on: https://chromium-review.googlesource.com/c/1397671 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#58620}
-
Jakob Kummerow authored
StackHandlers form a chain, where the last element is nullptr, so calling "handler->next()->foo()" is unsafe because "foo" might see "this == nullptr". Bug: v8:3770 Change-Id: Ic989384fa192e29d4d8cb76ff01b32173bf55fd9 Reviewed-on: https://chromium-review.googlesource.com/c/1400406Reviewed-by: Yang Guo <yangguo@chromium.org> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#58619}
-
Sigurd Schneider authored
Graph width is now managed by the Graph instead of the GraphView, which simplifies some interfaces. Change-Id: If78bc9a469cc8369bc75695a6612627103036bc8 Notry: true Bug: v8:7327 Reviewed-on: https://chromium-review.googlesource.com/c/1398227Reviewed-by: Georg Neis <neis@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#58618}
-
Sigurd Schneider authored
This CL prevents redundancy elimination from widening types, which can cause problems if the input of a DeadValue (which has type None) is replaced by an equivalent node that does not have type None. This can happen because load elimination does not re-type nodes, for example. Bug: chromium:919340 Change-Id: I89e872412edbcdc610e70ae160cde56cd045006c Reviewed-on: https://chromium-review.googlesource.com/c/1397709Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#58617}
-
Jakob Gruber authored
Prior to this CL compilation fails with: - 'error: offset of on non-standard-layout type' due to offsetof() - 'Assertion failed: vector subscript out of range' due to the OOB vector subscripts Change-Id: I8751fafd1058ca839de832267811f8f1f47c53fe Reviewed-on: https://chromium-review.googlesource.com/c/1400404Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#58616}
-
Jakob Kummerow authored
The two names refer to the same thing by now, so this patch is entirely mechanical. Bug: v8:3770 Change-Id: Ia360c06c89af6b3da27fd21bbcaeb2bdaa28ce22 Reviewed-on: https://chromium-review.googlesource.com/c/1397705Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#58615}
-
tzik authored
|argc| parameter of JSEntry is passed as int from C++ code, and loaded into a register on the asm code. As int is 32 bit, and registers are 64 bit on 64 bit platforms, upper 32 bits of the loaded value may be contaminated by a random value if it's passed as a stack parameter. For now, |argc| is passed as a register parameter on all platforms, and the upper 32 bits of |argc| is filled by zero, fortunately. However, if we shuffle the order of parameters, |argc| can be passed as a stack parameter and its value may be broken. Specifically on x64 Windows, the first 4 parameters are passed as register parameters and the rest are stack parameters. As |argc| is the 4th parameter, if we prepend another parameter and shift |argc| to the 5th parameter, |argc| will become a stack parameter and its load to 64 bit register breaks the value. This CL converts the type of the |argc| parameter to intptr_t, so that it's safe to load from stack to full width registers. Bug: v8:8124 Change-Id: Ie7407cf5e6252ed7323a9c42389db387b0064673 Reviewed-on: https://chromium-review.googlesource.com/c/1400326Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Taiju Tsuiki <tzik@chromium.org> Cr-Commit-Position: refs/heads/master@{#58614}
-
Toon Verwaest authored
This is a reland of part of https://chromium-review.googlesource.com/c/v8/v8/+/1397664. It drops the explicit fni_.Infer() call after parsing arrow functions. We'll want to avoid inferring if the arrow function is an argument to a function call. It also avoids adding the single argument of "name => " to the inferred name. Bug: chromium:916975 Change-Id: I96a934408113483d73eba14073fe21e8cfe2ada6 Reviewed-on: https://chromium-review.googlesource.com/c/1397665 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#58613}
-
Stephan Herhut authored
The callback to AsyncStreamingProcessor::OnFinishedStream would call into v8 internals without restoring the current context if the processed module had no code. Instead, now always restore the context before doing any finishing work. Bug: chromium:915493 Change-Id: Ib779df81301ad1e3597515a4173c9a57efc593ac Reviewed-on: https://chromium-review.googlesource.com/c/1397672Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Stephan Herhut <herhut@chromium.org> Cr-Commit-Position: refs/heads/master@{#58612}
-
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}
-
Maxim Mazurok authored
- "constuctor" -> "constructor" - "dependendencies" -> "dependencies" - "develpers" -> "developers" - ["nonexistant"][1] -> ["nonexistent"][2] - "reponsible" -> "responsible" [1]: https://en.wiktionary.org/wiki/nonexistant [2]: https://en.wiktionary.org/wiki/nonexistent Change-Id: I8bb482d03c391bd0d37afd5d616229fa50a4ab77 Reviewed-on: https://chromium-review.googlesource.com/c/1390203 Commit-Queue: Yang Guo <yangguo@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Camillo Bruni <cbruni@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#58610}
-
tzik authored
noexcept keyword needs to be consistent between the declaration and implementation in C++17. Bug: v8:8616, chromium:752720 Change-Id: Iff4022c8c4b861ebdbe8e08995af1bc4da866dae Reviewed-on: https://chromium-review.googlesource.com/c/1396459Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Taiju Tsuiki <tzik@chromium.org> Cr-Commit-Position: refs/heads/master@{#58609}
-
v8-ci-autoroll-builder authored
Rolling v8/build: https://chromium.googlesource.com/chromium/src/build/+log/fd2243f..121336d Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/865a64d..c805793 Rolling v8/third_party/depot_tools: https://chromium.googlesource.com/chromium/tools/depot_tools/+log/c0641b8..d16b51b TBR=machenbach@chromium.org,hablich@chromium.org,sergiyb@chromium.org Change-Id: Ibb47078746d71e8f5fb9d893080098e41d73fcf4 Reviewed-on: https://chromium-review.googlesource.com/c/1400145Reviewed-by: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com> Commit-Queue: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com> Cr-Commit-Position: refs/heads/master@{#58608}
-
Frank Tang authored
Sync with latest Intl.RelativeTimeFormat spec. See https://github.com/tc39/proposal-intl-relative-time/pull/99 See https://github.com/tc39/proposal-intl-relative-time/pull/100 Bug: v8:8613 Change-Id: Icc5bb73ecf65e979abc23cc430259584a7bf4b48 Reviewed-on: https://chromium-review.googlesource.com/c/1385930 Commit-Queue: Frank Tang <ftang@chromium.org> Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#58607}
-
Frank Tang authored
Fix intl402/*/ignore-invalid-unicode-ext-values intl/*/check-* Bug: v8:7481 Change-Id: I5c9d7e19c010953ff9503a2e0981fa148278a451 Reviewed-on: https://chromium-review.googlesource.com/c/1396739 Commit-Queue: Frank Tang <ftang@chromium.org> Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#58606}
-
Sathya Gunasekaran authored
Change-Id: Ieed2a202cbbceaad8a598d359fcbd02944edfdb4 Reviewed-on: https://chromium-review.googlesource.com/c/1398685 Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#58605}
-
Frank Tang authored
This is a PARTIAL reland of 8d094249 Only land the newly added tests files Original change's description: > [Intl] Validate u extension type > > Fix intl402/*/ignore-invalid-unicode-ext-values > Add tests for other valid/invalid -u- ext values. > > Bug: v8:7481 > Change-Id: I429effd071bb03599a1e767bb2a9e9918a91b850 > Reviewed-on: https://chromium-review.googlesource.com/c/1351307 > Commit-Queue: Frank Tang <ftang@chromium.org> > Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org> > Cr-Commit-Position: refs/heads/master@{#58173} Bug: v8:7481 Change-Id: I0a1c5701ade330026e2cf7eb554c6390b048a68d Reviewed-on: https://chromium-review.googlesource.com/c/1396737Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org> Commit-Queue: Frank Tang <ftang@chromium.org> Cr-Commit-Position: refs/heads/master@{#58604}
-
- 07 Jan, 2019 16 commits
-
-
Sven Sauleau authored
Fix WebAssembly's global/constructor js-api. Globals with a value of i64 is now valid even if Wasm BigInt feature isn't activated. Bug: v8:8319 Cq-Include-Trybots: luci.chromium.try:linux-blink-rel Change-Id: Ia41ad69efa5253064ecdb8f59b149393cd672b68 Reviewed-on: https://chromium-review.googlesource.com/c/1382747 Commit-Queue: Ben Smith <binji@chromium.org> Reviewed-by: Adam Klein <adamk@chromium.org> Reviewed-by: Ben Smith <binji@chromium.org> Cr-Commit-Position: refs/heads/master@{#58603}
-
Sathya Gunasekaran authored
Change-Id: I1bed84a7aa2004f13a51cc60c4d6596b21968ba8 Bug: v8:6443, v8:7569 Reviewed-on: https://chromium-review.googlesource.com/c/1387995Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Camillo Bruni <cbruni@chromium.org> Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#58602}
-
Joyee Cheung authored
This patch sets the name slot of the private name symbols for private fields and display the names in error messages of invalid private field accesses. TBR: adamk@chromium.org Bug: v8:8144 Change-Id: Id34c468e2bddd1c3001517b4d447c7497402df76 Reviewed-on: https://chromium-review.googlesource.com/c/1374332Reviewed-by: Camillo Bruni <cbruni@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Reviewed-by: Mathias Bynens <mathias@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Mythri Alle <mythria@chromium.org> Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org> Commit-Queue: Joyee Cheung <joyee@igalia.com> Cr-Commit-Position: refs/heads/master@{#58601}
-
Peter Marshall authored
This queue is used for transferring tick samples between the foreground thread which creates them and the background thread which processes them. I've tested this on the node server example that we are using to measure memory use and found that we never fill the queue at this size. The load factor of the queue is basically a measure of how fast the producer pushes to it and how fast the consumer processes samples from it. To load test the configuration a bit I reduced the sampling interval from 1000us (1000 samples/sec) to 50us (20,000 samples/sec). At this rate we still only use 196/251 available slots in the queue at peak load (measurement taken by keeping a running max of #slots used, taken at StartEnqueue()). The default sampling interval is 1000us. 512 KiB ought be enough for anybody! Bug: v8:7719 Change-Id: I93cc1119d3549a319d2db8b831781712bfb88613 Reviewed-on: https://chromium-review.googlesource.com/c/1397704Reviewed-by: Alexei Filippov <alph@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Commit-Queue: Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#58600}
-
Junliang Yan authored
R=joransiu@ca.ibm.com Drive-by: clean up the macro on s390x since it's not used. Change-Id: I317508c1f8a1520ee8873b4323cacd63b8a7cce2 Reviewed-on: https://chromium-review.googlesource.com/c/1398121Reviewed-by: Joran Siu <joransiu@ca.ibm.com> Commit-Queue: Junliang Yan <jyan@ca.ibm.com> Cr-Commit-Position: refs/heads/master@{#58599}
-
Junliang Yan authored
PPC/S390 has been droped 32/31-bit support. So adjust the padding size for 64-bit only. Change-Id: I3533ef4a90bee0b1e6f49aeb61498ce3054e85e7 Reviewed-on: https://chromium-review.googlesource.com/c/1397866Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Junliang Yan <jyan@ca.ibm.com> Cr-Commit-Position: refs/heads/master@{#58598}
-
Jakob Kummerow authored
When the InstructionSelector doesn't have a valid Isolate, it should avoid using it to look up ExternalReferences. Fortunately, this is easy, because the result is only used for a comparison, which in case of invalid Isolate would always fail anyway. Bug: v8:3770 Change-Id: Ie3d65235a22021b05cf0274bf27d91bb7af21023 Reviewed-on: https://chromium-review.googlesource.com/c/1397702 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#58597}
-
Junliang Yan authored
Port ccc068d5 Original Commit Message: This CL does two things: 1. It introduces Call/JumpCodeObject as the bottleneck for all calls to non-heap-constant Code objects; and 2. it dispatches directly to the off-heap entry point for all embedded code. Codegen at runtime remains unchanged to preserve the shorter, branch-less calling sequence. R=jgruber@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com BUG= LOG=N Change-Id: I282a5711fdd481a1fde3569e72f0a6141ebcdf2a Reviewed-on: https://chromium-review.googlesource.com/c/1396501 Commit-Queue: Junliang Yan <jyan@ca.ibm.com> Reviewed-by: Joran Siu <joransiu@ca.ibm.com> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#58596}
-
Camillo Bruni authored
- Directly use VisitFunctionLiteral where possible - Take shortcut for StringLiterals in BuildLoadPropertyKey Change-Id: Ib5c3de3d2bdd354acbfeb607415854ba90622e89 Reviewed-on: https://chromium-review.googlesource.com/c/1382750Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#58595}
-
Clemens Hammacher authored
Use the new macro to define lazily initialized leaky singletons. Avoid the clumsy LazyInstance, which we can hopefully remove soon. R=mlippautz@chromium.org Bug: v8:8600 Change-Id: Ib4d23f275c7ff5ca71fa9b47345284935330ead7 Reviewed-on: https://chromium-review.googlesource.com/c/1397711Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58594}
-
Tamer Tas authored
- Removed the old test. - Created a fake test suite and added a test for loading it with a TestConfig R=machenbach@chromium.org CC=yangguo@chromium.org,sergiyb@chromium.org Bug: v8:8174 Change-Id: Ib7587ceec9e31ecd4cb8f45c3158e73c79a9bc5b Reviewed-on: https://chromium-review.googlesource.com/c/1396082Reviewed-by: Michael Achenbach <machenbach@chromium.org> Commit-Queue: Tamer Tas <tmrts@chromium.org> Cr-Commit-Position: refs/heads/master@{#58593}
-
Sigurd Schneider authored
This CL removes the graph between phase changes. This prevents incorrect path layouting after changing from a phase where a path is displayed that is not a correct path in the phase we change to. Change-Id: Iad80f49efc8d8c71600ad51432981c3a206ef9cb Bug: v8:7327 Reviewed-on: https://chromium-review.googlesource.com/c/1397710Reviewed-by: Georg Neis <neis@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#58592}
-
Camillo Bruni authored
We plan to store additional information that is not related to scopes. The new name will reflect this fact better. Change-Id: I4ddb1017bc255e6ad271e4448848ed630f367d5b Reviewed-on: https://chromium-review.googlesource.com/c/1388538 Commit-Queue: Camillo Bruni <cbruni@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#58591}
-
peterwmwong authored
- Removes build step and bootstrapping associated with building/loading `EXPERIMENTAL_EXTRAS` JS natives. - Removes `--experimental-extras` flag Bug: v8:7624 Change-Id: I4c45fe70da42847545037d63e9f1da77f5957f8b Reviewed-on: https://chromium-review.googlesource.com/c/1397906Reviewed-by: Yang Guo <yangguo@chromium.org> Commit-Queue: Peter Wong <peter.wm.wong@gmail.com> Cr-Commit-Position: refs/heads/master@{#58590}
-
Jaroslav Sevcik authored
Bug: chromium:918763 Change-Id: Ic9faaed6b3194269748ba35740cda0dc8dde3241 Reviewed-on: https://chromium-review.googlesource.com/c/1397707Reviewed-by: Georg Neis <neis@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#58589}
-
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}
-