Object.st
changeset 2437 63905fb8d89e
parent 2412 f20a5b10e6ab
child 2445 efd1b24db615
--- a/Object.st	Mon Mar 03 13:08:32 1997 +0100
+++ b/Object.st	Mon Mar 03 13:09:17 1997 +0100
@@ -3443,7 +3443,43 @@
     }
     RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc, arg1, arg2, arg3) );
 %}
-
+!
+
+perform:aSelector with:arg1 with:arg2 with:arg3 with:arg4
+    "send the four-arg-message aSelector to the receiver"
+
+%{
+    struct inlineCache *pIlc;
+    static struct inlineCache ilc_0 = __ILCPERF4(0);
+    static struct inlineCache ilc_1 = __ILCPERF4(0);
+    static OBJ last_0 = nil;
+    static OBJ last_1 = nil;
+    static flip = 0;
+
+    if (aSelector != last_0) {
+        if (aSelector != last_1) {
+            if (flip) {
+                pIlc = &ilc_0;
+                flip = 0;
+                last_0 = aSelector;
+            } else {
+                pIlc = &ilc_1;
+                flip = 1;
+                last_1 = aSelector;
+            }
+            pIlc->ilc_func = __SEND4ADDR__;
+            if (pIlc->ilc_poly) {
+                __flushPolyCache(pIlc->ilc_poly);
+                pIlc->ilc_poly = 0;
+            }
+        } else {
+            pIlc = &ilc_1;
+        }
+    } else {
+        pIlc = &ilc_0;
+    }
+    RETURN ( (*(pIlc->ilc_func))(self, aSelector, nil, pIlc, arg1, arg2, arg3, arg4) );
+%}
 !
 
 perform:aSelector withArguments:argArray
@@ -5605,6 +5641,6 @@
 !Object class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.177 1997-02-20 09:57:23 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Object.st,v 1.178 1997-03-03 12:09:17 cg Exp $'
 ! !
 Object initialize!