JRE-690 Recent bundled JDK VCS Log UI slowdowns

Optimized nativeGetCursorPosition to avoid creating temporary Point2D object
diff --git a/src/macosx/classes/sun/lwawt/macosx/CCursorManager.java b/src/macosx/classes/sun/lwawt/macosx/CCursorManager.java
index e4abc5f..2289899 100644
--- a/src/macosx/classes/sun/lwawt/macosx/CCursorManager.java
+++ b/src/macosx/classes/sun/lwawt/macosx/CCursorManager.java
@@ -29,11 +29,10 @@
 
 import java.awt.Cursor;
 import java.awt.Point;
-import java.awt.geom.Point2D;
 
 final class CCursorManager extends LWCursorManager {
 
-    private static native Point2D nativeGetCursorPosition();
+    private static native void nativeGetCursorPosition(int[] pos);
     private static native void nativeSetBuiltInCursor(final int type, final String name);
     private static native void nativeSetCustomCursor(final long imgPtr, final double x, final double y);
     public static native void nativeSetAllowsCursorSetInBackground(final boolean allows);
@@ -51,8 +50,9 @@
 
     @Override
     protected Point getCursorPosition() {
-        final Point2D nativePosition = nativeGetCursorPosition();
-        return new Point((int)nativePosition.getX(), (int)nativePosition.getY());
+        final int [] pos = new int[2];
+        nativeGetCursorPosition(pos);
+        return new Point(pos[0], pos[1]);
     }
 
     @Override
diff --git a/src/macosx/native/sun/awt/CCursorManager.m b/src/macosx/native/sun/awt/CCursorManager.m
index 9581b93..732f7ed 100644
--- a/src/macosx/native/sun/awt/CCursorManager.m
+++ b/src/macosx/native/sun/awt/CCursorManager.m
@@ -110,23 +110,23 @@
 JNF_COCOA_EXIT(env);
 }
 
-JNIEXPORT jobject JNICALL
+JNIEXPORT void JNICALL
 Java_sun_lwawt_macosx_CCursorManager_nativeGetCursorPosition
-(JNIEnv *env, jclass class)
+(JNIEnv *env, jclass class, jintArray jPos)
 {
-    jobject jpt = NULL;
+    jint *pos = (*env)->GetPrimitiveArrayCritical(env, jPos, 0);
+    if (pos == NULL)  return;
 
 JNF_COCOA_ENTER(env);
 
     CGEventRef event = CGEventCreate(NULL);
     CGPoint globalPos = CGEventGetLocation(event);
     CFRelease(event);
-
-    jpt = NSToJavaPoint(env, globalPos);
+    pos[0] = (jint)globalPos.x;
+    pos[1] = (jint)globalPos.y;
 
 JNF_COCOA_EXIT(env);
-
-    return jpt;
+    (*env)->ReleasePrimitiveArrayCritical(env, jPos, pos, 0);
 }