< 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 >