diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/ArrayNormalizer.java b/dev/core/src/com/google/gwt/dev/jjs/impl/ArrayNormalizer.java
index 726fbd9..96fc5f9 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/ArrayNormalizer.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/ArrayNormalizer.java
@@ -53,19 +53,21 @@
         JArrayType arrayType = (JArrayType) arrayRef.getInstance().getType();
         JType elementType = arrayType.getElementType();
 
-        // see if we need to do a checked store
-        // primitives and (effectively) final are statically correct
-        if (elementType instanceof JReferenceType
-            && (!((JReferenceType) elementType).isFinal())
-            || elementType != x.getRhs().getType()) {
-          // replace this assignment with a call to setCheck()
-
-          JMethodCall call = new JMethodCall(program, x.getSourceInfo(), null,
-              setCheckMethod);
-          call.getArgs().add(arrayRef.getInstance());
-          call.getArgs().add(arrayRef.getIndexExpr());
-          call.getArgs().add(x.getRhs());
-          ctx.replaceMe(call);
+        /*
+         * See if we need to do a checked store. Primitives and (effectively)
+         * final are statically correct.
+         */
+        if (elementType instanceof JReferenceType) {
+          if (!((JReferenceType) elementType).isFinal()
+              || elementType != x.getRhs().getType()) {
+            // replace this assignment with a call to setCheck()
+            JMethodCall call = new JMethodCall(program, x.getSourceInfo(),
+                null, setCheckMethod);
+            call.getArgs().add(arrayRef.getInstance());
+            call.getArgs().add(arrayRef.getIndexExpr());
+            call.getArgs().add(x.getRhs());
+            ctx.replaceMe(call);
+          }
         }
       }
     }
diff --git a/user/test/com/google/gwt/dev/jjs/test/CompilerTest.java b/user/test/com/google/gwt/dev/jjs/test/CompilerTest.java
index b894cb5..56aeddb 100644
--- a/user/test/com/google/gwt/dev/jjs/test/CompilerTest.java
+++ b/user/test/com/google/gwt/dev/jjs/test/CompilerTest.java
@@ -180,6 +180,10 @@
     Apple g = noOptimizeTrue() ? (Apple) new Granny() : (Apple) new Fuji();
     Apple a = apple[0] = g;
     assertEquals(g, a);
+
+    byte[] bytes = new byte[10];
+    bytes[0] = (byte) '1';
+    assertEquals(49, bytes[0]);
   }
 
   public void testCastOptimizer() {
