Mercurial > hg > truffle
comparison src/share/vm/prims/jni.cpp @ 14290:d050fbf914d8
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 | Thu, 23 Jan 2014 16:02:14 -0500 |
parents | a3ba776d6ab6 |
children | febc6428bc79 |
comparison
equal
deleted
inserted
replaced
14289:7444c21b8b71 | 14290:d050fbf914d8 |
---|---|
1353 } | 1353 } |
1354 | 1354 |
1355 | 1355 |
1356 static instanceOop alloc_object(jclass clazz, TRAPS) { | 1356 static instanceOop alloc_object(jclass clazz, TRAPS) { |
1357 KlassHandle k(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz))); | 1357 KlassHandle k(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz))); |
1358 if (k == NULL) { | |
1359 ResourceMark rm(THREAD); | |
1360 THROW_(vmSymbols::java_lang_InstantiationException(), NULL); | |
1361 } | |
1358 k()->check_valid_for_instantiation(false, CHECK_NULL); | 1362 k()->check_valid_for_instantiation(false, CHECK_NULL); |
1359 InstanceKlass::cast(k())->initialize(CHECK_NULL); | 1363 InstanceKlass::cast(k())->initialize(CHECK_NULL); |
1360 instanceOop ih = InstanceKlass::cast(k())->allocate_instance(THREAD); | 1364 instanceOop ih = InstanceKlass::cast(k())->allocate_instance(THREAD); |
1361 return ih; | 1365 return ih; |
1362 } | 1366 } |