|
|
Created:
4 years, 9 months ago by Mircea Trofin Modified:
4 years, 9 months ago CC:
v8-reviews_googlegroups.com Base URL:
https://chromium.googlesource.com/v8/v8.git@master Target Ref:
refs/pending/heads/master Project:
v8 Visibility:
Public. |
Description[turbofan] Move frame elision logic to the end
We establish spilling blocks for ranges spilling only in deferred blocks
really late - just before optimization. This means frame elision logic
should happen after all dust has settled - even after optimization, since
we may lose spills after that (this is not currently leveraged).
Also enabled the elision algo for all functions, but forcing the first frame
to construct a frame for non-code stub cases. This is preparing for a
subsequent change where we guide frame construction/destruction
solely based on the info produced by the register allocation pipeline.
BUG=
Committed: https://crrev.com/32a2ab0c724673961aa145ab63c79a29e6d28fa8
Cr-Commit-Position: refs/heads/master@{#35016}
Patch Set 1 : #
Total comments: 2
Patch Set 2 : #
Total comments: 2
Patch Set 3 : #
Messages
Total messages: 22 (10 generated)
Description was changed from ========== [turbofan] Move frame elision logic to the end BUG= ========== to ========== [turbofan] Move frame elision logic to the end We establish spilling blocks for ranges spilling only in deferred blocks really late - just before optimization. This means frame elision logic should happen after all dust has settled - even after optimization, since we may lose spills after that (this is not currently leveraged). Also enabled the elision algo for all functions. This is preparing for a subsequent change where we guide frame construction/destruction solely based on the info produced by the register allocation pipeline. BUG= ==========
mtrofin@chromium.org changed reviewers: + danno@chromium.org
Description was changed from ========== [turbofan] Move frame elision logic to the end We establish spilling blocks for ranges spilling only in deferred blocks really late - just before optimization. This means frame elision logic should happen after all dust has settled - even after optimization, since we may lose spills after that (this is not currently leveraged). Also enabled the elision algo for all functions. This is preparing for a subsequent change where we guide frame construction/destruction solely based on the info produced by the register allocation pipeline. BUG= ========== to ========== [turbofan] Move frame elision logic to the end We establish spilling blocks for ranges spilling only in deferred blocks really late - just before optimization. This means frame elision logic should happen after all dust has settled - even after optimization, since we may lose spills after that (this is not currently leveraged). Also enabled the elision algo for all functions, but forcing the first frame to construct a frame for non-code stub cases. This is preparing for a subsequent change where we guide frame construction/destruction solely based on the info produced by the register allocation pipeline. BUG= ==========
Patchset #1 (id:1) has been deleted
https://codereview.chromium.org/1810333003/diff/20001/src/compiler/frame-elid... File src/compiler/frame-elider.cc (right): https://codereview.chromium.org/1810333003/diff/20001/src/compiler/frame-elid... src/compiler/frame-elider.cc:16: if (descriptor != nullptr && descriptor->RequiresFrameAsIncoming()) { Passing in the CallDescriptor here seems weird. I liked the old way better. Can you not just mark the first block externally in the pipeline?
Patchset #2 (id:40001) has been deleted
https://codereview.chromium.org/1810333003/diff/20001/src/compiler/frame-elid... File src/compiler/frame-elider.cc (right): https://codereview.chromium.org/1810333003/diff/20001/src/compiler/frame-elid... src/compiler/frame-elider.cc:16: if (descriptor != nullptr && descriptor->RequiresFrameAsIncoming()) { On 2016/03/18 18:13:00, danno wrote: > Passing in the CallDescriptor here seems weird. I liked the old way better. Can > you not just mark the first block externally in the pipeline? Done.
https://codereview.chromium.org/1810333003/diff/60001/src/compiler/pipeline.cc File src/compiler/pipeline.cc (right): https://codereview.chromium.org/1810333003/diff/60001/src/compiler/pipeline.c... src/compiler/pipeline.cc:1498: data_->sequence()->instruction_blocks()[0]->mark_needs_frame(); I think this extra marking makes more sense in InitializeInstructionSequence.
On 2016/03/22 09:27:20, danno wrote: > https://codereview.chromium.org/1810333003/diff/60001/src/compiler/pipeline.cc > File src/compiler/pipeline.cc (right): > > https://codereview.chromium.org/1810333003/diff/60001/src/compiler/pipeline.c... > src/compiler/pipeline.cc:1498: > data_->sequence()->instruction_blocks()[0]->mark_needs_frame(); > I think this extra marking makes more sense in InitializeInstructionSequence. I'd prefer leaving it in the register allocation pipeline, see how we needed to move validation farther from schedule construction here: https://codereview.chromium.org/1811213003/
https://codereview.chromium.org/1810333003/diff/60001/src/compiler/pipeline.cc File src/compiler/pipeline.cc (right): https://codereview.chromium.org/1810333003/diff/60001/src/compiler/pipeline.c... src/compiler/pipeline.cc:1498: data_->sequence()->instruction_blocks()[0]->mark_needs_frame(); On 2016/03/22 09:27:20, danno wrote: > I think this extra marking makes more sense in InitializeInstructionSequence. Done.
danno@chromium.org changed reviewers: + jarin@chromium.org
lgtm. Adding a compiler OWNER for a real lgtm.
mtrofin@chromium.org changed reviewers: + bmeurer@chromium.org
lgtm
The CQ bit was checked by mtrofin@chromium.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1810333003/80001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1810333003/80001
Message was sent while issue was closed.
Description was changed from ========== [turbofan] Move frame elision logic to the end We establish spilling blocks for ranges spilling only in deferred blocks really late - just before optimization. This means frame elision logic should happen after all dust has settled - even after optimization, since we may lose spills after that (this is not currently leveraged). Also enabled the elision algo for all functions, but forcing the first frame to construct a frame for non-code stub cases. This is preparing for a subsequent change where we guide frame construction/destruction solely based on the info produced by the register allocation pipeline. BUG= ========== to ========== [turbofan] Move frame elision logic to the end We establish spilling blocks for ranges spilling only in deferred blocks really late - just before optimization. This means frame elision logic should happen after all dust has settled - even after optimization, since we may lose spills after that (this is not currently leveraged). Also enabled the elision algo for all functions, but forcing the first frame to construct a frame for non-code stub cases. This is preparing for a subsequent change where we guide frame construction/destruction solely based on the info produced by the register allocation pipeline. BUG= ==========
Message was sent while issue was closed.
Committed patchset #3 (id:80001)
Message was sent while issue was closed.
Description was changed from ========== [turbofan] Move frame elision logic to the end We establish spilling blocks for ranges spilling only in deferred blocks really late - just before optimization. This means frame elision logic should happen after all dust has settled - even after optimization, since we may lose spills after that (this is not currently leveraged). Also enabled the elision algo for all functions, but forcing the first frame to construct a frame for non-code stub cases. This is preparing for a subsequent change where we guide frame construction/destruction solely based on the info produced by the register allocation pipeline. BUG= ========== to ========== [turbofan] Move frame elision logic to the end We establish spilling blocks for ranges spilling only in deferred blocks really late - just before optimization. This means frame elision logic should happen after all dust has settled - even after optimization, since we may lose spills after that (this is not currently leveraged). Also enabled the elision algo for all functions, but forcing the first frame to construct a frame for non-code stub cases. This is preparing for a subsequent change where we guide frame construction/destruction solely based on the info produced by the register allocation pipeline. BUG= Committed: https://crrev.com/32a2ab0c724673961aa145ab63c79a29e6d28fa8 Cr-Commit-Position: refs/heads/master@{#35016} ==========
Message was sent while issue was closed.
Patchset 3 (id:??) landed as https://crrev.com/32a2ab0c724673961aa145ab63c79a29e6d28fa8 Cr-Commit-Position: refs/heads/master@{#35016} |