Home / Function/ ssMultiKeyIntroSort() — netty Function Reference

ssMultiKeyIntroSort() — netty Function Reference

Architecture documentation for the ssMultiKeyIntroSort() function in Bzip2DivSufSort.java from the netty codebase.

Function java Buffer Allocators calls 7 called by 1

Entity Profile

Dependency Diagram

graph TD
  1e0c07d3_ab29_8c77_bb12_13a34e73c315["ssMultiKeyIntroSort()"]
  5a60cb70_bf06_95bf_9c73_ed3a4dc24eba["Bzip2DivSufSort"]
  1e0c07d3_ab29_8c77_bb12_13a34e73c315 -->|defined in| 5a60cb70_bf06_95bf_9c73_ed3a4dc24eba
  6d0196f0_489e_2841_7424_79f0d208f4c9["subStringSort()"]
  6d0196f0_489e_2841_7424_79f0d208f4c9 -->|calls| 1e0c07d3_ab29_8c77_bb12_13a34e73c315
  3ae742b6_1714_5da6_551e_2e003765cd05["ssLog()"]
  1e0c07d3_ab29_8c77_bb12_13a34e73c315 -->|calls| 3ae742b6_1714_5da6_551e_2e003765cd05
  b61e4a7c_22ee_fad9_f021_387b63f20ea1["ssInsertionSort()"]
  1e0c07d3_ab29_8c77_bb12_13a34e73c315 -->|calls| b61e4a7c_22ee_fad9_f021_387b63f20ea1
  d34a90df_0d9e_75f0_92a2_6d656258f8df["ssHeapSort()"]
  1e0c07d3_ab29_8c77_bb12_13a34e73c315 -->|calls| d34a90df_0d9e_75f0_92a2_6d656258f8df
  25964735_0d27_2e4b_ef37_17c6848ccf23["ssSubstringPartition()"]
  1e0c07d3_ab29_8c77_bb12_13a34e73c315 -->|calls| 25964735_0d27_2e4b_ef37_17c6848ccf23
  8c543c23_a272_46a8_3a5c_8091f5ca961f["StackEntry()"]
  1e0c07d3_ab29_8c77_bb12_13a34e73c315 -->|calls| 8c543c23_a272_46a8_3a5c_8091f5ca961f
  d160bbb0_c87d_6d18_8679_b2d63009caeb["ssPivot()"]
  1e0c07d3_ab29_8c77_bb12_13a34e73c315 -->|calls| d160bbb0_c87d_6d18_8679_b2d63009caeb
  6cd08680_5bba_3632_1ac7_b77001ad18fa["swapElements()"]
  1e0c07d3_ab29_8c77_bb12_13a34e73c315 -->|calls| 6cd08680_5bba_3632_1ac7_b77001ad18fa
  style 1e0c07d3_ab29_8c77_bb12_13a34e73c315 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

codec-compression/src/main/java/io/netty/handler/codec/compression/Bzip2DivSufSort.java lines 353–532

    private void ssMultiKeyIntroSort(final int pa, int first, int last, int depth) {
        final int[] SA = this.SA;
        final byte[] T = this.T;

        final StackEntry[] stack = new StackEntry[STACK_SIZE];

        int Td;
        int a, b, c, d, e, f;
        int s, t;
        int ssize;
        int limit;
        int v, x = 0;

        for (ssize = 0, limit = ssLog(last - first);;) {
            if (last - first <= INSERTIONSORT_THRESHOLD) {
                if (1 < last - first) {
                    ssInsertionSort(pa, first, last, depth);
                }
                if (ssize == 0) {
                    return;
                }
                StackEntry entry = stack[--ssize];
                first = entry.a;
                last = entry.b;
                depth = entry.c;
                limit = entry.d;
                continue;
            }

            Td = depth;
            if (limit-- == 0) {
                ssHeapSort(Td, pa, first, last - first);
            }
            if (limit < 0) {
                for (a = first + 1, v = T[Td + SA[pa + SA[first]]] & 0xff; a < last; ++a) {
                    if ((x = T[Td + SA[pa + SA[a]]] & 0xff) != v) {
                        if (1 < a - first) {
                            break;
                        }
                        v = x;
                        first = a;
                    }
                }
                if ((T[Td + SA[pa + SA[first]] - 1] & 0xff) < v) {
                    first = ssSubstringPartition(pa, first, a, depth);
                }
                if (a - first <= last - a) {
                    if (1 < a - first) {
                        stack[ssize++] = new StackEntry(a, last, depth, -1);
                        last = a;
                        depth += 1;
                        limit = ssLog(a - first);
                    } else {
                        first = a;
                        limit = -1;
                    }
                } else {
                    if (1 < last - a) {
                        stack[ssize++] = new StackEntry(first, a, depth + 1, ssLog(a - first));
                        first = a;
                        limit = -1;
                    } else {
                        last = a;
                        depth += 1;
                        limit = ssLog(a - first);
                    }
                }
                continue;
            }

            a = ssPivot(Td, pa, first, last);
            v = T[Td + SA[pa + SA[a]]] & 0xff;
            swapElements(SA, first, SA, a);

            b = first + 1;
            while (b < last && (x = T[Td + SA[pa + SA[b]]] & 0xff) == v) {
                ++b;
            }
            if ((a = b) < last && x < v) {
                while (++b < last && (x = T[Td + SA[pa + SA[b]]] & 0xff) <= v) {
                    if (x == v) {

Domain

Subdomains

Called By

Frequently Asked Questions

What does ssMultiKeyIntroSort() do?
ssMultiKeyIntroSort() is a function in the netty codebase, defined in codec-compression/src/main/java/io/netty/handler/codec/compression/Bzip2DivSufSort.java.
Where is ssMultiKeyIntroSort() defined?
ssMultiKeyIntroSort() is defined in codec-compression/src/main/java/io/netty/handler/codec/compression/Bzip2DivSufSort.java at line 353.
What does ssMultiKeyIntroSort() call?
ssMultiKeyIntroSort() calls 7 function(s): StackEntry, ssHeapSort, ssInsertionSort, ssLog, ssPivot, ssSubstringPartition, swapElements.
What calls ssMultiKeyIntroSort()?
ssMultiKeyIntroSort() is called by 1 function(s): subStringSort.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free