- 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}
-
- 18 Apr, 2016 1 commit
-
-
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}
-
- 04 Apr, 2016 1 commit
-
-
titzer authored
The background here is that graphs generated from WASM are not trimmed. That means there can be some floating control diamonds that are not reachable from end. An assertion in the scheduler for phis from floating diamonds checks that the use edge in this situation is the control edge, but in general, any edge could cause this. Scheduling still works without this assertion. The longer term fix is to either trim the graphs (more compile time overhead for WASM) or improve the scheduler's handling of dead code in the graph. Currently it does not schedule dead code but the potential use positions of dead code are used in the computation of the common dominator of uses. We could recognize dead nodes in PrepareUses() and check in GetBlockForUse() as per TODO. R=bradnelson@chromium.org, mstarzinger@chromium.org BUG= Review URL: https://codereview.chromium.org/1846933002 Cr-Commit-Position: refs/heads/master@{#35245}
-
- 11 Jan, 2016 1 commit
-
-
titzer authored
R=bmeurer@chromium.org BUG= Review URL: https://codereview.chromium.org/1578723002 Cr-Commit-Position: refs/heads/master@{#33202}
-
- 14 Oct, 2015 1 commit
-
-
jarin authored
This CL re-purposes ValueEffect and Finish as delimiters for regions that are scheduled atomically (renamed to BeginRegion, FinishRegion). The BeginRegion node takes and produces an effect. For the uses that do not care about the placement in the effect chain, it is ok to feed graph->start() as an effect input. The FinishRegion takes a value and an effect and produces a value and an effect. It is important that any value or effect produced inside the region is not used outside the region. The FinishRegion node is the only way to smuggle an effect and a value out. At the moment, this does not support control flow inside the region. Control flow would be hard. During scheduling we do some sanity check, but the checks are not exhaustive. Here is what we check: - the effect chain between begin and finish is linear (no splitting, single effect input and output). - any value produced is consumed by the FinishRegion node. - no control flow outputs. Review URL: https://codereview.chromium.org/1399423002 Cr-Commit-Position: refs/heads/master@{#31265}
-
- 19 Jun, 2015 1 commit
-
-
bmeurer authored
R=jarin@chromium.org Review URL: https://codereview.chromium.org/1196613003 Cr-Commit-Position: refs/heads/master@{#29149}
-
- 06 May, 2015 1 commit
-
-
bmeurer authored
This revives the Terminate operator and removes the weird Always operator. As a first step we let the ControlReducer connect non terminating loops via Terminate. The next step will be to change the graph builder to insert Terminate nodes into every loop. Review URL: https://codereview.chromium.org/1123213002 Cr-Commit-Position: refs/heads/master@{#28259}
-
- 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}
-
- 04 May, 2015 1 commit
-
-
mstarzinger authored
This removes the last occurence of the hand-written ZoneList from the compiler directory and uses ZoneVector everywhere instead. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1120083004 Cr-Commit-Position: refs/heads/master@{#28198}
-
- 30 Apr, 2015 1 commit
-
-
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}
-
- 20 Apr, 2015 1 commit
-
-
svenpanne authored
Review URL: https://codereview.chromium.org/1098863003 Cr-Commit-Position: refs/heads/master@{#27947}
-
- 19 Mar, 2015 1 commit
-
-
titzer authored
R=bmeurer@chromium.org BUG= Review URL: https://codereview.chromium.org/1020873002 Cr-Commit-Position: refs/heads/master@{#27304}
-
- 17 Mar, 2015 1 commit
-
-
titzer authored
R=mstarzinger@chromium.org BUG= Review URL: https://codereview.chromium.org/1014853002 Cr-Commit-Position: refs/heads/master@{#27248}
-
- 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 3 commits
-
-
dcarney authored
R=mstarzinger@chromium.org BUG= Review URL: https://codereview.chromium.org/948263004 Cr-Commit-Position: refs/heads/master@{#26866}
-
bmeurer authored
Review URL: https://codereview.chromium.org/958533002 Cr-Commit-Position: refs/heads/master@{#26841}
-
mstarzinger authored
R=svenpanne@chromium.org TEST=manual Review URL: https://codereview.chromium.org/944223003 Cr-Commit-Position: refs/heads/master@{#26838}
-
- 24 Feb, 2015 1 commit
-
-
mstarzinger authored
R=bmeurer@chromium.org TEST=unittests/SchedulerTest.CallException Review URL: https://codereview.chromium.org/944903002 Cr-Commit-Position: refs/heads/master@{#26816}
-
- 23 Feb, 2015 1 commit
-
-
bmeurer authored
R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/946553002 Cr-Commit-Position: refs/heads/master@{#26789}
-
- 20 Feb, 2015 1 commit
-
-
mstarzinger authored
R=titzer@chromium.org,bmeurer@chromium.org Review URL: https://codereview.chromium.org/928213003 Cr-Commit-Position: refs/heads/master@{#26766}
-
- 18 Feb, 2015 1 commit
-
-
mstarzinger authored
R=bmeurer@chromium.org TEST=unittests/NodePropertiesTest.CollectControlProjections Review URL: https://codereview.chromium.org/935033004 Cr-Commit-Position: refs/heads/master@{#26720}
-
- 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}
-
- 12 Feb, 2015 1 commit
-
-
bmeurer authored
Review URL: https://codereview.chromium.org/924453002 Cr-Commit-Position: refs/heads/master@{#26609}
-
- 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}
-
- 03 Feb, 2015 2 commits
-
-
mstarzinger authored
R=bmeurer@chromium.org TEST=cctest/test-run-jsexceptions/Throw Review URL: https://codereview.chromium.org/896783002 Cr-Commit-Position: refs/heads/master@{#26406}
-
Benedikt Meurer authored
If a (pure) node has two or more uses, but there exists a path from the common dominator of these uses to end, which does not contain a use, then we split the node such that no unnecessary computation takes place. Note however, that this only applies if the node cannot be hoisted out of a loop. BUG=v8:3864 LOG=n R=jarin@chromium.org Review URL: https://codereview.chromium.org/899433005 Cr-Commit-Position: refs/heads/master@{#26404}
-
- 30 Jan, 2015 3 commits
-
-
bmeurer authored
R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/877753007 Cr-Commit-Position: refs/heads/master@{#26346}
-
Benedikt Meurer authored
This reverts commit 6a4c0a3b and commit 0deaa4b6 for breaking GCC bots. TBR=svenpanne@chromium.org Review URL: https://codereview.chromium.org/893533003 Cr-Commit-Position: refs/heads/master@{#26342}
-
bmeurer authored
R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/888613002 Cr-Commit-Position: refs/heads/master@{#26340}
-
- 29 Jan, 2015 2 commits
-
-
titzer authored
R=mstarzinger@chromium.org BUG= Review URL: https://codereview.chromium.org/882103002 Cr-Commit-Position: refs/heads/master@{#26319}
-
bmeurer authored
R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/883613006 Cr-Commit-Position: refs/heads/master@{#26316}
-
- 27 Jan, 2015 1 commit
-
-
bmeurer authored
Up until now we used a special Terminate node to artifically connect non terminating loops to the End node, but this was kind of adhoc and didn't work for the CFG. So without all kinds of weird hacks, the end block in the CFG will not be connected to NTLs, which makes it impossible to compute post dominance / control dependence in the current setting. So instead of Terminate, we add a special Branch to NTLs, whose condition is the special Always node, which corresponds to True, except that it cannot be folded away. This way we don't need any special machinery in the scheduler, since it's just a regular Branch. R=titzer@chromium.org Review URL: https://codereview.chromium.org/875263004 Cr-Commit-Position: refs/heads/master@{#26294}
-
- 23 Jan, 2015 1 commit
-
-
bmeurer authored
Also add some unittests for the dominator stuff. R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/865393004 Cr-Commit-Position: refs/heads/master@{#26241}
-
- 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}
-
- 20 Jan, 2015 1 commit
-
-
titzer authored
BUG= Review URL: https://codereview.chromium.org/816053002 Cr-Commit-Position: refs/heads/master@{#26149}
-
- 16 Jan, 2015 1 commit
-
-
bmeurer authored
- Make Node::Inputs and Node::Uses mostly STL compliant. - Get rid of some pre-C++11 crappiness. - Start moving unit tests from cctest to unittests. - TrimInputCount() now tries to reserve inputs slots for later appending. - Fix numerous style guide violations. TEST=cctest,unittests R=dcarney@chromium.org Review URL: https://codereview.chromium.org/851263002 Cr-Commit-Position: refs/heads/master@{#26098}
-
- 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}
-
- 07 Jan, 2015 1 commit
-
-
bmeurer authored
- Move NodeMarker to its own file, and introduce a non templatized base class. - Cleanup the include hell. - Sanitize the Node construction methods now that we got rid of that GenericNode/GenericGraph stuff. - Protect against NodeId overflow in Graph. - Various minor cleanups. TEST=cctest,mjsunit,unittests Review URL: https://codereview.chromium.org/838783002 Cr-Commit-Position: refs/heads/master@{#25977}
-
- 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
-
-
mstarzinger authored
R=titzer@chromium.org Review URL: https://codereview.chromium.org/753063004 Cr-Commit-Position: refs/heads/master@{#25622}
-