Review request: 8000459: assert(java_lang_String::is_instance(entry)) failure with various mlvm tests

serguei.spitsyn at oracle.com serguei.spitsyn at oracle.com
Tue Oct 9 18:05:55 PDT 2012


Hi Jiangli,

I'm not very familiar with the pseudo strings, and so, just have a question:

*src/share/vm/prims/jvmtiTagMap.cpp*

2927             entry = pool->resolved_string_at(i);
2928             assert(java_lang_String::is_instance(entry) ||
2929                    pool->is_pseudo_string_at(i), "must be string");

I have a little of doubt the above is correct.

What value the "entry" will have in a case of pseudo string cp entry?
Just want to understand what constant pool reference will be reported.
Do you see all related failing tests passed?

Would something like the following be more accurate ?
    entry = pool->is_pseudo_string_at(i) ?
                pool->pseudo_string_at(i, cp_to_object_index(i)) :
                pool->resolved_string_at(i);
assert(java_lang_String::is_instance(entry));

In this case, a reference from CP to string is reported regardless it is 
pseudo string or not.


Thanks,
Serguei

On 10/9/12 4:26 PM, Jiangli Zhou wrote:
> Please review following fix for 8000459:
>
>   http://cr.openjdk.java.net/~jiangli/8000459/webrev/
>
> With JSR292, a constant pool String entry could be patched to a 
> non-string oop. The assert in 
> VM_HeapWalkOperation::iterate_over_class() needs to be adjusted to 
> reflect that.
>
> Thanks,
>
> Jiangli



More information about the hotspot-dev mailing list