1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
macro_rules! try_or_fail { ( $e:expr ) => { match $e { Ok(v) => v, Err(e) => return Control::Exit(e.into()) } } } macro_rules! pop { ( $machine:expr, $( $x:ident ),* ) => ( $( let $x = match $machine.machine.stack_mut().pop() { Ok(value) => value, Err(e) => return Control::Exit(e.into()), }; )* ); } macro_rules! pop_u256 { ( $machine:expr, $( $x:ident ),* ) => ( $( let $x = match $machine.machine.stack_mut().pop() { Ok(value) => U256::from_big_endian(&value[..]), Err(e) => return Control::Exit(e.into()), }; )* ); } macro_rules! push { ( $machine:expr, $( $x:expr ),* ) => ( $( match $machine.machine.stack_mut().push($x) { Ok(()) => (), Err(e) => return Control::Exit(e.into()), } )* ) } macro_rules! push_u256 { ( $machine:expr, $( $x:expr ),* ) => ( $( let mut value = H256::default(); $x.to_big_endian(&mut value[..]); match $machine.machine.stack_mut().push(value) { Ok(()) => (), Err(e) => return Control::Exit(e.into()), } )* ) } macro_rules! as_usize_or_fail { ( $v:expr ) => { { if $v > U256::from(usize::max_value()) { return Control::Exit(ExitFatal::NotSupported.into()) } $v.as_usize() } }; ( $v:expr, $reason:expr ) => { { if $v > U256::from(usize::max_value()) { return Control::Exit($reason.into()) } $v.as_usize() } }; }