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