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.phillim...@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.phillim...@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