all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Andy Moreton <andrewjmoreton@gmail.com>
To: emacs-devel@gnu.org
Subject: Re: bignum branch
Date: Fri, 03 Aug 2018 10:01:59 +0100	[thread overview]
Message-ID: <86in4resc8.fsf@gmail.com> (raw)
In-Reply-To: 83a7q4ufxp.fsf@gnu.org

On Fri 03 Aug 2018, Eli Zaretskii wrote:

>> From: Andy Moreton <andrewjmoreton@gmail.com>
>> Date: Fri, 03 Aug 2018 01:43:17 +0100
>> 
>> After a lot more testing, I have a somewhat scruffy patch that works in
>> the following emacs builds on unpatched master, and on patched bignum branch:
>>  - cygwin 64bit (LP64 model)
>>  - mingw64 msys2 32bit
>>  - mingw64 msys2 64bit (LLP64 model)

I have now also tested
    - mingw64 msys2 32bit (wide int)

> I believe your changes also cover the 32-bit MinGW build with wide ints.

I expect so, but the build fails for 32bit MinGW builds on bignum branch
with gettimeofday problems. I have a feeling that this has already been
fixed on the master branch some time ago.

>> The patch contains changes for:
>>  - fix CCL to ensure it uses 28biut codewords properly in bignum build
>>  - ensure make_number creates fixnums in LLP64 builds
>>  - fix bugnumcompare for LLP64 builds
>>  - fix arith_driver to handle markers correctly
>>  - fix arith_driver operations for LLP64 builds (more testing needed)
>>  - fix float_arith_driver to allow bignums
>>  - fix ash_lsh_impl to produce correct results in bignum build
>>  - fix NUMBERP to remove redundant BIGNUMP test (ensured by INTEGERP)
>
> Can you tell what is the following hunk about?
>
>> @@ -3414,7 +3473,7 @@ Markers are converted to integers.  */)
>>    else
>>      {
>>        eassume (FIXNUMP (number));
>> -      if (XINT (number) > MOST_POSITIVE_FIXNUM)
>> +      if (XINT (number) > MOST_NEGATIVE_FIXNUM)
>>  	XSETINT (number, XINT (number) - 1);
>>        else
>>  	{

The updated Fadd1 checks if the old value is MOST_POSITIVE_FIXNUM before
incrementing, as that would need a bignum result.

This hunk in Fsub1 should check if the old value is MOST_NEGATIVE_FIXNUM
before decrementing, as that would need a bignum result.


> Also, this:
>
>> +(defun ccl-fixnum (code)
>> +  "Convert a CCL code word to a fixnum value."
>> +  (- (logxor (logand code #x0fffffff) #x08000000) #x08000000))

The CCL compiled codewords are 28bits, but the CCL implementation
assumes that the codewords are sign-extended, so that data constants in
the upper part of the codeword are signed. This function truncates a
codeword to 28bits, and then sign extends the result to a fixnum.

This ensures that the CCL compiler output is the same on master and
bignum branches.

> Btw, isn't it confusing that INTEGERP allows fixnums and bignums, but
> XINT, XFASTINT, and XSETINT work only with fixnums?  I envision quite
> a few of potential bugs due to this semantic discrepancy, like the one
> you just fixed:
>
>>  - fix NUMBERP to remove redundant BIGNUMP test (ensured by INTEGERP)

Indeed. NUMBERP could include rationals if emacs lisp ever acquires a full
scheme-like numeric tower.

> Should we have a different name for what is now INTEGERP?  Like
> WHOLENUMP, for example?

INTEGERP seems natural enough, and WHOLENUMP would perhaps be confused
with NATNUMP and FIXNATP.

If anything, perhaps XINT, XFASTINT and XSETINT should be XFIXNUM,
XFASTFIXNUM and XSETFIXNUM.

    AndyM




  reply	other threads:[~2018-08-03  9:01 UTC|newest]

Thread overview: 205+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-13  4:26 bignum branch Tom Tromey
2018-07-13  7:38 ` Eli Zaretskii
2018-07-13  8:45 ` Robert Pluim
2018-07-13  9:51   ` Robert Pluim
2018-07-13 11:59     ` Eli Zaretskii
2018-07-13 13:31       ` Robert Pluim
2018-07-13 18:06         ` Tom Tromey
2018-07-13 12:04     ` Eli Zaretskii
2018-07-13 12:14       ` Eli Zaretskii
2018-07-13 13:02         ` Robert Pluim
2018-07-13 13:50           ` Eli Zaretskii
2018-07-15 16:29             ` Andy Moreton
2018-07-17 18:10               ` Robert Pluim
2018-07-17 18:24                 ` Eli Zaretskii
2018-07-17 19:06                   ` Eli Zaretskii
2018-07-17 20:00                   ` Robert Pluim
2018-07-17 21:17                     ` Clément Pit-Claudel
2018-07-18  1:01                       ` Stefan Monnier
2018-07-18  9:28                 ` Andy Moreton
2018-07-18 13:21                   ` Robert Pluim
2018-07-18 13:32                     ` Stefan Monnier
2018-07-18 16:01                     ` Eli Zaretskii
2018-07-18 16:21                       ` Robert Pluim
2018-07-18 16:47                         ` Eli Zaretskii
2018-07-13 12:34       ` Robert Pluim
2018-07-13 14:28 ` Andy Moreton
2018-07-13 14:42   ` Eli Zaretskii
2018-07-13 14:53     ` Andy Moreton
2018-07-13 15:03       ` Eli Zaretskii
2018-07-13 15:30   ` Andy Moreton
2018-07-13 19:35     ` Andy Moreton
2018-07-14 16:20       ` Eli Zaretskii
2018-07-14 20:04         ` Andy Moreton
2018-07-15 13:46           ` Tom Tromey
2018-07-15 15:01             ` Eli Zaretskii
2018-07-16 12:19               ` Stefan Monnier
2018-07-16 14:40                 ` Eli Zaretskii
2018-07-16 16:09                   ` Stefan Monnier
2018-07-16 18:06                     ` Eli Zaretskii
2018-07-16 18:32                       ` Stefan Monnier
2018-07-16 18:42                         ` Eli Zaretskii
2018-07-16 14:35             ` Tom Tromey
2018-07-16 22:28               ` Andy Moreton
2018-07-21 15:35                 ` Andy Moreton
2018-07-22 16:43                   ` Tom Tromey
2018-07-22 17:41                     ` Andy Moreton
2018-08-03  0:43                       ` Andy Moreton
2018-08-03  6:23                         ` Eli Zaretskii
2018-08-03  9:01                           ` Andy Moreton [this message]
2018-08-03  9:47                             ` Eli Zaretskii
2018-08-03 10:07                               ` Andy Moreton
2018-08-03 13:16                                 ` Eli Zaretskii
2018-08-03 14:05                                   ` Andy Moreton
2018-08-03 17:44                                     ` Eli Zaretskii
2018-08-03 19:54                                       ` Andy Moreton
2018-08-04  6:11                                         ` Eli Zaretskii
2018-08-04 11:14                                           ` Andy Moreton
2018-08-04 11:29                                             ` Eli Zaretskii
2018-08-03 20:17                                       ` Tom Tromey
2018-08-03 21:02                                         ` Paul Eggert
2018-08-03 21:19                                           ` Tom Tromey
2018-08-04  1:22                                             ` Paul Eggert
2018-08-04  6:18                                               ` Eli Zaretskii
2018-08-04 10:49                                                 ` Achim Gratz
2018-08-04 11:07                                                   ` Eli Zaretskii
2018-08-04 10:43                                             ` Achim Gratz
2018-08-04 16:33                                               ` Tom Tromey
2018-08-04 18:28                                                 ` Achim Gratz
2018-08-04  6:20                                           ` Eli Zaretskii
2018-08-04 11:17                                         ` Andy Moreton
2018-08-04 16:41                                           ` Tom Tromey
2018-08-06 10:18                                             ` Robert Pluim
2018-08-07  0:36                                           ` Tom Tromey
2018-08-07  8:38                                             ` Andy Moreton
2018-08-08  0:25                                               ` Tom Tromey
2018-08-04 17:10                                         ` Tom Tromey
2018-08-03 17:30                           ` Tom Tromey
2018-08-03 19:16                             ` Andy Moreton
2018-08-04  6:07                               ` Eli Zaretskii
2018-08-05 11:36                                 ` Andy Moreton
2018-08-05 15:18                                   ` Eli Zaretskii
2018-08-06 18:12                                     ` Andy Moreton
2018-08-07  0:41                                       ` Tom Tromey
2018-08-07  2:03                                         ` Paul Eggert
2018-08-07  3:59                                           ` Tom Tromey
2018-08-07  4:02                                             ` Tom Tromey
2018-08-07 11:22                                             ` Andy Moreton
2018-08-07 16:53                                             ` Paul Eggert
2018-08-07 17:12                                               ` Eli Zaretskii
2018-08-07 17:52                                                 ` Paul Eggert
2018-08-08  0:23                                                   ` Tom Tromey
2018-08-07 11:17                                         ` Andy Moreton
2018-08-08  0:26                                           ` Tom Tromey
2018-08-08 14:24                                             ` Andy Moreton
2018-08-08 16:35                                         ` Andy Moreton
2018-08-08 23:14                                           ` Tom Tromey
2018-08-09  2:33                                             ` Eli Zaretskii
2018-08-09  7:59                                               ` Michael Albinus
2018-08-09 13:01                                                 ` Eli Zaretskii
2018-08-09 17:31                                                   ` Paul Eggert
2018-08-09 18:32                                                     ` Eli Zaretskii
2018-08-09 19:22                                                     ` Stefan Monnier
2018-08-09 16:34                                               ` Tom Tromey
2018-08-09 18:28                                                 ` Eli Zaretskii
2018-08-09 19:30                                                 ` Tom Tromey
2018-08-08 23:37                                           ` Tom Tromey
2018-08-09  0:07                                             ` Andy Moreton
2018-08-09  2:03                                               ` Tom Tromey
2018-08-09  9:19                                                 ` Andy Moreton
2018-08-09 20:49                                                 ` Andy Moreton
2018-08-10  5:45                                                   ` Eli Zaretskii
2018-08-10  7:43                                                     ` Andy Moreton
2018-08-10  7:59                                                       ` Paul Eggert
2018-08-10  9:48                                                         ` Eli Zaretskii
2018-08-10 20:58                                                           ` Paul Eggert
2018-08-11  7:08                                                             ` Eli Zaretskii
2018-08-11  8:02                                                               ` Paul Eggert
2018-08-11 10:50                                                                 ` Eli Zaretskii
2018-08-11 12:57                                                                   ` Stefan Monnier
2018-08-11 19:38                                                                   ` Paul Eggert
2018-08-10 11:18                                                         ` Andy Moreton
2018-08-10 11:56                                                           ` Andreas Schwab
2018-08-10 12:25                                                             ` Eli Zaretskii
2018-08-10 12:27                                                             ` Andy Moreton
2018-08-10 18:37                                                               ` Achim Gratz
2018-08-10 12:26                                                           ` Eli Zaretskii
2018-08-10 12:46                                                             ` Andy Moreton
2018-08-10  9:46                                                       ` Eli Zaretskii
2018-08-10 11:39                                                         ` Andy Moreton
2018-08-10 12:33                                                           ` Eli Zaretskii
2018-08-10 14:05                                                             ` Andy Moreton
2018-08-10 19:57                                                               ` Eli Zaretskii
2018-08-11 15:21                                                                 ` Andy Moreton
2018-08-11 15:25                                                                   ` Tom Tromey
2018-08-11 16:04                                                                     ` Eli Zaretskii
2018-08-11 16:16                                                                   ` Eli Zaretskii
2018-08-11 16:54                                                                     ` Andy Moreton
2018-08-11 17:34                                                                       ` Eli Zaretskii
2018-08-11 17:56                                                                         ` Andy Moreton
2018-08-11 18:10                                                                           ` Eli Zaretskii
2018-08-11 18:15                                                                             ` Andy Moreton
2018-08-11 19:08                                                                               ` Eli Zaretskii
2018-08-11 22:15                                                                                 ` Andy Moreton
2018-08-12 18:54                                                                                   ` Eli Zaretskii
2018-08-12 19:44                                                                                     ` Andy Moreton
2018-08-13 15:02                                                                                       ` Eli Zaretskii
2018-08-13 23:13                                                                                         ` Andy Moreton
2018-08-14 14:55                                                                                           ` Eli Zaretskii
2018-08-14 15:11                                                                                             ` Andy Moreton
2018-08-14 15:19                                                                                               ` Eli Zaretskii
2018-08-14 16:16                                                                                                 ` Andy Moreton
2018-08-15 17:01                                                                                                   ` Eli Zaretskii
2018-08-11 17:00                                                                     ` Andy Moreton
2018-08-10 15:25                                                             ` Stefan Monnier
2018-08-10 16:45                                                               ` Andy Moreton
2018-08-10 19:34                                                               ` Eli Zaretskii
2018-08-09  3:49                                               ` Stefan Monnier
2018-08-09  9:21                                                 ` Andy Moreton
2018-08-09  2:37                                             ` Eli Zaretskii
2018-08-03 20:13                         ` Tom Tromey
2018-08-04 16:39                         ` Tom Tromey
2018-08-04 17:24                           ` Tom Tromey
2018-08-05 10:46                           ` Andy Moreton
2018-08-05 18:59                             ` Tom Tromey
2018-08-06 18:17                               ` Andy Moreton
2018-07-15 15:00           ` Eli Zaretskii
2018-07-15 17:31             ` Paul Eggert
2018-07-15 18:27               ` Eli Zaretskii
2018-07-16 19:02                 ` Paul Eggert
2018-07-17  2:42                   ` Eli Zaretskii
2018-07-17 15:53                     ` Paul Eggert
2018-07-17 17:03                       ` Eli Zaretskii
2018-07-17 17:24                         ` Paul Eggert
2018-07-17 17:38                           ` Eli Zaretskii
2018-07-17 17:41                             ` Paul Eggert
2018-07-17 17:53                               ` Eli Zaretskii
2018-07-17 18:55                                 ` Paul Eggert
2018-07-17 19:04                                   ` Eli Zaretskii
2018-07-17 22:39                                     ` Paul Eggert
2018-07-18  2:41                                       ` Eli Zaretskii
2018-07-18  7:39                                         ` Paul Eggert
2018-07-18 11:14                                           ` Andy Moreton
2018-07-18 11:57                                             ` Paul Eggert
2018-07-18 13:09                                               ` Clément Pit-Claudel
2018-07-18 13:18                                                 ` Stefan Monnier
2018-07-18 13:43                                                   ` Clément Pit-Claudel
2018-07-18 14:06                                                     ` Andy Moreton
2018-07-18 19:25                                                       ` Achim Gratz
2018-07-18 20:41                                                         ` Stefan Monnier
2018-07-19  2:36                                                           ` Eli Zaretskii
2018-07-19 20:32                                                         ` Paul Eggert
2018-07-20 20:02                                                           ` Achim Gratz
2018-07-20 20:58                                                             ` Paul Eggert
2018-07-20 21:48                                                               ` Stefan Monnier
2018-07-22 19:49                                                               ` Achim Gratz
2018-07-18 18:29                                                 ` Paul Eggert
2018-07-18 11:10                                       ` Andy Moreton
2018-07-18 18:34                                         ` Paul Eggert
2018-07-25 21:02             ` Andy Moreton
2018-08-09 14:26 ` Charles A. Roelli
2018-08-09 15:17   ` Andy Moreton
2018-08-09 16:23     ` Charles A. Roelli
2018-08-09 16:25     ` Tom Tromey
2018-08-09 17:08       ` Andy Moreton
2018-08-09 19:29         ` Tom Tromey

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=86in4resc8.fsf@gmail.com \
    --to=andrewjmoreton@gmail.com \
    --cc=emacs-devel@gnu.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.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.