Subversion Repositories Kolibri OS

Rev

Rev 5363 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5363 Rev 9715
Line 1... Line 1...
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2
;;                                                              ;;
2
;;                                                              ;;
3
;; Copyright (C) KolibriOS team 2004-2015. All rights reserved. ;;
3
;; Copyright (C) KolibriOS team 2004-2022. All rights reserved. ;;
4
;; Distributed under terms of the GNU General Public License    ;;
4
;; Distributed under terms of the GNU General Public License    ;;
5
;;                                                              ;;
5
;;                                                              ;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Line 7... Line 7...
7
 
7
 
Line 8... Line 8...
8
$Revision: 5363 $
8
$Revision: 9715 $
9
 
9
 
10
 
10
 
Line 580... Line 580...
580
.parent:
580
.parent:
581
        test    edi, edi
581
        test    edi, edi
582
        je      .done
582
        je      .done
Line 583... Line 583...
583
 
583
 
584
        mov     ecx, [edx+28]
584
        mov     ecx, [edx+28]
585
        cmp     edx, [mst.treebins+ecx*4]
585
        cmp     edx, [mst.treebins + ecx*4]
586
        lea     ecx, [mst.treebins+ecx*4]
586
        lea     ecx, [mst.treebins + ecx*4]
Line 587... Line 587...
587
        jne     .l3
587
        jne     .l3
588
 
588
 
589
        test    eax, eax
589
        test    eax, eax
Line 638... Line 638...
638
        mov     ebp, esi
638
        mov     ebp, esi
Line 639... Line 639...
639
 
639
 
Line 640... Line 640...
640
        push    edi
640
        push    edi
641
 
641
 
Line 642... Line 642...
642
        bsf     eax, [mst.treemap]
642
        bsf     eax, [mst.treemap]
Line 643... Line 643...
643
        mov     ecx, [mst.treebins+eax*4]
643
        mov     ecx, [mst.treebins + eax*4]
644
 
644
 
Line 688... Line 688...
688
 
688
 
689
; r = chunk_plus_offset((mchunkptr)v, nb);
689
; r = chunk_plus_offset((mchunkptr)v, nb);
Line 690... Line 690...
690
; unlink_large_chunk(v);
690
; unlink_large_chunk(v);
691
 
691
 
692
        mov     edx, ebx
692
        mov     edx, ebx
Line 693... Line 693...
693
        lea     esi, [ebx+ebp]
693
        lea     esi, [ebx + ebp]
Line 694... Line 694...
694
        call    unlink_large_chunk
694
        call    unlink_large_chunk
695
 
695
 
Line 696... Line 696...
696
; if (rsize < 16)
696
; if (rsize < 16)
Line 697... Line 697...
697
 
697
 
Line 698... Line 698...
698
        cmp     edi, 16
698
        cmp     edi, 16
Line 699... Line 699...
699
        jae     .split
699
        jae     .split
700
 
700
 
701
; v->head = (rsize + nb)|PINUSE_BIT|CINUSE_BIT;
701
; v->head = (rsize + nb)|PINUSE_BIT|CINUSE_BIT;
702
 
702
 
703
        lea     ecx, [edi+ebp]
703
        lea     ecx, [edi + ebp]
704
 
704
 
705
; (v+rsize + nb)->head |= PINUSE_BIT;
705
; (v+rsize + nb)->head |= PINUSE_BIT;
Line 706... Line 706...
706
 
706
 
707
        add     edi, ebx
707
        add     edi, ebx
Line 708... Line 708...
708
        lea     eax, [edi+ebp+4]
708
        lea     eax, [edi + ebp + 4]
Line 709... Line 709...
709
        pop     edi
709
        pop     edi
Line 784... Line 784...
784
        shr     edx, 8
784
        shr     edx, 8
785
        bsr     eax, edx
785
        bsr     eax, edx
786
        lea     ecx, [eax+7]
786
        lea     ecx, [eax+7]
787
        shr     esi, cl
787
        shr     esi, cl
788
        and     esi, 1
788
        and     esi, 1
789
        lea     ecx, [esi+eax*2]
789
        lea     ecx, [esi + eax*2]
790
        mov     [.idx], ecx
790
        mov     [.idx], ecx
Line 791... Line 791...
791
 
791
 
Line 792... Line 792...
792
; if ((t = ms.treebins[idx]) != 0)
792
; if ((t = ms.treebins[idx]) != 0)
793
 
793
 
794
        mov     eax, [mst.treebins+ecx*4]
794
        mov     eax, [mst.treebins + ecx*4]
Line 795... Line 795...
795
        test    eax, eax
795
        test    eax, eax
Line 847... Line 847...
847
        shr     esi, 31
847
        shr     esi, 31
Line 848... Line 848...
848
 
848
 
Line 849... Line 849...
849
; if (rt != 0 && rt != t)
849
; if (rt != 0 && rt != t)
850
 
850
 
851
        test    ecx, ecx
851
        test    ecx, ecx
852
        mov     eax, [eax+esi*4+16]
852
        mov     eax, [eax + esi*4+16]
853
        jz      @F
853
        jz      @F
Line 854... Line 854...
854
        cmp     ecx, eax
854
        cmp     ecx, eax
Line 891... Line 891...
891
        and     edx, [mst.treemap]
891
        and     edx, [mst.treemap]
892
        jz      @F
892
        jz      @F
Line 893... Line 893...
893
 
893
 
894
        bsf     eax, edx
894
        bsf     eax, edx
895
; t = ms.treebins[i];
895
; t = ms.treebins[i];
Line 896... Line 896...
896
        mov     eax, [mst.treebins+eax*4]
896
        mov     eax, [mst.treebins + eax*4]
Line 897... Line 897...
897
 
897
 
898
@@:
898
@@:
Line 950... Line 950...
950
 
950
 
951
; r = chunk_plus_offset((mchunkptr)v, nb);
951
; r = chunk_plus_offset((mchunkptr)v, nb);
Line 952... Line 952...
952
; unlink_large_chunk(v);
952
; unlink_large_chunk(v);
953
 
953
 
954
        mov     edx, ebp
954
        mov     edx, ebp
Line 955... Line 955...
955
        lea     esi, [ebx+ebp]
955
        lea     esi, [ebx + ebp]
Line 956... Line 956...
956
        call    unlink_large_chunk
956
        call    unlink_large_chunk
957
 
957
 
Line 958... Line 958...
958
; if (rsize < 16)
958
; if (rsize < 16)
Line 959... Line 959...
959
 
959
 
Line 960... Line 960...
960
        cmp     edi, 16
960
        cmp     edi, 16
Line 961... Line 961...
961
        jae     .large
961
        jae     .large
962
 
962
 
963
; v->head = (rsize + nb)|PINUSE_BIT|CINUSE_BIT;
963
; v->head = (rsize + nb)|PINUSE_BIT|CINUSE_BIT;
964
 
964
 
965
        lea     ecx, [edi+ebx]
965
        lea     ecx, [edi + ebx]
966
 
966
 
967
; (v+rsize + nb)->head |= PINUSE_BIT;
967
; (v+rsize + nb)->head |= PINUSE_BIT;
Line 1023... Line 1023...
1023
 
1023
 
1024
@@:
1024
@@:
1025
        mov     [eax+8], eax
1025
        mov     [eax+8], eax
1026
        mov     [eax+12], eax
1026
        mov     [eax+12], eax
1027
        add     eax, 16
1027
        add     eax, 16
1028
        cmp     eax, mst.smallbins+512
1028
        cmp     eax, mst.smallbins + 512
Line 1029... Line 1029...
1029
        jb      @B
1029
        jb      @B
1030
 
1030