summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <matthias@benkard.de>2008-08-04 18:44:16 +0200
committerMatthias Andreas Benkard <matthias@benkard.de>2008-08-04 18:44:16 +0200
commitce1bfc2039cc673c3c9099933c05c9fac3e88ae9 (patch)
tree91380866c5adc53e908e977a7734f11a2bd08f86
parent90e6023292e2bfe927bd633bac42fc355bb9f4d1 (diff)
Make it possible to disable fixnum support by supplying -DNO_FIXNUMS as a compiler flag.
-rw-r--r--MLKInteger.m8
-rw-r--r--MLKRoot.m5
-rw-r--r--functions.m2
3 files changed, 15 insertions, 0 deletions
diff --git a/MLKInteger.m b/MLKInteger.m
index 43af24d..b2ce0a8 100644
--- a/MLKInteger.m
+++ b/MLKInteger.m
@@ -165,12 +165,20 @@ DEFINE_MPZ_TWOARG_INTONLY_OPERATION (lcm:, mpz_lcm)
-(BOOL) fitsIntoFixnum
{
+#ifdef NO_FIXNUMS
+ return NO;
+#else
return (mpz_sizeinbase (self->value, 2) <= (sizeof (id)) * 8 - 2);
+#endif
}
-(id) fixnumValue
{
+#ifdef NO_FIXNUMS
+ return self;
+#else
return MLKFixnumWithInt ([self intValue]);
+#endif
}
-(int) intValue
diff --git a/MLKRoot.m b/MLKRoot.m
index 5f70830..9077335 100644
--- a/MLKRoot.m
+++ b/MLKRoot.m
@@ -170,8 +170,13 @@ static id truify (BOOL value)
+(NSArray *) fixnum_eq:(NSArray *)args
{
+#ifdef NO_FIXNUMS
+ RETURN_VALUE (truify ([[args objectAtIndex:0]
+ isEqual:[args objectAtIndex:1]]));
+#else
RETURN_VALUE (truify (denullify([args objectAtIndex:0])
== denullify([args objectAtIndex:1])));
+#endif
}
+(NSArray *) symbolp:(NSArray *)args
diff --git a/functions.m b/functions.m
index 068d217..ef3e6c3 100644
--- a/functions.m
+++ b/functions.m
@@ -48,10 +48,12 @@ id MLKFixnumWithInt (intptr_t value)
id MLKIntegerWithInt (intptr_t value)
{
+#ifndef NO_FIXNUMS
intptr_t maybeFixnum = (value << 1) | 1;
if (value == (maybeFixnum >> 1))
return (id)maybeFixnum;
else
+#endif
return [MLKInteger integerWithIntptr_t:value];
}