Index: GDL2/EOControl/EOFault.m
===================================================================
--- GDL2/EOControl/EOFault.m	(revision 26218)
+++ GDL2/EOControl/EOFault.m	(working copy)
@@ -76,6 +76,9 @@
 
 static Class EOFaultClass = NULL;
 
+typedef retval_t (*forward_IMP)(id, SEL, SEL, arglist_t);
+static forward_IMP EOFault_forward_IMP = 0;
+
 + (void)initialize
 {
   // Must be here as initialize is called for each root class
@@ -84,6 +87,11 @@
     {
       EOFaultClass = [EOFault class];
     }
+
+  if (EOFault_forward_IMP == 0)
+    {
+      EOFault_forward_IMP = (forward_IMP) [NSObject instanceMethodForSelector: @selector(forward::)];
+    }
 }
 
 + (Class)superclass
@@ -480,17 +488,7 @@
 - (retval_t)forward: (SEL)selector 
                    : (arglist_t)args
 {
-  retval_t ret;
-  NSInvocation *inv;
-
-  inv = [[[NSInvocation alloc] initWithArgframe: args
-			       selector: selector]
-	  autorelease];
-  [self forwardInvocation: inv];
-
-  ret = [inv returnFrame: args];
-
-  return ret;
+    return EOFault_forward_IMP(self, _cmd, selector, args);
 }
 
 - (void)forwardInvocation: (NSInvocation *)invocation
