RFR (M) Close alignment gaps in InstanceKlass
Dean Long
dean.long at oracle.com
Thu Apr 23 20:16:06 UTC 2020
OK, thanks, looks good!
dl
On 4/22/20 7:32 PM, coleen.phillimore at oracle.com wrote:
>
>
> On 4/22/20 9:00 PM, Dean Long wrote:
>> It looks like calling the JVMCI getSourceFileName() on an array would
>> have accessed random memory because it was expecting an
>> InstanceKlass. Instead of returning null we might want to throw an
>> exception like in HotSpotResolvedPrimitiveType.
> It was never called, except when I tried to call it on an array in the
> test. It caused an assert in the hotspot code. How about this?
> Something else in that file throws JVMCIError with a similar message.
>
> public String getSourceFileName() {
> if (isArray()) {
> throw new JVMCIError("Cannot call getSourceFileName() on
> an array klass type: %s", this);
> }
> return getConstantPool().getSourceFileName();
> }
>
>>
>> dl
>>
>> On 4/22/20 5:39 PM, Dean Long wrote:
>>> Can you compare the result to some string, like "Object.java"? That
>>> seems to be what HotSpotResolvedObjectTypeTest.java is doing.
>>> Also, did getSourceFileName() return null for arrays before your
>>> change?
>
> Fixed:
> public void getSourceFileNameTest() {
> Class<?> c = Object.class;
> ResolvedJavaType type = metaAccess.lookupJavaType(c);
> assertEquals(type.getSourceFileName(), "Object.java");
> }
>
> thanks,
> Coleen
>
>>>
>>> dl
>>>
>>> On 4/22/20 8:18 AM, coleen.phillimore at oracle.com wrote:
>>>>
>>>> Hi Dean, Thank you for looking at the JVMCI changes and the
>>>> suggestion to add the test. I did this and found a bug. The new
>>>> test is quite limited because there's no good test to see if a
>>>> source file name can assertNotNull(type.getSourceFileName()), so I
>>>> couldn't iterate through the list of loaded classes like the other
>>>> tests in that file.
>>>>
>>>> http://cr.openjdk.java.net/~coleenp/2020/8238048.02.incr/webrev/index.html
>>>>
>>>>
>>>> Thanks,
>>>> Coleen
>>>>
>>>>
>>>> On 4/21/20 9:51 PM, Dean Long wrote:
>>>>> Hi Coleen. The JVMCI changes look OK. It looks like there is a
>>>>> Graal unittest that covers getSourceFileName, but those tests
>>>>> don't always get run. If it's not too much trouble, could you look
>>>>> into enabling getSourceFileName() testing in
>>>>>
>>>>> test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.runtime.test/src/jdk/vm/ci/runtime/test/TestResolvedJavaType.java
>>>>>
>>>>>
>>>>> ? It's currently on the "untested" list.
>>>>>
>>>>> thanks,
>>>>>
>>>>> dl
>>>>>
>>>>> On 4/21/20 1:12 PM, coleen.phillimore at oracle.com wrote:
>>>>>> Summary: moved fields around and some constant fields into
>>>>>> ConstantPool
>>>>>>
>>>>>> This is a simple change except that I moved some constant fields
>>>>>> from InstanceKlass into the constant pool so they can be shared
>>>>>> read-only in the CDS archive. There are associated repercussions
>>>>>> in SA and JVMCI, so please look at these changes. Also moved
>>>>>> similarly sized fields together in the class so there's less
>>>>>> likelihood of introducing gaps in future InstanceKlass changes.
>>>>>>
>>>>>> InstanceKlass is reduced from 544 to 520 bytes in a simple Hello
>>>>>> World class.
>>>>>>
>>>>>> open webrev at
>>>>>> http://cr.openjdk.java.net/~coleenp/2020/8238048.01/webrev
>>>>>> bug link https://bugs.openjdk.java.net/browse/JDK-8238048
>>>>>>
>>>>>> Tested with tier1-6.
>>>>>>
>>>>>> Thanks,
>>>>>> Coleen
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
More information about the serviceability-dev
mailing list