PlaceSafepoints, operand bundles, and RewriteStatepointsForGC

[+CC llvm-dev this time]

Hi,

As discussed in the review thread in http://reviews.llvm.org/D16439,
the future plan around statepoints, deopt bundles, PlaceSafepoints
etc. is to "constant fold" -spp-no-statepoints
and -rs4gc-use-deopt-bundles to true.

We (Azul) have moved to a representation of safepoint polls, deopt
state etc. that enables us to do the above; and at this point I'm
waiting for an okay from you guys. LLILC should mostly Just Work in
this new world, with the exception of gc transition operands -- the
LLILC frontend will have to denote these using "gc-transition" operand
bundles, and not by eagerly emitting gc.statepoint calls. You should
be able to test out your changes by passing in -spp-no-statepoints
and -rs4gc-use-deopt-bundles to the LLVM build used in LLILC.

Please let me know once you're okay with me making the switch to
-spp-no-statepoints and -rs4gc-use-deopt-bundles being clamped to
true.

-- Sanjoy

LLILC should mostly Just Work in

this new world, with the exception of gc transition operands -- the
LLILC frontend will have to denote these using "gc-transition" operand
bundles, and not by eagerly emitting gc.statepoint calls. You should
be able to test out your changes by passing in -spp-no-statepoints
and -rs4gc-use-deopt-bundles to the LLVM build used in LLILC.

Thanks for the heads up. Seems straightforward enough to me.

Please let me know once you're okay with me making the switch to

-spp-no-statepoints and -rs4gc-use-deopt-bundles being clamped to
true.

IMO you can go ahead and make this change. We may be broken
against ToT for a few days, but AFAIK that shouldn't block other
work in progress. Joe, feel free to correct me if I'm wrong :slight_smile:

- Pat

I agree with Pat too, about making the change.
Using gc-transition bundles on calls is cleaner layering than eagerly emitting statepoint calls.

Swaroop.

Also, the code we need for this has now been checked in to LLILC. Good to go.

Thanks
-Joseph

[+CC llvm-dev this time]

Hi,

As discussed in the review thread in http://reviews.llvm.org/D16439,
the future plan around statepoints, deopt bundles, PlaceSafepoints
etc. is to "constant fold" -spp-no-statepoints
and -rs4gc-use-deopt-bundles to true.

We (Azul) have moved to a representation of safepoint polls, deopt
state etc. that enables us to do the above; and at this point I'm
waiting for an okay from you guys. LLILC should mostly Just Work in
this new world, with the exception of gc transition operands -- the
LLILC frontend will have to denote these using "gc-transition" operand
bundles, and not by eagerly emitting gc.statepoint calls. You should
be able to test out your changes by passing in -spp-no-statepoints
and -rs4gc-use-deopt-bundles to the LLVM build used in LLILC.

Please let me know once you're okay with me making the switch to
-spp-no-statepoints and -rs4gc-use-deopt-bundles being clamped to
true.

Update: this is now done.

-- Sanjoy

-- Sanjoy