9front - general discussion about 9front
 help / color / mirror / Atom feed
From: Nick Owens <mischief@offblast.org>
To: 9front@9front.org
Subject: Re: [9front] make arrays big: qsort edition
Date: Thu, 29 Jul 2021 16:15:02 -0700	[thread overview]
Message-ID: <CAH_zEu5Dy8XHu4YbhNXNg8Hoa0yz9t8YqNXtakM4GRXnyROyMw@mail.gmail.com> (raw)
In-Reply-To: <52826367713E2C7C877494CDD97A05E7@eigenstate.org>

are you able to test this change with a very large array?

On Thu, Jul 29, 2021 at 10:17 AM <ori@eigenstate.org> wrote:
>
> Since usize exists, and is now 64 bit, we
> should start slowly going through our code
> and finding the places where we're using
> int, short, etc in unexpected ways, so
> that we can start allowing big arrays.
>
> In some cases -- function parameters,
> mainly, this is just a matter of switching
> the types.
>
> In others, like strlen, we may need to go
> through all possible callers and make sure
> that a new, bigger, return type doesn't get
> silently truncated and cause issues.
>
> This change does qsort.
>
> --- /dist/plan9front/.git/fs/object/84b77568cda98a21dd4f3403a94c56724fbd5b37/tree//sys/include/libc.h
> +++ /sys/include/libc.h
> @@ -424,7 +424,7 @@
>  extern int     postnote(int, int, char *);
>  extern double  pow10(int);
>  extern int     putenv(char*, char*);
> -extern void    qsort(void*, long, long, int (*)(void*, void*));
> +extern void    qsort(void*, usize, usize, int (*)(void*, void*));
>  extern int     setjmp(jmp_buf);
>  extern double  strtod(char*, char**);
>  extern long    strtol(char*, char**, int);
> --- /dist/plan9front/.git/fs/object/84b77568cda98a21dd4f3403a94c56724fbd5b37/tree//sys/src/libc/port/qsort.c
> +++ /sys/src/libc/port/qsort.c
> @@ -8,12 +8,12 @@
>  struct
>  {
>         int     (*cmp)(void*, void*);
> -       void    (*swap)(char*, char*, long);
> -       long    es;
> +       void    (*swap)(char*, char*, usize);
> +       usize   es;
>  } Sort;
>
>  static void
> -swapb(char *i, char *j, long es)
> +swapb(char *i, char *j, usize es)
>  {
>         char c;
>
> @@ -27,7 +27,7 @@
>  }
>
>  static void
> -swapi(char *ii, char *ij, long es)
> +swapi(char *ii, char *ij, usize es)
>  {
>         long *i, *j, c;
>
> @@ -42,9 +42,9 @@
>  }
>
>  static char*
> -pivot(char *a, long n, Sort *p)
> +pivot(char *a, usize n, Sort *p)
>  {
> -       long j;
> +       usize j;
>         char *pi, *pj, *pk;
>
>         j = n/6 * p->es;
> @@ -69,9 +69,9 @@
>  }
>
>  static void
> -qsorts(char *a, long n, Sort *p)
> +qsorts(char *a, usize n, Sort *p)
>  {
> -       long j, es;
> +       usize j, es;
>         char *pi, *pj, *pn;
>
>         es = p->es;
> @@ -111,7 +111,7 @@
>  }
>
>  void
> -qsort(void *va, long n, long es, int (*cmp)(void*, void*))
> +qsort(void *va, usize n, usize es, int (*cmp)(void*, void*))
>  {
>         Sort s;
>
>

  reply	other threads:[~2021-07-30  6:18 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-29 17:14 ori
2021-07-29 23:15 ` Nick Owens [this message]
2021-07-30 17:24   ` Steve Simon
2021-08-01 23:53   ` ori
2021-08-02 16:14     ` cinap_lenrek
2021-08-03  4:11       ` ori

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAH_zEu5Dy8XHu4YbhNXNg8Hoa0yz9t8YqNXtakM4GRXnyROyMw@mail.gmail.com \
    --to=mischief@offblast.org \
    --cc=9front@9front.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).