@@ -2,8 +2,7 @@ use crate::{analyses, checkers, ir, lattices};
2
2
use analyses:: StackAnalyzer ;
3
3
use analyses:: { AbstractAnalyzer , AnalysisResult } ;
4
4
use checkers:: Checker ;
5
- use ir:: types:: { IRMap , MemArgs , Stmt , Value } ;
6
- use ir:: utils:: { get_imm_mem_offset, is_bp_access, is_stack_access} ;
5
+ use ir:: types:: * ;
7
6
use lattices:: reachingdefslattice:: LocIdx ;
8
7
use lattices:: stackgrowthlattice:: StackGrowthLattice ;
9
8
@@ -61,7 +60,7 @@ impl Checker<StackGrowthLattice> for StackChecker<'_> {
61
60
Stmt :: Unop ( _, dst, src) =>
62
61
// stack write: probestack <= stackgrowth + c < 0
63
62
{
64
- if is_stack_access ( dst ) {
63
+ if dst . is_stack_access ( ) {
65
64
if !self . check_stack_write ( state, dst) {
66
65
log:: debug!(
67
66
"check_stack_write failed: access = {:?} state = {:?}" ,
@@ -71,7 +70,7 @@ impl Checker<StackGrowthLattice> for StackChecker<'_> {
71
70
return false ;
72
71
}
73
72
}
74
- if is_bp_access ( dst) {
73
+ if dst. is_frame_access ( ) {
75
74
if !self . check_bp_write ( state, dst) {
76
75
log:: debug!(
77
76
"check_bp_write failed: access = {:?} state = {:?}" ,
@@ -82,7 +81,7 @@ impl Checker<StackGrowthLattice> for StackChecker<'_> {
82
81
}
83
82
}
84
83
//stack read: probestack <= stackgrowth + c < 8K
85
- if is_stack_access ( src ) {
84
+ if src . is_stack_access ( ) {
86
85
if !self . check_stack_read ( state, src) {
87
86
log:: debug!(
88
87
"check_stack_read failed: access = {:?} state = {:?}" ,
@@ -91,7 +90,7 @@ impl Checker<StackGrowthLattice> for StackChecker<'_> {
91
90
) ;
92
91
return false ;
93
92
}
94
- } else if is_bp_access ( src) {
93
+ } else if src. is_frame_access ( ) {
95
94
if !self . check_bp_read ( state, src) {
96
95
log:: debug!(
97
96
"check_bp_read failed: access = {:?} state = {:?}" ,
@@ -128,7 +127,7 @@ impl StackChecker<'_> {
128
127
&& ( state. get_stackgrowth ( ) . unwrap ( ) < 8096 )
129
128
}
130
129
MemArgs :: Mem2Args ( _memarg1, memarg2) => {
131
- let offset = get_imm_mem_offset ( memarg2) ;
130
+ let offset = memarg2. to_imm ( ) ;
132
131
return ( -state. get_probestack ( ) . unwrap ( )
133
132
<= state. get_stackgrowth ( ) . unwrap ( ) + offset)
134
133
&& ( state. get_stackgrowth ( ) . unwrap ( ) + offset < 8096 ) ;
@@ -147,7 +146,7 @@ impl StackChecker<'_> {
147
146
&& ( state. get_rbp ( ) . unwrap ( ) < 8096 )
148
147
}
149
148
MemArgs :: Mem2Args ( _memarg1, memarg2) => {
150
- let offset = get_imm_mem_offset ( memarg2) ;
149
+ let offset = memarg2. to_imm ( ) ;
151
150
return ( -state. get_probestack ( ) . unwrap ( ) <= state. get_rbp ( ) . unwrap ( ) + offset)
152
151
&& ( state. get_rbp ( ) . unwrap ( ) + offset < 8096 ) ;
153
152
}
@@ -165,7 +164,7 @@ impl StackChecker<'_> {
165
164
&& ( state. get_stackgrowth ( ) . unwrap ( ) < 0 ) ;
166
165
}
167
166
MemArgs :: Mem2Args ( _memarg1, memarg2) => {
168
- let offset = get_imm_mem_offset ( memarg2) ;
167
+ let offset = memarg2. to_imm ( ) ;
169
168
return ( -state. get_probestack ( ) . unwrap ( )
170
169
<= state. get_stackgrowth ( ) . unwrap ( ) + offset)
171
170
&& ( state. get_stackgrowth ( ) . unwrap ( ) + offset < 0 ) ;
@@ -184,7 +183,7 @@ impl StackChecker<'_> {
184
183
&& ( state. get_rbp ( ) . unwrap ( ) < 0 ) ;
185
184
}
186
185
MemArgs :: Mem2Args ( _memarg1, memarg2) => {
187
- let offset = get_imm_mem_offset ( memarg2) ;
186
+ let offset = memarg2. to_imm ( ) ;
188
187
return ( -state. get_probestack ( ) . unwrap ( ) <= state. get_rbp ( ) . unwrap ( ) + offset)
189
188
&& ( state. get_rbp ( ) . unwrap ( ) + offset < 0 ) ;
190
189
}
0 commit comments