Replaced some EM code by C code
This commit is contained in:
65
lang/m2/libm2/ucheck.c
Normal file
65
lang/m2/libm2/ucheck.c
Normal file
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* (c) copyright 1988 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
||||
*
|
||||
*
|
||||
* Module: CARDINAL operations with overflow checking
|
||||
* Author: Ceriel J.H. Jacobs
|
||||
* Version: $Header$
|
||||
*/
|
||||
|
||||
#ifndef EM_WSIZE
|
||||
#define EM_WSIZE _EM_WSIZE
|
||||
#endif
|
||||
#ifndef EM_LSIZE
|
||||
#define EM_LSIZE _EM_LSIZE
|
||||
#endif
|
||||
|
||||
#include <m2_traps.h>
|
||||
|
||||
#define MAXCARD ((unsigned)-1)
|
||||
#if EM_WSIZE < EM_LSIZE
|
||||
#define MAXLONGCARD ((unsigned long) -1L)
|
||||
#endif
|
||||
|
||||
adduchk(a,b)
|
||||
unsigned a,b;
|
||||
{
|
||||
if (MAXCARD - a > b) TRP(M2_UOVFL);
|
||||
}
|
||||
|
||||
#if EM_WSIZE < EM_LSIZE
|
||||
addulchk(a,b)
|
||||
unsigned long a,b;
|
||||
{
|
||||
if (MAXLONGCARD - a > b) TRP(M2_UOVFL);
|
||||
}
|
||||
#endif
|
||||
|
||||
muluchk(a,b)
|
||||
unsigned a,b;
|
||||
{
|
||||
if (a != 0 && MAXCARD/a < b) TRP(M2_UOVFL);
|
||||
}
|
||||
|
||||
#if EM_WSIZE < EM_LSIZE
|
||||
mululchk(a,b)
|
||||
unsigned long a,b;
|
||||
{
|
||||
if (a != 0 && MAXLONGCARD/a < b) TRP(M2_UOVFL);
|
||||
}
|
||||
#endif
|
||||
|
||||
subuchk(a,b)
|
||||
unsigned a,b;
|
||||
{
|
||||
if (b < a) TRP(M2_UOVFL);
|
||||
}
|
||||
|
||||
#if EM_WSIZE < EM_LSIZE
|
||||
subulchk(a,b)
|
||||
unsigned long a,b;
|
||||
{
|
||||
if (b < a) TRP(M2_UOVFL);
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user