NL ilUddlmZddlmZmZmZmZddlmZm Z m Z m Z m Z m Z mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0ddl1m2Z2e3e4de4dfZ5e4e4fZ6de7d<dhdhfZ8de7d<Gd d e"e5Z9 d d Z:y) ) annotations)CFGMAYBE_ANALYSISAnalysisResult run_analysis))Assign AssignMulti BasicBlockBoxBranchCallCallCCast ComparisonOpExtendFloatComparisonOpFloatNegFloatOpGetAttr GetElementPtrGoto InitStaticIntOp KeepAlive LoadAddressLoadErrorValue LoadGlobal LoadLiteralLoadMem LoadStatic MethodCall OpVisitor PrimitiveOpRaiseStandardErrorRegister RegisterOpReturnSetAttr SetElementSetMemTruncateTupleGetTupleSetUnborrowUnbox Unreachable) RInstanceN GenAndKillCLEANDIRTYcHeZdZdZd*dZd+dZd,dZd-dZd.dZd/dZ d0dZ d1d Z d2d Z d3d Z d4d Zd5d Zd6dZd7dZd8dZd9dZd:dZd;dZddZd?dZd@dZdAdZdBdZdCdZdDdZdEdZdFdZ dGdZ!dHd Z"dId!Z#dJd"Z$dKd#Z%dLd$Z&dMd%Z'dNd&Z(dOd'Z)dPd(Z*y))QSelfLeakedVisitoraAnalyze whether 'self' may be seen by arbitrary code in '__init__'. More formally, the set is not empty if along some path from IR entry point arbitrary code could have been executed that has access to 'self'. (We don't consider access via 'gc.get_objects()'.) c||_yNself_reg)selfr:s ^/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypyc/analysis/selfleaks.py__init__zSelfLeakedVisitor.__init__@s   ctSr8r3r;ops r< visit_gotozSelfLeakedVisitor.visit_gotoC r>ctSr8r@rAs r< visit_branchzSelfLeakedVisitor.visit_branchFrDr>ctSr8)r4rAs r< visit_returnzSelfLeakedVisitor.visit_returnIs  r>ctSr8r@rAs r<visit_unreachablez#SelfLeakedVisitor.visit_unreachableNrDr>cz|j|jus|j|jurtStSr8)srcr:destr4r3rAs r< visit_assignzSelfLeakedVisitor.visit_assignQs+ 66T]] "bgg&>L r>ctSr8r@rAs r<visit_assign_multiz$SelfLeakedVisitor.visit_assign_multiVrDr>ctSr8r@rAs r< visit_set_memzSelfLeakedVisitor.visit_set_memYrDr>c6|j}|jrq|jdk(rb|jjjdj }t |tsJ||j}|jstS|j|S)Nr=r) fn class_namenamesigargstype isinstancer1class_irinit_self_leakr3check_register_op)r;rBrT self_typecls r< visit_callzSelfLeakedVisitor.visit_call\sx UU ==RWW 2 q)..Ii3 >Y >3##B$$ %%b))r>c$|j|Sr8r]rAs r<visit_method_callz#SelfLeakedVisitor.visit_method_callf%%b))r>ctSr8r@rAs r<visit_load_error_valuez(SelfLeakedVisitor.visit_load_error_valueirDr>ctSr8r@rAs r<visit_load_literalz$SelfLeakedVisitor.visit_load_literallrDr>c|jj}|j|jr|j |St Sr8 class_typer[ get_methodattrr]r3r;rBr_s r<visit_get_attrz SelfLeakedVisitor.visit_get_attro7 ]] # # == !))"- - r>c|jj}|j|jr|j |St Sr8rjrns r<visit_set_attrz SelfLeakedVisitor.visit_set_attrvrpr>ctSr8r@rAs r<visit_load_staticz#SelfLeakedVisitor.visit_load_static}rDr>c$|j|Sr8rbrAs r<visit_init_staticz#SelfLeakedVisitor.visit_init_staticrdr>ctSr8r@rAs r<visit_tuple_getz!SelfLeakedVisitor.visit_tuple_getrDr>c$|j|Sr8rbrAs r<visit_tuple_setz!SelfLeakedVisitor.visit_tuple_setrdr>c$|j|Sr8rbrAs r< visit_boxzSelfLeakedVisitor.visit_boxrdr>c$|j|Sr8rbrAs r< visit_unboxzSelfLeakedVisitor.visit_unboxrdr>c$|j|Sr8rbrAs r< visit_castzSelfLeakedVisitor.visit_castrdr>ctSr8r@rAs r<visit_raise_standard_errorz,SelfLeakedVisitor.visit_raise_standard_errorrDr>c$|j|Sr8rbrAs r< visit_call_czSelfLeakedVisitor.visit_call_crdr>c$|j|Sr8rbrAs r<visit_primitive_opz$SelfLeakedVisitor.visit_primitive_oprdr>ctSr8r@rAs r<visit_truncatez SelfLeakedVisitor.visit_truncaterDr>ctSr8r@rAs r< visit_extendzSelfLeakedVisitor.visit_extendrDr>ctSr8r@rAs r<visit_load_globalz#SelfLeakedVisitor.visit_load_globalrDr>ctSr8r@rAs r< visit_int_opzSelfLeakedVisitor.visit_int_oprDr>ctSr8r@rAs r<visit_comparison_opz%SelfLeakedVisitor.visit_comparison_oprDr>ctSr8r@rAs r<visit_float_opz SelfLeakedVisitor.visit_float_oprDr>ctSr8r@rAs r<visit_float_negz!SelfLeakedVisitor.visit_float_negrDr>ctSr8r@rAs r<visit_float_comparison_opz+SelfLeakedVisitor.visit_float_comparison_oprDr>ctSr8r@rAs r<visit_load_memz SelfLeakedVisitor.visit_load_memrDr>ctSr8r@rAs r<visit_get_element_ptrz'SelfLeakedVisitor.visit_get_element_ptrrDr>ctSr8r@rAs r<visit_set_elementz#SelfLeakedVisitor.visit_set_elementrDr>ctSr8r@rAs r<visit_load_addressz$SelfLeakedVisitor.visit_load_addressrDr>ctSr8r@rAs r<visit_keep_alivez"SelfLeakedVisitor.visit_keep_aliverDr>ctSr8r@rAs r<visit_unborrowz SelfLeakedVisitor.visit_unborrowrDr>c`tfd|jDrtStS)Nc3:K|]}|juywr8r9).0rLr;s r< z6SelfLeakedVisitor.check_register_op..s<sdmm#N)r:r%returnNone)rBrrr2)rBr rr2)rBr'rr2)rBr0rr2)rBrrr2)rBr rr2)rBr*rr2)rBr rr2)rBr!rr2)rBrrr2)rBrrr2)rBrrr2)rBr(rr2)rBr rr2)rBrrr2)rBr,rr2)rBr-rr2)rBr rr2)rBr/rr2)rBrrr2)rBr$rr2)rBrrr2)rBr#rr2)rBr+rr2)rBrrr2)rBrrr2)rBrrr2)rBrrr2)rBrrr2)rBrrr2)rBrrr2)rBrrr2)rBrrr2)rBr)rr2)rBrrr2)rBrrr2)rBr.rr2)rBr&rr2)+__name__ __module__ __qualname____doc__r=rCrFrHrJrNrPrRr`rcrfrhrorrrtrvrxrzr|r~rrrrrrrrrrrrrrrrrrr]r>r<r6r67s!  *********r>r6cNt||t|tdtS)NF)blockscfg gen_and_killinitialbackwardkind)rr6setr)rr:rs r<analyze_self_leaksrs*  &x0   r>)rzlist[BasicBlock]r:r%rrrzAnalysisResult[None]); __future__rmypyc.analysis.dataflowrrrr mypyc.ir.opsrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0mypyc.ir.rtypesr1tuplerr2r3__annotations__r4r6rrr>r<rs"UU***********V& 3t9c$i' ( UCENz"VdV$z$Q *-Qh   (0 7:  r>