Skip to content

Commit e19f5e5

Browse files
committed
blockifier: refactor native class manager get runnable to be more readable
1 parent e649b11 commit e19f5e5

File tree

2 files changed

+21
-11
lines changed

2 files changed

+21
-11
lines changed

crates/blockifier/src/state/global_cache.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,13 @@ impl CompiledClasses {
5252
}
5353
}
5454
}
55+
56+
#[cfg(feature = "cairo_native")]
57+
/// Converts a [NativeCompiledClassV1] to a [CompiledClasses::V1].
58+
/// Used when a non-native class is requested and the class is cached as a native class.
59+
pub(crate) fn into_non_native_class(native: NativeCompiledClassV1) -> Self {
60+
Self::V1(native.casm(), Arc::new(SierraContractClass::default()))
61+
}
5562
}
5663

5764
pub type RawClassCache = GlobalContractCache<CompiledClasses>;

crates/blockifier/src/state/native_class_manager.rs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -119,23 +119,26 @@ impl NativeClassManager {
119119
/// Returns the runnable compiled class for the given class hash, if it exists in class_cache.
120120
pub fn get_runnable(&self, class_hash: &ClassHash) -> Option<RunnableCompiledClass> {
121121
let cached_class = self.class_cache.get(class_hash)?;
122+
if let CompiledClasses::V1(..) = cached_class {
123+
// When `wait_on_native_compilation` is active, all V1 classes should have been compiled
124+
// to native synchronously. A V1 cache entry indicates a pipeline bug.
125+
// TODO(Yoni): make sure `wait_on_native_compilation` cannot be set to true while
126+
// `run_cairo_native` is false.
127+
assert!(
128+
!self.wait_on_native_compilation(),
129+
"Manager did not wait on native compilation."
130+
);
131+
}
122132

123133
let cached_class = match cached_class {
124-
CompiledClasses::V1(_, _) => {
125-
// TODO(Yoni): make sure `wait_on_native_compilation` cannot be set to true while
126-
// `run_cairo_native` is false.
127-
assert!(
128-
!self.wait_on_native_compilation(),
129-
"Manager did not wait on native compilation."
130-
);
131-
cached_class
132-
}
133134
CompiledClasses::V1Native(CachedCairoNative::Compiled(native))
134135
if !self.run_class_with_cairo_native(class_hash) =>
135136
{
136-
CompiledClasses::V1(native.casm(), Arc::new(SierraContractClass::default()))
137+
CompiledClasses::into_non_native_class(native)
138+
}
139+
CompiledClasses::V1Native(..) | CompiledClasses::V1(..) | CompiledClasses::V0(..) => {
140+
cached_class
137141
}
138-
_ => cached_class,
139142
};
140143

141144
Some(cached_class.to_runnable())

0 commit comments

Comments
 (0)