Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.jruby.ext.ffi.jffi;
  
  
 
     private static final int MAX_PARAMETERS = getMaximumFastIntParameters();
 
     private static final String[] signatures = buildSignatures(int.class);
 
     private static final String[] methodNames = {
         "invokeI0""invokeI1""invokeI2""invokeI3""invokeI4""invokeI5""invokeI6"
     };
 
     String getInvokerMethodName(JITSignature signature) {
 
         final int parameterCount = signature.getParameterCount();
 
         if (parameterCount <=  && parameterCount <= .) {
             return [parameterCount];
 
         } else {
             throw new IllegalArgumentException("invalid fast-int parameter count: " + parameterCount);
         }
     }
 
     String getInvokerSignature(int parameterCount) {
         if (parameterCount <=  && parameterCount <= .) {
             return [parameterCount];
         }
         throw new IllegalArgumentException("invalid fast-int parameter count: " + parameterCount);
     }
 
     final Class getInvokerIntType() {
         return int.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;
         }
 
         if (!platform.getCPU().equals(..) && !platform.getCPU().equals(..)) {
             return false;
         }
 
         for (int i = 0; i < parameterCounti++) {
             if (!isFastIntParameter(platformsignature.getParameterType(i))) {
                 return false;
             }
         }
 
         return isFastIntResult(platformsignature.getResultType());
     }
 
 
     final static int getMaximumFastIntParameters() {
         try {
             com.kenai.jffi.Invoker.class.getDeclaredMethod("invokeI6"CallContext.classlong.class,
                     int.classint.classint.classint.classint.classint.class);
             return 6;
         } catch (Throwable t) {
             return -1;
         }
     }
 
 
     private static boolean isFastIntType(Platform platformNativeType type) {
         switch (type) {
             case :
             case :
             case :
             case :
             case :
             case :
             case :
                 return true;
                 
             case :
             case :
                 return platform.longSize() == 32;
                 
             default:
                 return false;
         }
    }
    static boolean isFastIntResult(Platform platformNativeType type) {
        switch (type) {
            case :
                return true;
            case :
            case :
            case :
                return platform.addressSize() == 32;
            default:
                return isFastIntType(platformtype);
        }
    }
    static boolean isFastIntParameter(Platform platformNativeType type) {
        switch (type) {
            case :
            case :
            case :
            case :
            case :
            case :
                return platform.addressSize() == 32;
            default:
                return isFastIntType(platformtype);
        }
    }
New to GrepCode? Check out our FAQ X