Port 1abc689a32fc20b38227060e4da5e0934df8fc19 and e5d14162ff278c41e09c42769cc31401feeeba18 to art.

(The last pieces of 64-bit nio support?)

Change-Id: I7f78d55331fa794320451041b4fd5d313beb952b
diff --git a/src/jni_internal.cc b/src/jni_internal.cc
index edff713..6df03e9 100644
--- a/src/jni_internal.cc
+++ b/src/jni_internal.cc
@@ -2143,7 +2143,7 @@
     // At the moment, the Java side is limited to 32 bits.
     CHECK_LE(reinterpret_cast<uintptr_t>(address), 0xffffffff);
     CHECK_LE(capacity, 0xffffffff);
-    jint address_arg = reinterpret_cast<jint>(address);
+    jlong address_arg = reinterpret_cast<jlong>(address);
     jint capacity_arg = static_cast<jint>(capacity);
 
     jobject result = env->NewObject(WellKnownClasses::java_nio_DirectByteBuffer,
diff --git a/src/well_known_classes.cc b/src/well_known_classes.cc
index 53784b9..f836f4f 100644
--- a/src/well_known_classes.cc
+++ b/src/well_known_classes.cc
@@ -162,7 +162,7 @@
   java_lang_Thread_run = CacheMethod(env, java_lang_Thread, false, "run", "()V");
   java_lang_Thread$UncaughtExceptionHandler_uncaughtException = CacheMethod(env, java_lang_Thread$UncaughtExceptionHandler, false, "uncaughtException", "(Ljava/lang/Thread;Ljava/lang/Throwable;)V");
   java_lang_ThreadGroup_removeThread = CacheMethod(env, java_lang_ThreadGroup, false, "removeThread", "(Ljava/lang/Thread;)V");
-  java_nio_DirectByteBuffer_init = CacheMethod(env, java_nio_DirectByteBuffer, false, "<init>", "(II)V");
+  java_nio_DirectByteBuffer_init = CacheMethod(env, java_nio_DirectByteBuffer, false, "<init>", "(JI)V");
   org_apache_harmony_dalvik_ddmc_DdmServer_broadcast = CacheMethod(env, org_apache_harmony_dalvik_ddmc_DdmServer, true, "broadcast", "(I)V");
   org_apache_harmony_dalvik_ddmc_DdmServer_dispatch = CacheMethod(env, org_apache_harmony_dalvik_ddmc_DdmServer, true, "dispatch", "(I[BII)Lorg/apache/harmony/dalvik/ddmc/Chunk;");