- 15 Dec, 2016 1 commit
-
-
rmcilroy authored
Templatizes the AccumulatorUsage and OperandType for BytecodeNode creation and BytecodeRegisterOptimizer::PrepareForBytecode. This allows the compiler to statically know whether the bytecode being created accesses the accumulator and what operand types need scaling, avoiding runtime checks in the code. Also removes BytecodeNode::set_bytecode methods. Review-Url: https://codereview.chromium.org/2542903003 Cr-Commit-Position: refs/heads/master@{#41706}
-
- 24 Oct, 2016 1 commit
-
-
rmcilroy authored
Modify the Bytecode Register Optimizer to be an independent component rather than part of the BytecodePipeline. This means the BytecodeArrayBuilder can explicitly call it with register operands when outputting a bytecode and the Bytecode Register Optimizer doesn't need to work out which operands are register operands. This also means we don't need to build BytecodeNodes for Ldar / Star / Mov bytecodes unless they are actually emitted by the optimizer. This change also modifies the way the BytecodeArrayBuilder converts operands to make use of the OperandTypes specified in bytecodes.h. This avoids having to individually convert operands to their raw output value before calling Output(...). BUG=v8:4280 Review-Url: https://codereview.chromium.org/2393683004 Cr-Commit-Position: refs/heads/master@{#40543}
-
- 17 Oct, 2016 1 commit
-
-
jochen authored
R=machenbach@chromium.org,titzer@chromium.org,bmeurer@chromium.org,jgruber@chromium.org BUG= CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_win_dbg,v8_mac_dbg;master.tryserver.chromium.android:android_arm64_dbg_recipe Review-Url: https://codereview.chromium.org/2416243002 Cr-Commit-Position: refs/heads/master@{#40350}
-
- 22 Sep, 2016 2 commits
-
-
rmcilroy authored
This CL optimizes the code in BytecodeArrayBuilder and BytecodeArrayWriter by making the following main changes: - Move operand scale calculation out of BytecodeArrayWriter to the BytecodeNode constructor, where the decision on which operands are scalable can generally be statically decided by the compiler. - Move the maximum register calculation out of BytecodeArrayWriter and into BytecodeRegisterOptimizer (which is the only place outside BytecodeGenerator which updates which registers are used). This avoids the BytecodeArrayWriter needing to know the operand types of a node as it writes it. - Modify EmitBytecodes to use individual push_backs rather than building a buffer and calling insert, since this turns out to be faster. - Initialize BytecodeArrayWriter's bytecode vector by reserving 512 bytes, - Make common functions in Bytecodes constexpr so that they can be statically calculated by the compiler. - Move common functions and constructors in Bytecodes and BytecodeNode to the header so that they can be inlined. - Change large static switch statements in Bytecodes to const array lookups, and move to the header to allow inlining. I also took the opportunity to remove a number of unused helper functions, and rework some others for consistency. This reduces the percentage of time spent in making BytecodeArrays in CodeLoad from ~15% to ~11% according to perf. The CoadLoad score increase by around 2%. BUG=v8:4280 Committed: https://crrev.com/b11a8b4d41bf09d6b3d6cf214fe3fb61faf01a64 Review-Url: https://codereview.chromium.org/2351763002 Cr-Original-Commit-Position: refs/heads/master@{#39599} Cr-Commit-Position: refs/heads/master@{#39637}
-
hablich authored
Revert of [Interpreter] Optimize BytecodeArrayBuilder and BytecodeArrayWriter. (patchset #6 id:200001 of https://codereview.chromium.org/2351763002/ ) Reason for revert: Prime suspect for roll blocker: https://codereview.chromium.org/2362503002/ Original issue's description: > [Interpreter] Optimize BytecodeArrayBuilder and BytecodeArrayWriter. > > This CL optimizes the code in BytecodeArrayBuilder and > BytecodeArrayWriter by making the following main changes: > > - Move operand scale calculation out of BytecodeArrayWriter to the > BytecodeNode constructor, where the decision on which operands are > scalable can generally be statically decided by the compiler. > - Move the maximum register calculation out of BytecodeArrayWriter > and into BytecodeRegisterOptimizer (which is the only place outside > BytecodeGenerator which updates which registers are used). This > avoids the BytecodeArrayWriter needing to know the operand types > of a node as it writes it. > - Modify EmitBytecodes to use individual push_backs rather than > building a buffer and calling insert, since this turns out to be faster. > - Initialize BytecodeArrayWriter's bytecode vector by reserving 512 > bytes, > - Make common functions in Bytecodes constexpr so that they > can be statically calculated by the compiler. > - Move common functions and constructors in Bytecodes and > BytecodeNode to the header so that they can be inlined. > - Change large static switch statements in Bytecodes to const array > lookups, and move to the header to allow inlining. > > I also took the opportunity to remove a number of unused helper > functions, and rework some others for consistency. > > This reduces the percentage of time spent in making BytecodeArrays > in CodeLoad from ~15% to ~11% according to perf. The > CoadLoad score increase by around 2%. > > BUG=v8:4280 > > Committed: https://crrev.com/b11a8b4d41bf09d6b3d6cf214fe3fb61faf01a64 > Cr-Commit-Position: refs/heads/master@{#39599} TBR=mythria@chromium.org,leszeks@chromium.org,rmcilroy@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4280 Review-Url: https://codereview.chromium.org/2360193003 Cr-Commit-Position: refs/heads/master@{#39612}
-
- 21 Sep, 2016 1 commit
-
-
rmcilroy authored
This CL optimizes the code in BytecodeArrayBuilder and BytecodeArrayWriter by making the following main changes: - Move operand scale calculation out of BytecodeArrayWriter to the BytecodeNode constructor, where the decision on which operands are scalable can generally be statically decided by the compiler. - Move the maximum register calculation out of BytecodeArrayWriter and into BytecodeRegisterOptimizer (which is the only place outside BytecodeGenerator which updates which registers are used). This avoids the BytecodeArrayWriter needing to know the operand types of a node as it writes it. - Modify EmitBytecodes to use individual push_backs rather than building a buffer and calling insert, since this turns out to be faster. - Initialize BytecodeArrayWriter's bytecode vector by reserving 512 bytes, - Make common functions in Bytecodes constexpr so that they can be statically calculated by the compiler. - Move common functions and constructors in Bytecodes and BytecodeNode to the header so that they can be inlined. - Change large static switch statements in Bytecodes to const array lookups, and move to the header to allow inlining. I also took the opportunity to remove a number of unused helper functions, and rework some others for consistency. This reduces the percentage of time spent in making BytecodeArrays in CodeLoad from ~15% to ~11% according to perf. The CoadLoad score increase by around 2%. BUG=v8:4280 Review-Url: https://codereview.chromium.org/2351763002 Cr-Commit-Position: refs/heads/master@{#39599}
-
- 20 Sep, 2016 1 commit
-
-
heimbuef authored
This is some initial cleanup to keep /src clean. The AccountingAllocator is actually exclusively used by zones and this common subfolder makes that more clear. BUG=v8:5409 Review-Url: https://codereview.chromium.org/2344143003 Cr-Commit-Position: refs/heads/master@{#39558}
-
- 23 Aug, 2016 1 commit
-
-
epertoso authored
Drive-by fix: the order of parameters in the BinaryOpWithFeedback TurboFan code stubs now reflects the convention of having the context at the end. BUG=v8:5273 Review-Url: https://codereview.chromium.org/2263253002 Cr-Commit-Position: refs/heads/master@{#38832}
-
- 18 Aug, 2016 1 commit
-
-
rmcilroy authored
Removes all accesses to the Isolate during bytecode generation and the bytecode pipeline. Adds an DisallowIsolateAccessScope which is used to enforce this invariant within the BytecodeGenerator. BUG=v8:5203 Review-Url: https://codereview.chromium.org/2242193002 Cr-Commit-Position: refs/heads/master@{#38716}
-
- 25 Jul, 2016 1 commit
-
-
klaasb authored
ToName was always generated with a subsequent Star, fuse them. Requires a few changes in the peephole optimizer as ToName cannot be elided as easily, but must be replaced by Star. BUG=v8:4280 LOG=n Review-Url: https://codereview.chromium.org/2169813002 Cr-Commit-Position: refs/heads/master@{#38019}
-
- 15 Jul, 2016 1 commit
-
-
oth authored
> Original issue's description: > [interpreter] Reduce dependencies in bytecodes.{h,cc} > > This CL reduces the number of dependencies bytecodes.{h,cc} to facilitate > generating the bytecode peephole optimizer table during build. Specifically, > it avoids depending on v8_base. > > BUG=v8:4280 > LOG=N > > Committed: https://crrev.com/4edebb1cd870ae6c1359ad54f83e618e185883b1 > Cr-Commit-Position: refs/heads/master@{#37715} BUG=v8:4280 LOG=N Review-Url: https://codereview.chromium.org/2149093002 Cr-Commit-Position: refs/heads/master@{#37794}
-
- 14 Jul, 2016 1 commit
-
-
machenbach authored
Revert of [interpreter] Reduce dependencies in bytecodes.{h,cc} (patchset #8 id:140001 of https://codereview.chromium.org/2135273002/ ) Reason for revert: Breaks the roll, possibly win gn: https://codereview.chromium.org/2148863002/ Original issue's description: > [interpreter] Reduce dependencies in bytecodes.{h,cc} > > This CL reduces the number of dependencies bytecodes.{h,cc} to facilitate > generating the bytecode peephole optimizer table during build. Specifically, > it avoids depending on v8_base. > > BUG=v8:4280 > LOG=N > > Committed: https://crrev.com/4edebb1cd870ae6c1359ad54f83e618e185883b1 > Cr-Commit-Position: refs/heads/master@{#37715} TBR=mstarzinger@chromium.org,rmcilroy@chromium.org,oth@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4280 Review-Url: https://codereview.chromium.org/2151693003 Cr-Commit-Position: refs/heads/master@{#37743}
-
- 13 Jul, 2016 1 commit
-
-
oth authored
This CL reduces the number of dependencies bytecodes.{h,cc} to facilitate generating the bytecode peephole optimizer table during build. Specifically, it avoids depending on v8_base. BUG=v8:4280 LOG=N Review-Url: https://codereview.chromium.org/2135273002 Cr-Commit-Position: refs/heads/master@{#37715}
-
- 05 Jul, 2016 1 commit
-
-
oth authored
Introduces fused bytecodes for fusing LdaSmi followed by a binary op bytecode. The chosen bytecodes are used frequently in Octane: AddSmi, SubSmi, BitwiseOrSmi, BitwiseAndSmi, ShiftLeftSmi, ShiftRightSmi. There are additional code stubs for these operations that are biased towards both the left hand and right hand operands being Smis. BUG=v8:4280 LOG=N Review-Url: https://codereview.chromium.org/2111923002 Cr-Commit-Position: refs/heads/master@{#37531}
-
- 28 Jun, 2016 1 commit
-
-
oth authored
Simplify bytecode array writing and remove some now unused bytecode traits definitions. BUG=v8:4280 LOG=N Review-Url: https://codereview.chromium.org/2100793003 Cr-Commit-Position: refs/heads/master@{#37321}
-
- 21 Jun, 2016 1 commit
-
-
oth authored
Add explicit state in BytecodeSourceInfo to simplify checks for validity and whether a statement or expression position. Remove BytecodeSourceInfo::Update which inherited rules for updating source position information during bytecode building. BUG=v8:4280 LOG=N Review-Url: https://codereview.chromium.org/2048203002 Cr-Commit-Position: refs/heads/master@{#37136}
-
- 10 Jun, 2016 1 commit
-
-
oth authored
BUG=v8:4280 LOG=N Review-Url: https://codereview.chromium.org/2041913002 Cr-Commit-Position: refs/heads/master@{#36885}
-
- 09 Jun, 2016 1 commit
-
-
oth authored
With this change the bytecode array builder only emits expression positions for bytecodes that can throw. This allows more peephole optimization opportunities and results in smaller code. BUG=v8:4280,chromium:615979 LOG=N Review-Url: https://codereview.chromium.org/2038323002 Cr-Commit-Position: refs/heads/master@{#36863}
-
- 03 Jun, 2016 1 commit
-
-
rmcilroy authored
This moves processing of jumps out of bytecode array builder and into bytecode array writer. This simplifies the pipeline by avoiding having to flush for offset and patch up offsets in bytecode array builder based on what was emitted by the bytecode array writer. This also enables future refactorings to add dead code elimination back into the pipeline, and move processing of scalable operand sizes to the end of the pipeline (in the bytecode array writer) rather than having to deal with scalable operand types throughout pipeline. BUG=v8:4280,chromium:616064 Review-Url: https://codereview.chromium.org/2035813002 Cr-Commit-Position: refs/heads/master@{#36716}
-
- 27 May, 2016 1 commit
-
-
oth authored
Online optimization stage for reducing redundant transfers between registers. BUG=V8:4280 LOG=N Review-Url: https://codereview.chromium.org/1997653002 Cr-Commit-Position: refs/heads/master@{#36551}
-
- 25 May, 2016 1 commit
-
-
oth authored
This change introduces five fused bytecodes for common bytecode sequences on popular websites. These are LdrNamedProperty, LdrKeyedProperty, LdrGlobal, LdrContextSlot, and LdrUndefined. These load values into a destination register operand instead of the accumulator. They are emitted by the peephole optimizer. BUG=v8:4280 LOG=N Review-Url: https://codereview.chromium.org/1985753002 Cr-Commit-Position: refs/heads/master@{#36507}
-
- 23 May, 2016 1 commit
-
-
oth authored
The original peephole optimizer logic in the BytecodeArrayBuilder did not respect source positions as it was written before there were bytecode source positions. This led to some minor differences to FCG and was problematic when combined with pending bytecode optimizations. This change makes the new peephole optimizer fully respect source positions. BUG=v8:4280 LOG=N Review-Url: https://codereview.chromium.org/1998203002 Cr-Commit-Position: refs/heads/master@{#36439}
-
- 12 May, 2016 1 commit
-
-
oth authored
This change introduces a pipeline for the final stages of bytecode generation. The peephole optimizer is made distinct from the BytecodeArrayBuilder. A new BytecodeArrayWriter is responsible for writing bytecode. It also keeps track of the maximum register seen and offers a potentially smaller frame size. R=rmcilroy@chromium.org LOG=N BUG=v8:4280 Review-Url: https://codereview.chromium.org/1947403002 Cr-Commit-Position: refs/heads/master@{#36220}
-