@@ -762,7 +762,7 @@ fn instruction(js: &mut JsBuilder, instr: &Instruction, log_error: &mut bool) ->
762
762
763
763
Instruction :: VectorToMemory { kind, malloc, mem } => {
764
764
let val = js. pop ( ) ;
765
- let func = js. cx . pass_to_wasm_function ( * kind, * mem) ?;
765
+ let func = js. cx . pass_to_wasm_function ( kind. clone ( ) , * mem) ?;
766
766
let malloc = js. cx . export_name_of ( * malloc) ;
767
767
let i = js. tmp ( ) ;
768
768
js. prelude ( & format ! (
@@ -805,7 +805,7 @@ fn instruction(js: &mut JsBuilder, instr: &Instruction, log_error: &mut bool) ->
805
805
}
806
806
807
807
Instruction :: OptionVector { kind, mem, malloc } => {
808
- let func = js. cx . pass_to_wasm_function ( * kind, * mem) ?;
808
+ let func = js. cx . pass_to_wasm_function ( kind. clone ( ) , * mem) ?;
809
809
js. cx . expose_is_like_none ( ) ;
810
810
let i = js. tmp ( ) ;
811
811
let malloc = js. cx . export_name_of ( * malloc) ;
@@ -832,7 +832,7 @@ fn instruction(js: &mut JsBuilder, instr: &Instruction, log_error: &mut bool) ->
832
832
// a length. These two pointer/length values get pushed onto the
833
833
// value stack.
834
834
let val = js. pop ( ) ;
835
- let func = js. cx . pass_to_wasm_function ( * kind, * mem) ?;
835
+ let func = js. cx . pass_to_wasm_function ( kind. clone ( ) , * mem) ?;
836
836
let malloc = js. cx . export_name_of ( * malloc) ;
837
837
let i = js. tmp ( ) ;
838
838
js. prelude ( & format ! (
@@ -850,7 +850,7 @@ fn instruction(js: &mut JsBuilder, instr: &Instruction, log_error: &mut bool) ->
850
850
// original mutable slice with any modifications, and then free the
851
851
// Rust-backed memory.
852
852
let free = js. cx . export_name_of ( * free) ;
853
- let get = js. cx . memview_function ( * kind, * mem) ;
853
+ let get = js. cx . memview_function ( kind. clone ( ) , * mem) ;
854
854
js. finally ( & format ! (
855
855
"
856
856
{val}.set({get}().subarray(ptr{i} / {size}, ptr{i} / {size} + len{i}));
@@ -1003,7 +1003,7 @@ fn instruction(js: &mut JsBuilder, instr: &Instruction, log_error: &mut bool) ->
1003
1003
Instruction :: VectorLoad { kind, mem, free } => {
1004
1004
let len = js. pop ( ) ;
1005
1005
let ptr = js. pop ( ) ;
1006
- let f = js. cx . expose_get_vector_from_wasm ( * kind, * mem) ?;
1006
+ let f = js. cx . expose_get_vector_from_wasm ( kind. clone ( ) , * mem) ?;
1007
1007
let i = js. tmp ( ) ;
1008
1008
let free = js. cx . export_name_of ( * free) ;
1009
1009
js. prelude ( & format ! ( "var v{} = {}({}, {}).slice();" , i, f, ptr, len) ) ;
@@ -1020,7 +1020,7 @@ fn instruction(js: &mut JsBuilder, instr: &Instruction, log_error: &mut bool) ->
1020
1020
Instruction :: OptionVectorLoad { kind, mem, free } => {
1021
1021
let len = js. pop ( ) ;
1022
1022
let ptr = js. pop ( ) ;
1023
- let f = js. cx . expose_get_vector_from_wasm ( * kind, * mem) ?;
1023
+ let f = js. cx . expose_get_vector_from_wasm ( kind. clone ( ) , * mem) ?;
1024
1024
let i = js. tmp ( ) ;
1025
1025
let free = js. cx . export_name_of ( * free) ;
1026
1026
js. prelude ( & format ! ( "let v{};" , i) ) ;
@@ -1040,14 +1040,14 @@ fn instruction(js: &mut JsBuilder, instr: &Instruction, log_error: &mut bool) ->
1040
1040
Instruction :: View { kind, mem } => {
1041
1041
let len = js. pop ( ) ;
1042
1042
let ptr = js. pop ( ) ;
1043
- let f = js. cx . expose_get_vector_from_wasm ( * kind, * mem) ?;
1043
+ let f = js. cx . expose_get_vector_from_wasm ( kind. clone ( ) , * mem) ?;
1044
1044
js. push ( format ! ( "{f}({ptr}, {len})" , ptr = ptr, len = len, f = f) ) ;
1045
1045
}
1046
1046
1047
1047
Instruction :: OptionView { kind, mem } => {
1048
1048
let len = js. pop ( ) ;
1049
1049
let ptr = js. pop ( ) ;
1050
- let f = js. cx . expose_get_vector_from_wasm ( * kind, * mem) ?;
1050
+ let f = js. cx . expose_get_vector_from_wasm ( kind. clone ( ) , * mem) ?;
1051
1051
js. push ( format ! (
1052
1052
"{ptr} === 0 ? undefined : {f}({ptr}, {len})" ,
1053
1053
ptr = ptr,
@@ -1226,7 +1226,7 @@ fn adapter2ts(ty: &AdapterType, dst: &mut String) {
1226
1226
AdapterType :: String => dst. push_str ( "string" ) ,
1227
1227
AdapterType :: Externref => dst. push_str ( "any" ) ,
1228
1228
AdapterType :: Bool => dst. push_str ( "boolean" ) ,
1229
- AdapterType :: Vector ( kind) => dst. push_str ( kind. js_ty ( ) ) ,
1229
+ AdapterType :: Vector ( kind) => dst. push_str ( & kind. js_ty ( ) ) ,
1230
1230
AdapterType :: Option ( ty) => {
1231
1231
adapter2ts ( ty, dst) ;
1232
1232
dst. push_str ( " | undefined" ) ;
0 commit comments