NL iYdZddlmZddlmZmZmZddlmZddl m Z ddl m Z ddl mZmZmZmZmZmZmZmZmZd dZ d d Zy ) z5Insert spills for values that are live across yields.) annotations)AnalysisResultanalyze_live_regsget_cfg)TEMP_ATTR_NAME)ClassIR)FuncIR) BasicBlockBranchDecRefGetAttrIncRefLoadErrorValueRegisterSetAttrValuect|jd}t|j|}|j|jddf}|Dchc]!}t |t r |j r |#}}|Dchc]}t |t r|}}t|j||||jd|_ycc}wcc}w)NT) use_yieldsr) rblocksrbefore isinstanceris_arg spill_regsarg_regs)irenvcfglive entry_liveops [/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypyc/transform/spill.py insert_spillsr"s ")) -C RYY ,DRYYq\1_-J)Z*R2Jryy"ZJZ)JB1I"JJJ299c:tR[[^LBI [Js!C2C<C C c |djD]&}t|ts|jdk(s$|}n|}it |D]_\}}t d|} |j |j| <|j jr|jj| | |<a|D]} | j} g| _t | D]o\}}g} t|tr|jvr tdt|tr|jvr|j|j| |fvrr||j| |fvr_t!|jj } | jj#| t%||j| |j&gt)fd|j+Drt|t,r|j.t,j0k(sg}|j3}|j+D]}|vrtt|||j&}| jj5||j5||j j6sd||vsi| j5|{|j5||j9|| jj5|| D]&}| jj5t|(|vs<| jj5t%||||j&r|S)Nr __mypyc_env__2_z0not sure what to do with an incref of a spill...c3&K|]}|v yw)N).0src spill_locss r! zspill_regs..Us>#C:%>s)opsrr attr enumeratertype attributes error_overlap_always_initialized_attrsaddrr)AssertionErrorr afterrextendrlineanysourcesr r IS_ERRORstolenappend is_refcounted set_sources)rrto_spillrself_regr env_regivalnameblockr, to_decrefnull new_sourcesr;r)readdecr*s @r!rr"sQimm b' "rww/'AG  JH%3 !A3'"xxt 88 ! !  ) ) - -d 3 33Pii s^/ PEArI"f%"&&J*>$%WXX"f%"&&J*>66E1H!55'TZZPUWXPXEY:Y)"&&++6DII$$dGGZ=OQUWYW^W^,_%`a>>>$B/BEEV__4L+- ::<0Cj(&w 3I ((.#**408811c6G%,,T2#**3/0{+ II  R   .   - .Z   *R."bgg!NO_/ P 3Pj MN)rr rrreturnNone) rlist[BasicBlock]rrr?z set[Value]rzAnalysisResult[Value]r@rrLrN)__doc__ __future__rmypyc.analysis.dataflowrrr mypyc.commonrmypyc.ir.class_irrmypyc.ir.func_irr mypyc.ir.opsr r r r rrrrrr"rr'rKr!rVss;"NN'%#    MO O OO O  O  OrK