< prev index next >
src/hotspot/share/prims/jvm.cpp
Print this page
rev 59083 : DRAFT 8236522: NonTearable marker interface for inline classes to enforce atomicity
*** 2330,2343 ****
oop o = JNIHandles::resolve(array);
Klass* k = o->klass();
if ((o == NULL) || (!k->is_array_klass())) {
THROW_0(vmSymbols::java_lang_IllegalArgumentException());
}
! if (k->is_valueArray_klass()) {
! return ValueArrayKlass::cast(k)->is_atomic();
! }
! return true;
JVM_END
JVM_ENTRY(jobject, JVM_ArrayEnsureAccessAtomic(JNIEnv *env, jclass unused, jobject array))
JVMWrapper("JVM_ArrayEnsureAccessAtomic");
oop o = JNIHandles::resolve(array);
--- 2330,2340 ----
oop o = JNIHandles::resolve(array);
Klass* k = o->klass();
if ((o == NULL) || (!k->is_array_klass())) {
THROW_0(vmSymbols::java_lang_IllegalArgumentException());
}
! return ArrayKlass::cast(k)->element_access_is_atomic();
JVM_END
JVM_ENTRY(jobject, JVM_ArrayEnsureAccessAtomic(JNIEnv *env, jclass unused, jobject array))
JVMWrapper("JVM_ArrayEnsureAccessAtomic");
oop o = JNIHandles::resolve(array);
*** 2345,2355 ****
if ((o == NULL) || (!k->is_array_klass())) {
THROW_0(vmSymbols::java_lang_IllegalArgumentException());
}
if (k->is_valueArray_klass()) {
ValueArrayKlass* vk = ValueArrayKlass::cast(k);
! if (!vk->is_atomic()) {
/**
* Need to decide how to implement:
*
* 1) Change to objArrayOop layout, therefore oop->klass() differs so
* then "<atomic>[Qfoo;" klass needs to subclass "[Qfoo;" to pass through
--- 2342,2352 ----
if ((o == NULL) || (!k->is_array_klass())) {
THROW_0(vmSymbols::java_lang_IllegalArgumentException());
}
if (k->is_valueArray_klass()) {
ValueArrayKlass* vk = ValueArrayKlass::cast(k);
! if (!vk->element_access_is_atomic()) {
/**
* Need to decide how to implement:
*
* 1) Change to objArrayOop layout, therefore oop->klass() differs so
* then "<atomic>[Qfoo;" klass needs to subclass "[Qfoo;" to pass through
< prev index next >