RFR: 8252505: C1/C2 compiler support for blackholes

Aleksey Shipilev shade at redhat.com
Thu Nov 26 20:13:59 UTC 2020


Hi Vladimir,

Apparently Skara bots were not able to link this reply to the PR...

On 11/26/20 12:26 PM, Vladimir Ivanov wrote:
>     * you subclass CallJavaNode, but then disable most of the features it
> brings.

Yeah. On the upside, that effectively allow me to push the CallBlackholeJava as if it is 
CallJavaNode, and create this special node by trivially hijacking two CallGenerators. But maybe that 
is not as clean, and we are better off lifting CallBlackhole to Call, and do its own 
BlackholeCallGenerator.

For example, like this:
   https://cr.openjdk.java.net/~shade/8252505/remodel-callblackhole.patch

Since we are now doing the whole setup for it ourselves, I think we can avoid safepoint and debug 
info, and therefore ditch Ideal for it. RegMask would still avoid register shuffles of "real" 
arguments. It still has some x86_32 failures which I would attend to tomorrow, so I cannot push it 
to the branch yet.

>     * what you try to achieve is closer to CallLeaf: it doesn't have
> safepoint info attached.

Yeah, but CallLeaf is CallRuntime, which is weird.

>     * but SafePoint is also close (except JVM state): it doesn't have any
> arguments, but still keeps values alive through debug inputs; you could
> try to turn arguments into debug info even for an ordinary call.

I am probably stupid, but I cannot get this part to work yet.

>     * you can try to avoid AD changes and construct a MachNode directly;

You mean hack Matcher to emit MachCallBlackholeNode for every CallBlackholeNode without involving 
.ad? I guess I can try, but simple .ad match rule seems a tad more clear and maintainable to me: it 
does not do special hacks in Matcher.

-- 
Thanks,
-Aleksey



More information about the hotspot-dev mailing list