From 375846bda50964f4dcfc1f36341666f22b608e28 Mon Sep 17 00:00:00 2001 From: edef Date: Tue, 9 Aug 2016 15:59:35 +0200 Subject: [PATCH] Rewrite the FPE test to not use Context directly --- tests/fpe.rs | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/tests/fpe.rs b/tests/fpe.rs index 32775ae..c9106a4 100644 --- a/tests/fpe.rs +++ b/tests/fpe.rs @@ -8,12 +8,9 @@ #![feature(asm)] extern crate fringe; extern crate test; -use fringe::Context; +use fringe::{OsStack, Generator}; use test::black_box; -#[thread_local] -static mut ctx_slot: *mut Context = 0 as *mut Context<_>; - const FE_DIVBYZERO: i32 = 0x4; extern { fn feenableexcept(except: i32) -> i32; @@ -22,20 +19,11 @@ extern { #[test] #[ignore] fn fpe() { - unsafe extern "C" fn universe_destroyer(_arg: usize) -> ! { - loop { - println!("{:?}", 1.0/black_box(0.0)); - Context::swap(ctx_slot, ctx_slot, 0); - } - } + let stack = OsStack::new(0).unwrap(); + let mut gen = Generator::new(stack, move |yielder| { + yielder.generate(1.0 / black_box(0.0)); + }); - unsafe { - let stack = fringe::OsStack::new(4 << 20).unwrap(); - let mut ctx = Context::new(stack, universe_destroyer); - ctx_slot = &mut ctx; - - Context::swap(ctx_slot, ctx_slot, 0); - feenableexcept(FE_DIVBYZERO); - Context::swap(ctx_slot, ctx_slot, 0); - } + unsafe { feenableexcept(FE_DIVBYZERO); } + println!("{:?}", gen.next()); }