Skip to content

Commit 239936b

Browse files
authored
Don't pass vmctx to component libcalls (#10937)
* Don't pass vmctx to component libcalls Take a leaf out of the core libcalls book where the `from_vmctx` call is baked in as part of each libcall so libcalls can receive safer arguments by default. There's still much `unsafe` in the libcalls due to their arguments or accessing `*instance.store()`, but this latter part will be fixed in a follow-up commit soon. * Fix dead argument warnings
1 parent f669c0a commit 239936b

3 files changed

Lines changed: 385 additions & 435 deletions

File tree

crates/cranelift/src/compiler/component.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1547,6 +1547,7 @@ impl TrampolineCompiler<'_> {
15471547
let to_base = self.load_runtime_memory_base(vmctx, to);
15481548

15491549
let mut args = Vec::new();
1550+
args.push(vmctx);
15501551

15511552
let uses_retptr = match op {
15521553
Transcode::Utf16ToUtf8

crates/environ/src/component.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -156,18 +156,18 @@ macro_rules! foreach_builtin_component_function {
156156

157157
trap(vmctx: vmctx, code: u8);
158158

159-
utf8_to_utf8(src: ptr_u8, len: size, dst: ptr_u8) -> bool;
160-
utf16_to_utf16(src: ptr_u16, len: size, dst: ptr_u16) -> bool;
161-
latin1_to_latin1(src: ptr_u8, len: size, dst: ptr_u8) -> bool;
162-
latin1_to_utf16(src: ptr_u8, len: size, dst: ptr_u16) -> bool;
163-
utf8_to_utf16(src: ptr_u8, len: size, dst: ptr_u16) -> size;
164-
utf16_to_utf8(src: ptr_u16, src_len: size, dst: ptr_u8, dst_len: size, ret2: ptr_size) -> size;
165-
latin1_to_utf8(src: ptr_u8, src_len: size, dst: ptr_u8, dst_len: size, ret2: ptr_size) -> size;
166-
utf16_to_compact_probably_utf16(src: ptr_u16, len: size, dst: ptr_u16) -> size;
167-
utf8_to_latin1(src: ptr_u8, len: size, dst: ptr_u8, ret2: ptr_size) -> size;
168-
utf16_to_latin1(src: ptr_u16, len: size, dst: ptr_u8, ret2: ptr_size) -> size;
169-
utf8_to_compact_utf16(src: ptr_u8, src_len: size, dst: ptr_u16, dst_len: size, bytes_so_far: size) -> size;
170-
utf16_to_compact_utf16(src: ptr_u16, src_len: size, dst: ptr_u16, dst_len: size, bytes_so_far: size) -> size;
159+
utf8_to_utf8(vmctx: vmctx, src: ptr_u8, len: size, dst: ptr_u8) -> bool;
160+
utf16_to_utf16(vmctx: vmctx, src: ptr_u16, len: size, dst: ptr_u16) -> bool;
161+
latin1_to_latin1(vmctx: vmctx, src: ptr_u8, len: size, dst: ptr_u8) -> bool;
162+
latin1_to_utf16(vmctx: vmctx, src: ptr_u8, len: size, dst: ptr_u16) -> bool;
163+
utf8_to_utf16(vmctx: vmctx, src: ptr_u8, len: size, dst: ptr_u16) -> size;
164+
utf16_to_utf8(vmctx: vmctx, src: ptr_u16, src_len: size, dst: ptr_u8, dst_len: size, ret2: ptr_size) -> size;
165+
latin1_to_utf8(vmctx: vmctx, src: ptr_u8, src_len: size, dst: ptr_u8, dst_len: size, ret2: ptr_size) -> size;
166+
utf16_to_compact_probably_utf16(vmctx: vmctx, src: ptr_u16, len: size, dst: ptr_u16) -> size;
167+
utf8_to_latin1(vmctx: vmctx, src: ptr_u8, len: size, dst: ptr_u8, ret2: ptr_size) -> size;
168+
utf16_to_latin1(vmctx: vmctx, src: ptr_u16, len: size, dst: ptr_u8, ret2: ptr_size) -> size;
169+
utf8_to_compact_utf16(vmctx: vmctx, src: ptr_u8, src_len: size, dst: ptr_u16, dst_len: size, bytes_so_far: size) -> size;
170+
utf16_to_compact_utf16(vmctx: vmctx, src: ptr_u16, src_len: size, dst: ptr_u16, dst_len: size, bytes_so_far: size) -> size;
171171
}
172172
};
173173
}

0 commit comments

Comments
 (0)