diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JPrimitiveType.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JPrimitiveType.java
index 6e62e0d..a639b43 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JPrimitiveType.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JPrimitiveType.java
@@ -25,6 +25,9 @@
  * Base class for all Java primitive types.
  */
 public class JPrimitiveType extends JType {
+  /*
+   * Primitive types are static singletons.  Serialization via readResolve().
+   */
 
   private static final class Singletons {
     public static final Map<String, JPrimitiveType> map = new HashMap<String, JPrimitiveType>();
@@ -57,13 +60,16 @@
   public static final JPrimitiveType VOID = new JPrimitiveType("void", "V",
       "java.lang.Void", null);
 
-  private final String signatureName;
+  private final transient JValueLiteral defaultValue;
 
-  private final String wrapperTypeName;
+  private final transient String signatureName;
+
+  private final transient String wrapperTypeName;
 
   private JPrimitiveType(String name, String signatureName,
-      String wrapperTypeName, JLiteral defaultValue) {
-    super(SourceOrigin.UNKNOWN, name, defaultValue);
+      String wrapperTypeName, JValueLiteral defaultValue) {
+    super(SourceOrigin.UNKNOWN, name);
+    this.defaultValue = defaultValue;
     this.signatureName = StringInterner.get().intern(signatureName);
     this.wrapperTypeName = StringInterner.get().intern(wrapperTypeName);
     Singletons.map.put(this.name, this);
@@ -74,10 +80,8 @@
    * if no such coercion is possible.
    */
   public JValueLiteral coerceLiteral(JValueLiteral value) {
-    JLiteral defaultValue = getDefaultValue();
-    if (defaultValue instanceof JValueLiteral) {
-      JValueLiteral defaultValueLiteral = (JValueLiteral) defaultValue;
-      return defaultValueLiteral.cloneFrom(value);
+    if (defaultValue != null) {
+      return defaultValue.cloneFrom(value);
     }
     return null;
   }
@@ -88,6 +92,11 @@
   }
 
   @Override
+  public final JLiteral getDefaultValue() {
+    return defaultValue;
+  }
+
+  @Override
   public String getJavahSignatureName() {
     return signatureName;
   }
@@ -111,6 +120,9 @@
     visitor.endVisit(this, ctx);
   }
 
+  /**
+   * Canonicalize to singleton; uses {@link JType#name}.
+   */
   private Object readResolve() {
     return Singletons.map.get(name);
   }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JReferenceType.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JReferenceType.java
index c91b6ef..ce28542 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JReferenceType.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JReferenceType.java
@@ -25,7 +25,7 @@
   private transient JNonNullType nonNullType;
 
   public JReferenceType(SourceInfo info, String name) {
-    super(info, name, JNullLiteral.INSTANCE);
+    super(info, name);
   }
 
   /**
@@ -39,6 +39,11 @@
   }
 
   @Override
+  public final JLiteral getDefaultValue() {
+    return JNullLiteral.INSTANCE;
+  }
+
+  @Override
   public String getJavahSignatureName() {
     return "L" + name.replaceAll("_", "_1").replace('.', '_') + "_2";
   }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JType.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JType.java
index f772af7..f97e5fa 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JType.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JType.java
@@ -24,19 +24,15 @@
 public abstract class JType extends JNode implements HasName, CanBeFinal {
 
   protected final String name;
-  private final JLiteral defaultValue;
 
-  public JType(SourceInfo info, String name, JLiteral defaultValue) {
+  public JType(SourceInfo info, String name) {
     super(info);
     this.name = StringInterner.get().intern(name);
-    this.defaultValue = defaultValue;
   }
 
   public abstract String getClassLiteralFactoryMethod();
 
-  public JLiteral getDefaultValue() {
-    return defaultValue;
-  }
+  public abstract JLiteral getDefaultValue();
 
   public abstract String getJavahSignatureName();
 
