Skip to content

Commit 9d66ba9

Browse files
committed
Use *mut u8 instead of *mut c_void for pointers.
And switch to `add` from `byte_add`.
1 parent 8427d4a commit 9d66ba9

File tree

2 files changed

+31
-31
lines changed

2 files changed

+31
-31
lines changed

crates/rust/src/bindgen.rs

+26-26
Original file line numberDiff line numberDiff line change
@@ -270,14 +270,14 @@ impl Bindgen for FunctionBindgen<'_, '_> {
270270
self.import_return_pointer_area_align.max(align);
271271
uwrite!(
272272
self.src,
273-
"let ptr{tmp} = ret_area.0.as_mut_ptr().cast::<::core::ffi::c_void>();"
273+
"let ptr{tmp} = ret_area.0.as_mut_ptr().cast::<u8>();"
274274
);
275275
} else {
276276
self.gen.return_pointer_area_size = self.gen.return_pointer_area_size.max(size);
277277
self.gen.return_pointer_area_align = self.gen.return_pointer_area_align.max(align);
278278
uwriteln!(
279279
self.src,
280-
"let ptr{tmp} = _RET_AREA.0.as_mut_ptr().cast::<::core::ffi::c_void>();"
280+
"let ptr{tmp} = _RET_AREA.0.as_mut_ptr().cast::<u8>();"
281281
);
282282
}
283283
format!("ptr{}", tmp)
@@ -659,7 +659,7 @@ impl Bindgen for FunctionBindgen<'_, '_> {
659659
self.push_str(&format!("let {} = ({}).into_boxed_slice();\n", val, op0));
660660
}
661661
self.push_str(&format!(
662-
"let {} = {}.as_ptr().cast::<::core::ffi::c_void>();\n",
662+
"let {} = {}.as_ptr().cast::<u8>();\n",
663663
ptr, val
664664
));
665665
self.push_str(&format!("let {} = {}.len();\n", len, val));
@@ -694,7 +694,7 @@ impl Bindgen for FunctionBindgen<'_, '_> {
694694
self.push_str(&format!("let {} = ({}).into_boxed_slice();\n", val, op0));
695695
}
696696
self.push_str(&format!(
697-
"let {} = {}.as_ptr().cast::<::core::ffi::c_void>();\n",
697+
"let {} = {}.as_ptr().cast::<u8>();\n",
698698
ptr, val
699699
));
700700
self.push_str(&format!("let {} = {}.len();\n", len, val));
@@ -742,14 +742,14 @@ impl Bindgen for FunctionBindgen<'_, '_> {
742742
));
743743
self.push_str(&format!("let {result} = if {layout}.size() != 0 {{\n"));
744744
self.push_str(&format!(
745-
"let ptr = {alloc}::alloc({layout}).cast::<::core::ffi::c_void>();\n",
745+
"let ptr = {alloc}::alloc({layout}).cast::<u8>();\n",
746746
));
747747
self.push_str(&format!(
748748
"if ptr.is_null()\n{{\n{alloc}::handle_alloc_error({layout});\n}}\nptr\n}}",
749749
));
750750
self.push_str("else {{\n::core::ptr::null_mut()\n}};\n");
751751
self.push_str(&format!("for (i, e) in {vec}.into_iter().enumerate() {{\n",));
752-
self.push_str(&format!("let base = {result}.byte_add(i * {size});\n",));
752+
self.push_str(&format!("let base = {result}.add(i * {size});\n",));
753753
self.push_str(&body);
754754
self.push_str("\n}\n");
755755
results.push(format!("{result}"));
@@ -785,7 +785,7 @@ impl Bindgen for FunctionBindgen<'_, '_> {
785785
));
786786

787787
uwriteln!(self.src, "for i in 0..{len} {{");
788-
uwriteln!(self.src, "let base = {base}.byte_add(i * {size});");
788+
uwriteln!(self.src, "let base = {base}.add(i * {size});");
789789
uwriteln!(self.src, "let e{tmp} = {body};");
790790
uwriteln!(self.src, "{result}.push(e{tmp});");
791791
uwriteln!(self.src, "}}");
@@ -877,7 +877,7 @@ impl Bindgen for FunctionBindgen<'_, '_> {
877877
let tmp = self.tmp();
878878
uwriteln!(
879879
self.src,
880-
"let l{tmp} = *{}.byte_add({offset}).cast::<i32>();",
880+
"let l{tmp} = *{}.add({offset}).cast::<i32>();",
881881
operands[0]
882882
);
883883
results.push(format!("l{tmp}"));
@@ -886,7 +886,7 @@ impl Bindgen for FunctionBindgen<'_, '_> {
886886
let tmp = self.tmp();
887887
uwriteln!(
888888
self.src,
889-
"let l{tmp} = i32::from(*{}.byte_add({offset}).cast::<u8>());",
889+
"let l{tmp} = i32::from(*{}.add({offset}).cast::<u8>());",
890890
operands[0]
891891
);
892892
results.push(format!("l{tmp}"));
@@ -895,7 +895,7 @@ impl Bindgen for FunctionBindgen<'_, '_> {
895895
let tmp = self.tmp();
896896
uwriteln!(
897897
self.src,
898-
"let l{tmp} = i32::from(*{}.byte_add({offset}).cast::<i8>());",
898+
"let l{tmp} = i32::from(*{}.add({offset}).cast::<i8>());",
899899
operands[0]
900900
);
901901
results.push(format!("l{tmp}"));
@@ -904,7 +904,7 @@ impl Bindgen for FunctionBindgen<'_, '_> {
904904
let tmp = self.tmp();
905905
uwriteln!(
906906
self.src,
907-
"let l{tmp} = i32::from(*{}.byte_add({offset}).cast::<u16>());",
907+
"let l{tmp} = i32::from(*{}.add({offset}).cast::<u16>());",
908908
operands[0]
909909
);
910910
results.push(format!("l{tmp}"));
@@ -913,7 +913,7 @@ impl Bindgen for FunctionBindgen<'_, '_> {
913913
let tmp = self.tmp();
914914
uwriteln!(
915915
self.src,
916-
"let l{tmp} = i32::from(*{}.byte_add({offset}).cast::<i16>());",
916+
"let l{tmp} = i32::from(*{}.add({offset}).cast::<i16>());",
917917
operands[0]
918918
);
919919
results.push(format!("l{tmp}"));
@@ -922,7 +922,7 @@ impl Bindgen for FunctionBindgen<'_, '_> {
922922
let tmp = self.tmp();
923923
uwriteln!(
924924
self.src,
925-
"let l{tmp} = *{}.byte_add({offset}).cast::<i64>();",
925+
"let l{tmp} = *{}.add({offset}).cast::<i64>();",
926926
operands[0]
927927
);
928928
results.push(format!("l{tmp}"));
@@ -931,7 +931,7 @@ impl Bindgen for FunctionBindgen<'_, '_> {
931931
let tmp = self.tmp();
932932
uwriteln!(
933933
self.src,
934-
"let l{tmp} = *{}.byte_add({offset}).cast::<f32>();",
934+
"let l{tmp} = *{}.add({offset}).cast::<f32>();",
935935
operands[0]
936936
);
937937
results.push(format!("l{tmp}"));
@@ -940,7 +940,7 @@ impl Bindgen for FunctionBindgen<'_, '_> {
940940
let tmp = self.tmp();
941941
uwriteln!(
942942
self.src,
943-
"let l{tmp} = *{}.byte_add({offset}).cast::<f64>();",
943+
"let l{tmp} = *{}.add({offset}).cast::<f64>();",
944944
operands[0]
945945
);
946946
results.push(format!("l{tmp}"));
@@ -950,7 +950,7 @@ impl Bindgen for FunctionBindgen<'_, '_> {
950950
let tmp = self.tmp();
951951
uwriteln!(
952952
self.src,
953-
"let l{tmp} = *{}.byte_add({offset}).cast::<*mut ::core::ffi::c_void>();",
953+
"let l{tmp} = *{}.add({offset}).cast::<*mut u8>();",
954954
operands[0]
955955
);
956956
results.push(format!("l{tmp}"));
@@ -959,58 +959,58 @@ impl Bindgen for FunctionBindgen<'_, '_> {
959959
let tmp = self.tmp();
960960
uwriteln!(
961961
self.src,
962-
"let l{tmp} = *{}.byte_add({offset}).cast::<usize>();",
962+
"let l{tmp} = *{}.add({offset}).cast::<usize>();",
963963
operands[0]
964964
);
965965
results.push(format!("l{tmp}"));
966966
}
967967

968968
Instruction::I32Store { offset } => {
969969
self.push_str(&format!(
970-
"*{}.byte_add({}).cast::<i32>() = {};\n",
970+
"*{}.add({}).cast::<i32>() = {};\n",
971971
operands[1], offset, operands[0]
972972
));
973973
}
974974
Instruction::I32Store8 { offset } => {
975975
self.push_str(&format!(
976-
"*{}.byte_add({}).cast::<u8>() = ({}) as u8;\n",
976+
"*{}.add({}).cast::<u8>() = ({}) as u8;\n",
977977
operands[1], offset, operands[0]
978978
));
979979
}
980980
Instruction::I32Store16 { offset } => {
981981
self.push_str(&format!(
982-
"*{}.byte_add({}).cast::<u16>() = ({}) as u16;\n",
982+
"*{}.add({}).cast::<u16>() = ({}) as u16;\n",
983983
operands[1], offset, operands[0]
984984
));
985985
}
986986
Instruction::I64Store { offset } => {
987987
self.push_str(&format!(
988-
"*{}.byte_add({}).cast::<i64>() = {};\n",
988+
"*{}.add({}).cast::<i64>() = {};\n",
989989
operands[1], offset, operands[0]
990990
));
991991
}
992992
Instruction::F32Store { offset } => {
993993
self.push_str(&format!(
994-
"*{}.byte_add({}).cast::<f32>() = {};\n",
994+
"*{}.add({}).cast::<f32>() = {};\n",
995995
operands[1], offset, operands[0]
996996
));
997997
}
998998
Instruction::F64Store { offset } => {
999999
self.push_str(&format!(
1000-
"*{}.byte_add({}).cast::<f64>() = {};\n",
1000+
"*{}.add({}).cast::<f64>() = {};\n",
10011001
operands[1], offset, operands[0]
10021002
));
10031003
}
10041004

10051005
Instruction::PointerStore { offset } => {
10061006
self.push_str(&format!(
1007-
"*{}.byte_add({}).cast::<*mut ::core::ffi::c_void>() = {};\n",
1007+
"*{}.add({}).cast::<*mut u8>() = {};\n",
10081008
operands[1], offset, operands[0]
10091009
));
10101010
}
10111011
Instruction::LengthStore { offset } => {
10121012
self.push_str(&format!(
1013-
"*{}.byte_add({}).cast::<usize>() = {};\n",
1013+
"*{}.add({}).cast::<usize>() = {};\n",
10141014
operands[1], offset, operands[0]
10151015
));
10161016
}
@@ -1075,7 +1075,7 @@ impl Bindgen for FunctionBindgen<'_, '_> {
10751075
self.push_str(" {\n");
10761076
self.push_str("let base = ");
10771077
self.push_str(&base);
1078-
self.push_str(".byte_add(i * ");
1078+
self.push_str(".add(i * ");
10791079
self.push_str(&size.to_string());
10801080
self.push_str(");\n");
10811081
self.push_str(&body);

crates/rust/src/lib.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ impl RustWasm {
379379
self.rt_module.insert(RuntimeItem::StdAllocModule);
380380
self.src.push_str(
381381
"\
382-
pub unsafe fn cabi_dealloc(ptr: *mut ::core::ffi::c_void, size: usize, align: usize) {
382+
pub unsafe fn cabi_dealloc(ptr: *mut u8, size: usize, align: usize) {
383383
if size == 0 {
384384
return;
385385
}
@@ -1248,7 +1248,7 @@ fn wasm_type(ty: WasmType) -> &'static str {
12481248
WasmType::I64 => "i64",
12491249
WasmType::F32 => "f32",
12501250
WasmType::F64 => "f64",
1251-
WasmType::Pointer => "*mut ::core::ffi::c_void",
1251+
WasmType::Pointer => "*mut u8",
12521252
WasmType::Length => "usize",
12531253

12541254
// `PointerOrI64` can hold either a `u64` or a pointer with provenance.
@@ -1293,7 +1293,7 @@ fn bitcast(casts: &[Bitcast], operands: &[String], results: &mut Vec<String>) {
12931293
format!(
12941294
"{{
12951295
let mut t = ::core::mem::MaybeUnunit::<u64>::uninit();
1296-
t.as_mut_ptr().cast::<*mut core::ptr::c_void>().write({});
1296+
t.as_mut_ptr().cast::<*mut u8>().write({});
12971297
t
12981298
}}",
12991299
operand
@@ -1303,13 +1303,13 @@ fn bitcast(casts: &[Bitcast], operands: &[String], results: &mut Vec<String>) {
13031303
// the pointer value.
13041304
Bitcast::P64ToP => {
13051305
format!(
1306-
"{}.as_mut_ptr().cast::<*mut core::ptr::c_void>().read()",
1306+
"{}.as_mut_ptr().cast::<*mut u8>().read()",
13071307
operand
13081308
)
13091309
}
13101310
// Convert an `i32` into a pointer.
13111311
Bitcast::I32ToP => {
1312-
format!("{} as *mut ::core::ffi::c_void", operand)
1312+
format!("{} as *mut u8", operand)
13131313
}
13141314
// Convert a pointer holding an `i32` value back into the `i32`.
13151315
Bitcast::PToI32 => {

0 commit comments

Comments
 (0)