(&mut self, idx: oparg::VarNum, val: JitValue)
| 109 | } |
| 110 | |
| 111 | fn store_variable(&mut self, idx: oparg::VarNum, val: JitValue) -> Result<(), JitCompileError> { |
| 112 | let builder = &mut self.builder; |
| 113 | let ty = val.to_jit_type().ok_or(JitCompileError::NotSupported)?; |
| 114 | let local = self.variables[idx].get_or_insert_with(|| { |
| 115 | let var = builder.declare_var(ty.to_cranelift()); |
| 116 | Local { |
| 117 | var, |
| 118 | ty: ty.clone(), |
| 119 | } |
| 120 | }); |
| 121 | if ty != local.ty { |
| 122 | Err(JitCompileError::NotSupported) |
| 123 | } else { |
| 124 | self.builder.def_var(local.var, val.into_value().unwrap()); |
| 125 | Ok(()) |
| 126 | } |
| 127 | } |
| 128 | |
| 129 | fn boolean_val(&mut self, val: JitValue) -> Result<Value, JitCompileError> { |
| 130 | match val { |
no test coverage detected