luaur_analysis/methods/
normalizer_within_resource_limits.rs1use crate::records::normalizer::Normalizer;
2use luaur_common::FInt;
3
4impl Normalizer {
5 pub fn within_resource_limits(&mut self) -> bool {
6 if FInt::LuauNormalizeCacheLimit.get() > 0 {
8 let cache_usage = self.cached_normals.len()
9 + self.cached_intersections.len()
10 + self.cached_unions.len()
11 + self.cached_type_ids.len()
12 + self.cached_is_inhabited.size()
13 + self.cached_is_inhabited_intersection.size();
14 if cache_usage > FInt::LuauNormalizeCacheLimit.get() as usize {
15 self.clear_caches();
16 return false;
17 }
18 }
19
20 if unsafe { (*self.shared_state).counters.recursion_limit } > 0 {
22 if unsafe { (*self.shared_state).counters.recursion_limit }
23 < unsafe { (*self.shared_state).counters.recursion_count }
24 {
25 return false;
26 }
27 }
28
29 true
30 }
31}