- 05 May, 2015 1 commit
-
-
bmeurer authored
Tail calls are matched on the graph, with a dedicated tail call optimization that is actually testable. The instruction selection can still fall back to a regular if the platform constraints don't allow to emit a tail call (i.e. the return locations of caller and callee differ or the callee takes non-register parameters, which is a restriction that will be removed in the future). Also explicitly limit tail call optimization to stubs for now and drop the global flag. BUG=v8:4076 LOG=n Review URL: https://codereview.chromium.org/1114163005 Cr-Commit-Position: refs/heads/master@{#28219}
-
- 30 Apr, 2015 2 commits
-
-
bmeurer authored
Better encapsulate the source position handling in TurboFan. R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/1105363003 Cr-Commit-Position: refs/heads/master@{#28153}
-
svenpanne authored
This CL contains the first steps towards tail call optimization: * Structurally detect tail calls during instruction selection, looking for special return/call combinations. * Added new architecture-specific instructions for tail calls which jump instead of call and take care of frame adjustment. * Moved some code around. Currently we restrict tail calls to callees which only use registers for arguments/return value and to call sites which are explicitly marked as being OK for tail calls. This excludes, among other things, call sites in sloppy JS functions and our IC machinery (both need in general to be able to access the caller's frame). All this is behind a flag --turbo-tail-calls, which is currently off by default, so it can easily be toggled. Review URL: https://codereview.chromium.org/1108563002 Cr-Commit-Position: refs/heads/master@{#28150}
-
- 29 Apr, 2015 3 commits
-
-
dcarney authored
- allows the optimization of emitted gap move code since the representation of the value in the register is known - necessary preparation for vector register allocation - prepare for slot sharing for any value of the same byte width TBR=jarin@chromium.org BUG= Review URL: https://codereview.chromium.org/1111323003 Cr-Commit-Position: refs/heads/master@{#28140}
-
machenbach authored
Revert of [turbofan] add MachineType to AllocatedOperand (patchset #17 id:310001 of https://codereview.chromium.org/1087793002/) Reason for revert: [Sheriff] Breaks compile on chromium asan and v8 msan: http://build.chromium.org/p/client.v8/builders/Linux%20ASAN%20Builder/builds/3446 http://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20MSAN/builds/2085 Original issue's description: > [turbofan] add MachineType to AllocatedOperand > > - allows the optimization of emitted gap move code since the representation of the value in the register is known > - necessary preparation for vector register allocation > - prepare for slot sharing for any value of the same byte width > > BUG= > > Committed: https://crrev.com/3a025d1ab6437559f86a464767aa03d2d9789f6f > Cr-Commit-Position: refs/heads/master@{#28137} TBR=jarin@chromium.org,dcarney@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= Review URL: https://codereview.chromium.org/1119483003 Cr-Commit-Position: refs/heads/master@{#28139}
-
dcarney authored
- allows the optimization of emitted gap move code since the representation of the value in the register is known - necessary preparation for vector register allocation - prepare for slot sharing for any value of the same byte width BUG= Review URL: https://codereview.chromium.org/1087793002 Cr-Commit-Position: refs/heads/master@{#28137}
-
- 20 Apr, 2015 1 commit
-
-
Ross McIlroy authored
R=jochen@chromium.org Review URL: https://codereview.chromium.org/1088993003 Cr-Commit-Position: refs/heads/master@{#27937}
-
- 31 Mar, 2015 1 commit
-
-
mstarzinger authored
TEST=cctest/test-run-jsexceptions Review URL: https://codereview.chromium.org/989123003 Cr-Commit-Position: refs/heads/master@{#27537}
-
- 26 Mar, 2015 1 commit
-
-
titzer authored
R=bmeurer@chromium.org BUG= Review URL: https://codereview.chromium.org/1019803005 Cr-Commit-Position: refs/heads/master@{#27468}
-
- 19 Mar, 2015 1 commit
-
-
jarin authored
With this change, we remember the types of frame state inputs (in a new operator, called TypedStateValues). Instead of inferring the value types when building translations, we used the recorded types. The original approach was not reliable because the passes after simplified lowering can change node types, and this in turn confuses the translation builder. BUG=chromium:468727 LOG=n R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1015423002 Cr-Commit-Position: refs/heads/master@{#27310}
-
- 16 Mar, 2015 1 commit
-
-
jarin authored
Instead of the current approach of storing flat vectors in frame states (and possibly reusing the last vector in AST graph builder), this change list builds a tree for the values and tries to reuse the nodes for different frame states. At the moment, we only use this for the local variable part of frame state, but nothing prevents us from using this for all parts. This change provides two new classes: one for creating the tree (StateValuesCache) and one for iterating the trees (StateValuesAccess). BUG= Review URL: https://codereview.chromium.org/1008213002 Cr-Commit-Position: refs/heads/master@{#27222}
-
- 09 Mar, 2015 1 commit
-
-
Benedikt Meurer authored
Avoid loading the stack pointer and the stack limit into allocatable registers first, but generate a cmp rsp,[limit] instead. R=dcarney@chromium.org Review URL: https://codereview.chromium.org/989203002 Cr-Commit-Position: refs/heads/master@{#27065}
-
- 04 Mar, 2015 1 commit
-
-
jarin authored
BUG= Review URL: https://codereview.chromium.org/961973002 Cr-Commit-Position: refs/heads/master@{#26993}
-
- 25 Feb, 2015 1 commit
-
-
dcarney authored
BUG= Review URL: https://codereview.chromium.org/951553005 Cr-Commit-Position: refs/heads/master@{#26859}
-
- 20 Feb, 2015 1 commit
-
-
mstarzinger authored
R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/943503003 Cr-Commit-Position: refs/heads/master@{#26783}
-
- 17 Feb, 2015 1 commit
-
-
bmeurer authored
This adds a new ControlFlowOptimizer that - for now - recognizes chains of Branches generated by the SwitchBuilder for a subset of javascript switches into Switch nodes. Those Switch nodes are then lowered to either table or lookup switches. Also rename Case to IfValue (and introduce IfDefault) for consistency. BUG=v8:3872 LOG=n Review URL: https://codereview.chromium.org/931623002 Cr-Commit-Position: refs/heads/master@{#26691}
-
- 09 Feb, 2015 1 commit
-
-
bmeurer authored
Adds Switch and Case operators to TurboFan and handles them appropriately in instruction selection and code generation. BUG=v8:3872 LOG=n Review URL: https://codereview.chromium.org/892513003 Cr-Commit-Position: refs/heads/master@{#26515}
-
- 04 Feb, 2015 1 commit
-
-
dcarney authored
R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/889843003 Cr-Commit-Position: refs/heads/master@{#26424}
-
- 22 Jan, 2015 1 commit
-
-
bmeurer authored
- Move unit tests to schedule-unittests.cc. - Remove pre-C++11 cruft. - Fix some include weirdness. R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/864293002 Cr-Commit-Position: refs/heads/master@{#26220}
-
- 12 Jan, 2015 1 commit
-
-
titzer authored
R=bmeurer@chromium.org BUG= Review URL: https://codereview.chromium.org/809333002 Cr-Commit-Position: refs/heads/master@{#26020}
-
- 08 Jan, 2015 1 commit
-
-
bmeurer authored
- Use C++11 range based for loops. - Remove duplicated virtual register set in unittests. - Don't expose implementation details of InstructionSelector. TEST=unittests R=dcarney@chromium.org Review URL: https://codereview.chromium.org/837423002 Cr-Commit-Position: refs/heads/master@{#25997}
-
- 17 Dec, 2014 1 commit
-
-
dcarney authored
R=titzer@chromium.org BUG= Review URL: https://codereview.chromium.org/805263003 Cr-Commit-Position: refs/heads/master@{#25867}
-
- 02 Dec, 2014 1 commit
-
-
Benedikt Meurer authored
TEST=mjsunit,cctest,unittests R=jarin@chromium.org Review URL: https://codereview.chromium.org/763963002 Cr-Commit-Position: refs/heads/master@{#25591}
-
- 30 Oct, 2014 2 commits
-
-
dcarney@chromium.org authored
BUG= R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/683933004 Cr-Commit-Position: refs/heads/master@{#25010} git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25010 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
dcarney@chromium.org authored
T=jarin@chromium.org BUG= R=jarin@chromium.org Review URL: https://codereview.chromium.org/688633002 Cr-Commit-Position: refs/heads/master@{#25008} git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25008 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 26 Oct, 2014 1 commit
-
-
jarin@chromium.org authored
BUG= R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/639883002 Cr-Commit-Position: refs/heads/master@{#24886} git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24886 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 24 Oct, 2014 1 commit
-
-
sigurds@chromium.org authored
These operators are not supported by any backends yet, and a backend is free to not support them. R=bmeurer@chromium.org TEST=unittest/machine-operator Review URL: https://codereview.chromium.org/668173002 Cr-Commit-Position: refs/heads/master@{#24874} git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24874 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 23 Oct, 2014 1 commit
-
-
bmeurer@chromium.org authored
TEST=cctest,unittests R=dcarney@chromium.org Review URL: https://codereview.chromium.org/669133004 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24832 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 21 Oct, 2014 2 commits
-
-
dcarney@chromium.org authored
R=jarin@chromium.org, bmeurer@chromium.org BUG= Review URL: https://codereview.chromium.org/663333003 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24779 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
dcarney@chromium.org authored
R=bmeurer@chromium.org BUG= Review URL: https://codereview.chromium.org/664123002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24753 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 20 Oct, 2014 1 commit
-
-
dcarney@chromium.org authored
R=bmeurer@chromium.org BUG= Review URL: https://codereview.chromium.org/669613002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24726 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 13 Oct, 2014 2 commits
-
-
bmeurer@chromium.org authored
This is required to fix a tricky branch fusion bug on ARM, which was caused by the interaction between the architecture-independent and architecture-specific parts of the InstructionSelector. In the end it wasn't worth sharing a few common lines of code for the additional complexity, especially if we also want to properly support architectures without any dedicated flags register (i.e. MIPS). TEST=mjsunit,unittests R=dcarney@chromium.org Review URL: https://codereview.chromium.org/651783003 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24546 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
dcarney@chromium.org authored
R=bmeurer@chromium.org BUG= Review URL: https://codereview.chromium.org/652643002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24545 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 08 Oct, 2014 1 commit
-
-
jarin@chromium.org authored
This change enables non-tagged representations in FrameStates. That allows us to run zlib with deoptimization support and have almost the same performance of the generated code (as the code with no deoptimization). Unfortunately, the frame states seem to confuse typer. As a consequence, we generate more representation changes, which in turn causes the scheduler to take a lot more time and memory (>4x). The added compiler time makes zlib with deopt be about 50% slower. BUG= R=titzer@chromium.org Review URL: https://codereview.chromium.org/614713002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24454 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 25 Sep, 2014 1 commit
-
-
bmeurer@chromium.org authored
R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/591343002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24205 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 02 Sep, 2014 1 commit
-
-
bmeurer@chromium.org authored
Less useless creativity is best creativity! R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/526223002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23579 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 01 Sep, 2014 1 commit
-
-
jarin@chromium.org authored
This adds context deoptimization to Turbofan and Crankshaft (also submitted separately as https://codereview.chromium.org/515723004/). The second patchset removes the deoptimization/continuation block from calls. BUG= R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/522873002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23547 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 26 Aug, 2014 1 commit
-
-
titzer@chromium.org authored
to use with Zone. For example, subclasses add constructors that wrap a Zone in a zone_allocator to save clients this verbosity. R=bmeurer@chromium.org, mstarzinger@chromium.org BUG= Review URL: https://codereview.chromium.org/505133003 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23402 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 21 Aug, 2014 1 commit
-
-
jarin@chromium.org authored
Bunch of changes were necessary: - refactor attaching the frame states/lazy bailouts in AstGraphBuilder (essentialy reland of r23096), - attaching frame state to some JS nodes in a similar way to attaching context (this is quite ugly and we should take another look at this), - new bailout point for the debugger statement, - register allocation constraints for the frame states, - generating translations and deopt entries, attaching them to safepoints, - enabled one mjsunit test for debugger state that uses the generated frame state. BUG= R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/492203002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23270 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-
- 20 Aug, 2014 1 commit
-
-
bmeurer@chromium.org authored
Also fix an off-by-one bug in the handling of Parameter nodes, and improve test coverage for pointer map computation. TEST=compiler-unittest R=titzer@chromium.org Review URL: https://codereview.chromium.org/490673006 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23219 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-