private static Address GetFloatArrayElements(JNIEnvironment env,int arrayJREF,Address isCopyAddress){
  if (traceJNI)   VM.sysWrite("JNI called: GetFloatArrayElements  \n");
  RuntimeEntrypoints.checkJNICountDownToGC();
  try {
    float[] sourceArray=(float[])env.getJNIRef(arrayJREF);
    int size=sourceArray.length;
    if (MemoryManager.willNeverMove(sourceArray)) {
      JNIGenericHelpers.setBoolStar(isCopyAddress,false);
      return Magic.objectAsAddress(sourceArray);
    }
 else {
      Address copyBuffer=sysCall.sysMalloc(size << LOG_BYTES_IN_FLOAT);
      if (copyBuffer.isZero()) {
        env.recordException(new OutOfMemoryError());
        return Address.zero();
      }
      Memory.memcopy(copyBuffer,Magic.objectAsAddress(sourceArray),size << LOG_BYTES_IN_FLOAT);
      JNIGenericHelpers.setBoolStar(isCopyAddress,true);
      return copyBuffer;
    }
  }
 catch (  Throwable unexpected) {
    if (traceJNI)     unexpected.printStackTrace(System.err);
    env.recordException(unexpected);
    return Address.zero();
  }
}

private static Address GetFloatArrayElements ( JNIEnvironment env , int arrayJREF , Address isCopyAddress ) { if ( traceJNI ) VM . sysWrite ( "JNI called: GetFloatArrayElements  \n" ) ; RuntimeEntrypoints . checkJNICountDownToGC ( ) ; try { float [ ] sourceArray = ( float [ ] ) env . getJNIRef ( arrayJREF ) ; int size = sourceArray . length ; if ( MemoryManager . willNeverMove ( sourceArray ) ) { JNIGenericHelpers . setBoolStar ( isCopyAddress , false ) ; return Magic . objectAsAddress ( sourceArray ) ; } else { Address copyBuffer = sysCall . sysMalloc ( size << LOG_BYTES_IN_FLOAT ) ; if ( copyBuffer . isZero ( ) ) { env . recordException ( new OutOfMemoryError ( ) ) ; return Address . zero ( ) ; } Memory . memcopy ( copyBuffer , Magic . objectAsAddress ( sourceArray ) , size << LOG_BYTES_IN_FLOAT ) ; JNIGenericHelpers . setBoolStar ( isCopyAddress , true ) ; return copyBuffer ; } } catch ( Throwable unexpected ) { if ( traceJNI ) unexpected . printStackTrace ( System . err ) ; env . recordException ( unexpected ) ; return Address . zero ( ) ; } }
getfloatarrayelements : get all the elements of a float array
