2187 case T_FLOAT: value.f = typeArrayOop(xobj())->float_at(index); break;
2188 case T_LONG: value.j = typeArrayOop(xobj())->long_at(index); break;
2189 case T_INT: value.i = typeArrayOop(xobj())->int_at(index); break;
2190 case T_SHORT: value.s = typeArrayOop(xobj())->short_at(index); break;
2191 case T_CHAR: value.c = typeArrayOop(xobj())->char_at(index); break;
2192 case T_BYTE: value.b = typeArrayOop(xobj())->byte_at(index); break;
2193 case T_BOOLEAN: value.z = typeArrayOop(xobj())->byte_at(index) & 1; break;
2194 default: ShouldNotReachHere();
2195 }
2196 result = JVMCIENV->create_box(element_type, &value, JVMCI_CHECK_NULL);
2197 }
2198 assert(!result.is_null(), "must have a value");
2199 return JVMCIENV->get_jobject(result);
2200 }
2201 return nullptr;;
2202 C2V_END
2203
2204
2205 C2V_VMENTRY_0(jint, arrayBaseOffset, (JNIEnv* env, jobject, jchar type_char))
2206 BasicType type = JVMCIENV->typeCharToBasicType(type_char, JVMCI_CHECK_0);
2207 return arrayOopDesc::header_size(type) * HeapWordSize;
2208 C2V_END
2209
2210 C2V_VMENTRY_0(jint, arrayIndexScale, (JNIEnv* env, jobject, jchar type_char))
2211 BasicType type = JVMCIENV->typeCharToBasicType(type_char, JVMCI_CHECK_0);
2212 return type2aelembytes(type);
2213 C2V_END
2214
2215 C2V_VMENTRY(void, releaseClearedOopHandles, (JNIEnv* env, jobject))
2216 JVMCIENV->runtime()->release_cleared_oop_handles();
2217 C2V_END
2218
2219 static void requireJVMCINativeLibrary(JVMCI_TRAPS) {
2220 if (!UseJVMCINativeLibrary) {
2221 JVMCI_THROW_MSG(UnsupportedOperationException, "JVMCI shared library is not enabled (requires -XX:+UseJVMCINativeLibrary)");
2222 }
2223 }
2224
2225 C2V_VMENTRY_NULL(jlongArray, registerNativeMethods, (JNIEnv* env, jobject, jclass mirror))
2226 requireJVMCINativeLibrary(JVMCI_CHECK_NULL);
2227 requireInHotSpot("registerNativeMethods", JVMCI_CHECK_NULL);
|
2187 case T_FLOAT: value.f = typeArrayOop(xobj())->float_at(index); break;
2188 case T_LONG: value.j = typeArrayOop(xobj())->long_at(index); break;
2189 case T_INT: value.i = typeArrayOop(xobj())->int_at(index); break;
2190 case T_SHORT: value.s = typeArrayOop(xobj())->short_at(index); break;
2191 case T_CHAR: value.c = typeArrayOop(xobj())->char_at(index); break;
2192 case T_BYTE: value.b = typeArrayOop(xobj())->byte_at(index); break;
2193 case T_BOOLEAN: value.z = typeArrayOop(xobj())->byte_at(index) & 1; break;
2194 default: ShouldNotReachHere();
2195 }
2196 result = JVMCIENV->create_box(element_type, &value, JVMCI_CHECK_NULL);
2197 }
2198 assert(!result.is_null(), "must have a value");
2199 return JVMCIENV->get_jobject(result);
2200 }
2201 return nullptr;;
2202 C2V_END
2203
2204
2205 C2V_VMENTRY_0(jint, arrayBaseOffset, (JNIEnv* env, jobject, jchar type_char))
2206 BasicType type = JVMCIENV->typeCharToBasicType(type_char, JVMCI_CHECK_0);
2207 return arrayOopDesc::base_offset_in_bytes(type);
2208 C2V_END
2209
2210 C2V_VMENTRY_0(jint, arrayIndexScale, (JNIEnv* env, jobject, jchar type_char))
2211 BasicType type = JVMCIENV->typeCharToBasicType(type_char, JVMCI_CHECK_0);
2212 return type2aelembytes(type);
2213 C2V_END
2214
2215 C2V_VMENTRY(void, releaseClearedOopHandles, (JNIEnv* env, jobject))
2216 JVMCIENV->runtime()->release_cleared_oop_handles();
2217 C2V_END
2218
2219 static void requireJVMCINativeLibrary(JVMCI_TRAPS) {
2220 if (!UseJVMCINativeLibrary) {
2221 JVMCI_THROW_MSG(UnsupportedOperationException, "JVMCI shared library is not enabled (requires -XX:+UseJVMCINativeLibrary)");
2222 }
2223 }
2224
2225 C2V_VMENTRY_NULL(jlongArray, registerNativeMethods, (JNIEnv* env, jobject, jclass mirror))
2226 requireJVMCINativeLibrary(JVMCI_CHECK_NULL);
2227 requireInHotSpot("registerNativeMethods", JVMCI_CHECK_NULL);
|