Skip to content

Commit a63c120

Browse files
committed
Update for latest nightly
1 parent 121eade commit a63c120

File tree

8 files changed

+24
-22
lines changed

8 files changed

+24
-22
lines changed

src/arch/aarch64.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ pub unsafe fn swap_link(arg: usize, new_sp: StackPointer,
222222
: "={x0}" (ret)
223223
"={x1}" (ret_sp)
224224
: "{x0}" (arg)
225-
"{x2}" (*new_sp.0)
225+
"{x2}" (new_sp.offset(0))
226226
"{x3}" (new_stack_base)
227227
:/*"x0", "x1",*/"x2", "x3", "x4", "x5", "x6", "x7",
228228
"x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15",
@@ -260,7 +260,7 @@ pub unsafe fn swap(arg: usize, new_sp: StackPointer) -> (usize, StackPointer) {
260260
: "={x0}" (ret)
261261
"={x1}" (ret_sp)
262262
: "{x0}" (arg)
263-
"{x2}" (*new_sp.0)
263+
"{x2}" (new_sp.offset(0))
264264
:/*"x0", "x1",*/"x2", "x3", "x4", "x5", "x6", "x7",
265265
"x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15",
266266
"x16", "x17", "x18", "x19", "x20", "x21", "x22", "x23",
@@ -299,7 +299,7 @@ pub unsafe fn unwind(new_sp: StackPointer, new_stack_base: *mut u8) {
299299
:
300300
: "s" (unwind::start_unwind as usize)
301301
"{x0}" (arg)
302-
"{x2}" (*new_sp.0)
302+
"{x2}" (new_sp.offset(0))
303303
"{x3}" (new_stack_base)
304304
: "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7",
305305
"x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15",

src/arch/arm.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ pub unsafe fn swap_link(arg: usize, new_sp: StackPointer,
208208
: "={r0}" (ret)
209209
"={r1}" (ret_sp)
210210
: "{r0}" (arg)
211-
"{r2}" (*new_sp.0)
211+
"{r2}" (new_sp.offset(0))
212212
"{r3}" (new_stack_base)
213213
:/*r0, r1,*/ "r2", "r3", "r4", "r5", "r6", "r7",
214214
"r8", "r9", "r10",/*r11,*/"r12",/*sp,*/ "lr", /*pc,*/
@@ -239,7 +239,7 @@ pub unsafe fn swap(arg: usize, new_sp: StackPointer) -> (usize, StackPointer) {
239239
: "={r0}" (ret)
240240
"={r1}" (ret_sp)
241241
: "{r0}" (arg)
242-
"{r2}" (*new_sp.0)
242+
"{r2}" (new_sp.offset(0))
243243
:/*r0, r1,*/ "r2", "r3", "r4", "r5", "r6", "r7",
244244
"r8", "r9", "r10",/*r11,*/"r12",/*sp,*/ "lr", /*pc,*/
245245
"d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7",
@@ -279,7 +279,7 @@ pub unsafe fn unwind(new_sp: StackPointer, new_stack_base: *mut u8) {
279279
:
280280
: "s" (unwind::start_unwind as usize)
281281
"{r0}" (arg)
282-
"{r2}" (*new_sp.0)
282+
"{r2}" (new_sp.offset(0))
283283
"{r3}" (new_stack_base)
284284
: "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
285285
"r8", "r9", "r10",/*r11,*/"r12",/*sp,*/ "lr", /*pc,*/

src/arch/mod.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
// copied, modified, or distributed except according to those terms.
88

99
pub use self::imp::*;
10-
use core::nonzero::NonZero;
10+
use core::ptr::NonNull;
1111

1212
#[allow(unused_attributes)] // rust-lang/rust#35584
1313
#[cfg_attr(target_arch = "x86", path = "x86.rs")]
@@ -18,23 +18,23 @@ use core::nonzero::NonZero;
1818
mod imp;
1919

2020
#[derive(Debug, Clone, Copy)]
21-
pub struct StackPointer(NonZero<*mut usize>);
21+
pub struct StackPointer(NonNull<usize>);
2222

2323
impl StackPointer {
2424
#[inline(always)]
2525
pub unsafe fn push(&mut self, val: usize) {
26-
self.0 = NonZero::new(self.0.offset(-1));
27-
**self.0 = val;
26+
self.0 = NonNull::new_unchecked(self.0.as_ptr().offset(-1));
27+
*self.0.as_mut() = val;
2828
}
2929

3030
#[inline(always)]
3131
pub unsafe fn new(sp: *mut u8) -> StackPointer {
32-
StackPointer(NonZero::new(sp as *mut usize))
32+
StackPointer(NonNull::new_unchecked(sp as *mut usize))
3333
}
3434

3535
#[inline(always)]
3636
pub unsafe fn offset(&self, count: isize) -> *mut usize {
37-
self.0.offset(count)
37+
self.0.as_ptr().offset(count)
3838
}
3939
}
4040

src/arch/or1k.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ pub unsafe fn swap_link(arg: usize, new_sp: StackPointer,
212212
"={r4}" (ret_sp)
213213
: "s" (trampoline as usize)
214214
"{r3}" (arg)
215-
"{r5}" (*new_sp.0)
215+
"{r5}" (new_sp.offset(0))
216216
"{r6}" (new_stack_base)
217217
:/*"r0", "r1", "r2", "r3", "r4",*/"r5", "r6", "r7",
218218
"r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
@@ -255,7 +255,7 @@ pub unsafe fn swap(arg: usize, new_sp: StackPointer) -> (usize, StackPointer) {
255255
"={r4}" (ret_sp)
256256
: "s" (trampoline as usize)
257257
"{r3}" (arg)
258-
"{r5}" (*new_sp.0)
258+
"{r5}" (new_sp.offset(0))
259259
:/*"r0", "r1", "r2", "r3", "r4",*/"r5", "r6", "r7",
260260
"r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
261261
"r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23",
@@ -306,7 +306,7 @@ pub unsafe fn unwind(new_sp: StackPointer, new_stack_base: *mut u8) {
306306
:
307307
: "s" (trampoline as usize)
308308
"{r3}" (arg)
309-
"{r5}" (*new_sp.0)
309+
"{r5}" (new_sp.offset(0))
310310
"{r6}" (new_stack_base)
311311
:/*"r0", "r1", "r2",*/"r3", "r4", "r5", "r6", "r7",
312312
"r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",

src/arch/x86.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ pub unsafe fn swap_link(arg: usize, new_sp: StackPointer,
256256
"={esi}" (ret_sp)
257257
: "s" (trampoline as usize)
258258
"{edi}" (arg)
259-
"{edx}" (*new_sp.0)
259+
"{edx}" (new_sp.offset(0))
260260
"{ecx}" (new_stack_base)
261261
: "eax", "ebx", "ecx", "edx",/*"esi", "edi", "ebp", "esp",*/
262262
"mm0", "mm1", "mm2", "mm3", "mm4", "mm5", "mm6", "mm7",
@@ -299,7 +299,7 @@ pub unsafe fn swap(arg: usize, new_sp: StackPointer) -> (usize, StackPointer) {
299299
"={esi}" (ret_sp)
300300
: "s" (trampoline as usize)
301301
"{edi}" (arg)
302-
"{edx}" (*new_sp.0)
302+
"{edx}" (new_sp.offset(0))
303303
: "eax", "ebx", "ecx", "edx",/*"esi", "edi", "ebp", "esp",*/
304304
"mm0", "mm1", "mm2", "mm3", "mm4", "mm5", "mm6", "mm7",
305305
"xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7",
@@ -348,7 +348,7 @@ pub unsafe fn unwind(new_sp: StackPointer, new_stack_base: *mut u8) {
348348
:
349349
: "s" (trampoline as usize)
350350
"{edi}" (arg)
351-
"{edx}" (*new_sp.0)
351+
"{edx}" (new_sp.offset(0))
352352
"{ecx}" (new_stack_base)
353353
: "eax", "ebx", "ecx", "edx", "esi", "edi",/*"ebp", "esp",*/
354354
"mm0", "mm1", "mm2", "mm3", "mm4", "mm5", "mm6", "mm7",

src/arch/x86_64.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ pub unsafe fn swap_link(arg: usize, new_sp: StackPointer,
230230
: "={rdi}" (ret)
231231
"={rsi}" (ret_sp)
232232
: "{rdi}" (arg)
233-
"{rdx}" (*new_sp.0)
233+
"{rdx}" (new_sp.offset(0))
234234
"{rcx}" (new_stack_base)
235235
: "rax", "rbx", "rcx", "rdx", /*"rsi", "rdi", "rbp", "rsp",*/
236236
"r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
@@ -269,7 +269,7 @@ pub unsafe fn swap(arg: usize, new_sp: StackPointer) -> (usize, StackPointer) {
269269
: "={rdi}" (ret)
270270
"={rsi}" (ret_sp)
271271
: "{rdi}" (arg)
272-
"{rdx}" (*new_sp.0)
272+
"{rdx}" (new_sp.offset(0))
273273
: "rax", "rbx", "rcx", "rdx", /*"rsi", "rdi", "rbp", "rsp",*/
274274
"r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
275275
"mm0", "mm1", "mm2", "mm3", "mm4", "mm5", "mm6", "mm7",
@@ -307,7 +307,7 @@ pub unsafe fn unwind(new_sp: StackPointer, new_stack_base: *mut u8) {
307307
:
308308
: "s" (unwind::start_unwind as usize)
309309
"{rdi}" (arg)
310-
"{rdx}" (*new_sp.0)
310+
"{rdx}" (new_sp.offset(0))
311311
"{rcx}" (new_stack_base)
312312
: "rax", "rbx", "rcx", "rdx", "rsi", "rdi", /*"rbp", "rsp",*/
313313
"r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",

src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
// http://opensource.org/licenses/MIT>, at your option. This file may not be
66
// copied, modified, or distributed except according to those terms.
77

8-
#![feature(asm, naked_functions, cfg_target_vendor, nonzero, untagged_unions)]
8+
#![feature(asm, naked_functions, cfg_target_vendor, untagged_unions, unwind_attributes)]
99
#![cfg_attr(feature = "alloc", feature(alloc, heap_api, allocator_api))]
1010
#![cfg_attr(test, feature(test))]
1111
#![no_std]

src/unwind.rs

+2
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ fn have_cross_stack_unwind() -> bool {
3434
}
3535

3636
// Wrapper around the root function of a generator which handles unwinding.
37+
#[unwind(allowed)]
3738
pub unsafe extern "C" fn unwind_wrapper(arg: usize, sp: StackPointer, stack_base: *mut u8,
3839
f: unsafe fn(usize, StackPointer)) -> Option<Box<Box<Any + Send>>> {
3940
// Catch any attempts to unwind out of the context.
@@ -63,6 +64,7 @@ pub unsafe extern "C" fn unwind_wrapper(arg: usize, sp: StackPointer, stack_base
6364

6465
// Called by asm to start unwinding in the current context with the given
6566
// exception object.
67+
#[unwind(allowed)]
6668
pub unsafe extern "C" fn start_unwind(panic: Box<Box<Any + Send>>) -> ! {
6769
// Use resume_unwind instead of panic! to avoid printing a message.
6870
panic::resume_unwind(*panic)

0 commit comments

Comments
 (0)