"/src/share/vm/classfile/classLoader.cpp", line 907: Error: Cannot use long to initialize instanceKlassHandle.
Coleen Phillimore
coleen.phillimore at oracle.com
Wed Nov 5 17:02:41 UTC 2014
Yes, return CHECK_(instanceKlassHandle()) instead of CHECK_NULL for
jdk7. Handles were rewritten since InstanceKlass is no longer an oop.
Coleen
On 11/5/14, 11:58 AM, Andreas Eriksson wrote:
> Hi all,
>
> I'm backporting JDK-8020675
> <https://bugs.openjdk.java.net/browse/JDK-8020675> to jdk7, but debug
> builds on solaris fails with the following error:
>
> ".../src/share/vm/classfile/classLoader.cpp", line 907: Error: Cannot
> use long to initialize instanceKlassHandle.
>
> This is in method ClassLoader::load_classfile which returns an
> instanceKlassHandle.
> The changed code adds a CHECK_NULL:
>
> - stream = e->open_stream(name);
> + stream = e->open_stream(name, CHECK_NULL);
>
> The CHECK_NULL macro expands to
>
> stream = e->open_stream(name, THREAD); if (HAS_PENDING_EXCEPTION)
> return NULL; (0);
>
> NULL is of type long on solaris_x64 (or int on solaris_i586, which has
> the same problem),
> and the solaris debug build fails with the above error because we try
> to return NULL i.e. 0L as an instanceKlassHandle.
>
> This is only a problem on jdk7 solaris debug builds, does anyone know
> why it fails in this particular configuration?
> It is not a problem on jdk8, even though the same code exists there.
>
> Returning instanceKlassHandle() works as expected, would this be the
> correct way to go since that is a NULL handle?
>
> Any help is appreciated.
>
> Regards,
> Andreas
More information about the hotspot-dev
mailing list