P.S.: You could improve the assertion with the Type class, so it would also fail on otherwise
broken descriptor strings (missing "L" or missing ";"):
I like how it shapes out with Type. Thanks, Uwe!
Best regards,
Vladimir Ivanov
static boolean checkClassName(String cn) {
Type tp = Type.getType(cn);
// additional sanity so only valid "L;" descriptors work
if (tp.getSort() != Type.OBJECT) {
return false;
}
try {
Class<?> c = Class.forName(tp.getClassName(), false, null);
return true;
} catch (ClassNotFoundException e) {
return false;
}
}
-----
Uwe Schindler
uschind...@apache.org
ASF Member, Apache Lucene PMC / Committer
Bremen, Germany
http://lucene.apache.org/
-----Original Message-----
From: core-libs-dev [mailto:core-libs-dev-boun...@openjdk.java.net] On
Behalf Of Paul Sandoz
Sent: Thursday, February 18, 2016 3:05 PM
Cc: Java Core Libs <core-libs-dev@openjdk.java.net>
Subject: Re: RFR 8144931: Assert class signatures are correct and refer to valid
classes
Hi Uwe
Not a stupid question.
We took the conservative approach to preserve the existing costs (avoid
linkage and string generation).
Paul.
On 18 Feb 2016, at 14:54, Uwe Schindler <uschind...@apache.org> wrote:
Hi,
just a stupid question from somebody outside the OpenJDK developers:
You are already using ASM to generate the class files. Why not also use the
Type class in ASM to generate the signatures of a class constant?:
Instead of:
static final String LF_HIDDEN_SIG =
className("Ljava/lang/invoke/LambdaForm$Hidden;");
Use the following to define the constant:
import jdk.internal.org.objectweb.asm.Type;
import java.lang.invoke.LambdaForm.Hidden;
static final String LF_HIDDEN_SIG = Type.getDescriptor(Hidden.class);
This is compile-time checked, because of the .class notation.
Thanks,
Uwe
-----
Uwe Schindler
uschind...@apache.org
ASF Member, Apache Lucene PMC / Committer
Bremen, Germany
http://lucene.apache.org/
-----Original Message-----
From: core-libs-dev [mailto:core-libs-dev-boun...@openjdk.java.net] On
Behalf Of shilpi.rast...@oracle.com
Sent: Thursday, February 18, 2016 12:18 PM
To: Vladimir Ivanov <vladimir.x.iva...@oracle.com>; core-libs-
d...@openjdk.java.net
Subject: Re: RFR 8144931: Assert class signatures are correct and refer to
valid
classes
Thank You Vladimir!
I have done the changes. Please review the updated patch-
http://cr.openjdk.java.net/~srastogi/8144931/webrev.02/
Regards,
Shilpi
On 2/18/2016 1:58 PM, Vladimir Ivanov wrote:
Shilpi,
_CLASS suffix looks redundant and you can abbreviate LAMBDA_FORM
to
LF:
LF_HIDDEN_SIG
LF_COMPILED_SIG
FORCEINLINE_SIG
DONTINLINE_SIG
Otherwise, looks fine.
Best regards,
Vladimir Ivanov
On 2/17/16 5:47 PM, shilpi rastogi wrote:
Hi All,
Please review fix for the following bug-
https://bugs.openjdk.java.net/browse/JDK-8144931
http://cr.openjdk.java.net/~srastogi/8144931/webrev.01/
Thanks,
Shilpi