MCPcopy Create free account
hub / github.com/bluejekyll/wasmtime-java / from_java_class

Function from_java_class

wasmtime-jni/src/wasm_value.rs:459–489  ·  view source on GitHub ↗
(
    env: &JNIEnv<'j>,
    clazz: JClass<'j>,
    for_return: bool,
)

Source from the content-addressed store, hash-verified

457}
458
459pub(crate) fn from_java_class<'j>(
460 env: &JNIEnv<'j>,
461 clazz: JClass<'j>,
462 for_return: bool,
463) -> Result<Option<WasmTy>, Error> {
464 if clazz.is_null() {
465 return Ok(None); // FIXME: this should be an exception, right?
466 }
467
468 let voidp: JClass = env.get_static_field(VOID, PRIMITIVE, CLASS)?.l()?.into();
469
470 let ty: WasmTy = match clazz {
471 _ if env.is_assignable_from(clazz, I64)? => ValType::I64.into(),
472 _ if env.is_assignable_from(clazz, I32)? => ValType::I32.into(),
473 _ if env.is_assignable_from(clazz, F64)? => ValType::F64.into(),
474 _ if env.is_assignable_from(clazz, F32)? => ValType::F32.into(),
475 _ if env.is_assignable_from(clazz, WASM_VOID)? => return Ok(None),
476 _ if env.is_assignable_from(clazz, VOID)? => return Ok(None),
477 _ if env.is_assignable_from(clazz, voidp)? => return Ok(None),
478 _ => {
479 let name = get_class_name(env, clazz)?;
480 if !for_return {
481 return Err(anyhow!("Unsupported Java class as argument: {}", name));
482 } else {
483 return Err(anyhow!("Unsupported Java class as result: {}", name));
484 }
485 }
486 };
487
488 Ok(Some(ty))
489}
490
491pub(crate) fn from_java<'j, 'b: 'j>(
492 env: &'b JNIEnv<'j>,

Calls 2

get_class_nameFunction · 0.85
is_nullMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…