Add dalvik code for forEach.

Change-Id: I26533fc553315b99b8f177ab62d9735a177b26b0
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java
index 754ebfb..4c505ec 100644
--- a/graphics/java/android/renderscript/RenderScript.java
+++ b/graphics/java/android/renderscript/RenderScript.java
@@ -420,6 +420,16 @@
         validate();
         rsnScriptInvoke(mContext, id, slot);
     }
+    native void rsnScriptForEach(int con, int id, int slot, int ain, int aout, byte[] params);
+    native void rsnScriptForEach(int con, int id, int slot, int ain, int aout);
+    synchronized void nScriptForEach(int id, int slot, int ain, int aout, byte[] params) {
+        validate();
+        if (params == null) {
+            rsnScriptForEach(mContext, id, slot, ain, aout);
+        } else {
+            rsnScriptForEach(mContext, id, slot, ain, aout, params);
+        }
+    }
     native void rsnScriptInvokeV(int con, int id, int slot, byte[] params);
     synchronized void nScriptInvokeV(int id, int slot, byte[] params) {
         validate();
diff --git a/graphics/java/android/renderscript/Script.java b/graphics/java/android/renderscript/Script.java
index 56abba5..11aa134 100644
--- a/graphics/java/android/renderscript/Script.java
+++ b/graphics/java/android/renderscript/Script.java
@@ -43,6 +43,35 @@
         }
     }
 
+    /**
+     * @hide
+     * Only intended for use by generated reflected code.
+     *
+     * @param slot
+     * @param ain
+     * @param aout
+     * @param v
+     */
+    protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v) {
+        if (ain == null && aout == null) {
+            throw new RSIllegalArgumentException(
+                "At least one of ain or aout is required to be non-null.");
+        }
+        int in_id = 0;
+        if (ain != null) {
+            in_id = ain.getID();
+        }
+        int out_id = 0;
+        if (aout != null) {
+            out_id = aout.getID();
+        }
+        byte[] params = null;
+        if (v != null) {
+            params = v.getData();
+        }
+        mRS.nScriptForEach(getID(), slot, in_id, out_id, params);
+    }
+
 
     Script(int id, RenderScript rs) {
         super(id, rs);