Request for review (M): 7171890: C1: add Class.isInstance intrinsic

Rémi Forax forax at
Wed May 30 11:49:23 PDT 2012

Hi Krystal,
is it also possible to try to trap Class.isAssignableFrom(Class),
if one of Class is constant ?


On 05/30/2012 05:31 PM, Krystal Mok wrote:
> Hi all,
> Could I have a couple of review for this change, please?
> This patch implements Class.isInstance() intrinsic in C1.
> As a first cut, the current implementation is pretty straightforward:
> 1. During HIR construction, Class.isInstance() is inlined as an 
> Intrinsic node
>    in GraphBuilder::try_inline_intrinsics();
> 2. Try to canonicalize the Intrinsic node into an InstanceOf node when
>    appending the node to the HIR graph;
> 3. Generate a leaf call to a runtime helper (Runtime1::is_instance_of) 
> during
>    LIR generation for the remaining Intrinsic nodes for 
> Class.isInstance().
>    This keeps the change platform-independent.
> There are several opportunities for more optimizations. e.g.
> 1. Turn more Intrinsic nodes into InstanceOf nodes during HIR 
> optimizations and
>    during LIR generation;
> 2. Check the clazz.isInstance(null) case in a couple of places *after* 
> clazz is
>    null-checked or guaranteed to be non-null; turn that into a 
> constant false.
> 3. Follow the lir_store_check example for better platform-dependent 
> performance
> These shall be addressed in some future change, if necessary.
> Regards,
> Kris

More information about the hotspot-compiler-dev mailing list