Fixes nanotime and also implements currentTimeMillis on top of it
instead of vice-versa. The ref impl therefore now returns with
microsecond precision.
2006-07-26 Sven de Marothy <[EMAIL PROTECTED]>
* include/java_lang_VMSystem.h
* vm/reference/java/lang/VMSystem.java
* native/jni/java-lang/java_lang_VMSystem.c
(nanoTime, currentTimeMillis): Switch the former to native code and
the latter to java.
Index: include/java_lang_VMSystem.h
===================================================================
RCS file: /sources/classpath/classpath/include/java_lang_VMSystem.h,v
retrieving revision 1.8
diff -U3 -r1.8 java_lang_VMSystem.h
--- include/java_lang_VMSystem.h 3 May 2006 20:22:55 -0000 1.8
+++ include/java_lang_VMSystem.h 26 Jul 2006 19:36:33 -0000
@@ -15,7 +15,7 @@
JNIEXPORT void JNICALL Java_java_lang_VMSystem_setIn (JNIEnv *env, jclass, jobject);
JNIEXPORT void JNICALL Java_java_lang_VMSystem_setOut (JNIEnv *env, jclass, jobject);
JNIEXPORT void JNICALL Java_java_lang_VMSystem_setErr (JNIEnv *env, jclass, jobject);
-JNIEXPORT jlong JNICALL Java_java_lang_VMSystem_currentTimeMillis (JNIEnv *env, jclass);
+JNIEXPORT jlong JNICALL Java_java_lang_VMSystem_nanoTime (JNIEnv *env, jclass);
JNIEXPORT jobject JNICALL Java_java_lang_VMSystem_environ (JNIEnv *env, jclass);
JNIEXPORT jstring JNICALL Java_java_lang_VMSystem_getenv (JNIEnv *env, jclass, jstring);
Index: native/jni/java-lang/java_lang_VMSystem.c
===================================================================
RCS file: /sources/classpath/classpath/native/jni/java-lang/java_lang_VMSystem.c,v
retrieving revision 1.14
diff -U3 -r1.14 java_lang_VMSystem.c
--- native/jni/java-lang/java_lang_VMSystem.c 22 Apr 2006 21:52:18 -0000 1.14
+++ native/jni/java-lang/java_lang_VMSystem.c 26 Jul 2006 19:36:34 -0000
@@ -113,11 +113,11 @@
/*
* Class: java_lang_VMSystem
- * Method: currentTimeMillis
+ * Method: nanoTime
* Signature: ()J
*/
JNIEXPORT jlong JNICALL
-Java_java_lang_VMSystem_currentTimeMillis
+Java_java_lang_VMSystem_nanoTime
(JNIEnv * env __attribute__ ((__unused__)),
jclass thisClass __attribute__ ((__unused__)))
{
@@ -129,8 +129,9 @@
(*env)->FatalError (env, "gettimeofday call failed.");
result = (jlong) tp.tv_sec;
- result *= 1000;
- result += (tp.tv_usec / 1000);
+ result *= (jlong)1000000L;
+ result += (jlong)tp.tv_usec;
+ result *= (jlong)1000;
return result;
}
Index: vm/reference/java/lang/VMSystem.java
===================================================================
RCS file: /sources/classpath/classpath/vm/reference/java/lang/VMSystem.java,v
retrieving revision 1.16
diff -U3 -r1.16 VMSystem.java
--- vm/reference/java/lang/VMSystem.java 22 Apr 2006 21:52:18 -0000 1.16
+++ vm/reference/java/lang/VMSystem.java 26 Jul 2006 19:36:35 -0000
@@ -135,7 +135,10 @@
* @return the current time
* @see java.util.Date
*/
- public static native long currentTimeMillis();
+ public static long currentTimeMillis()
+ {
+ return nanoTime() / 1000000L;
+ }
/**
* <p>
@@ -162,10 +165,7 @@
* @return the time of a system timer in nanoseconds.
* @since 1.5
*/
- public static long nanoTime()
- {
- return currentTimeMillis() * 1000;
- }
+ public static native long nanoTime();
/**
* Returns a list of 'name=value' pairs representing the current environment