| 25 | |
| 26 | impl<'a> StackUsageVerifier<'a> { |
| 27 | pub(crate) fn verify( |
| 28 | resolver: &'a BinaryIndexedView<'a>, |
| 29 | function_view: &'a FunctionView, |
| 30 | ) -> PartialVMResult<()> { |
| 31 | let verifier = Self { |
| 32 | resolver, |
| 33 | current_function: function_view.index(), |
| 34 | code: function_view.code(), |
| 35 | return_: function_view.return_(), |
| 36 | }; |
| 37 | |
| 38 | for block_id in function_view.cfg().blocks() { |
| 39 | verifier.verify_block(block_id, function_view.cfg())? |
| 40 | } |
| 41 | Ok(()) |
| 42 | } |
| 43 | |
| 44 | fn verify_block(&self, block_id: BlockId, cfg: &dyn ControlFlowGraph) -> PartialVMResult<()> { |
| 45 | let code = &self.code.code; |