diff --git a/renderscript/v8/java/src/android/support/v8/renderscript/Script.java b/renderscript/v8/java/src/android/support/v8/renderscript/Script.java
index 33dd4ed..596c387 100644
--- a/renderscript/v8/java/src/android/support/v8/renderscript/Script.java
+++ b/renderscript/v8/java/src/android/support/v8/renderscript/Script.java
@@ -249,6 +249,11 @@
     }
 
     protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v, LaunchOptions sc) {
+        if (mT != null) {
+            mT.thunkForEach(slot, ain, aout, v, sc);
+            return;
+        }
+
         if (ain == null && aout == null) {
             throw new RSIllegalArgumentException(
                 "At least one of ain or aout is required to be non-null.");
diff --git a/renderscript/v8/java/src/android/support/v8/renderscript/ScriptCThunker.java b/renderscript/v8/java/src/android/support/v8/renderscript/ScriptCThunker.java
index 50b7904..130e408 100644
--- a/renderscript/v8/java/src/android/support/v8/renderscript/ScriptCThunker.java
+++ b/renderscript/v8/java/src/android/support/v8/renderscript/ScriptCThunker.java
@@ -92,6 +92,31 @@
         forEach(slot, nin, nout, nfp);
     }
 
+    void thunkForEach(int slot, Allocation ain, Allocation aout, FieldPacker v,
+                      android.support.v8.renderscript.Script.LaunchOptions sc) {
+        android.renderscript.Script.LaunchOptions lo = null;
+        if (sc != null) {
+            lo = new android.renderscript.Script.LaunchOptions();
+            if (sc.getXEnd() > 0) lo.setX(sc.getXStart(), sc.getXEnd());
+            if (sc.getYEnd() > 0) lo.setY(sc.getYStart(), sc.getYEnd());
+            if (sc.getZEnd() > 0) lo.setZ(sc.getZStart(), sc.getZEnd());
+        }
+
+        android.renderscript.Allocation nin = null;
+        android.renderscript.Allocation nout = null;
+        android.renderscript.FieldPacker nfp = null;
+        if (ain != null) {
+            nin = ((AllocationThunker)ain).mN;
+        }
+        if (aout != null) {
+            nout = ((AllocationThunker)aout).mN;
+        }
+        if (v != null) {
+            nfp = new android.renderscript.FieldPacker(v.getData());
+        }
+        forEach(slot, nin, nout, nfp, lo);
+    }
+
     void thunkSetVar(int index, float v) {
         setVar(index, v);
     }
