ó
    „ñ:iAt  ã                   óÐ  • S SK r S SKrS SKrS SKrS SKrS SKrS SKJr  S SK	J
r
  S SKJrJrJrJr  S SKJrJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJrJ r J!r!J"r"J#r#J$r$J%r%  S SK&J'r'  S SK(r(\(RR                  " \R                  RU                  S5      (       + S5      r+\(RR                  " \RX                  " 5       S;  S5      r- " S S\.5      r/ " S S\(R@                  5      r0 " S S\(R@                  5      r1 " S S\(R@                  5      r2 " S S\ 5      r3 " S S\(R@                  5      r4\$ " S S\\ 5      5       r5 " S S\ 5      r6\7S :X  a  \(Rp                  " 5         gg)!é    N©Únjit)Útypes)ÚrtsysÚnrtoptÚ_nrt_pythonÚnrt)Ú	intrinsicÚinclude_path)Ú	signature)Úimpl_ret_untracked)Úir©ÚNRT_get_api)ÚEnableNRTStatsMixinÚTestCaseÚtemp_directoryÚimport_dynamicÚskip_if_32bitÚskip_unless_cffiÚrun_in_subprocess)Ú
cpu_targetÚlinuxzlinux only test)Úi386Úx86_64zx86 only testc                   ó$   • \ rS rSrSrS rS rSrg)ÚDummyé%   r   c                 ó@   • [        U 5      =R                  S-  sl        g ©Né   ©ÚtypeÚalive©Úselfs    ÚW/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/numba/tests/test_nrt.pyÚ__init__ÚDummy.__init__(   ó   € ÜˆT‹
×Ò˜AÑÖó    c                 ó@   • [        U 5      =R                  S-  sl        g r    r"   r%   s    r'   Ú__del__ÚDummy.__del__+   r*   r+   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r$   r(   r-   Ú__static_attributes__r/   r+   r'   r   r   %   s   † Ø€Eòõr+   r   c                   ó"   • \ rS rSrSrSrS rSrg)ÚTestNrtMemInfoNotInitializedé/   zb
Unit test for checking the use of the NRT fails if the
initialization sequence has not been run.
Fc                 óf  • SSSS.nUR                  5        Hv  u  p# U R                  [        5       nS[        l        [        [        U5      nU" U6   S S S 5        SnU R                  U[        WR                  5      5        S[        l        Mx     g ! , (       d  f       NE= f! S[        l        f = f)Nr/   )r/   r/   )r/   )ÚlibraryÚmeminfo_newÚmeminfo_allocFz'Runtime must be initialized before use.T)	ÚitemsÚassertRaisesÚRuntimeErrorr   Ú_initÚgetattrÚassertInÚstrÚ	exception)r&   ÚmethodsÚmethÚargsÚraisesÚfnÚmsgs          r'   Útest_init_failÚ+TestNrtMemInfoNotInitialized.test_init_fail6   s“   € Ø Ø"*Ø$)ñˆð
 "Ÿ-™-ž/‰JˆDð	#Ø×&Ñ&¤|Ô4¸Ø"'”E”KÜ ¤¨Ó-�BÙ˜‘I÷ 5ð
 @�Ø—‘˜c¤3 v×'7Ñ'7Ó#8Ô9à"”–ò *ç4Õ4ûð #”•ús"   �B#²!BÁ/B#Â
B 	ÂB#Â#B0r/   N)r0   r1   r2   r3   Ú__doc__Ú_numba_parallel_test_rJ   r4   r/   r+   r'   r6   r6   /   s   † ñð "Ðõ#r+   r6   c                   ó`   ^ • \ rS rSrSrU 4S jrS rS rS rS r	S r
\S	 5       rS
 rSrU =r$ )ÚTestNrtMemInfoéI   z*
Unit test for core MemInfo functionality
c                 óˆ   >• S[         l        [        R                  " [        R
                  5        [        [        U ]#  5         g )Nr   )	r   r$   r   Ú
initializer   Útarget_contextÚsuperrO   ÚsetUp©r&   Ú	__class__s    €r'   rU   ÚTestNrtMemInfo.setUpN   s+   ø€ àŒŒä×Òœ×2Ñ2Ô3ÜŒn˜dÑ)Õ+r+   c                 ó4  • [        5       nU R                  [         R                  S5        Sn[        R                  " X!5      nU R                  UR
                  S5        AU R                  [         R                  S5        UR                  5         U R                  UR
                  S5        U R                  [         R                  S5        UR                  5         U R                  UR
                  S5        AU R                  [         R                  S5        g )Nr!   ì   þJ[= é   r   )r   ÚassertEqualr$   r   r:   ÚrefcountÚacquireÚrelease)r&   ÚdÚaddrÚmis       r'   Útest_meminfo_refct_1Ú#TestNrtMemInfo.test_meminfo_refct_1U   sÂ   € Ü‹GˆØ×ÑœŸ™ aÔ(Øˆä×Ò˜tÓ'ˆØ×Ñ˜Ÿ™ aÔ(ØØ×ÑœŸ™ aÔ(Ø
�
‰
ŒØ×Ñ˜Ÿ™ aÔ(Ø×ÑœŸ™ aÔ(Ø
�
‰
ŒØ×Ñ˜Ÿ™ aÔ(ØØ×ÑœŸ™ aÕ(r+   c                 ó|  • [        5       nU R                  [         R                  S5        Sn[        R                  " X!5      nU R                  UR
                  S5        AU R                  [         R                  S5        [        S5       H  nUR                  5         M     U R                  UR
                  S5        U R                  [         R                  S5        [        S5       H  nUR                  5         M     U R                  UR
                  S5        AU R                  [         R                  S5        g )Nr!   rZ   éd   ée   r   )	r   r\   r$   r   r:   r]   Úranger^   r_   )r&   r`   ra   rb   ÚctÚ_s         r'   Útest_meminfo_refct_2Ú#TestNrtMemInfo.test_meminfo_refct_2f   sÞ   € Ü‹GˆØ×ÑœŸ™ aÔ(Øˆä×Ò˜tÓ'ˆØ×Ñ˜Ÿ™ aÔ(ØØ×ÑœŸ™ aÔ(Ü˜–*ˆBØ�J‰JŽLñ à×Ñ˜Ÿ™ gÔ.Ø×ÑœŸ™ aÔ(Ü�s–ˆAØ�J‰JŽLñ à×Ñ˜Ÿ™ aÔ(ØØ×ÑœŸ™ aÕ(r+   c                 óÜ  • [        5       nU R                  [         R                  S5        Sn[        R                  " X!5      nU R                  UR
                  S5        [        U5      nU R                  UR
                  S5        U R                  X#R                  5        U R                  UR                  5        U R                  X4R                  5        U R                  UR                  5        U R                  UR                  S5        U R                  UR                  S5        AAU R                  [         R                  S5        AU R                  [         R                  S5        g )Nr!   rZ   r   )r   r\   r$   r   r:   r]   Ú
memoryviewÚdataÚassertFalseÚreadonlyÚassertIsÚobjÚ
assertTrueÚc_contiguousÚitemsizeÚndim)r&   r`   ra   rb   Úmviews        r'   Útest_fake_memoryviewÚ#TestNrtMemInfo.test_fake_memoryviewy   s  € Ü‹GˆØ×ÑœŸ™ aÔ(Øˆä×Ò˜tÓ'ˆØ×Ñ˜Ÿ™ aÔ(Ü˜2“ˆØ×Ñ˜Ÿ™ aÔ(Ø×Ñ˜Ÿw™wÔ'Ø×Ñ˜Ÿ™Ô(Ø�‰�bŸ)™)Ô$Ø�‰˜×*Ñ*Ô+Ø×Ñ˜Ÿ™¨Ô+Ø×Ñ˜Ÿ™ QÔ'ØØà×ÑœŸ™ aÔ(ØØ×ÑœŸ™ aÕ(r+   c                 ó°  • SSK JnJnJnJn  [
        R                  " [
        R                  5      nUR                  S-  n[        R                  " USS9nUR                  nU" U" UR                  5      U" US-  5      5      n	[        S5       H"  n
U R                  U	R                  U
   S5        M$     [        S5       H  n
U
S-   U	R                  U
'   M     [        U5      nU R                  UR                   U5        U R#                  UR$                  5        U R'                  X{R(                  5        U R+                  UR,                  5        U R                  UR                  S5        U R                  UR.                  S5        A[
        R0                  " X[R                   UR                  -  US9nA[
        R2                  R5                  [
        R6                  " UR8                  5      S-   U5        US-  n[        S5       H%  n
U R                  U	R                  U
   U
S	-   5        M'     U R                  UR                   R                  U5        Ag )
Nr   ©Úc_uint32Úc_void_pÚPOINTERÚcasté
   T©Úsafeì   ËK— r!   ©ÚdtypeÚshapeÚbufferr[   )Úctypesr}   r~   r   r€   Únpr†   Úuint32rv   r   r;   ro   rh   r\   Úcontentsrn   Únbytesrp   rq   rr   rs   rt   ru   rw   ÚndarrayÚtestingÚassert_equalÚarangeÚsize)r&   r}   r~   r   r€   r†   Úbytesizerb   ra   Úc_arrÚirx   Úarrs                r'   Útest_memoryviewÚTestNrtMemInfo.test_memoryview�   sÂ  € ß<Ó<ä—’œŸ™Ó#ˆØ—>‘> BÑ&ˆÜ× Ò  °Ñ5ˆØ�w‰wˆÙ‘X˜bŸg™gÓ&©°¸2±Ó(>Ó?ˆä�r–ˆAØ×Ñ˜UŸ^™^¨AÑ.°
Ö;ñ ô �r–ˆAØ ! A¡ˆE�N‰N˜1Óñ ä˜2“ˆØ×Ñ˜Ÿ™ xÔ0Ø×Ñ˜Ÿ™Ô(Ø�‰�bŸ)™)Ô$Ø�‰˜×*Ñ*Ô+Ø×Ñ˜Ÿ™¨Ô+Ø×Ñ˜Ÿ™ QÔ'ØÜ�jŠj˜u¯L©L¸E¿N¹NÑ,JØ %ñ'ˆàä
�
‰
×Ñ¤§	¢	¨#¯(©(Ó 3°aÑ 7¸Ô=àˆq‰ˆô �r–ˆAØ×Ñ˜UŸ^™^¨AÑ.°°A±Ö6ñ ð 	×Ñ˜Ÿ™Ÿ™¨$Ô/Ùr+   c                 ó–  • SSK JnJnJnJn  [
        R                  " [
        R                  5      nUR                  S-  n[        R                  " USS9nU R                  UR                  S5        UR                  nU" U" U5      U" US-  5      5      n	[        S5       H"  n
U R                  U	R                  U
   S5        M$     [        S5       H  n
U
S-   U	R                  U
'   M     [
        R                   " XVUR                  -  US9nU R                  UR                  S5        A[
        R"                  R%                  [
        R&                  " UR(                  5      S-   U5        US-  n[        S5       H%  n
U R                  U	R                  U
   U
S	-   5        M'     U R                  UR                   R                  U5        Ag )
Nr   r|   r�   Tr‚   r!   r„   r…   r[   )r‰   r}   r~   r   r€   rŠ   r†   r‹   rv   r   r;   r\   r]   ro   rh   rŒ   rŽ   r�   r�   r‘   r’   )r&   r}   r~   r   r€   r†   r“   rb   ra   r”   r•   r–   s               r'   Útest_bufferÚTestNrtMemInfo.test_buffer¸   sg  € ß<Ó<ä—’œŸ™Ó#ˆØ—>‘> BÑ&ˆÜ× Ò  °Ñ5ˆØ×Ñ˜Ÿ™ aÔ(Ø�w‰wˆÙ‘X˜d“^¡W¨X¸©]Ó%;Ó<ˆä�r–ˆAØ×Ñ˜UŸ^™^¨AÑ.°
Ö;ñ ô �r–ˆAØ ! A¡ˆE�N‰N˜1Óñ ô �jŠj˜u¸¿¹Ñ,FØ "ñ$ˆà×Ñ˜Ÿ™ aÔ(Øä
�
‰
×Ñ¤§	¢	¨#¯(©(Ó 3°aÑ 7¸Ô=àˆq‰ˆô �r–ˆAØ×Ñ˜UŸ^™^¨AÑ.°°A±Ö6ñ ð 	×Ñ˜Ÿ™Ÿ™¨$Ô/Ùr+   c                 ó.  • [         R                  R                  S-  S-  nS H^  nU R                  [        5       n[
        R                  " XS9  S S S 5        U R                  SU S3[        WR                  5      5        M`     g ! , (       d  f       N<= f)Né   r[   ©TFr‚   zRequested allocation of z bytes failed.)
r   Úsize_tÚmaxvalr=   ÚMemoryErrorr   r;   rA   rB   rC   )r&   r’   ÚpredrG   s       r'   Útest_allocate_invalid_sizeÚ)TestNrtMemInfo.test_allocate_invalid_sizeÜ   sw   € ô �|‰|×"Ñ" aÑ'¨1Ñ,ˆÛ!ˆDØ×"Ñ"¤;Ô/°6Ü×#Ò# DÒ4÷ 0à�M‰MÐ4°T°F¸.ÐIÜ˜f×.Ñ.Ó/ö1ò "ß/Õ/ús   »BÂ
B	c                 óö   • SnS H`  nU R                  [        5       n[        R                  " XS9  S S S 5        SU S3nU R	                  U[        WR                  5      5        Mb     g ! , (       d  f       N>= f)Niöÿÿÿrž   r‚   z,Cannot allocate a negative number of bytes: Ú.)r=   Ú
ValueErrorr   r;   rA   rB   rC   )r&   r’   r¢   rG   rI   s        r'   Útest_allocate_negative_sizeÚ*TestNrtMemInfo.test_allocate_negative_sizeæ   sd   € ð ˆÛ!ˆDØ×"Ñ"¤:Ô.°&Ü×#Ò# DÒ4÷ /à@ÀÀÀaÐHˆCØ�M‰M˜#œs 6×#3Ñ#3Ó4Ö5ò	 "ß.Õ.ús   �A*Á*
A8	r/   )r0   r1   r2   r3   rL   rU   rc   rk   ry   r—   rš   r   r£   r¨   r4   Ú__classcell__©rW   s   @r'   rO   rO   I   sF   ø† ñõ,ò)ò")ò&)ò,$òRðH ñ1ó ð1÷6ð 6r+   rO   c                   ó$   • \ rS rSrSrS rS rSrg)ÚTestTracemallocéñ   z:
Test NRT-allocated memory can be tracked by tracemalloc.
c                 ó.  •  SS K nWR                  5          UR	                  5       nU" 5       nUR	                  5       nAUR                  US5      UR                  5         $ ! [         a    U R                  S5         Nxf = f! UR                  5         f = f)Nr   ztracemalloc not availableÚlineno)ÚtracemallocÚImportErrorÚskipTestÚstartÚtake_snapshotÚ
compare_toÚstop)r&   Úfuncr±   ÚbeforeÚresÚafters         r'   Úmeasure_memory_diffÚ#TestTracemalloc.measure_memory_diffö   sŒ   € ð	7Ûð 	×ÑÔð	Ø ×.Ñ.Ó0ˆFá“&ˆCØ×-Ñ-Ó/ˆEØØ×#Ñ# F¨HÓ5à×ÑÕøô ó 	7Ø�M‰MÐ5Ö6ð	7ûð ×ÑÕús   ‚A! —9B Á!A?Á>A?ÂBc                 óx  ^^^	• Sm[         R                  m	[        UU	4S j5       mU4S jnU4S jnUR                  R                  S-   nT" 5         U R                  U5      nUS   nU R                  UR                  T5        U R                  UR                  TS-  SS	9  UR                  S   nU R                  [        R                  R                  UR                  5      S
5        U R                  UR                  U5        U R                  U5      nUS   nU R                  UR                  TS-  5        g )Ni@B c                  ó2   >• [         R                  " T T5      $ )z$
Allocate and return a large array.
)rŠ   Úempty)ÚNr†   s   €€r'   Úalloc_nrt_memoryÚ7TestTracemalloc.test_snapshot.<locals>.alloc_nrt_memory
  s   ø€ ô
 —8’8˜A˜uÓ%Ð%r+   c                  ó   >• T " 5       $ ©Nr/   ©rÂ   s   €r'   Úkeep_memoryÚ2TestTracemalloc.test_snapshot.<locals>.keep_memory  s   ø€ Ù#Ó%Ð%r+   c                  ó   >• T " 5         g rÅ   r/   rÆ   s   €r'   Úrelease_memoryÚ5TestTracemalloc.test_snapshot.<locals>.release_memory  s	   ø€ ÙÕr+   r!   r   g=
×£p=ð?zpUnexpected allocation overhead encountered. May be due to difference in CPython builds or running under coverage)rI   ztest_nrt.pyg{®Gáz„?)rŠ   Úint8r   Ú__code__Úco_firstlinenor¼   ÚassertGreaterEqualr’   Ú
assertLessÚ	tracebackr\   ÚosÚpathÚbasenameÚfilenamer°   )
r&   rÇ   rÊ   Úalloc_linenoÚdiffÚstatÚframerÁ   rÂ   r†   s
          @@@r'   Útest_snapshotÚTestTracemalloc.test_snapshot  s  ú€ ØˆÜ—‘ˆä	õ	&ó 
ð	&õ	&õ	ð #×+Ñ+×:Ñ:¸QÑ>ˆñ 	Ôð ×'Ñ'¨Ó4ˆØ�A‰wˆà×Ñ §	¡	¨1Ô-Ø�‰˜Ÿ	™	 1 u¡9ð@ð 	ñ 	Bð —‘˜qÑ!ˆØ×ÑœŸ™×)Ñ)¨%¯.©.Ó9¸=ÔIØ×Ñ˜Ÿ™ |Ô4ð ×'Ñ'¨Ó7ˆØ�A‰wˆà�‰˜Ÿ	™	 1 t¡8Õ,r+   r/   N)r0   r1   r2   r3   rL   r¼   rÚ   r4   r/   r+   r'   r­   r­   ñ   s   † ñòõ (-r+   r­   c                   óP   • \ rS rSrS rS rS rS r\R                  S 5       r
Srg)	ÚTestNRTIssuei1  c                 ó  ^^• [         S 5       m[         U4S j5       m[         U4S j5       nSn[        R                  R                  US45      nU" X#5      nUR                  X#5      n[        R                  R                  XT5        g)z?
GitHub Issue #1244 https://github.com/numba/numba/issues/1244
c                 óH   • U u  p[         R                  " US-  US-  -   5      $ )Nr[   )ÚmathÚsqrt)ÚvectorÚxÚys      r'   Úcalculate_2D_vector_magÚNTestNRTIssue.test_issue_with_refct_op_pruning.<locals>.calculate_2D_vector_mag6  s$   € à‰DˆAä—9’9˜Q !™V a¨1¡f™_Ó-Ð-r+   c                 ó‚   >• [         R                  " S[         R                  S9nT" U 5      nU u  p4X2-  US'   XB-  US'   U$ ©Nr[   ©r†   r   r!   )rŠ   rÀ   Úfloat64)râ   Únormalized_vectorÚmagrã   rä   rå   s        €r'   Únormalize_2D_vectorÚJTestNRTIssue.test_issue_with_refct_op_pruning.<locals>.normalize_2D_vector<  sI   ø€ ä "§¢¨´"·*±*Ñ =Ðá)¨&Ó1ˆCØ‰DˆAà#$¡7Ð˜aÑ Ø#$¡7Ð˜aÑ à$Ð$r+   c                 ó²   >• [         R                  " U S4[         R                  S9n[        U 5       H!  nX   nT" U5      nUS   X#S4'   US   X#S4'   M#     U$ rè   )rŠ   rÀ   rê   rh   )Únum_vectorsÚvectorsÚnormalized_vectorsr•   râ   rë   rí   s         €r'   Únormalize_vectorsÚHTestNRTIssue.test_issue_with_refct_op_pruning.<locals>.normalize_vectorsH  sj   ø€ ä!#§¢¨;¸Ð*:Ä"Ç*Á*Ñ!MÐä˜;Ö'�Ø ™�á$7¸Ó$?Ð!à+<¸QÑ+?Ð" a 4Ñ(Ø+<¸QÑ+?Ð" a 4Ó(ñ (ð &Ð%r+   r�   r[   N)r   rŠ   ÚrandomÚpy_funcr�   Úassert_almost_equal)r&   ró   rð   Útest_vectorsÚgotÚexpectedrå   rí   s         @@r'   Ú test_issue_with_refct_op_pruningÚ-TestNRTIssue.test_issue_with_refct_op_pruning2  s‹   ù€ ô 
ñ	.ó 
ð	.ô
 
ô		%ó 
ð		%ô 
ô	&ó 
ð	&ð ˆÜ—y‘y×'Ñ'¨°aÐ(8Ó9ˆÙ Ó:ˆØ$×,Ñ,¨[ÓGˆä
�
‰
×&Ñ& xÕ5r+   c           
      ób  • S n[        [        R                  " [        R                  [        R                  " [        R
                  SS5      45      " 5       5      " U5      nU" 5       u  p4U R                  US5        U R                  U[        R                  " S[        R
                  S95        g )Nc                  óL   • S[         R                  " S[         R                  S94$ )Ng        r!   ré   )rŠ   ÚzerosÚint32r/   r+   r'   ÚfÚ.TestNRTIssue.test_incref_after_cast.<locals>.f`  s   € ØœŸš ¬"¯(©(Ñ3Ð3Ð3r+   r!   ÚCy                ré   )	r   r   ÚTupleÚ
complex128ÚArrayr   ÚassertPreciseEqualrŠ   rÿ   )r&   r  ÚcfuncÚzr–   s        r'   Útest_incref_after_castÚ#TestNRTIssue.test_incref_after_cast]  s‰   € ò	4ô
 ”e—k’k¤5×#3Ñ#3Ü#(§;¢;¬u¯{©{¸A¸sÓ#Cð#Fô Gó Jô KØKLóNˆá“‰ˆØ×Ñ  2Ô&Ø×Ñ ¤R§X¢X¨a´r·x±xÑ%@ÕAr+   c                 óî   • [         S 5       nU" 5       u  p#[        R                  R                  X#5        [        R                  R                  U[        R                  " S[        R
                  S95        g )Nc                  óš   • [         R                  " S[         R                  S9n [         R                  " S[         R                  S9nXS S  4$ )Nr�   ré   )rŠ   Úonesrê   )ÚaÚbs     r'   r  Ú5TestNRTIssue.test_refct_pruning_issue_1511.<locals>.fl  s5   € ä—’˜¤"§*¡*Ñ-ˆAÜ—’˜¤"§*¡*Ñ-ˆAØ™�d�7ˆNr+   r�   ré   )r   rŠ   r�   r�   r  rê   )r&   r  r  r  s       r'   Útest_refct_pruning_issue_1511Ú*TestNRTIssue.test_refct_pruning_issue_1511k  sT   € Ü	ñ	ó 
ð	ñ
 ‹s‰ˆÜ
�
‰
×Ñ Ô%Ü
�
‰
×Ñ ¤2§7¢7¨2´R·Z±ZÑ#@ÕAr+   c                 óª   • [         S 5       n[        R                  " / SQ/5      nUR                  USS5      nU" USS5      nU R	                  X45        g )Nc                 ó¨   • [         R                  " U S:H  5      n[        US   5      S:X  a  SnSnOUS   S   nUS   S   nUS-
  U-   nUS-
  U-   nXg4$ )Nr!   r   )rŠ   ÚwhereÚlen)Úimagerã   rä   Únext_locÚy_offsetÚx_offsetÚ
next_loc_xÚ
next_loc_ys           r'   ÚudtÚ7TestNRTIssue.test_refct_pruning_issue_1526.<locals>.udtw  sn   € ä—x’x ¨¡
Ó+ˆHä�8˜A‘;Ó 1Ó$Ø�Ø‘à# A™; q™>�Ø# A™; q™>�à˜a™% 8Ñ+ˆJØ˜a™% 8Ñ+ˆJàÐ)Ð)r+   )
r!   r   r!   r   r!   r   r   r!   r   r   r!   é   )r   rŠ   Úarrayrö   r\   )r&   r  r  Úexpectrù   s        r'   Útest_refct_pruning_issue_1526Ú*TestNRTIssue.test_refct_pruning_issue_1526v  sU   € Ü	ñ	*ó 
ð	*ô �HŠHÒ4Ð5Ó6ˆØ—‘˜Q  1Ó%ˆÙ�!�Q˜‹lˆà×Ñ˜Õ%r+   c                 ó$  • SSK Jn  U R                  [        R                  5        US 5       nU R                  [        R                  5        U R                  U" 5       UR                  5       5        U R                  [        R                  5        g )Nr   r   c                  ó   • g)Né{   r/   r/   r+   r'   ÚfooÚ8TestNRTIssue.test_no_nrt_on_njit_decoration.<locals>.foo—  s   € àr+   )Únumbar   rp   r   r?   r\   rö   rt   )r&   r   r(  s      r'   Útest_no_nrt_on_njit_decorationÚ+TestNRTIssue.test_no_nrt_on_njit_decoration�  so   € õ 	ð 	×ÑœŸ™Ô%ð 
ñ	ó 
ð	ð 	×ÑœŸ™Ô%ð 	×Ñ™› §¡£Ô.ð 	�‰œŸ™Õ$r+   r/   N)r0   r1   r2   r3   rû   r
  r  r#  r   Úrun_test_in_subprocessr+  r4   r/   r+   r'   rÝ   rÝ   1  s3   † ò)6òVBò	Bò&ð. ×$Ñ$ñ%ó %ó%r+   rÝ   c                   óh   • \ rS rSrSrS r\R                  " S5      S 5       r\	\
S 5       5       rSrg)	ÚTestRefCtPruningi¦  a¡  
define i32 @"MyFunction"(i8** noalias nocapture %retptr, { i8*, i32 }** noalias nocapture %excinfo, i8* noalias nocapture readnone %env, double %arg.vt.0, double %arg.vt.1, double %arg.vt.2, double %arg.vt.3, double %arg.bounds.0, double %arg.bounds.1, double %arg.bounds.2, double %arg.bounds.3, i8* %arg.xs.0, i8* nocapture readnone %arg.xs.1, i64 %arg.xs.2, i64 %arg.xs.3, double* nocapture readonly %arg.xs.4, i64 %arg.xs.5.0, i64 %arg.xs.6.0, i8* %arg.ys.0, i8* nocapture readnone %arg.ys.1, i64 %arg.ys.2, i64 %arg.ys.3, double* nocapture readonly %arg.ys.4, i64 %arg.ys.5.0, i64 %arg.ys.6.0, i8* %arg.aggs_and_cols.0.0, i8* nocapture readnone %arg.aggs_and_cols.0.1, i64 %arg.aggs_and_cols.0.2, i64 %arg.aggs_and_cols.0.3, i32* nocapture %arg.aggs_and_cols.0.4, i64 %arg.aggs_and_cols.0.5.0, i64 %arg.aggs_and_cols.0.5.1, i64 %arg.aggs_and_cols.0.6.0, i64 %arg.aggs_and_cols.0.6.1) local_unnamed_addr {
entry:
tail call void @NRT_incref(i8* %arg.xs.0)
tail call void @NRT_incref(i8* %arg.ys.0)
tail call void @NRT_incref(i8* %arg.aggs_and_cols.0.0)
%.251 = icmp sgt i64 %arg.xs.5.0, 0
br i1 %.251, label %B42.preheader, label %B160

B42.preheader:                                    ; preds = %entry
%0 = add i64 %arg.xs.5.0, 1
br label %B42

B42:                                              ; preds = %B40.backedge, %B42.preheader
%lsr.iv3 = phi i64 [ %lsr.iv.next, %B40.backedge ], [ %0, %B42.preheader ]
%lsr.iv1 = phi double* [ %scevgep2, %B40.backedge ], [ %arg.xs.4, %B42.preheader ]
%lsr.iv = phi double* [ %scevgep, %B40.backedge ], [ %arg.ys.4, %B42.preheader ]
%.381 = load double, double* %lsr.iv1, align 8
%.420 = load double, double* %lsr.iv, align 8
%.458 = fcmp ole double %.381, %arg.bounds.1
%not..432 = fcmp oge double %.381, %arg.bounds.0
%"$phi82.1.1" = and i1 %.458, %not..432
br i1 %"$phi82.1.1", label %B84, label %B40.backedge

B84:                                              ; preds = %B42
%.513 = fcmp ole double %.420, %arg.bounds.3
%not..487 = fcmp oge double %.420, %arg.bounds.2
%"$phi106.1.1" = and i1 %.513, %not..487
br i1 %"$phi106.1.1", label %B108.endif.endif.endif, label %B40.backedge

B160:                                             ; preds = %B40.backedge, %entry
tail call void @NRT_decref(i8* %arg.ys.0)
tail call void @NRT_decref(i8* %arg.xs.0)
tail call void @NRT_decref(i8* %arg.aggs_and_cols.0.0)
store i8* null, i8** %retptr, align 8
ret i32 0

B108.endif.endif.endif:                           ; preds = %B84
%.575 = fmul double %.381, %arg.vt.0
%.583 = fadd double %.575, %arg.vt.1
%.590 = fptosi double %.583 to i64
%.630 = fmul double %.420, %arg.vt.2
%.638 = fadd double %.630, %arg.vt.3
%.645 = fptosi double %.638 to i64
tail call void @NRT_incref(i8* %arg.aggs_and_cols.0.0)              ; GONE 1
tail call void @NRT_decref(i8* null)                                ; GONE 2
tail call void @NRT_incref(i8* %arg.aggs_and_cols.0.0), !noalias !0 ; GONE 3
%.62.i.i = icmp slt i64 %.645, 0
%.63.i.i = select i1 %.62.i.i, i64 %arg.aggs_and_cols.0.5.0, i64 0
%.64.i.i = add i64 %.63.i.i, %.645
%.65.i.i = icmp slt i64 %.590, 0
%.66.i.i = select i1 %.65.i.i, i64 %arg.aggs_and_cols.0.5.1, i64 0
%.67.i.i = add i64 %.66.i.i, %.590
%.84.i.i = mul i64 %.64.i.i, %arg.aggs_and_cols.0.5.1
%.87.i.i = add i64 %.67.i.i, %.84.i.i
%.88.i.i = getelementptr i32, i32* %arg.aggs_and_cols.0.4, i64 %.87.i.i
%.89.i.i = load i32, i32* %.88.i.i, align 4, !noalias !3
%.99.i.i = add i32 %.89.i.i, 1
store i32 %.99.i.i, i32* %.88.i.i, align 4, !noalias !3
tail call void @NRT_decref(i8* %arg.aggs_and_cols.0.0), !noalias !0 ; GONE 4
tail call void @NRT_decref(i8* %arg.aggs_and_cols.0.0)              ; GONE 5
br label %B40.backedge

B40.backedge:                                     ; preds = %B108.endif.endif.endif, %B84, %B42
%scevgep = getelementptr double, double* %lsr.iv, i64 1
%scevgep2 = getelementptr double, double* %lsr.iv1, i64 1
%lsr.iv.next = add i64 %lsr.iv3, -1
%.294 = icmp sgt i64 %lsr.iv.next, 1
br i1 %.294, label %B42, label %B160
}
    c                 ób  • U R                   n[        UR                  5       5      nU Vs/ s H  nSU;   d  M  UPM     nnU Vs/ s H  nSU;   d  M  UPM     nn[        R                  " U5      n[        UR                  5       5      nU Vs/ s H  nSU;   d  M  UPM     nnU Vs/ s H  nSU;   d  M  UPM     n	nU R                  XH5        U R                  XY5        [        U5      [        U5      -
  n
[        U5      [        U	5      -
  nX«-  nU R                  XÊU-  5        SR                  U5      nS H%  nSR                  U5      nU R                  Xý5        M'     U R                  [        [        UR                  5       5      5      [        U5      5        g s  snf s  snf s  snf s  snf )NÚ
NRT_increfÚ
NRT_decrefÚ
)r!   r[   é   é   é   z	; GONE {})Úsample_llvm_irÚlistÚ
splitlinesr   Ú_remove_redundant_nrt_refctÚassertNotEqualÚsetr\   ÚjoinÚformatrA   r  )r&   Úinput_irÚinput_linesÚlnÚbefore_increfsÚbefore_decrefsÚ	output_irÚoutput_linesÚafter_increfsÚafter_decrefsÚpruned_increfsÚpruned_decrefsÚcombinedÚpruned_linesr•   Úgones                   r'   Útest_refct_pruning_op_recognizeÚ0TestRefCtPruning.test_refct_pruning_op_recognizeð  s…  € Ø×&Ñ&ˆÜ˜8×.Ñ.Ó0Ó1ˆÙ'2ÓI¢{ °lÀbÑ6HŸ"¡{ˆÐIÙ'2ÓI¢{ °lÀbÑ6HŸ"¡{ˆÐIô ×6Ò6°xÓ@ˆ	Ü˜I×0Ñ0Ó2Ó3ˆÙ&2ÓI¢l °lÀbÑ6HŸ¡lˆÐIÙ&2ÓI¢l °lÀbÑ6HŸ¡lˆÐIð 	×Ñ˜NÔ:Ø×Ñ˜NÔ:ä˜^Ó,¬s°=Ó/AÑAˆÜ˜^Ó,¬s°=Ó/AÑAˆð "Ñ2ˆØ×Ñ˜°NÑ#BÔCØ—y‘y Ó*ˆó !ˆAØ×%Ñ% aÓ(ˆDØ�M‰M˜$Ö-ñ !ð 	×ÑœœT ,×"9Ñ"9Ó";Ó<Ó=¼sÀ8»}ÕMùò5 JùÚIùò
 JùÚIs.   ª
F¸FÁ
F"ÁF"Â
F'ÂF'Â'
F,Â5F,z3Pass removed as it was buggy. Re-enable when fixed.c                 ód  ^^^• [         S 5       m[         S 5       m[         UU4S j5       m[        SS9U4S j5       nUR                  S5        [        UR                  UR                  S   5      5      n[        [        R                  " S	U5      5      nU R                  [        U5      S5        g
)ztestcase from #2350c                 óX   • [         R                  " U5      (       d  X!U 4==   S-  ss'   g g r    ©rŠ   Úisnan©rã   rä   ÚaggÚfields       r'   Ú_append_non_naÚITestRefCtPruning.test_refct_pruning_with_branches.<locals>._append_non_na  s#   € ä—8’8˜E—?‘?Ø�q�D“	˜Q‘”	ð #r+   c                 ó¢   • [         R                  " U5      (       d4  [         R                  " X!U 4   5      (       a  X2X4'   g X!U 4==   U-  ss'   g g rÅ   rQ  rS  s       r'   Ú_appendÚBTestRefCtPruning.test_refct_pruning_with_branches.<locals>._append  sB   € ä—8’8˜E—?‘?Ü—8’8˜C 1 ™I×&Ñ&Ø %˜˜’Ià˜1˜“I Ñ&”Ið	 #r+   c                 ó*   >• T" XX#5        T" XX#5        g rÅ   r/   )rã   rä   rT  rU  rY  rV  s       €€r'   ÚappendÚATestRefCtPruning.test_refct_pruning_with_branches.<locals>.append  s   ø€ á˜1 Ô,Ù�A˜#Õ%r+   T)Úno_cpython_wrapperc                 ó”   >• [        U R                  S   5       H+  n[        U R                  S   5       H  nT" X2X5        M     M-     g )Nr   r!   )rh   r‡   )r–   rU  r•   Újr\  s       €r'   ÚextendÚATestRefCtPruning.test_refct_pruning_with_branches.<locals>.extend&  s;   ø€ ä˜3Ÿ9™9 Q™<Ö(�Ü˜sŸy™y¨™|Ö,�AÙ˜1 Ö,ó -ò )r+   z(f4[:,::1], f4)r   z!(NRT_incref|NRT_decref)\([^\)]+\)N)
r   ÚcompilerB   Úinspect_llvmÚ
signaturesr8  ÚreÚfinditerr\   r  )r&   ra  ÚllvmirÚrefopsrY  rV  r\  s       @@@r'   Ú test_refct_pruning_with_branchesÚ1TestRefCtPruning.test_refct_pruning_with_branches  s³   ú€ ô 
ñ	ó 
ð	ô 
ñ	'ó 
ð	'ô 
õ	&ó 
ð	&ô 
 Ñ	&ô	-ó 
'ð	-ð 	�‰Ð(Ô)ô �V×(Ñ(¨×):Ñ):¸1Ñ)=Ó>Ó?ˆÜ”b—k’kÐ"FÈÓOÓPˆØ×Ñœ˜V› aÕ(r+   c                 óö   ^• [         R                  " 5         [         R                  " 5         [         R                  " 5         [        S 5       m[        S/5      U4S j5       nU R                  U" S5      S5        g)zlThe InlineAsm class from llvmlite.ir has no 'name' attr the refcount
pruning pass should be tolerant to thisc                 óz   • S n[        [        R                  [        R                  [        R                  5      U4$ )Nc           	      ó  • Uu  pE[         R                  " [         R                  " S5      [         R                  " S5      [         R                  " S5      /5      nUR                  USSXE4SSS9n[	        XUR
                  U5      $ )Né    zmov $2, $0; imul $1, $0z=&r,r,rÚasm_mulF)ÚnameÚside_effect)r   ÚFunctionTypeÚIntTypeÚasmr   Úreturn_type)ÚcgctxÚbuilderÚsigrF   Úarg_0Úarg_1ÚftyÚmuls           r'   ÚcodegenÚ>TestRefCtPruning.test_inline_asm.<locals>.bar.<locals>.codegen?  sv   € Ø!%‘�Ü—o’o¤b§j¢j°£n´r·z²zÀ"³~Ü79·z²zÀ"³~ð7Gó H�à—k‘k #Ð'@À)Ø#( .°yØ.3ð "ð 5�ô *¨%¸#¿/¹/È3ÓOÐOr+   )r   r   r   )Útyctxrã   rä   r~  s       r'   ÚbarÚ-TestRefCtPruning.test_inline_asm.<locals>.bar=  s*   € òPô œUŸ[™[¬%¯+©+´u·{±{ÓCÀWÐLÐLr+   zint32(int32)c                 ó$   >• U S-  n T" U S5      nU$ )Nr!   r[   r/   )rã   r	  r�  s     €r'   r(  Ú-TestRefCtPruning.test_inline_asm.<locals>.fooI  s   ø€ à�‰FˆAÙ�A�q“	ˆAØˆHr+   r�   é   N)ÚllvmÚinitialize_native_targetÚinitialize_native_asmprinterÚinitialize_native_asmparserr
   r   r\   )r&   r(  r�  s     @r'   Útest_inline_asmÚ TestRefCtPruning.test_inline_asm4  so   ø€ ô
 	×%Ò%Ô'Ü×)Ò)Ô+Ü×(Ò(Ô*ä	ñ		Mó 
ð		Mô 
ˆ~ÐÓ	ô	ó 
 ð	ð
 	×Ñ™˜R› "Õ%r+   r/   N)r0   r1   r2   r3   r7  rM  ÚunittestÚskiprj  Ú
linux_onlyÚx86_onlyrŠ  r4   r/   r+   r'   r/  r/  ¦  sM   † ðF€NòPNð> ‡]‚]ÐHÓIñ")ó Jð")ðH Øñ&ó ó ó&r+   r/  c                   óJ   ^ • \ rS rSrSrU 4S jrS rS rS rS r	S r
S	rU =r$ )
ÚTestNrtExternalCFFIiR  z?Testing the use of externally compiled C code that use NRT
    c                 óJ   >• [         R                    [        [        U ]  5         g rÅ   )r   rS   rT   r‘  rU   rV   s    €r'   rU   ÚTestNrtExternalCFFI.setUpV  s   ø€ ä×!Ò!ÜÔ! 4Ñ.Õ0r+   c                 ó¤  • SSK Jn  U" 5       nUR                  X[        5       /S9  UR	                  U5        [        SR                  U5      5      nUR                  US9  [        R                  R                  U5         [        U5      n[        R                  R                  U5        XW4$ ! [        R                  R                  U5        f = f)Nr   ©ÚFFI)Úinclude_dirszcffi_test_{})Útmpdir)Úcffir–  Ú
set_sourcer   Úcdefr   r>  rc  ÚsysrÓ   r\  r   Úremove)r&   rq  Úsourcer›  r–  Úffir˜  Úmods           r'   Úcompile_cffi_moduleÚ'TestNrtExternalCFFI.compile_cffi_module[  s™   € Ýá‹eˆØ�‰�t´<³>Ð2BˆÑCØ�‰�ŒÜ × 5Ñ 5°dÓ ;Ó<ˆØ�‰˜6ˆÑ"Ü�‰�‰˜Ôð	$Ü  Ó&ˆCä�H‰H�O‰O˜FÔ#àˆxˆøô �H‰H�O‰O˜FÕ#ús   ÂB. Â.!Cc                 ót   • SSK Jn  U" 5       nUR                  S[        R                  S   5      nU" 5       nU$ )Nr   r•  zvoid* (*)()Úget_api)r™  r–  r€   r   Ú	c_helpers)r&   r–  rŸ  Únrt_get_apiÚtables        r'   Úget_nrt_api_tableÚ%TestNrtExternalCFFI.get_nrt_api_tablek  s3   € Ýá‹eˆØ—h‘h˜}¬k×.CÑ.CÀIÑ.NÓOˆÙ“ˆØˆr+   c                 óT  • SR                  U R                  R                  5      nSnSnU R                  XU5      u  pEU R	                  UR
                  R                  S5        U R                  5       nUR
                  R                  U5      nU R	                  UR
                  R                  S5        [        UR                  SU5      5      n[        R                  " U5      n	U R	                  U	R                  S5        A	U R	                  UR
                  R                  S5        g )	Nz{}_test_manage_memoryaz  
#include <stdio.h>
#include "numba/core/runtime/nrt_external.h"

int status = 0;

void my_dtor(void *ptr) {
    free(ptr);
    status = 0xdead;
}

NRT_MemInfo* test_nrt_api(NRT_api_functions *nrt) {
    void * data = malloc(10);
    NRT_MemInfo *mi = nrt->manage_memory(data, my_dtor);
    nrt->acquire(mi);
    nrt->release(mi);
    status = 0xa110c;
    return mi;
}
        z;
void* test_nrt_api(void *nrt);
extern int status;
        r   i
 rŸ   r!   i­Þ  )r>  rW   r0   r¡  r\   ÚlibÚstatusr¨  Útest_nrt_apiÚintr€   r	   ÚMemInfor]   )
r&   rq  rž  r›  rŸ  r   r§  ÚoutÚmi_addrrb   s
             r'   Útest_manage_memoryÚ&TestNrtExternalCFFI.test_manage_memorys  sä   € Ø&×-Ñ-¨d¯n©n×.EÑ.EÓFˆðˆð(ˆð
 ×+Ñ+¨D¸$Ó?‰ˆà×Ñ˜Ÿ™Ÿ™¨Ô+Ø×&Ñ&Ó(ˆØ�g‰g×"Ñ" 5Ó)ˆà×Ñ˜Ÿ™Ÿ™¨Ô1Ü�c—h‘h˜x¨Ó-Ó.ˆÜ�[Š[˜Ó!ˆØ×Ñ˜Ÿ™ aÔ(Øà×Ñ˜Ÿ™Ÿ™¨Õ0r+   c                 óÐ  • SR                  U R                  R                  5      nSnSnU R                  XU5      u  pEU R	                  5       nS[
        R                  " [
        R                  5      R                  -  nUR                  R                  Xg5      n[        UR                  SU5      5      n	[        R                  " U	5      n
U R                  U
R                   S5        UR#                  UR                  SR                  U5      U
R$                  5      5      n[
        R&                  " S[
        R                  US	9n[
        R(                  R+                  U/ S
Q5        g )Nz{}_test_allocatea7  
#include <stdio.h>
#include "numba/core/runtime/nrt_external.h"

NRT_MemInfo* test_nrt_api(NRT_api_functions *nrt, size_t n) {
    size_t *data = NULL;
    NRT_MemInfo *mi = nrt->allocate(n);
    data = nrt->get_data(mi);
    data[0] = 0xded;
    data[1] = 0xabc;
    data[2] = 0xdef;
    return mi;
}
        z(void* test_nrt_api(void *nrt, size_t n);r4  rŸ   r!   z	char [{}])r4  )r‡   r†   rˆ   )ií  i¼
  iï  )r>  rW   r0   r¡  r¨  rŠ   r†   Úintprv   r«  r­  r®  r€   r	   r¯  r\   r]   rˆ   ro   rŽ   r�   r�   )r&   rq  rž  r›  rŸ  r   r§  Únumbytesr°  r±  rb   rˆ   r–   s                r'   Útest_allocateÚ!TestNrtExternalCFFI.test_allocateœ  s  € Ø!×(Ñ(¨¯©×)@Ñ)@ÓAˆðˆð :ˆØ×+Ñ+¨D¸$Ó?‰ˆà×&Ñ&Ó(ˆà”r—x’x¤§¡Ó(×1Ñ1Ñ1ˆØ�g‰g×"Ñ" 5Ó3ˆä�c—h‘h˜x¨Ó-Ó.ˆÜ�[Š[˜Ó!ˆØ×Ñ˜Ÿ™ aÔ(à—‘˜CŸH™H [×%7Ñ%7¸Ó%AÀ2Ç7Á7ÓKÓLˆÜ�jŠj˜t¬2¯7©7¸6ÑBˆÜ
�
‰
×Ñ Ò%:Õ;r+   c                 ó¸   • SSK Jn  [        S 5       nU" 5       n[        UR	                  SU R                  5       5      5      nU" 5       nU R                  XE5        g )Nr   r•  c                  ó   • [        5       $ rÅ   r   r/   r+   r'   r­  Ú6TestNrtExternalCFFI.test_get_api.<locals>.test_nrt_api¿  s
   € ä“=Ð r+   rŸ   )r™  r–  r   r®  r€   r¨  r\   )r&   r–  r­  rŸ  r"  rù   s         r'   Útest_get_apiÚ TestNrtExternalCFFI.test_get_api¼  sS   € Ýä	ñ	!ó 
ð	!ñ ‹eˆÜ�S—X‘X˜h¨×(>Ñ(>Ó(@ÓAÓBˆÙ‹nˆØ×Ñ˜Õ%r+   r/   )r0   r1   r2   r3   rL   rU   r¡  r¨  r²  r·  r¼  r4   rª   r«   s   @r'   r‘  r‘  R  s-   ø† ñõ1ò
ò ò'1òR<÷@
&ð 
&r+   r‘  c                   óJ   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)ÚTestNrtStatisticsiÉ  c                 ó8   • [         R                  " 5       U l        g rÅ   )r   Úmemsys_stats_enabledÚ_TestNrtStatistics__stats_stater%   s    r'   rU   ÚTestNrtStatistics.setUpË  s   € ä(×=Ò=Ó?ˆÕr+   c                 ó|   • U R                   (       a  [        R                  " 5         g [        R                  " 5         g rÅ   )rÂ  r   Úmemsys_enable_statsÚmemsys_disable_statsr%   s    r'   ÚtearDownÚTestNrtStatistics.tearDownÏ  s#   € à××Ü×+Ò+Õ-ä×,Ò,Õ.r+   c                 ó`   • Sn[         R                  R                  5       nSUS'   [        XS9  g )Na¡  if 1:
        from numba import njit
        import numpy as np
        from numba.core.runtime import rtsys, _nrt_python
        from numba.core.registry import cpu_target

        @njit
        def foo():
            return np.arange(10)[0]

        # initialize the NRT before use
        rtsys.initialize(cpu_target.target_context)
        assert _nrt_python.memsys_stats_enabled()
        orig_stats = rtsys.get_allocation_stats()
        foo()
        new_stats = rtsys.get_allocation_stats()
        total_alloc = new_stats.alloc - orig_stats.alloc
        total_free = new_stats.free - orig_stats.free
        total_mi_alloc = new_stats.mi_alloc - orig_stats.mi_alloc
        total_mi_free = new_stats.mi_free - orig_stats.mi_free

        expected = 1
        assert total_alloc == expected
        assert total_free == expected
        assert total_mi_alloc == expected
        assert total_mi_free == expected
        Ú1ÚNUMBA_NRT_STATS©Úenv)rÒ   ÚenvironÚcopyr   )r&   ÚsrcrÍ  s      r'   Útest_stats_env_var_explicit_onÚ0TestNrtStatistics.test_stats_env_var_explicit_onÖ  s.   € ðˆô8 �j‰j�o‰oÓˆØ!$ˆÐÑÜ˜#Ó'r+   c                 ó   • Sn[        X!S9  g )Na“  if 1:
        from numba import njit
        import numpy as np
        from numba.core.runtime import rtsys, _nrt_python

        @njit
        def foo():
            return np.arange(10)[0]

        assert _nrt_python.memsys_stats_enabled() == False
        try:
            rtsys.get_allocation_stats()
        except RuntimeError as e:
            assert "NRT stats are disabled." in str(e)
        rÌ  )r   )r&   rÍ  rÐ  s      r'   Úcheck_env_var_offÚ#TestNrtStatistics.check_env_var_offø  s   € ðˆô 	˜#Ó'r+   c                 ól   • [         R                  R                  5       nSUS'   U R                  U5        g )NÚ0rË  )rÒ   rÎ  rÏ  rÔ  ©r&   rÍ  s     r'   Útest_stats_env_var_explicit_offÚ1TestNrtStatistics.test_stats_env_var_explicit_off  s+   € ä�j‰j�o‰oÓˆØ!$ˆÐÑØ×Ñ˜sÕ#r+   c                 ó†   • [         R                  R                  5       nUR                  SS 5        U R	                  U5        g )NrË  )rÒ   rÎ  rÏ  ÚpoprÔ  rØ  s     r'   Útest_stats_env_var_default_offÚ0TestNrtStatistics.test_stats_env_var_default_off  s1   € ô �j‰j�o‰oÓˆØ�‰Ð! 4Ô(Ø×Ñ˜sÕ#r+   c                 ót  • [         S 5       n[        R                  " 5         U R                  [        R                  " 5       5        [        S5       Hä  n[        R                  " 5       n[        R                  " 5         U R                  [        R                  " 5       5        U" 5         [        R                  " 5         U R                  [        R                  " 5       5        [        R                  " 5       nU" 5         [        R                  " 5       nU R                  X45        U R                  XE5        Mæ     g )Nc                  óf   • [         R                  " S5      n [         R                  " SU S   -  5      $ )Nr4  r6  r   )rŠ   r  r‘   )Útmps    r'   r(  Ú7TestNrtStatistics.test_stats_status_toggle.<locals>.foo  s&   € ä—'’'˜!“*ˆCÜ—9’9˜Q  Q¡™ZÓ(Ð(r+   r[   )r   r   rÅ  rt   rÁ  rh   r   Úget_allocation_statsrÆ  rp   r\   rÐ   )r&   r(  r•   Ústats_1Ústats_2Ústats_3s         r'   Útest_stats_status_toggleÚ*TestNrtStatistics.test_stats_status_toggle  s×   € ä	ñ	)ó 
ð	)ô
 	×'Ò'Ô)à�‰œ×8Ò8Ó:Ô;ä�q–ˆAä×0Ò0Ó2ˆGä×,Ò,Ô.à×Ñœ[×=Ò=Ó?Ô@áŒEä×+Ò+Ô-à�O‰OœK×<Ò<Ó>Ô?ä×0Ò0Ó2ˆGáŒEä×0Ò0Ó2ˆGà×Ñ˜WÔ.à�O‰O˜GÖ-ò- r+   c                 óH  • [         R                  " 5         U R                  [         R                  " 5       5        U R	                  [
        5       n[        R                  " 5         S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)NúNRT stats are disabled.)r   rÆ  rp   rÁ  r=   r>   r   rã  rA   rB   rC   )r&   rG   s     r'   Ú5test_rtsys_stats_query_raises_exception_when_disabledÚGTestNrtStatistics.test_rtsys_stats_query_raises_exception_when_disabled<  sm   € ô 	×(Ò(Ô*Ø×Ñœ×9Ò9Ó;Ô<à×Ñœ|Ô,°Ü×&Ò&Ô(÷ -ð 	�‰Ð/´°V×5EÑ5EÓ1FÕG÷ -Õ,ús   ÁBÂ
B!c                 ó¼  • SnU H±  n[        [        SU 35      nU R                  US9   [        R                  " 5         U R	                  [        R
                  " 5       5        U R                  [        5       nU" 5         S S S 5        U R                  S[        WR                  5      5        S S S 5        M³     g ! , (       d  f       N@= f! , (       d  f       MÖ  = f)N)ÚallocÚfreeÚmi_allocÚmi_freeÚmemsys_get_stats_)Ú
stats_funcrê  )r@   r   ÚsubTestrÆ  rp   rÁ  r=   r>   rA   rB   rC   )r&   Úmethod_variationsrE   ró  rG   s        r'   Ú<test_nrt_explicit_stats_query_raises_exception_when_disabledÚNTestNrtStatistics.test_nrt_explicit_stats_query_raises_exception_when_disabledH  s¨   € ð EÐÛ%ˆDÜ ¤Ð0AÀ$ÀÐ.HÓIˆJØ—‘¨�Ò4ä×0Ò0Ô2Ø× Ñ ¤×!AÒ!AÓ!CÔDØ×&Ñ&¤|Ô4¸Ù”L÷ 5à—‘Ð7¼¸V×=MÑ=MÓ9NÔO÷ 5Ñ4ò &÷ 5Õ4ú÷	 5Ö4ús$   ªACÁ9B;Â-CÂ;
C	ÃCÃ
C	)Ú__stats_stateN)r0   r1   r2   r3   rU   rÇ  rÑ  rÔ  rÙ  rÝ  rç  rë  rö  r4   r/   r+   r'   r¿  r¿  É  s4   † ò@ò/ò (òD(ò&$ò$ò".òH
HõPr+   r¿  Ú__main__)9rà   rÒ   Úplatformrœ  rf  ÚnumpyrŠ   r*  r   Ú
numba.corer   Únumba.core.runtimer   r   r   r	   Únumba.core.extendingr
   r   Únumba.core.typingr   Únumba.core.imputilsr   Úllvmliter   Úllvmlite.bindingÚbindingr†  Únumba.core.unsafe.nrtr   Únumba.tests.supportr   r   r   r   r   r   r   Únumba.core.registryr   rŒ  ÚskipIfÚ
startswithrŽ  Úmachiner�  Úobjectr   r6   rO   r­   rÝ   r/  r‘  r¿  r0   Úmainr/   r+   r'   Ú<module>r     sS  ðÛ Û 	Û Û 
Û 	ã å Ý ÷ó ÷ 9Ý 'Ý 2Ý Ý Ý -÷F÷ Fñ Fõ +Û ð �_Š_ §¡×!8Ñ!8¸Ó!AÔAØ.ó0€
à�?Š?˜8×+Ò+Ó-Ð5GÑGØ*ó,€ôˆFô ô# 8×#4Ñ#4ô #ô4e6�X×&Ñ&ô e6ôP=-�h×'Ñ'ô =-ô@r%�8ô r%ôji&�x×(Ñ(ô i&ðX ôs&Ð-¨xó s&ó ðs&ôlKP˜ô KPð\ ˆzÓØ‡M‚M…Oð r+   