Merge "Add some certimport.sh documention" into dalvik-dev
diff --git a/libcore/json/src/main/java/org/json/JSONTokener.java b/libcore/json/src/main/java/org/json/JSONTokener.java
index d5d2dd2..3b0f593 100644
--- a/libcore/json/src/main/java/org/json/JSONTokener.java
+++ b/libcore/json/src/main/java/org/json/JSONTokener.java
@@ -482,8 +482,8 @@
      *
      * <p>The returned string shares its backing character array with this
      * tokener's input string. If a reference to the returned string may be held
-     * indefinitely, you should {@link String(String) copy} it first to avoid
-     * memory leaks.
+     * indefinitely, you should use {@code new String(result)} to copy it first
+     * to avoid memory leaks.
      *
      * @throws JSONException if the remaining input is not long enough to
      *     satisfy this request.
@@ -508,8 +508,8 @@
      *
      * <p>The returned string shares its backing character array with this
      * tokener's input string. If a reference to the returned string may be held
-     * indefinitely, you should {@link String(String) copy} it first to avoid
-     * memory leaks.
+     * indefinitely, you should use {@code new String(result)} to copy it first
+     * to avoid memory leaks.
      *
      * @return a possibly-empty string
      */
diff --git a/vm/Misc.c b/vm/Misc.c
index 193e0bd..87f4c81 100644
--- a/vm/Misc.c
+++ b/vm/Misc.c
@@ -21,6 +21,7 @@
 #include <stdlib.h>
 #include <stddef.h>
 #include <string.h>
+#include <strings.h>
 #include <ctype.h>
 #include <time.h>
 #include <sys/time.h>
diff --git a/vm/compiler/codegen/arm/CodegenDriver.c b/vm/compiler/codegen/arm/CodegenDriver.c
index 8104ef2..33a8fb5 100644
--- a/vm/compiler/codegen/arm/CodegenDriver.c
+++ b/vm/compiler/codegen/arm/CodegenDriver.c
@@ -565,6 +565,16 @@
     loadWordDisp(cUnit, r0, offsetof(Object, clazz), r0);
     opReg(cUnit, kOpBlx, r2);
     dvmCompilerClobberCallRegs(cUnit);
+
+    /*
+     * Using fixed registers here, and counting on r4 and r7 being
+     * preserved across the above call.  Tell the register allocation
+     * utilities about the regs we are using directly
+     */
+    dvmCompilerLockTemp(cUnit, regPtr);   // r4PC
+    dvmCompilerLockTemp(cUnit, regIndex); // r7
+    dvmCompilerLockTemp(cUnit, r0);
+
     /* Bad? - roll back and re-execute if so */
     genRegImmCheck(cUnit, kArmCondEq, r0, 0, mir->offset, pcrLabel);
 
@@ -2246,6 +2256,12 @@
         case OP_IPUT_BOOLEAN:
             genIPut(cUnit, mir, kUnsignedByte, fieldOffset);
             break;
+        case OP_IGET_WIDE_VOLATILE:
+        case OP_IPUT_WIDE_VOLATILE:
+        case OP_SGET_WIDE_VOLATILE:
+        case OP_SPUT_WIDE_VOLATILE:
+            genInterpSingleStep(cUnit, mir);
+            break;
         default:
             return true;
     }