mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-09 21:40:33 +02:00
VM: Avoid untagging inums in 'logand' and 'logior'.
* libguile/vm-i-scheme.c (logand, logior): Avoid untagging.
This commit is contained in:
parent
4fa65b903b
commit
b2df1682df
1 changed files with 4 additions and 2 deletions
|
@ -455,7 +455,8 @@ VM_DEFINE_FUNCTION (160, logand, "logand", 2)
|
||||||
{
|
{
|
||||||
ARGS2 (x, y);
|
ARGS2 (x, y);
|
||||||
if (SCM_I_INUMP (x) && SCM_I_INUMP (y))
|
if (SCM_I_INUMP (x) && SCM_I_INUMP (y))
|
||||||
RETURN (SCM_I_MAKINUM (SCM_I_INUM (x) & SCM_I_INUM (y)));
|
/* Compute bitwise AND without untagging */
|
||||||
|
RETURN (SCM_PACK (SCM_UNPACK (x) & SCM_UNPACK (y)));
|
||||||
SYNC_REGISTER ();
|
SYNC_REGISTER ();
|
||||||
RETURN (scm_logand (x, y));
|
RETURN (scm_logand (x, y));
|
||||||
}
|
}
|
||||||
|
@ -464,7 +465,8 @@ VM_DEFINE_FUNCTION (161, logior, "logior", 2)
|
||||||
{
|
{
|
||||||
ARGS2 (x, y);
|
ARGS2 (x, y);
|
||||||
if (SCM_I_INUMP (x) && SCM_I_INUMP (y))
|
if (SCM_I_INUMP (x) && SCM_I_INUMP (y))
|
||||||
RETURN (SCM_I_MAKINUM (SCM_I_INUM (x) | SCM_I_INUM (y)));
|
/* Compute bitwise OR without untagging */
|
||||||
|
RETURN (SCM_PACK (SCM_UNPACK (x) | SCM_UNPACK (y)));
|
||||||
SYNC_REGISTER ();
|
SYNC_REGISTER ();
|
||||||
RETURN (scm_logior (x, y));
|
RETURN (scm_logior (x, y));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue