Replace native Process getpid/getuid with calls to libcore equivalents.

The Process natives were getting called were getting called while
handling a jdwp packet before the vm had a chance to register them.

(cherry-pick of 5bce6a308fc8a3c1e449cf905b8b6e8ace4ef3e2.)

Change-Id: Ia2b4f79b11e427283a712b2d0c52948f394640bf
diff --git a/core/java/android/ddm/DdmHandleHello.java b/core/java/android/ddm/DdmHandleHello.java
index 842a482..220b40d 100644
--- a/core/java/android/ddm/DdmHandleHello.java
+++ b/core/java/android/ddm/DdmHandleHello.java
@@ -97,7 +97,9 @@
     }
 
     /*
-     * Handle introductory packet.
+     * Handle introductory packet. This is called during JNI_CreateJavaVM
+     * before frameworks native methods are registered, so be careful not
+     * to call any APIs that depend on frameworks native code.
      */
     private Chunk handleHELO(Chunk request) {
         if (false)
diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java
index 476b4ea..0e38ebc 100644
--- a/core/java/android/os/Process.java
+++ b/core/java/android/os/Process.java
@@ -27,6 +27,8 @@
 import java.io.OutputStreamWriter;
 import java.util.ArrayList;
 
+import libcore.io.Libcore;
+
 /*package*/ class ZygoteStartFailedEx extends Exception {
     /**
      * Something prevented the zygote process startup from happening normally
@@ -647,7 +649,9 @@
      * Returns the identifier of this process, which can be used with
      * {@link #killProcess} and {@link #sendSignal}.
      */
-    public static final native int myPid();
+    public static final int myPid() {
+        return Libcore.os.getpid();
+    }
 
     /**
      * Returns the identifier of the calling thread, which be used with
@@ -661,7 +665,9 @@
      * app-specific sandbox.  It is different from {@link #myUserHandle} in that
      * a uid identifies a specific app sandbox in a specific user.
      */
-    public static final native int myUid();
+    public static final int myUid() {
+        return Libcore.os.getuid();
+    }
 
     /**
      * Returns this process's user handle.  This is the
diff --git a/core/jni/android_util_Process.cpp b/core/jni/android_util_Process.cpp
index 5d32328..7506e5a 100644
--- a/core/jni/android_util_Process.cpp
+++ b/core/jni/android_util_Process.cpp
@@ -94,16 +94,6 @@
     }
 }
 
-jint android_os_Process_myPid(JNIEnv* env, jobject clazz)
-{
-    return getpid();
-}
-
-jint android_os_Process_myUid(JNIEnv* env, jobject clazz)
-{
-    return getuid();
-}
-
 jint android_os_Process_myTid(JNIEnv* env, jobject clazz)
 {
     return androidGetTid();
@@ -989,9 +979,7 @@
 }
 
 static const JNINativeMethod methods[] = {
-    {"myPid",       "()I", (void*)android_os_Process_myPid},
     {"myTid",       "()I", (void*)android_os_Process_myTid},
-    {"myUid",       "()I", (void*)android_os_Process_myUid},
     {"getUidForName",       "(Ljava/lang/String;)I", (void*)android_os_Process_getUidForName},
     {"getGidForName",       "(Ljava/lang/String;)I", (void*)android_os_Process_getGidForName},
     {"setThreadPriority",   "(II)V", (void*)android_os_Process_setThreadPriority},