@@ -75,8 +75,7 @@ pub extern "system" fn Java_net_bluejekyll_wasmtime_WasmFunction_createFunc<'j>(
75
75
None
76
76
} ;
77
77
78
- let wasm_ret: Box < [ ValType ] > =
79
- wasm_ret. map_or_else ( || Box :: new ( [ ] ) as Box < _ > , |v| Box :: new ( [ v] ) as Box < _ > ) ;
78
+ let wasm_ret: Vec < ValType > = wasm_ret. map_or_else ( || vec ! [ ] , |v| vec ! [ v] ) ;
80
79
81
80
let func = move |caller : Caller , inputs : & [ Val ] , outputs : & mut [ Val ] | -> Result < ( ) , Trap > {
82
81
let java_args = & java_args;
@@ -235,22 +234,15 @@ pub extern "system" fn Java_net_bluejekyll_wasmtime_WasmFunction_createFunc<'j>(
235
234
let len = env
236
235
. get_array_length ( jarray)
237
236
. context ( "failed to get Java array length" ) ?;
238
- let ( jbytes, _is_copy ) = env
239
- . get_byte_array_elements ( jarray)
237
+ let jbytes = env
238
+ . get_byte_array_elements ( jarray, ReleaseMode :: NoCopyBack )
240
239
. context ( "failed to get java array elements" ) ?;
241
- let byte_array: & [ u8 ] =
242
- unsafe { slice:: from_raw_parts ( jbytes as * const u8 , len as usize ) } ;
240
+ let byte_array: & [ u8 ] = unsafe {
241
+ slice:: from_raw_parts ( jbytes. as_ptr ( ) as * const u8 , len as usize )
242
+ } ;
243
243
244
244
let bytes = wasm_alloc. alloc_bytes ( byte_array) ?;
245
245
246
- // release the array reference, CopyBack is following the JNI guidelines
247
- env. release_byte_array_elements (
248
- jarray,
249
- unsafe { & mut * jbytes } ,
250
- ReleaseMode :: CopyBack ,
251
- )
252
- . context ( "failed to release Java array elements" ) ?;
253
-
254
246
// get mutable reference to the return by ref pointer and then store
255
247
unsafe {
256
248
let ret_by_ref_loc = wasm_alloc. obj_as_mut :: < WasmSlice > ( ptr) ;
@@ -311,11 +303,7 @@ pub extern "system" fn Java_net_bluejekyll_wasmtime_WasmFunction_createFunc<'j>(
311
303
Ok ( ( ) )
312
304
} ;
313
305
314
- let func = Func :: new (
315
- & store,
316
- FuncType :: new ( wasm_args. into_boxed_slice ( ) , wasm_ret) ,
317
- func,
318
- ) ;
306
+ let func = Func :: new ( & store, FuncType :: new ( wasm_args, wasm_ret) , func) ;
319
307
320
308
Ok ( OpaquePtr :: from ( func) . make_opaque ( ) )
321
309
} )
0 commit comments