- 02 Jun, 2017 1 commit
-
-
jarin authored
This is a first step towards reducing the number of stores/loads when suspending/resuming a generator. Unfortunately, even for an empty generator, we still use 8 register for various things (try-finally, copies of generator object, parser-introduced temporaries). I will try to get rid of these in separate CLs. Changes: - SuspendGenerator bytecode now takes register list to save. - ResumeGenerator was split into two bytecodes: * Resume generator reads the state out and marks the generator as 'executing'. * RestoreGeneratorRegisters reloads the registers from the generator. + this required adding support for output register list. - Introduced generator_object_ register in the bytecode generator. * in subsequent CLs, I will make better use of it, the goal is to get rid if the .generator_object local variable. - Taught register optimizer to flush unassigned registers. BUG=v8:6379 Review-Url: https://codereview.chromium.org/2894293003 Cr-Commit-Position: refs/heads/master@{#45675}
-
- 15 May, 2017 1 commit
-
-
Leszek Swirski authored
Introduce a new SwitchSmiTable bytecode for generators, which does a table lookup for the accumulator value in a jump table stored in the constant array pool. This removes the if-else chains at resumable function/loop headers. As a drive-by, add a scoped environment saving struct to the bytecode graph builder. Bug: v8:6351 Bug: v8:6366 Change-Id: I63be15a8b599d6684c7df19dedb8860562678fb0 Reviewed-on: https://chromium-review.googlesource.com/500271 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#45314}
-
- 26 Apr, 2017 1 commit
-
-
Leszek Swirski authored
Instead of calculating the OSR entry point both in the bytecode analysis and in the bytecode graph builder, calculate it once in the analysis and use that calculation in the graph builder. Old TODO from https://codereview.chromium.org/2558093005. Change-Id: I071bc622beb55dc5eddaee25ef28e21fc4b477f0 Reviewed-on: https://chromium-review.googlesource.com/485899 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#44888}
-
- 25 Jan, 2017 1 commit
-
-
mstarzinger authored
This fixes the checks of accumulator usage flags in the computation of the interpreter register liveness during bytecode analysis. The usage flags at hand are bit patterns as opposed to flat enum values. Use the safe accessors instead of plain comparison. R=jarin@chromium.org TEST=mjsunit/regress/regress-crbug-683581 BUG=chromium:683581 Review-Url: https://codereview.chromium.org/2651653005 Cr-Commit-Position: refs/heads/master@{#42648}
-
- 15 Dec, 2016 1 commit
-
-
leszeks authored
Adds assignment tracking to the bytecode analysis pass, and updates bytecode graph builder to only create LoopExitValues for assigned values. Review-Url: https://codereview.chromium.org/2558093005 Cr-Commit-Position: refs/heads/master@{#41719}
-
- 08 Dec, 2016 1 commit
-
-
leszeks authored
Wrap the liveness bitvectors from the bytecode liveness analysis with a helper class, which makes the register/accumulator bits explicit. Review-Url: https://codereview.chromium.org/2552723004 Cr-Commit-Position: refs/heads/master@{#41589}
-
- 05 Dec, 2016 1 commit
-
-
leszeks authored
This allows us to optimise the bytecode liveness analysis to jump directly to previously seen indices. The analysis is optimised to store a stack of loop ends (JumpLoop bytecode indices), and iterate through these indices directly rather than looping through the bytecode array to find them. Review-Url: https://codereview.chromium.org/2536653003 Cr-Commit-Position: refs/heads/master@{#41485}
-
- 01 Dec, 2016 1 commit
-
-
mstarzinger authored
This moves the location of the bytecode-offset translation that turns offsets of back jumps into offsets of loop headers. This translation is now done by the {BytecodeGraphBuilder} after loop analysis has been performed. It safes one redudant iteration over the bytecode array. Note that this changes the semantics of the BailoutId used as an {osr_ast_id} throughout the compiler pipeline for OSR from Ignition. R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2465913002 Cr-Commit-Position: refs/heads/master@{#41431}
-
- 29 Nov, 2016 4 commits
-
-
leszeks authored
Since the majority of bytecodes have a next instruction, and we iterate over the bytecodes backwards, we can keep the previous seen (i.e. sequentially next) bytecode's liveness on a variable instead of looking it up again. Review-Url: https://codereview.chromium.org/2541463002 Cr-Commit-Position: refs/heads/master@{#41361}
-
leszeks authored
Replaces the graph-based liveness analyzer in the bytecode graph builder with an initial bytecode-based liveness analysis pass, which is added to the existing loop extent analysis. Now the StateValues in the graph have their inputs initialised to optimized_out, rather than being modified after the graph is built. Review-Url: https://codereview.chromium.org/2523893003 Cr-Commit-Position: refs/heads/master@{#41355}
-
leszeks authored
Revert of [ignition/turbo] Perform liveness analysis on the bytecodes (patchset #17 id:320001 of https://codereview.chromium.org/2523893003/ ) Reason for revert: Breaks the build: https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20shared/builds/14886 Original issue's description: > [ignition/turbo] Perform liveness analysis on the bytecodes > > Replaces the graph-based liveness analyzer in the bytecode graph builder > with an initial bytecode-based liveness analysis pass, which is added to > the existing loop extent analysis. > > Now the StateValues in the graph have their inputs initialised to > optimized_out, rather than being modified after the graph is built. > > Committed: https://crrev.com/1852300954c216c29cf93444430681d213e87925 > Cr-Commit-Position: refs/heads/master@{#41344} TBR=jarin@chromium.org,rmcilroy@chromium.org,yangguo@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/2541443002 Cr-Commit-Position: refs/heads/master@{#41346}
-
leszeks authored
Replaces the graph-based liveness analyzer in the bytecode graph builder with an initial bytecode-based liveness analysis pass, which is added to the existing loop extent analysis. Now the StateValues in the graph have their inputs initialised to optimized_out, rather than being modified after the graph is built. Review-Url: https://codereview.chromium.org/2523893003 Cr-Commit-Position: refs/heads/master@{#41344}
-
- 22 Nov, 2016 1 commit
-
-
leszeks authored
Now that we have a JumpLoop bytecode, we can heavily simplify the branch/loop analysis by assuming that only JumpLoop bytecodes are backwards edges, and performing the loop analysis as a single (backwards) pass. This allows us to get rid of the branch analysis entirely, and builds a framework to do liveness analysis in the same pass. Review-Url: https://codereview.chromium.org/2519983002 Cr-Commit-Position: refs/heads/master@{#41194}
-