- 02 May, 2016 2 commits
-
-
mstarzinger authored
This removes the CompilationInfoWithZone class, which was used to allocate a CompilationInfo on the C-heap. By now the CompilationJob is the single object being allocated on the C-heap and passed between the main thread and the compilation thread. Structs requiring destruction can be embedded within that CompilationJob. This simplifies involved lifetimes by coupling all lifetimes to one single object. R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/1930773003 Cr-Commit-Position: refs/heads/master@{#35936}
-
bmeurer authored
It is unsound to look at the types in the TurboFan graphs after the representation selection (and early optimization) phases, because (a) the remaining phases (might) run concurrently, and (b) the types may not be accurate (or even correct) after representation selection due to the way we deal with truncations. So in Debug builds we now explicitly remove all types from the nodes right after we uninstall the Typer decorator from the Graph, so any further attempt to access the Type of a Node will lead to a crash (again in Debug only for now). CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux64_tsan_rel BUG=v8:4969 LOG=n Review-Url: https://codereview.chromium.org/1937803002 Cr-Commit-Position: refs/heads/master@{#35920}
-
- 30 Apr, 2016 1 commit
-
-
bmeurer authored
Further refactor the pipeline to even run the first scheduler (part of the effect control linearization) concurrently. This temporarily disables most of the write barrier elimination, but we will get back to that later. Drive-by-fix: Remove the dead code from ChangeLowering, and stack allocate the Typer in the pipeline. Also migrate the AllocateStub to a native code builtin, so that we have the code object + a handle to it available all the time. CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux64_tsan_rel R=mstarzinger@chromium.org BUG=v8:4969 LOG=n Review-Url: https://codereview.chromium.org/1926023002 Cr-Commit-Position: refs/heads/master@{#35918}
-
- 29 Apr, 2016 2 commits
-
-
mstarzinger authored
This ensures that the TurboFan pipeline is respecting the flag on the CompilationInfo controlling whether to use the BytecodeGraphBuilder or the AstGraphBuilder when ensuring deoptimization support. R=rmcilroy@chromium.org BUG=chromium:607871 LOG=n Review-Url: https://codereview.chromium.org/1934563002 Cr-Commit-Position: refs/heads/master@{#35904}
-
clemensh authored
The header / start of the json file was missing before. R=ahaas@chromium.org, titzer@chromium.org Review-Url: https://codereview.chromium.org/1928503002 Cr-Commit-Position: refs/heads/master@{#35901}
-
- 28 Apr, 2016 2 commits
-
-
machenbach authored
Revert of [turbofan] Run everything after representation selection concurrently. (patchset #2 id:20001 of https://codereview.chromium.org/1926023002/ ) Reason for revert: [Sheriff] Flaky crashed here and there: https://build.chromium.org/p/client.v8/builders/V8%20Linux/builds/9867 https://build.chromium.org/p/client.v8/builders/V8%20Linux64/builds/9589 https://build.chromium.org/p/client.v8/builders/V8%20Mac/builds/7679 Original issue's description: > [turbofan] Run everything after representation selection concurrently. > > Further refactor the pipeline to even run the first scheduler (part of > the effect control linearization) concurrently. This temporarily > disables most of the write barrier elimination, but we will get back to > that later. TBR=mstarzinger@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/1925073002 Cr-Commit-Position: refs/heads/master@{#35863}
-
bmeurer authored
Further refactor the pipeline to even run the first scheduler (part of the effect control linearization) concurrently. This temporarily disables most of the write barrier elimination, but we will get back to that later. Review-Url: https://codereview.chromium.org/1926023002 Cr-Commit-Position: refs/heads/master@{#35861}
-
- 27 Apr, 2016 3 commits
-
-
mstarzinger authored
The status FAILED and BAILED_OUT only distinguishes between whether an exception is pending or not. Such a distinction is obsolete by now as all callers check for pending exceptions directly. Also it is impossible for any concurrent part of the job to actually set a pending exception, hence even the assertion that the concurrent part does not return FAILED is obsolete. R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/1926693003 Cr-Commit-Position: refs/heads/master@{#35834}
-
mstarzinger authored
R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/1925743002 Cr-Commit-Position: refs/heads/master@{#35832}
-
bmeurer authored
Refactor the TurboFan pipeline to allow for concurrent recompilation in the same way that Crankshaft does it. For now we limit the concurrent phases to scheduling, instruction selection, register allocation and jump threading. R=mstarzinger@chromium.org, ahaas@chromium.org, jarin@chromium.org Review URL: https://codereview.chromium.org/1179393008 Cr-Commit-Position: refs/heads/master@{#35818}
-
- 26 Apr, 2016 5 commits
-
-
bbudge authored
The double register phase will eventually handle single, double, and SIMD registers. Change enum and class names to reflect this. LOG=N BUG=v8:4124 Review URL: https://codereview.chromium.org/1544603002 Cr-Commit-Position: refs/heads/master@{#35801}
-
clemensh authored
This allows to also pass non-null-terminated values, and values containing null characters. Both might happen in wasm. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1911313002 Cr-Commit-Position: refs/heads/master@{#35795}
-
clemensh authored
Annotate call nodes in the TF graph with source code information in the form of byte offset relative to the wasm function start. The backend finally outputs those positions as RelocInfo. R=bmeurer@chromium.org, mstarzinger@chromium.org, titzer@chromium.org Review URL: https://codereview.chromium.org/1890803002 Cr-Commit-Position: refs/heads/master@{#35793}
-
ahaas authored
With these two functions we can split the compilation pipeline for wasm functions just before the code generation. R=titzer@chromium.org, clemensh@chromium.org Review URL: https://codereview.chromium.org/1904723002 Cr-Commit-Position: refs/heads/master@{#35787}
-
ahaas authored
This is the first step to implement parallel compilation. The next steps will be to split the pipeline to separate instruction selection from code generation, and then to call all that from within a CancelableTask. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1900713005 Cr-Commit-Position: refs/heads/master@{#35784}
-
- 25 Apr, 2016 3 commits
-
-
jarin authored
R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1917753002 Cr-Commit-Position: refs/heads/master@{#35756}
-
jarin authored
Review URL: https://codereview.chromium.org/1914943002 Cr-Commit-Position: refs/heads/master@{#35749}
-
jarin authored
Review URL: https://codereview.chromium.org/1921483002 Cr-Commit-Position: refs/heads/master@{#35747}
-
- 23 Apr, 2016 1 commit
-
-
mtrofin authored
If a deferred block has multiple predecessors, they have to be all deferred. Otherwise, we can run into a situation where if a range that spills only in deferred blocks inserts its spill in the block, and other ranges need moves inserted by ResolveControlFlow in the predecessors, the register of the range spilled in the deferred block may be clobbered. To avoid that, when a deferred block has multiple predecessors, and some are not deferred, we add a non-deferred block to collect all such edges. This CL addresses the validator assertion failure the referenced issue, as well as the greedy allocator failure - which was caused by the situation described above. BUG=v8:4940 LOG=n Review URL: https://codereview.chromium.org/1912093005 Cr-Commit-Position: refs/heads/master@{#35742}
-
- 22 Apr, 2016 4 commits
-
-
mstarzinger authored
This also removes the destructor of the class in question, which removed any added decorator from the graph. However the adding of the decorator happens explicitly, so symmetry suggests that removal should also happen explicitly instead of implicitly in the destructor. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1914473002 Cr-Commit-Position: refs/heads/master@{#35732}
-
epertoso authored
Removes some control edges added from the RawMachineAssembler to the end of the graph. Adds a parameter that tells the Verifier to ignore effect and control inputs. Review URL: https://codereview.chromium.org/1912853003 Cr-Commit-Position: refs/heads/master@{#35731}
-
bmeurer authored
There's no point in running the SimplifiedOperatorReducer also during the late optimization pass, as it will not do any useful work at that point. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1909363002 Cr-Commit-Position: refs/heads/master@{#35727}
-
bmeurer authored
If we have to convert a float64 value to tagged representation and we already know that the value is either in Signed31/Signed32 or Unsigned32 range, then we can just convert the float64 to word32 and use the fast word32 to tagged conversion. Doing this in ChangeLowering (or the effect linearization pass) would be unsound, as the types on the nodes are no longer usable. This removes all Type uses from effect linearization. There's still some work to be done for ChangeLowering tho. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1908093002 Cr-Commit-Position: refs/heads/master@{#35713}
-
- 21 Apr, 2016 2 commits
-
-
mtrofin authored
GetInstructionBlock shows up in some compile time-intensive profiles. Changing it to a O(1) operation. The compile benchmark confirms the improvement. BUG= Review URL: https://codereview.chromium.org/1896813003 Cr-Commit-Position: refs/heads/master@{#35711}
-
bmeurer authored
The JavaScript pipeline now consists of the following steps: 1. Typed lowering. 2. Representation selection (actually SimplifiedLowering). 3. Early optimization pass (incl. JSGenericLowering). 4. Effect control linearization (not for asm.js). 5. Late optimization pass (incl. ChangeLowering). 6. Real scheduling. We should further cleanup the passes and restrict type and representation information usage to appropriate parts of the pipeline. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1907963002 Cr-Commit-Position: refs/heads/master@{#35702}
-
- 18 Apr, 2016 3 commits
-
-
jarin authored
Review URL: https://codereview.chromium.org/1893283002 Cr-Commit-Position: refs/heads/master@{#35575}
-
mstarzinger authored
This disables parsing when we optimize directly from bytecode using TurboFan, because TurboFan is capable of building graphs out of the bytecode directly. R=bmeurer@chromium.org BUG=v8:4280 LOG=n Review URL: https://codereview.chromium.org/1891663004 Cr-Commit-Position: refs/heads/master@{#35567}
-
jarin authored
This introduces a compiler pass that schedules the graph and re-wires effect chain according to the schedule. It also connects allocating representation changes to the effect chain, and removes the BeginRegion and EndRegion nodes - they should not be needed anymore because all effectful nodes should be already wired-in. This is an intermediate CL - the next step is to move lowering of the Change*ToTaggedEffect nodes to StateEffectIntroduction so that we do not have to introduce the effectful versions of nodes. Review URL: https://codereview.chromium.org/1849603002 Cr-Commit-Position: refs/heads/master@{#35565}
-
- 16 Apr, 2016 2 commits
-
-
bmeurer authored
R=jarin@chromium.org Committed: https://crrev.com/20eff45de11609934be339dffe46276ff0a4bc22 Cr-Commit-Position: refs/heads/master@{#35509} Review URL: https://codereview.chromium.org/1887343002 Cr-Commit-Position: refs/heads/master@{#35550}
-
bmeurer authored
Revert of [turbofan] Remove the leftover LoadBuffer hacks. (patchset #1 id:1 of https://codereview.chromium.org/1887343002/ ) Reason for revert: Using types in ChangeLowering is generally unsafe. Original issue's description: > [turbofan] Remove the leftover LoadBuffer hacks. > > R=jarin@chromium.org > > Committed: https://crrev.com/20eff45de11609934be339dffe46276ff0a4bc22 > Cr-Commit-Position: refs/heads/master@{#35509} TBR=jarin@chromium.org,mstarzinger@chromium.org # Not skipping CQ checks because original CL landed more than 1 days ago. Review URL: https://codereview.chromium.org/1893893002 Cr-Commit-Position: refs/heads/master@{#35549}
-
- 15 Apr, 2016 3 commits
-
-
mstarzinger authored
This prefixes the escape analysis flag with "experimental", thereby making sure the flag in question is not being fuzzed. It will reduce noise levels on ClusterFuzz again. R=jarin@chromium.org BUG=chromium:603653 LOG=n Review URL: https://codereview.chromium.org/1894513002 Cr-Commit-Position: refs/heads/master@{#35521}
-
mstarzinger authored
This moves the responsibility of preparing full-codegen code with deoptimization support into the backends. This avoids generating such code when optimization can be done directly from existing bytecode. R=bmeurer@chromium.org BUG=v8:4280 LOG=n Review URL: https://codereview.chromium.org/1883403002 Cr-Commit-Position: refs/heads/master@{#35517}
-
bmeurer authored
R=jarin@chromium.org Review URL: https://codereview.chromium.org/1887343002 Cr-Commit-Position: refs/heads/master@{#35509}
-
- 12 Apr, 2016 1 commit
-
-
ahaas authored
The parameter is not used at the moment, so I removed it. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1876833003 Cr-Commit-Position: refs/heads/master@{#35403}
-
- 11 Apr, 2016 3 commits
-
-
bmeurer authored
We had exactly one test case for --noturbo-types, so it's likely that the generic pipeline (without types) was already broken for quite some time, plus no one expressed interest in maintaining it, plus it complicates the JSGenericLowering integration. So decision is to kill it. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1872333002 Cr-Commit-Position: refs/heads/master@{#35387}
-
mstarzinger authored
R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1872833002 Cr-Commit-Position: refs/heads/master@{#35384}
-
mstarzinger authored
This refactors the OptimizedCompileJob class to be agnostic from the actual underlying compiler. Instead it represents a base class for all compilation jobs. The implementation is provided by the backend by just overriding the phase methods. Also note that this contains the semantics change of not falling back to Crankshaft when TurboFan optimization fails. This fallback is no longer needed and will not be supported going forward. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1872483002 Cr-Commit-Position: refs/heads/master@{#35377}
-
- 07 Apr, 2016 1 commit
-
-
mstarzinger authored
Now that the SharedFunctionInfo is available to compilers all of the time, we no longer need to rely on the literal for source printing. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1866613003 Cr-Commit-Position: refs/heads/master@{#35326}
-
- 05 Apr, 2016 1 commit
-
-
jarin authored
In simplified numbering, we make sanity checks based on types (e.g., NumberSubtract should take numbers as inputs), but this can be violated if optimization passes make types less precise. In this CL, we fix load elimination to make sure that types are smaller in the store -> load elimination by taking an intersection of the load's type with the store value's type and inserting a guard with that type. Note that the load type comes from type feedback, so it can be disjoint from the stored value type (in that case, this must be dead code because the map chack for the load should prevent us from using the stored value). BUG=chromium:599412 LOG=n Review URL: https://codereview.chromium.org/1857133003 Cr-Commit-Position: refs/heads/master@{#35259}
-
- 01 Apr, 2016 1 commit
-
-
jochen authored
We expect that the majority of malloc'd memory held by V8 is allocated in Zone objects. Introduce an Allocator class that is used by Zones to manage memory, and allows for querying the current usage. BUG=none R=titzer@chromium.org,bmeurer@chromium.org,jarin@chromium.org LOG=n TBR=rossberg@chromium.org Review URL: https://codereview.chromium.org/1847543002 Cr-Commit-Position: refs/heads/master@{#35196}
-