- 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}
-
- 03 May, 2016 3 commits
-
-
mstarzinger authored
This moves all implementation internals of the Pipeline class into the corresponding cc-file. Only the public API remains in the header and is made up of static functions only. R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/1948443002 Cr-Commit-Position: refs/heads/master@{#35987}
-
mstarzinger authored
R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/1947463002 Cr-Commit-Position: refs/heads/master@{#35981}
-
mstarzinger authored
By now the Pipeline class can no longer be used to construct instances from the outside. The constructor and all non-exposed helpers can be made private. R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/1943243003 Cr-Commit-Position: refs/heads/master@{#35978}
-
- 02 May, 2016 1 commit
-
-
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}
-
- 29 Apr, 2016 1 commit
-
-
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}
-
- 27 Apr, 2016 2 commits
-
-
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 3 commits
-
-
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}
-
- 11 Apr, 2016 1 commit
-
-
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}
-
- 15 Feb, 2016 1 commit
-
-
bmeurer authored
Eventually compiler.h might need to depend on the Pipeline to manage its life cycle for concurrent recompilation, so we should not have the cyclic include dependency here. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1698113002 Cr-Commit-Position: refs/heads/master@{#34000}
-
- 28 Jan, 2016 1 commit
-
-
mtrofin authored
avoid jump threading erasing the reconstruction of a frame, if the frame was elided. BUG= Review URL: https://codereview.chromium.org/1642823002 Cr-Commit-Position: refs/heads/master@{#33590}
-
- 20 Jan, 2016 1 commit
-
-
danno authored
The motivation for this is that CompilationInfo really shouldn't explicitly know anything about CodeStubs. This is evident in the TurboFan stubs pipeline, which only needs to pass down information about Code::Flags to the code generator and not any of the CallInterfaceDescriptor silliness that Hydrogen has to push around, since TF has the Linkage class that encapsulates everything that is needed for the stub ABI. So, instead of threading CodeStub machinery through the TF stub pipeline, it is now removed from CompilationInfo and replaced by only the explicit bits needed both by the Crankshaft and TF pipelines in code generation. Review URL: https://codereview.chromium.org/1604543002 Cr-Commit-Position: refs/heads/master@{#33410}
-
- 14 Dec, 2015 1 commit
-
-
mstarzinger authored
This uses the same pipeline entry function for all three assemblers currently supported by TurboFan. The Pipeline::GenerateCodeForCodeStub is by now generic enough to accommodate all uses. R=vogelheim@chromium.org Review URL: https://codereview.chromium.org/1521363003 Cr-Commit-Position: refs/heads/master@{#32837}
-
- 09 Dec, 2015 1 commit
-
-
mstarzinger authored
Fully scheduled graphs built by the RawMachineAssembler are inherently not schedulable, they are missing effect and control dependencies, which makes them not pass the graph verifier either. They do however pass the schedule verifier. R=titzer@chromium.org Review URL: https://codereview.chromium.org/1505233003 Cr-Commit-Position: refs/heads/master@{#32715}
-
- 02 Dec, 2015 1 commit
-
-
danno authored
* Add a sibling interface to InterpreterAssembler called CodeStubAssembler which provides a wrapper around the RawMachineAssembler and is intented to make it easy to build efficient cross-platform code stubs. Much of the implementation of CodeStubAssembler is shamelessly stolen from the InterpreterAssembler, and the idea is to eventually merge the two interfaces somehow, probably moving the InterpreterAssembler interface over to use the CodeStubAssembler. Short-term, however, the two interfaces shall remain decoupled to increase our velocity developing the two systems in parallel. * Implement the StringLength stub in TurboFan with the new CodeStubAssembler. Replace and remove the old Hydrogen-stub version. * Remove a whole slew of machinery to support JavaScript-style code stub generation, since it ultimately proved unwieldy, brittle and baroque. This cleanup includes removing the shared code stub context, several example stubs and a tangle of build file changes. BUG=v8:4587 LOG=n Review URL: https://codereview.chromium.org/1475953002 Cr-Commit-Position: refs/heads/master@{#32508}
-
- 02 Oct, 2015 3 commits
-
-
danno authored
Previous to this patch, both the lithium and TurboFan register allocators tracked allocated registers by "indices", rather than the register codes used elsewhere in the runtime. This patch ensures that codes are used everywhere, and in the process cleans up a bunch of redundant code and adds more structure to how the set of allocatable registers is defined. Some highlights of changes: * TurboFan's RegisterConfiguration class moved to V8's top level so that it can be shared with Crankshaft. * Various "ToAllocationIndex" and related methods removed. * Code that can be easily shared between Register classes on different platforms is now shared. * The list of allocatable registers on each platform is declared as a list rather than implicitly via the register index <-> code mapping. Committed: https://crrev.com/80bc6f6e11f79524e3f1ad05579583adfd5f18b2 Cr-Commit-Position: refs/heads/master@{#30913} Committed: https://crrev.com/7b7a8205d9a00c678fb7a6e032a55fecbc1509cf Cr-Commit-Position: refs/heads/master@{#31075} Review URL: https://codereview.chromium.org/1287383003 Cr-Commit-Position: refs/heads/master@{#31087}
-
danno authored
Revert of Reland: Remove register index/code indirection (patchset #20 id:380001 of https://codereview.chromium.org/1287383003/ ) Reason for revert: Failures on MIPS Original issue's description: > Remove register index/code indirection > > Previous to this patch, both the lithium and TurboFan register > allocators tracked allocated registers by "indices", rather than > the register codes used elsewhere in the runtime. This patch > ensures that codes are used everywhere, and in the process cleans > up a bunch of redundant code and adds more structure to how the > set of allocatable registers is defined. > > Some highlights of changes: > > * TurboFan's RegisterConfiguration class moved to V8's top level > so that it can be shared with Crankshaft. > * Various "ToAllocationIndex" and related methods removed. > * Code that can be easily shared between Register classes on > different platforms is now shared. > * The list of allocatable registers on each platform is declared > as a list rather than implicitly via the register index <-> > code mapping. > > Committed: https://crrev.com/80bc6f6e11f79524e3f1ad05579583adfd5f18b2 > Cr-Commit-Position: refs/heads/master@{#30913} > > Committed: https://crrev.com/7b7a8205d9a00c678fb7a6e032a55fecbc1509cf > Cr-Commit-Position: refs/heads/master@{#31075} TBR=akos.palfi@imgtec.com,bmeurer@chromium.org,jarin@chromium.org,paul.lind@imgtec.com,titzer@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1380863004 Cr-Commit-Position: refs/heads/master@{#31083}
-
danno authored
Previous to this patch, both the lithium and TurboFan register allocators tracked allocated registers by "indices", rather than the register codes used elsewhere in the runtime. This patch ensures that codes are used everywhere, and in the process cleans up a bunch of redundant code and adds more structure to how the set of allocatable registers is defined. Some highlights of changes: * TurboFan's RegisterConfiguration class moved to V8's top level so that it can be shared with Crankshaft. * Various "ToAllocationIndex" and related methods removed. * Code that can be easily shared between Register classes on different platforms is now shared. * The list of allocatable registers on each platform is declared as a list rather than implicitly via the register index <-> code mapping. Committed: https://crrev.com/80bc6f6e11f79524e3f1ad05579583adfd5f18b2 Cr-Commit-Position: refs/heads/master@{#30913} Review URL: https://codereview.chromium.org/1287383003 Cr-Commit-Position: refs/heads/master@{#31075}
-
- 24 Sep, 2015 2 commits
-
-
danno authored
Revert of Remove register index/code indirection (patchset #17 id:320001 of https://codereview.chromium.org/1287383003/ ) Reason for revert: Failures on greedy RegAlloc, Fuzzer Original issue's description: > Remove register index/code indirection > > Previous to this patch, both the lithium and TurboFan register > allocators tracked allocated registers by "indices", rather than > the register codes used elsewhere in the runtime. This patch > ensures that codes are used everywhere, and in the process cleans > up a bunch of redundant code and adds more structure to how the > set of allocatable registers is defined. > > Some highlights of changes: > > * TurboFan's RegisterConfiguration class moved to V8's top level > so that it can be shared with Crankshaft. > * Various "ToAllocationIndex" and related methods removed. > * Code that can be easily shared between Register classes on > different platforms is now shared. > * The list of allocatable registers on each platform is declared > as a list rather than implicitly via the register index <-> > code mapping. > > Committed: https://crrev.com/80bc6f6e11f79524e3f1ad05579583adfd5f18b2 > Cr-Commit-Position: refs/heads/master@{#30913} TBR=akos.palfi@imgtec.com,bmeurer@chromium.org,jarin@chromium.org,paul.lind@imgtec.com,titzer@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1365073002 Cr-Commit-Position: refs/heads/master@{#30914}
-
danno authored
Previous to this patch, both the lithium and TurboFan register allocators tracked allocated registers by "indices", rather than the register codes used elsewhere in the runtime. This patch ensures that codes are used everywhere, and in the process cleans up a bunch of redundant code and adds more structure to how the set of allocatable registers is defined. Some highlights of changes: * TurboFan's RegisterConfiguration class moved to V8's top level so that it can be shared with Crankshaft. * Various "ToAllocationIndex" and related methods removed. * Code that can be easily shared between Register classes on different platforms is now shared. * The list of allocatable registers on each platform is declared as a list rather than implicitly via the register index <-> code mapping. Review URL: https://codereview.chromium.org/1287383003 Cr-Commit-Position: refs/heads/master@{#30913}
-
- 28 Aug, 2015 1 commit
-
-
titzer authored
Reduce the number of entrypoints to the compiler pipeline by one. Always require caller to provide a CompilationInfo. R=mstarzinger@chromium.org BUG= Review URL: https://codereview.chromium.org/1317113004 Cr-Commit-Position: refs/heads/master@{#30433}
-
- 25 Aug, 2015 1 commit
-
-
rmcilroy authored
BUG=v8:4280 LOG=N Review URL: https://codereview.chromium.org/1308863004 Cr-Commit-Position: refs/heads/master@{#30354}
-
- 18 Aug, 2015 1 commit
-
-
danno authored
Previously, it was not possible to specify StackSlotOperands for all slots in both the caller and callee stacks. Specifically, the region of the callee's stack including the saved return address, frame pointer, function pointer and context pointer could not be addressed by the register allocator/gap resolver. In preparation for better tail call support, which will use the gap resolver to reconcile outgoing parameters, this change makes it possible to address all slots on the stack, because slots in the previously inaccessible dead zone may become parameter slots for outgoing tail calls. All caller stack slots are accessible as they were before, with slot -1 corresponding to the last stack parameter. Stack slot indices >= 0 access the callee stack, with slot 0 corresponding to the callee's saved return address, 1 corresponding to the saved frame pointer, 2 corresponding to the current function context, 3 corresponding to the frame marker/JSFunction, and slots 4 and above corresponding to spill slots. The following changes were specifically needed: * Frame has been changed to explicitly manage three areas of the callee frame, the fixed header, the spill slot area, and the callee-saved register area. * Conversions from stack slot indices to fp offsets all now go through a common bottleneck: OptimizedFrame::StackSlotOffsetRelativeToFp * The generation of deoptimization translation tables has been changed to support the new stack slot indexing scheme. Crankshaft, which doesn't support the new slot numbering in its register allocator, must adapt the indexes when creating translation tables. * Callee-saved parameters are now kept below spill slots, not above, to support saving only the optimal set of used registers, which is only known after register allocation is finished and spill slots have been allocated. Review URL: https://codereview.chromium.org/1261923007 Cr-Commit-Position: refs/heads/master@{#30224}
-
- 10 Aug, 2015 1 commit
-
-
bmeurer authored
TurboFan is now a requirement and supported by all backends, so we don't need those macros (plus all the machinery on top) anymore. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1282763002 Cr-Commit-Position: refs/heads/master@{#30082}
-
- 13 Feb, 2015 1 commit
-
-
Sven Panne authored
This removed some inconsistent/duplicated code and made the testing side entrance much simpler: Now it simply constructs a pipeline and hands off to the "tail" of the normal pipeline. R=danno@chromium.org Review URL: https://codereview.chromium.org/924823002 Cr-Commit-Position: refs/heads/master@{#26637}
-
- 09 Feb, 2015 1 commit
-
-
mstarzinger authored
R=bmeurer@chromium.org TEST=presubmit Review URL: https://codereview.chromium.org/905293002 Cr-Commit-Position: refs/heads/master@{#26525}
-
- 06 Feb, 2015 1 commit
-
-
dcarney authored
Review URL: https://codereview.chromium.org/904693002 Cr-Commit-Position: refs/heads/master@{#26479}
-
- 23 Jan, 2015 1 commit
-
-
danno authored
Along the way: - Thread isolate parameter explicitly through code that used to rely on getting it from the zone. - Canonicalize the parameter position of isolate and zone for affected code - Change Hydrogen New<> instruction templates to automatically pass isolate R=mstarzinger@chromium.org LOG=N Review URL: https://codereview.chromium.org/868883002 Cr-Commit-Position: refs/heads/master@{#26252}
-
- 22 Jan, 2015 1 commit
-
-
Benedikt Meurer authored
R=titzer@chromium.org Review URL: https://codereview.chromium.org/865183002 Cr-Commit-Position: refs/heads/master@{#26221}
-
- 17 Nov, 2014 2 commits
-
-
Dan Carney authored
R=bmeurer@chromium.org BUG= Review URL: https://codereview.chromium.org/727373002 Cr-Commit-Position: refs/heads/master@{#25382}
-
Dan Carney authored
BUG= R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/727323002 Cr-Commit-Position: refs/heads/master@{#25379}
-
- 14 Nov, 2014 1 commit
-
-
dcarney authored
BUG= Review URL: https://codereview.chromium.org/727733002 Cr-Commit-Position: refs/heads/master@{#25361}
-
- 27 Oct, 2014 1 commit
-
-
dcarney@chromium.org authored
R=mstarzinger@chromium.org, titzer@chromium.org BUG= Review URL: https://codereview.chromium.org/662513005 Cr-Commit-Position: refs/heads/master@{#24894} git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24894 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 23 Oct, 2014 4 commits
-
-
svenpanne@chromium.org authored
This is r24819 plus some tiny fixes to make the Mac toolchain happy. TBR=bmeurer@chromium.org Review URL: https://codereview.chromium.org/676673002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24840 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
dcarney@chromium.org authored
R=jarin@chromium.org BUG= Review URL: https://codereview.chromium.org/669053002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24830 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
svenpanne@chromium.org authored
This reverts r24819, it broke the build on Mac due to header incompatibilities. TBR=bmeurer@chromium.org Review URL: https://codereview.chromium.org/672873002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24821 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
svenpanne@chromium.org authored
Still having GetTurboCfgFileName in Isolate is ugly, but if we decide that we don't want to truncate the output file (which would be consistent with --trace-hydrogen), this could be moved to TurboCfgFile where it actually belongs. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/666223003 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24819 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-