- 29 Nov, 2016 2 commits
-
-
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
-
-
bmeurer authored
TurboFan can indeed comsume NumberOrOddball feedback for abstract relational comparisons, so we should just provide it from Ignition. Drive-by-fix: Add a DCHECK to protect against abstract/strict equality number comparison accidentially utilizing Oddball feedback. BUG=v8:5267,v8:5400 R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2518283002 Cr-Commit-Position: refs/heads/master@{#41166}
-
- 21 Nov, 2016 5 commits
-
-
leszeks authored
This pre-calculates and stores a vector of bytecode offsets, and then allows one to iterate over it backwards. This could probably be adapted to a bidirectional/random access iterator if we wanted to, but for now reverse is all we need. Review-Url: https://codereview.chromium.org/2518003002 Cr-Commit-Position: refs/heads/master@{#41153}
-
leszeks authored
Refactors the bytecode array iterator to separate the iteration and the bytecode parameter access, placing the latter into a separate super-class. This will allow us to have other forms of access, e.g. reverse iteration. Review-Url: https://codereview.chromium.org/2519923002 Cr-Commit-Position: refs/heads/master@{#41152}
-
mstarzinger authored
This renames the {operand_stack} field to {register_file}, to refelct how said field is used on all {JSGeneratorObject} instances by now. This is a pure refactoring CL, not changes in semantics. R=neis@chromium.org Review-Url: https://codereview.chromium.org/2520913002 Cr-Commit-Position: refs/heads/master@{#41140}
-
rmcilroy authored
Revert of [Interpreter] Collect NumberOrOddball feedback in CompareOps. (patchset #2 id:20001 of https://codereview.chromium.org/2506283003/ ) Reason for revert: Turbofan doesn't do proper ToNumber conversions on NumberOrOddball equality conversions. BUG=v8:5660 Original issue's description: > [Interpreter] Collect NumberOrOddball feedback in CompareOps. > > Collect feedback for oddballs in the interpreter compare operations handlers. > This is important to ensure that we don't consider oddball comparisons as > generic, which prevents optimization. > > BUG=chromium:660947 > > Committed: https://crrev.com/721e74d9d942fd4f2e3392ea9626d9d404dbbbd0 > Cr-Commit-Position: refs/heads/master@{#41081} TBR=bmeurer@chromium.org # Not skipping CQ checks because original CL landed more than 1 days ago. BUG=chromium:660947 Review-Url: https://codereview.chromium.org/2517133002 Cr-Commit-Position: refs/heads/master@{#41134}
-
yangguo authored
Stepping in a generator now behaves similar to stepping inside an async function. Stepping in or next at a yield expression will result in a break inside the same generator when we return to the generator. Behavior of step-out does not change. R=jgruber@chromium.org, neis@chromium.org BUG=chromium:496865 Review-Url: https://codereview.chromium.org/2519853002 Cr-Commit-Position: refs/heads/master@{#41132}
-
- 18 Nov, 2016 4 commits
-
-
ishell authored
This is a next step towards removing names table from type feedback metadata. BUG=chromium:576312, v8:5561 Review-Url: https://codereview.chromium.org/2507143003 Cr-Commit-Position: refs/heads/master@{#41106}
-
franzih authored
Add bytecode for defining data properties, which initially just calls the runtime function. BUG=v8:5624 Review-Url: https://codereview.chromium.org/2510743002 Cr-Commit-Position: refs/heads/master@{#41101}
-
machenbach authored
Revert of [interpreter] Properly collect rhs feedback for comparisons with oddballs. (patchset #1 id:1 of https://codereview.chromium.org/2513903002/ ) Reason for revert: Seems to break layout tests: https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/11452 Original issue's description: > [interpreter] Properly collect rhs feedback for comparisons with oddballs. > > Ignition skipped collecting NumberOrOddball feedback if the right hand > side of a relational comparison is undefined, thus leading to a > deoptimization loop, because it reported Number feedback to TurboFan. > > This was caught on 3d-raytrace test of SunSpider. > > R=rmcilroy@chromium.org > > Committed: https://crrev.com/d240ffec32ae034e50c006f7d5715171b32bbbc4 > Cr-Commit-Position: refs/heads/master@{#41094} TBR=rmcilroy@chromium.org,bmeurer@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/2511243004 Cr-Commit-Position: refs/heads/master@{#41100}
-
bmeurer authored
Ignition skipped collecting NumberOrOddball feedback if the right hand side of a relational comparison is undefined, thus leading to a deoptimization loop, because it reported Number feedback to TurboFan. This was caught on 3d-raytrace test of SunSpider. R=rmcilroy@chromium.org Review-Url: https://codereview.chromium.org/2513903002 Cr-Commit-Position: refs/heads/master@{#41094}
-
- 17 Nov, 2016 2 commits
-
-
rmcilroy authored
Collect feedback for oddballs in the interpreter compare operations handlers. This is important to ensure that we don't consider oddball comparisons as generic, which prevents optimization. BUG=chromium:660947 Review-Url: https://codereview.chromium.org/2506283003 Cr-Commit-Position: refs/heads/master@{#41081}
-
rmcilroy authored
Collect string feedback for compare operations. Without this, functions which have a lot of string compare operations end up with a high generic type percentage, and don't get optimized until very late. Currently TurboFan doesn't use this String feedback for compare operations, but this could be done in future work if it is useful. BUG=chromium:660947 Review-Url: https://codereview.chromium.org/2506013005 Cr-Commit-Position: refs/heads/master@{#41078}
-
- 16 Nov, 2016 4 commits
-
-
ishell authored
The reasons are: 1) The names dictionaries in the feedback metadata seems to consume a lot of memory and the idea didn't payoff. 2) The absence of a name parameter blocks data handlers support in LoadGlobalIC. This CL reverts a part of r37278 (https://codereview.chromium.org/2096653003/). BUG=chromium:576312, v8:5561 Review-Url: https://codereview.chromium.org/2510653002 Cr-Commit-Position: refs/heads/master@{#41046}
-
jkummerow authored
This is in preparation for introducing more specialized CodeStubAssembler subclasses. The state object can be handed around, while the Assembler instances are temporary-scoped. BUG=v8:5628 Original review: https://codereview.chromium.org/2498073002/ Review-Url: https://codereview.chromium.org/2502293002 Cr-Commit-Position: refs/heads/master@{#41028}
-
rmcilroy authored
Adds a bytecode to set and retrieve the pending message. This avoids a runtime call in finally blocks, and also ensures that TurboFan builds a graph using the SetMessage / LoadMessage nodes instead of inserting a runtime call. BUG=chromium:662334 Review-Url: https://codereview.chromium.org/2501503005 Cr-Commit-Position: refs/heads/master@{#41023}
-
machenbach authored
Revert of [refactoring] Split CodeAssemblerState out of CodeAssembler (patchset #8 id:140001 of https://codereview.chromium.org/2498073002/ ) Reason for revert: https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20shared doesn't want to compile. Missing export annotation? Original issue's description: > [refactoring] Split CodeAssemblerState out of CodeAssembler > > This is in preparation for introducing more specialized > CodeStubAssembler subclasses. The state object can be handed > around, while the Assembler instances are temporary-scoped. > > BUG=v8:5628 TBR=ishell@chromium.org,mstarzinger@chromium.org,jkummerow@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:5628 Review-Url: https://codereview.chromium.org/2504913002 Cr-Commit-Position: refs/heads/master@{#41018}
-
- 15 Nov, 2016 1 commit
-
-
jkummerow authored
This is in preparation for introducing more specialized CodeStubAssembler subclasses. The state object can be handed around, while the Assembler instances are temporary-scoped. BUG=v8:5628 Review-Url: https://codereview.chromium.org/2498073002 Cr-Commit-Position: refs/heads/master@{#41015}
-
- 14 Nov, 2016 3 commits
-
-
tebbi authored
This CL enables precise source positions for all V8 compilers. It merges compiler::SourcePosition and internal::SourcePosition to a single class used throughout the codebase. The new internal::SourcePosition instances store an id identifying an inlined function in addition to a script offset. SourcePosition::InliningId() refers to a the new table DeoptimizationInputData::InliningPositions(), which provides the following data for every inlining id: - The inlined SharedFunctionInfo as an offset into DeoptimizationInfo::LiteralArray - The SourcePosition of the inlining. Recursively, this yields the full inlining stack. Before the Code object is created, the same information can be found in CompilationInfo::inlined_functions(). If SourcePosition::InliningId() is SourcePosition::kNotInlined, it refers to the outer (non-inlined) function. So every SourcePosition has full information about its inlining stack, as long as the corresponding Code object is known. The internal represenation of a source position is a positive 64bit integer. All compilers create now appropriate source positions for inlined functions. In the case of Turbofan, this required using AstGraphBuilderWithPositions for inlined functions too. So this class is now moved to a header file. At the moment, the additional information in source positions is only used in --trace-deopt and --code-comments. The profiler needs to be updated, at the moment it gets the correct script offsets from the deopt info, but the wrong script id from the reconstructed deopt stack, which can lead to wrong outputs. This should be resolved by making the profiler use the new inlining information for deopts. I activated the inlined deoptimization tests in test-cpu-profiler.cc for Turbofan, changing them to a case where the deopt stack and the inlining position agree. It is currently still broken for other cases. The following additional changes were necessary: - The source position table (internal::SourcePositionTableBuilder etc.) supports now 64bit source positions. Encoding source positions in a single 64bit int together with the difference encoding in the source position table results in very little overhead for the inlining id, since only 12% of the source positions in Octane have a changed inlining id. - The class HPositionInfo was effectively dead code and is now removed. - SourcePosition has new printing and information facilities, including computing a full inlining stack. - I had to rename compiler/source-position.{h,cc} to compiler/compiler-source-position-table.{h,cc} to avoid clashes with the new src/source-position.cc file. - I wrote the new wrapper PodArray for ByteArray. It is a template working with any POD-type. This is used in DeoptimizationInputData::InliningPositions(). - I removed HInlinedFunctionInfo and HGraph::inlined_function_infos, because they were only used for the now obsolete Crankshaft inlining ids. - Crankshaft managed a list of inlined functions in Lithium: LChunk::inlined_functions. This is an analog structure to CompilationInfo::inlined_functions. So I removed LChunk::inlined_functions and made Crankshaft use CompilationInfo::inlined_functions instead, because this was necessary to register the offsets into the literal array in a uniform way. This is a safe change because LChunk::inlined_functions has no other uses and the functions in CompilationInfo::inlined_functions have a strictly longer lifespan, being created earlier (in Hydrogen already). BUG=v8:5432 Review-Url: https://codereview.chromium.org/2451853002 Cr-Commit-Position: refs/heads/master@{#40975}
-
rmcilroy authored
This removes the POSSIBLY_EVAL_CALL call type, and instead uses OTHER_CALL or WITH_CALL to decide whether to do the special LOOKUP_SLOT_CALL runtime call to find the callee and possibly update the receiver with the with-object. This means that eval calls out of 'with' blocks can now just do a normal LdaLookupGlobalSlot operation, which can check the context chain for eval extentions and fast-path the lookup if none exist. BUG=661556 Review-Url: https://codereview.chromium.org/2487483004 Cr-Commit-Position: refs/heads/master@{#40965}
-
verwaest authored
This replaces LOOKUP_SLOT_CALL with WITH_CALL, and relies on regular lookup-slot handling in variable load to support other lookup slots (variables resolved in the context of sloppy eval). This allows optimizations for such variable loads to kick in for calls as well. We only need special handling for function calls in the context of with, since it changes the receiver of the call from undefined/global to the with-object. This currently doesn't yet make it work for the direct eval call itself, since the POSSIBLY_EVAL_CALL flag is also used to deal with direct eval later. BUG= Review-Url: https://codereview.chromium.org/2480253006 Cr-Commit-Position: refs/heads/master@{#40962}
-
- 11 Nov, 2016 2 commits
-
-
ulan authored
BUG=v8:5614 Review-Url: https://codereview.chromium.org/2493183002 Cr-Commit-Position: refs/heads/master@{#40918}
-
mythria authored
Fast case the monomorphic case, by marking the additional checks as deferred blocks. This increases the code size by about 50 bytes, but the monmorphic case requires one fewer jump and the all the code is contiguous, so may help caching. Also cleanup call and new bytecode handlers by changing some of the Branches to GotoIf/Unless for better readability. BUG=v8:4280 Review-Url: https://codereview.chromium.org/2487573005 Cr-Commit-Position: refs/heads/master@{#40910}
-
- 10 Nov, 2016 3 commits
-
-
rmcilroy authored
BUG=chromium:664146 Review-Url: https://codereview.chromium.org/2495543002 Cr-Commit-Position: refs/heads/master@{#40904}
-
ulan authored
BUG=v8:5614 Review-Url: https://codereview.chromium.org/2492553003 Cr-Commit-Position: refs/heads/master@{#40886}
-
rmcilroy authored
We seem to get some small wins from avoiding the Ldr bytecodes, probably due to reduced icache pressure since there are less bytecode handlers. Replace the Ldr bytecodes with Star lookahead inlined into the Lda versions. Also fixes IsAccumulatorLoadWithoutEffects to include LdaContextSlot and LdaCurrentContextSlot BUG=v8:4280 Review-Url: https://codereview.chromium.org/2489513005 Cr-Commit-Position: refs/heads/master@{#40883}
-
- 09 Nov, 2016 3 commits
-
-
ishell authored
... and make them applicable outside of CSA. Nice bonus is that the assert condition instructions will now appear inside [Assert / ]Assert brackets. BUG= Review-Url: https://codereview.chromium.org/2489743002 Cr-Commit-Position: refs/heads/master@{#40869}
-
kozyatinskiy authored
Currently function like "() => 239" contains offset 3 as begin of function and 8 as end of function. This CL changes this to 6 and 9 respectively. BUG=chromium:566801 R=yangguo@chromium.org,dgozman@chromium.org TBR=adamk@chromium.org CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel Review-Url: https://codereview.chromium.org/2488493003 Cr-Commit-Position: refs/heads/master@{#40864}
-
rmcilroy authored
The Ldr[Named/Keyed]Property bytecodes are problematic for the deoptimizer when inlining accessors in TurboFan. Remove them and replace with a Star lookahead in the bytecode handlers for Lda[Named/Keyed]Property. BUG=v8:4280 Review-Url: https://codereview.chromium.org/2485383002 Cr-Commit-Position: refs/heads/master@{#40860}
-
- 08 Nov, 2016 3 commits
-
-
rmcilroy authored
BUG=chromium:662418 Review-Url: https://codereview.chromium.org/2473223004 Cr-Commit-Position: refs/heads/master@{#40846}
-
yangguo authored
R=jgruber@chromium.org, mstarzinger@chromium.org BUG=v8:5610 Review-Url: https://codereview.chromium.org/2482133002 Cr-Commit-Position: refs/heads/master@{#40827}
-
neis authored
This introduces two new bytecodes LdaModuleVariable and StaModuleVariable, replacing the corresponding runtime calls. Support in the bytecode graph builder exists only in the form of runtime calls. BUG=v8:1569 Review-Url: https://codereview.chromium.org/2471033004 Cr-Commit-Position: refs/heads/master@{#40825}
-
- 07 Nov, 2016 2 commits
-
-
neis authored
The existing Load/StoreContextElement operations take the index as an int. This CL adds versions that take the index as a Node. These already existed in the interpreter-assembler, from which they are now removed. R=mstarzinger@chromium.org, rmcilroy@chromium.org BUG= Review-Url: https://codereview.chromium.org/2473003004 Cr-Commit-Position: refs/heads/master@{#40810}
-
neis authored
This makes use of the newly introduced cell indices to speed up variable accesses. Imports and local exports are now directly stored in (separate) arrays. In the future, we may merge the two arrays into a single one, or even into the module context. This CL also replaces the LoadImport and LoadExport runtime functions with a single LoadVariable taking a variable index as argument (rather than a name). BUG=v8:1569 Review-Url: https://codereview.chromium.org/2465283004 Cr-Commit-Position: refs/heads/master@{#40808}
-
- 04 Nov, 2016 1 commit
-
-
neis authored
- Remove (one version of) InterpreterAssembler::LoadContextSlot in favor of the identical CodeStubAssembler::LoadContextElement. - Use CodeStubAssembler::LoadNativeContext instead of doing the load manually. R=rmcilroy@chromium.org BUG= Review-Url: https://codereview.chromium.org/2470253003 Cr-Commit-Position: refs/heads/master@{#40766}
-
- 02 Nov, 2016 1 commit
-
-
verwaest authored
This reduces per-scope overhead from minimally 6 words to 2 words, with one additional pointer per entry, rather than an average of 2 per entry for larger-than-4 element lists. For temp zone parsed functions it additionally makes the declaration-list actually freeable. This introduces ThreadedList to implement the details of dealing with such a list. BUG=v8:5209 Review-Url: https://codereview.chromium.org/2457393003 Cr-Commit-Position: refs/heads/master@{#40703}
-
- 28 Oct, 2016 2 commits
-
-
leszeks authored
The majority of context slot accesses are to the local context (current context register and depth 0), so this adds bytecodes to optimise for that case. This cuts down bytecode size by roughly 1% (measured on Octane and Top25). Review-Url: https://codereview.chromium.org/2459513002 Cr-Commit-Position: refs/heads/master@{#40641}
-
cbruni authored
BUG= Review-Url: https://codereview.chromium.org/2446073002 Cr-Commit-Position: refs/heads/master@{#40638}
-
- 27 Oct, 2016 1 commit
-
-
leszeks authored
This is a new bytecode which behaves (for now) exactly like Call, except that in turbofan graph building we can set the ConvertReceiverMode to NotNullOrUndefined. I observe a 1% improvement on Box2D, I'd expect a similar improvement on other OOP heavy code. Review-Url: https://codereview.chromium.org/2450243002 Cr-Commit-Position: refs/heads/master@{#40610}
-