slighly faster isXXX methods; added isFloatsOrDoubles
authorClaus Gittinger <cg@exept.de>
Fri, 24 Nov 1995 14:02:53 +0100
changeset 642 dbf407bedf64
parent 641 ef3bcf9de54b
child 643 04b2025af0e3
slighly faster isXXX methods; added isFloatsOrDoubles
Behavior.st
--- a/Behavior.st	Fri Nov 24 14:02:02 1995 +0100
+++ b/Behavior.st	Fri Nov 24 14:02:53 1995 +0100
@@ -12,7 +12,7 @@
 
 Object subclass:#Behavior
 	 instanceVariableNames:'superclass flags selectorArray methodArray otherSuperclasses
-                instSize'
+		instSize'
 	 classVariableNames:'SubclassInfo'
 	 poolDictionaries:''
 	 category:'Kernel-Classes'
@@ -87,7 +87,7 @@
 !
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.53 1995-11-23 10:45:04 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Behavior.st,v 1.54 1995-11-24 13:02:53 cg Exp $'
 !
 
 virtualMachineRelationship 
@@ -2515,10 +2515,11 @@
 
 %{  /* NOCONTEXT */
 
-    REGISTER int flags;
-
-    RETURN ( (((flags = (_intVal(_INST(flags)) & ARRAYMASK)) == BYTEARRAY)
-	     || (flags == WORDARRAY)) ? true : false ); 
+    REGISTER int what;
+
+    what = (INT)(_INST(flags)) & __MASKSMALLINT(ARRAYMASK);
+    RETURN (( (what == __MASKSMALLINT(BYTEARRAY))
+	     || (what == __MASKSMALLINT(WORDARRAY))) ? true : false ); 
 %}
 !
 
@@ -2530,7 +2531,7 @@
     "
 %{  /* NOCONTEXT */
 
-    RETURN ( ((_intVal(_INST(flags)) & ARRAYMASK) == BYTEARRAY) ? true : false ); 
+    RETURN ( (((INT)(_INST(flags)) & __MASKSMALLINT(ARRAYMASK)) == __MASKSMALLINT(BYTEARRAY)) ? true : false ); 
 %}
 !
 
@@ -2542,7 +2543,7 @@
     "
 %{  /* NOCONTEXT */
 
-    RETURN ( ((_intVal(_INST(flags)) & ARRAYMASK) == DOUBLEARRAY) ? true : false ); 
+    RETURN ( (((INT)(_INST(flags)) & __MASKSMALLINT(ARRAYMASK)) == __MASKSMALLINT(DOUBLEARRAY)) ? true : false ); 
 %}
 !
 
@@ -2555,7 +2556,7 @@
 
 %{  /* NOCONTEXT */
 
-    RETURN ( (_intVal(_INST(flags)) & ARRAYMASK) ? false : true ); 
+    RETURN ( ((INT)(_INST(flags)) & __MASKSMALLINT(ARRAYMASK)) ? false : true ); 
 %}
 !
 
@@ -2567,10 +2568,31 @@
     "
 %{  /* NOCONTEXT */
 
-    RETURN ( ((_intVal(_INST(flags)) & ARRAYMASK) == FLOATARRAY) ? true : false ); 
+    RETURN ( (((INT)(_INST(flags)) & __MASKSMALLINT(ARRAYMASK)) == __MASKSMALLINT(FLOATARRAY)) ? true : false ); 
 %}
 !
 
+isFloatsOrDoubles
+    "return true, if instances have indexed float or double instance variables"
+
+%{  /* NOCONTEXT */
+
+    int what;
+
+    what = (INT)(_INST(flags)) & __MASKSMALLINT(ARRAYMASK);
+    RETURN (( (what == __MASKSMALLINT(FLOATARRAY))
+	     || (what == __MASKSMALLINT(DOUBLEARRAY))) ? true : false ); 
+%}
+    "
+     (Object new) class isFloatsOrDoubles 
+     (Point new) class isFloatsOrDoubles   
+     (Array new) class isFloatsOrDoubles   
+     (ByteArray new) class isFloatsOrDoubles  
+     (FloatArray new) class isFloatsOrDoubles  
+     (DoubleArray new) class isFloatsOrDoubles  
+    "
+!
+
 isLongs
     "return true, if instances have indexed long instance variables"
 
@@ -2579,7 +2601,7 @@
     "
 %{  /* NOCONTEXT */
 
-    RETURN ( ((_intVal(_INST(flags)) & ARRAYMASK) == LONGARRAY) ? true : false ); 
+    RETURN ( (((INT)(_INST(flags)) & __MASKSMALLINT(ARRAYMASK)) == __MASKSMALLINT(LONGARRAY)) ? true : false ); 
 %}
 !
 
@@ -2648,7 +2670,7 @@
 
 %{  /* NOCONTEXT */
 
-    RETURN ( (_intVal(_INST(flags)) & ARRAYMASK) ? true : false ); 
+    RETURN ( ((INT)(_INST(flags)) & __MASKSMALLINT(ARRAYMASK)) ? true : false ); 
 %}
 !
 
@@ -2660,7 +2682,7 @@
     "
 %{  /* NOCONTEXT */
 
-    RETURN ( ((_intVal(_INST(flags)) & ARRAYMASK) == WORDARRAY) ? true : false ); 
+    RETURN ( (((INT)(_INST(flags)) & __MASKSMALLINT(ARRAYMASK)) == __MASKSMALLINT(WORDARRAY)) ? true : false ); 
 %}
 !