Request for reviews (S): 6953267: assert in EA code with -XX:+StressReflectiveCode

Vladimir Kozlov vladimir.kozlov at oracle.com
Mon May 17 21:16:44 PDT 2010


You are absolutely right. The only difference: bottom_type() is virtual method and type() is simple inline method.
But this advantage of type() disappeared when I added Opcode() (virtual method) check.
I will change the code to use bottom_type().

Thanks,
Vladimir

On 5/17/10 7:04 PM, Tom Rodriguez wrote:
> escape.cpp:
>
> Why isn't this snippet:
>
> +       const TypeKlassPtr *kt;
> +       if (k->Opcode() == Op_LoadKlass) {
> +         kt = k->as_Load()->type()->isa_klassptr();
> +       } else {
> +         // Also works for DecodeN(LoadNKlass).
> +         kt = k->as_Type()->type()->isa_klassptr();
> +       }
>
>
> just this?
>
> const TypeKlassPtr* kt = k->bottom_type()->isa_klassptr();
>
> they are and should be equivalent.  Otherwise it's ok.
>
> tom
>
> On May 17, 2010, at 5:10 PM, Vladimir Kozlov wrote:
>
>> http://cr.openjdk.java.net/~kvn/6953267/webrev
>>
>> Fixed 6953267: assert in EA code with -XX:+StressReflectiveCode
>>
>> EA code does not handle code generated with StressReflectiveCode
>> when an array klass is used for Allocate node or instance klass
>> for AllocateArray node on never executed path (see method
>> LibraryCallKit::inline_native_clone()).
>>
>> Add missing checks into EA code.
>


More information about the hotspot-compiler-dev mailing list