MCPcopy Index your code
hub / github.com/RustPython/RustPython / load_attr_slow

Method load_attr_slow

crates/vm/src/frame.rs:7815–7838  ·  view source on GitHub ↗
(&mut self, vm: &VirtualMachine, oparg: LoadAttr)

Source from the content-addressed store, hash-verified

7813 }
7814
7815 fn load_attr_slow(&mut self, vm: &VirtualMachine, oparg: LoadAttr) -> FrameResult {
7816 let attr_name = self.code.names[oparg.name_idx() as usize];
7817 let parent = self.pop_value();
7818
7819 if oparg.is_method() {
7820 // Method call: push [method, self_or_null]
7821 let method = PyMethod::get(parent.clone(), attr_name, vm)?;
7822 match method {
7823 PyMethod::Function { target: _, func } => {
7824 self.push_value(func);
7825 self.push_value(parent);
7826 }
7827 PyMethod::Attribute(val) => {
7828 self.push_value(val);
7829 self.push_null();
7830 }
7831 }
7832 } else {
7833 // Regular attribute access
7834 let obj = parent.get_attr(attr_name, vm)?;
7835 self.push_value(obj);
7836 }
7837 Ok(None)
7838 }
7839
7840 fn specialize_binary_op(
7841 &mut self,

Callers 2

execute_instructionMethod · 0.80
load_attrMethod · 0.80

Calls 8

getFunction · 0.85
name_idxMethod · 0.80
pop_valueMethod · 0.80
is_methodMethod · 0.80
push_valueMethod · 0.80
push_nullMethod · 0.80
cloneMethod · 0.45
get_attrMethod · 0.45

Tested by

no test coverage detected