Skip to content

Commit e16dd15

Browse files
authored
Merge pull request #1624 from alexcrichton/less-stack
Remove the long-defunkt `Stack` trait
2 parents d9e53ac + a021a96 commit e16dd15

File tree

7 files changed

+138
-226
lines changed

7 files changed

+138
-226
lines changed

crates/backend/src/codegen.rs

Lines changed: 45 additions & 98 deletions
Large diffs are not rendered by default.

src/closure.rs

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -475,8 +475,8 @@ where
475475
{
476476
type Abi = u32;
477477

478-
fn into_abi(self, extra: &mut dyn Stack) -> u32 {
479-
(&*self.js).into_abi(extra)
478+
fn into_abi(self) -> u32 {
479+
(&*self.js).into_abi()
480480
}
481481
}
482482

@@ -561,13 +561,12 @@ macro_rules! doit {
561561
let ret = {
562562
let f: *const dyn Fn($($var),*) -> R =
563563
FatPtr { fields: (a, b) }.ptr;
564-
let mut _stack = GlobalStack::new();
565564
$(
566-
let $var = <$var as FromWasmAbi>::from_abi($var, &mut _stack);
565+
let $var = <$var as FromWasmAbi>::from_abi($var);
567566
)*
568567
(*f)($($var),*)
569568
};
570-
ret.return_abi(&mut GlobalStack::new())
569+
ret.return_abi()
571570
}
572571

573572
inform(invoke::<$($var,)* R> as u32);
@@ -615,13 +614,12 @@ macro_rules! doit {
615614
let f: *const dyn FnMut($($var),*) -> R =
616615
FatPtr { fields: (a, b) }.ptr;
617616
let f = f as *mut dyn FnMut($($var),*) -> R;
618-
let mut _stack = GlobalStack::new();
619617
$(
620-
let $var = <$var as FromWasmAbi>::from_abi($var, &mut _stack);
618+
let $var = <$var as FromWasmAbi>::from_abi($var);
621619
)*
622620
(*f)($($var),*)
623621
};
624-
ret.return_abi(&mut GlobalStack::new())
622+
ret.return_abi()
625623
}
626624

627625
inform(invoke::<$($var,)* R> as u32);
@@ -734,11 +732,10 @@ unsafe impl<A, R> WasmClosure for dyn Fn(&A) -> R
734732
let ret = {
735733
let f: *const dyn Fn(&A) -> R =
736734
FatPtr { fields: (a, b) }.ptr;
737-
let mut _stack = GlobalStack::new();
738-
let arg = <A as RefFromWasmAbi>::ref_from_abi(arg, &mut _stack);
735+
let arg = <A as RefFromWasmAbi>::ref_from_abi(arg);
739736
(*f)(&*arg)
740737
};
741-
ret.return_abi(&mut GlobalStack::new())
738+
ret.return_abi()
742739
}
743740

744741
inform(invoke::<A, R> as u32);
@@ -782,11 +779,10 @@ unsafe impl<A, R> WasmClosure for dyn FnMut(&A) -> R
782779
let f: *const dyn FnMut(&A) -> R =
783780
FatPtr { fields: (a, b) }.ptr;
784781
let f = f as *mut dyn FnMut(&A) -> R;
785-
let mut _stack = GlobalStack::new();
786-
let arg = <A as RefFromWasmAbi>::ref_from_abi(arg, &mut _stack);
782+
let arg = <A as RefFromWasmAbi>::ref_from_abi(arg);
787783
(*f)(&*arg)
788784
};
789-
ret.return_abi(&mut GlobalStack::new())
785+
ret.return_abi()
790786
}
791787

792788
inform(invoke::<A, R> as u32);

src/convert/closures.rs

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use core::mem;
22

33
use crate::convert::slices::WasmSlice;
44
use crate::convert::RefFromWasmAbi;
5-
use crate::convert::{FromWasmAbi, GlobalStack, IntoWasmAbi, ReturnWasmAbi, Stack};
5+
use crate::convert::{FromWasmAbi, IntoWasmAbi, ReturnWasmAbi};
66
use crate::describe::{inform, WasmDescribe, FUNCTION};
77
use crate::throw_str;
88

@@ -14,7 +14,7 @@ macro_rules! stack_closures {
1414
{
1515
type Abi = WasmSlice;
1616

17-
fn into_abi(self, _extra: &mut dyn Stack) -> WasmSlice {
17+
fn into_abi(self) -> WasmSlice {
1818
unsafe {
1919
let (a, b): (usize, usize) = mem::transmute(self);
2020
WasmSlice { ptr: a as u32, len: b as u32 }
@@ -35,13 +35,12 @@ macro_rules! stack_closures {
3535
// ensure they're all destroyed as `return_abi` may throw
3636
let ret = {
3737
let f: &dyn Fn($($var),*) -> R = mem::transmute((a, b));
38-
let mut _stack = GlobalStack::new();
3938
$(
40-
let $var = <$var as FromWasmAbi>::from_abi($var, &mut _stack);
39+
let $var = <$var as FromWasmAbi>::from_abi($var);
4140
)*
4241
f($($var),*)
4342
};
44-
ret.return_abi(&mut GlobalStack::new())
43+
ret.return_abi()
4544
}
4645

4746
impl<'a, $($var,)* R> WasmDescribe for dyn Fn($($var),*) -> R + 'a
@@ -63,7 +62,7 @@ macro_rules! stack_closures {
6362
{
6463
type Abi = WasmSlice;
6564

66-
fn into_abi(self, _extra: &mut dyn Stack) -> WasmSlice {
65+
fn into_abi(self) -> WasmSlice {
6766
unsafe {
6867
let (a, b): (usize, usize) = mem::transmute(self);
6968
WasmSlice { ptr: a as u32, len: b as u32 }
@@ -84,13 +83,12 @@ macro_rules! stack_closures {
8483
// ensure they're all destroyed as `return_abi` may throw
8584
let ret = {
8685
let f: &mut dyn FnMut($($var),*) -> R = mem::transmute((a, b));
87-
let mut _stack = GlobalStack::new();
8886
$(
89-
let $var = <$var as FromWasmAbi>::from_abi($var, &mut _stack);
87+
let $var = <$var as FromWasmAbi>::from_abi($var);
9088
)*
9189
f($($var),*)
9290
};
93-
ret.return_abi(&mut GlobalStack::new())
91+
ret.return_abi()
9492
}
9593

9694
impl<'a, $($var,)* R> WasmDescribe for dyn FnMut($($var),*) -> R + 'a
@@ -127,7 +125,7 @@ where
127125
{
128126
type Abi = WasmSlice;
129127

130-
fn into_abi(self, _extra: &mut dyn Stack) -> WasmSlice {
128+
fn into_abi(self) -> WasmSlice {
131129
unsafe {
132130
let (a, b): (usize, usize) = mem::transmute(self);
133131
WasmSlice {
@@ -151,11 +149,10 @@ unsafe extern "C" fn invoke1_ref<A: RefFromWasmAbi, R: ReturnWasmAbi>(
151149
// ensure they're all destroyed as `return_abi` may throw
152150
let ret = {
153151
let f: &dyn Fn(&A) -> R = mem::transmute((a, b));
154-
let mut _stack = GlobalStack::new();
155-
let arg = <A as RefFromWasmAbi>::ref_from_abi(arg, &mut _stack);
152+
let arg = <A as RefFromWasmAbi>::ref_from_abi(arg);
156153
f(&*arg)
157154
};
158-
ret.return_abi(&mut GlobalStack::new())
155+
ret.return_abi()
159156
}
160157

161158
impl<'a, A, R> WasmDescribe for dyn Fn(&A) -> R + 'a
@@ -179,7 +176,7 @@ where
179176
{
180177
type Abi = WasmSlice;
181178

182-
fn into_abi(self, _extra: &mut dyn Stack) -> WasmSlice {
179+
fn into_abi(self) -> WasmSlice {
183180
unsafe {
184181
let (a, b): (usize, usize) = mem::transmute(self);
185182
WasmSlice {
@@ -203,11 +200,10 @@ unsafe extern "C" fn invoke1_mut_ref<A: RefFromWasmAbi, R: ReturnWasmAbi>(
203200
// ensure they're all destroyed as `return_abi` may throw
204201
let ret = {
205202
let f: &mut dyn FnMut(&A) -> R = mem::transmute((a, b));
206-
let mut _stack = GlobalStack::new();
207-
let arg = <A as RefFromWasmAbi>::ref_from_abi(arg, &mut _stack);
203+
let arg = <A as RefFromWasmAbi>::ref_from_abi(arg);
208204
f(&*arg)
209205
};
210-
ret.return_abi(&mut GlobalStack::new())
206+
ret.return_abi()
211207
}
212208

213209
impl<'a, A, R> WasmDescribe for dyn FnMut(&A) -> R + 'a

0 commit comments

Comments
 (0)