Mercurial > hg > graal-jvmci-8
comparison src/share/vm/prims/jni.cpp @ 23746:0dceb4846c8c
8031427: AllocObject and Unsafe.allocateInstance segfault for primitive types
Summary: The fix just throws an InstantiationException if the Klass is NULL.
Reviewed-by: coleenp, twisti, jrose
Contributed-by: gdub <duboscq@ssw.jku.at>
author | gdub |
---|---|
date | Fri, 26 Aug 2016 13:37:53 -0700 |
parents | b5f3a471e646 |
children | f13e777eb255 |
comparison
equal
deleted
inserted
replaced
23745:a074ae16281d | 23746:0dceb4846c8c |
---|---|
1407 } | 1407 } |
1408 | 1408 |
1409 | 1409 |
1410 static instanceOop alloc_object(jclass clazz, TRAPS) { | 1410 static instanceOop alloc_object(jclass clazz, TRAPS) { |
1411 KlassHandle k(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz))); | 1411 KlassHandle k(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz))); |
1412 if (k == NULL) { | |
1413 ResourceMark rm(THREAD); | |
1414 THROW_(vmSymbols::java_lang_InstantiationException(), NULL); | |
1415 } | |
1412 k()->check_valid_for_instantiation(false, CHECK_NULL); | 1416 k()->check_valid_for_instantiation(false, CHECK_NULL); |
1413 InstanceKlass::cast(k())->initialize(CHECK_NULL); | 1417 InstanceKlass::cast(k())->initialize(CHECK_NULL); |
1414 instanceOop ih = InstanceKlass::cast(k())->allocate_instance(THREAD); | 1418 instanceOop ih = InstanceKlass::cast(k())->allocate_instance(THREAD); |
1415 return ih; | 1419 return ih; |
1416 } | 1420 } |