@@ -19,33 +19,19 @@ pub trait PointerArithmetic: HasDataLayout {
1919
2020 #[ inline( always) ]
2121 fn max_size_of_val ( & self ) -> Size {
22- Size :: from_bytes ( self . target_isize_max ( ) )
23- }
24-
25- #[ inline]
26- fn target_usize_max ( & self ) -> u64 {
27- self . pointer_size ( ) . unsigned_int_max ( ) . try_into ( ) . unwrap ( )
28- }
29-
30- #[ inline]
31- fn target_isize_min ( & self ) -> i64 {
32- self . pointer_size ( ) . signed_int_min ( ) . try_into ( ) . unwrap ( )
33- }
34-
35- #[ inline]
36- fn target_isize_max ( & self ) -> i64 {
37- self . pointer_size ( ) . signed_int_max ( ) . try_into ( ) . unwrap ( )
22+ Size :: from_bytes ( self . data_layout ( ) . target_isize_max ( ) )
3823 }
3924
4025 #[ inline]
4126 fn target_usize_to_isize ( & self , val : u64 ) -> i64 {
27+ let dl = self . data_layout ( ) ;
4228 let val = val as i64 ;
4329 // Now wrap-around into the machine_isize range.
44- if val > self . target_isize_max ( ) {
30+ if val > dl . target_isize_max ( ) {
4531 // This can only happen if the ptr size is < 64, so we know max_usize_plus_1 fits into
4632 // i64.
47- debug_assert ! ( self . pointer_size( ) . bits( ) < 64 ) ;
48- let max_usize_plus_1 = 1u128 << self . pointer_size ( ) . bits ( ) ;
33+ debug_assert ! ( dl . pointer_size. bits( ) < 64 ) ;
34+ let max_usize_plus_1 = 1u128 << dl . pointer_size . bits ( ) ;
4935 val - i64:: try_from ( max_usize_plus_1) . unwrap ( )
5036 } else {
5137 val
@@ -58,7 +44,7 @@ pub trait PointerArithmetic: HasDataLayout {
5844 #[ inline]
5945 fn truncate_to_ptr ( & self , ( val, over) : ( u64 , bool ) ) -> ( u64 , bool ) {
6046 let val = u128:: from ( val) ;
61- let max_ptr_plus_1 = 1u128 << self . pointer_size ( ) . bits ( ) ;
47+ let max_ptr_plus_1 = 1u128 << self . data_layout ( ) . pointer_size . bits ( ) ;
6248 ( u64:: try_from ( val % max_ptr_plus_1) . unwrap ( ) , over || val >= max_ptr_plus_1)
6349 }
6450
@@ -76,11 +62,11 @@ pub trait PointerArithmetic: HasDataLayout {
7662 let n = i. unsigned_abs ( ) ;
7763 if i >= 0 {
7864 let ( val, over) = self . overflowing_offset ( val, n) ;
79- ( val, over || i > self . target_isize_max ( ) )
65+ ( val, over || i > self . data_layout ( ) . target_isize_max ( ) )
8066 } else {
8167 let res = val. overflowing_sub ( n) ;
8268 let ( val, over) = self . truncate_to_ptr ( res) ;
83- ( val, over || i < self . target_isize_min ( ) )
69+ ( val, over || i < self . data_layout ( ) . target_isize_min ( ) )
8470 }
8571 }
8672
0 commit comments