2396 case T_FLOAT: value.f = typeArrayOop(xobj())->float_at(index); break;
2397 case T_LONG: value.j = typeArrayOop(xobj())->long_at(index); break;
2398 case T_INT: value.i = typeArrayOop(xobj())->int_at(index); break;
2399 case T_SHORT: value.s = typeArrayOop(xobj())->short_at(index); break;
2400 case T_CHAR: value.c = typeArrayOop(xobj())->char_at(index); break;
2401 case T_BYTE: value.b = typeArrayOop(xobj())->byte_at(index); break;
2402 case T_BOOLEAN: value.z = typeArrayOop(xobj())->byte_at(index) & 1; break;
2403 default: ShouldNotReachHere();
2404 }
2405 result = JVMCIENV->create_box(element_type, &value, JVMCI_CHECK_NULL);
2406 }
2407 assert(!result.is_null(), "must have a value");
2408 return JVMCIENV->get_jobject(result);
2409 }
2410 return nullptr;;
2411 C2V_END
2412
2413
2414 C2V_VMENTRY_0(jint, arrayBaseOffset, (JNIEnv* env, jobject, jchar type_char))
2415 BasicType type = JVMCIENV->typeCharToBasicType(type_char, JVMCI_CHECK_0);
2416 return arrayOopDesc::header_size(type) * HeapWordSize;
2417 C2V_END
2418
2419 C2V_VMENTRY_0(jint, arrayIndexScale, (JNIEnv* env, jobject, jchar type_char))
2420 BasicType type = JVMCIENV->typeCharToBasicType(type_char, JVMCI_CHECK_0);
2421 return type2aelembytes(type);
2422 C2V_END
2423
2424 C2V_VMENTRY(void, releaseClearedOopHandles, (JNIEnv* env, jobject))
2425 JVMCIENV->runtime()->release_cleared_oop_handles();
2426 C2V_END
2427
2428 static void requireJVMCINativeLibrary(JVMCI_TRAPS) {
2429 if (!UseJVMCINativeLibrary) {
2430 JVMCI_THROW_MSG(UnsupportedOperationException, "JVMCI shared library is not enabled (requires -XX:+UseJVMCINativeLibrary)");
2431 }
2432 }
2433
2434 C2V_VMENTRY_NULL(jlongArray, registerNativeMethods, (JNIEnv* env, jobject, jclass mirror))
2435 requireJVMCINativeLibrary(JVMCI_CHECK_NULL);
2436 requireInHotSpot("registerNativeMethods", JVMCI_CHECK_NULL);
|
2396 case T_FLOAT: value.f = typeArrayOop(xobj())->float_at(index); break;
2397 case T_LONG: value.j = typeArrayOop(xobj())->long_at(index); break;
2398 case T_INT: value.i = typeArrayOop(xobj())->int_at(index); break;
2399 case T_SHORT: value.s = typeArrayOop(xobj())->short_at(index); break;
2400 case T_CHAR: value.c = typeArrayOop(xobj())->char_at(index); break;
2401 case T_BYTE: value.b = typeArrayOop(xobj())->byte_at(index); break;
2402 case T_BOOLEAN: value.z = typeArrayOop(xobj())->byte_at(index) & 1; break;
2403 default: ShouldNotReachHere();
2404 }
2405 result = JVMCIENV->create_box(element_type, &value, JVMCI_CHECK_NULL);
2406 }
2407 assert(!result.is_null(), "must have a value");
2408 return JVMCIENV->get_jobject(result);
2409 }
2410 return nullptr;;
2411 C2V_END
2412
2413
2414 C2V_VMENTRY_0(jint, arrayBaseOffset, (JNIEnv* env, jobject, jchar type_char))
2415 BasicType type = JVMCIENV->typeCharToBasicType(type_char, JVMCI_CHECK_0);
2416 return arrayOopDesc::base_offset_in_bytes(type);
2417 C2V_END
2418
2419 C2V_VMENTRY_0(jint, arrayIndexScale, (JNIEnv* env, jobject, jchar type_char))
2420 BasicType type = JVMCIENV->typeCharToBasicType(type_char, JVMCI_CHECK_0);
2421 return type2aelembytes(type);
2422 C2V_END
2423
2424 C2V_VMENTRY(void, releaseClearedOopHandles, (JNIEnv* env, jobject))
2425 JVMCIENV->runtime()->release_cleared_oop_handles();
2426 C2V_END
2427
2428 static void requireJVMCINativeLibrary(JVMCI_TRAPS) {
2429 if (!UseJVMCINativeLibrary) {
2430 JVMCI_THROW_MSG(UnsupportedOperationException, "JVMCI shared library is not enabled (requires -XX:+UseJVMCINativeLibrary)");
2431 }
2432 }
2433
2434 C2V_VMENTRY_NULL(jlongArray, registerNativeMethods, (JNIEnv* env, jobject, jclass mirror))
2435 requireJVMCINativeLibrary(JVMCI_CHECK_NULL);
2436 requireInHotSpot("registerNativeMethods", JVMCI_CHECK_NULL);
|