| 206 | | case ref of |
| 207 | | MkRef (ICode cv) |
| 208 | | | relevantToParsing (code_type cv) (code_assoc cv) -> do |
| 209 | | let rv = MkCurrentFunction var (code_assoc cv) (code_params cv) |
| 210 | | res = seq rv (Just rv) |
| 211 | | unsafeIOToSTM (H.insert _RefToFunction entry res) |
| 212 | | return res |
| 213 | | MkRef (IScalar sv) |
| 214 | | | Just (VCode cv) <- scalar_const sv |
| 215 | | , relevantToParsing (code_type cv) (code_assoc cv) -> do |
| 216 | | let rv = MkCurrentFunction var (code_assoc cv) (code_params cv) |
| 217 | | res = seq rv (Just rv) |
| 218 | | unsafeIOToSTM (H.insert _RefToFunction entry res) |
| 219 | | return res |
| 220 | | _ -> do |
| 221 | | unsafeIOToSTM (H.insert _RefToFunction entry Nothing) |
| 222 | | return Nothing |
| | 206 | filterRef ref |
| | 207 | where |
| | 208 | filterRef :: VRef -> STM (Maybe CurrentFunction) |
| | 209 | filterRef (MkRef (ICode cv)) |
| | 210 | | relevantToParsing (code_type cv) (code_assoc cv) = do |
| | 211 | let rv = MkCurrentFunction var (code_assoc cv) (code_params cv) |
| | 212 | res = seq rv (Just rv) |
| | 213 | unsafeIOToSTM (H.insert _RefToFunction entry res) |
| | 214 | return res |
| | 215 | filterRef (MkRef (IScalar sv)) |
| | 216 | | Just (VCode cv) <- scalar_const sv |
| | 217 | , relevantToParsing (code_type cv) (code_assoc cv) = do |
| | 218 | let rv = MkCurrentFunction var (code_assoc cv) (code_params cv) |
| | 219 | res = seq rv (Just rv) |
| | 220 | unsafeIOToSTM (H.insert _RefToFunction entry res) |
| | 221 | return res |
| | 222 | filterRef _ = do |
| | 223 | unsafeIOToSTM (H.insert _RefToFunction entry Nothing) |
| | 224 | return Nothing |