Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.jruby.ext.ffi.jffi;
  
  
 
     private static final int MAX_PARAMETERS = getMaximumFastNumericParameters();
 
     private static final String[] signatures = buildSignatures(long.class);
 
     private static final String[] methodNames = {
         "invokeN0""invokeN1""invokeN2""invokeN3""invokeN4""invokeN5""invokeN6"
     };
 
     String getInvokerMethodName(JITSignature signature) {
 
         final int parameterCount = signature.getParameterCount();
 
         if (parameterCount <=  && parameterCount <= .) {
             return [parameterCount];
 
         } else {
             throw new IllegalArgumentException("invalid fast-long parameter count: " + parameterCount);
         }
     }
 
     String getInvokerSignature(int parameterCount) {
         if (parameterCount <=  && parameterCount <= .) {
             return [parameterCount];
         }
         throw new IllegalArgumentException("invalid fast-long parameter count: " + parameterCount);
     }
 
     final Class getInvokerIntType() {
         return long.class;
     }
 
     public boolean isSupported(JITSignature signature) {
         final int parameterCount = signature.getParameterCount();
 
         if (!signature.getCallingConvention().equals(.) || parameterCount > ) {
             return false;
         }
 
         final Platform platform = Platform.getPlatform();
 
         if (platform.getOS().equals(..)) {
             return false;
         }
 
         // Only supported on amd64 arches
         if (!platform.getCPU().equals(..) && !platform.getCPU().equals(..)) {
             return false;
         }
 
         for (int i = 0; i < parameterCounti++) {
             if (!isFastNumericParameter(platformsignature.getParameterType(i))) {
                 return false;
             }
         }
 
         return isFastNumericResult(platformsignature.getResultType());
     }
 
 
     final static int getMaximumFastNumericParameters() {
         try {
             com.kenai.jffi.Invoker.class.getDeclaredMethod("invokeN6"CallContext.classlong.class,
                     long.classlong.classlong.classlong.classlong.classlong.class);
             return 6;
         } catch (Throwable t) {
             return -1;
         }
     }
 
 
     private static boolean isFastNumericType(Platform platformNativeType type) {
         switch (type) {
             case :
             case :
             case :
             case :
             case :
             case :
             case :
             case :
             case :
             case :
             case :
             case :
             case :
                 return true;
 
            default:
                return false;
        }
    }
    static boolean isFastNumericResult(Platform platformNativeType type) {
        switch (type) {
            case :
            case :
            case :
            case :
                return true;
            default:
                return isFastNumericType(platformtype);
        }
    }
    static boolean isFastNumericParameter(Platform platformNativeType type) {
        switch (type) {
            case :
            case :
            case :
            case :
            case :
            case :
                return true;
            
            default:
                return isFastNumericType(platformtype);
        }
    }
New to GrepCode? Check out our FAQ X