(self, op: CallC)
| 85 | return value |
| 86 | |
| 87 | def visit_call_c(self, op: CallC) -> Value: |
| 88 | if global_name := get_load_global_name(op): |
| 89 | return self.log(op, "globals_dict_get_item", global_name) |
| 90 | |
| 91 | func_name = op.function_name |
| 92 | if func_name == "PyObject_Vectorcall" and isinstance(op.args[0], CallC): |
| 93 | if global_name := get_load_global_name(op.args[0]): |
| 94 | return self.log(op, "python_call_global", global_name) |
| 95 | elif func_name == "CPyObject_GetAttr" and isinstance(op.args[1], LoadLiteral): |
| 96 | return self.log(op, "python_get_attr", str(op.args[1].value)) |
| 97 | elif func_name == "PyObject_VectorcallMethod" and isinstance(op.args[0], LoadLiteral): |
| 98 | return self.log(op, "python_call_method", str(op.args[0].value)) |
| 99 | |
| 100 | value = self.log(op, "call_c", func_name) |
| 101 | if func_name in primitives_that_inc_ref: |
| 102 | self.log_inc_ref(value) |
| 103 | return value |
| 104 | |
| 105 | def visit_get_attr(self, op: GetAttr) -> Value: |
| 106 | value = self.log(op, "get_attr", f"{op.class_type.name}.{op.attr}") |
nothing calls this directly
no test coverage detected