Intern strings in the compiler AST to reduce memory footprint.

Review at http://gwt-code-reviews.appspot.com/946801


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@8921 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JAnnotation.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JAnnotation.java
index 4133976..44d7ece 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JAnnotation.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JAnnotation.java
@@ -16,6 +16,7 @@
 package com.google.gwt.dev.jjs.ast;
 
 import com.google.gwt.dev.jjs.SourceInfo;
+import com.google.gwt.dev.util.StringInterner;
 import com.google.gwt.dev.util.collect.Lists;
 
 import java.lang.annotation.Annotation;
@@ -44,7 +45,7 @@
     public Property(SourceInfo sourceInfo, String name,
         List<JAnnotationArgument> values) {
       super(sourceInfo);
-      this.name = name;
+      this.name = StringInterner.get().intern(name);
       this.values = Lists.normalize(values);
     }
 
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JLabel.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JLabel.java
index 40397ef..894eea6 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JLabel.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JLabel.java
@@ -16,6 +16,7 @@
 package com.google.gwt.dev.jjs.ast;
 
 import com.google.gwt.dev.jjs.SourceInfo;
+import com.google.gwt.dev.util.StringInterner;
 
 /**
  * Should we have a JLabelRef also?
@@ -26,7 +27,7 @@
 
   public JLabel(SourceInfo info, String name) {
     super(info);
-    this.name = name;
+    this.name = StringInterner.get().intern(name);
   }
 
   public String getName() {
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JParameter.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JParameter.java
index 02cb31e..7331cf1 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JParameter.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JParameter.java
@@ -16,7 +16,6 @@
 package com.google.gwt.dev.jjs.ast;
 
 import com.google.gwt.dev.jjs.SourceInfo;
-import com.google.gwt.dev.util.StringInterner;
 
 /**
  * Java method parameter definition.
@@ -29,7 +28,7 @@
     assert (type != null);
     assert (enclosingMethod != null);
 
-    JParameter x = new JParameter(info, StringInterner.get().intern(name), type,
+    JParameter x = new JParameter(info, name, type,
         isFinal, isThis, enclosingMethod);
 
     enclosingMethod.addParam(x);
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 432764e..6e62e0d 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
@@ -16,6 +16,7 @@
 package com.google.gwt.dev.jjs.ast;
 
 import com.google.gwt.dev.jjs.SourceOrigin;
+import com.google.gwt.dev.util.StringInterner;
 import com.google.gwt.dev.util.collect.HashMap;
 
 import java.util.Map;
@@ -63,9 +64,9 @@
   private JPrimitiveType(String name, String signatureName,
       String wrapperTypeName, JLiteral defaultValue) {
     super(SourceOrigin.UNKNOWN, name, defaultValue);
-    this.signatureName = signatureName;
-    this.wrapperTypeName = wrapperTypeName;
-    Singletons.map.put(name, this);
+    this.signatureName = StringInterner.get().intern(signatureName);
+    this.wrapperTypeName = StringInterner.get().intern(wrapperTypeName);
+    Singletons.map.put(this.name, this);
   }
 
   /**
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 7391010..f772af7 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
@@ -16,6 +16,7 @@
 package com.google.gwt.dev.jjs.ast;
 
 import com.google.gwt.dev.jjs.SourceInfo;
+import com.google.gwt.dev.util.StringInterner;
 
 /**
  * Base class for any types entity.
@@ -27,7 +28,7 @@
 
   public JType(SourceInfo info, String name, JLiteral defaultValue) {
     super(info);
-    this.name = name;
+    this.name = StringInterner.get().intern(name);
     this.defaultValue = defaultValue;
   }
 
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JVariable.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JVariable.java
index 1cb5c06..0928cf8 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JVariable.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JVariable.java
@@ -16,6 +16,7 @@
 package com.google.gwt.dev.jjs.ast;
 
 import com.google.gwt.dev.jjs.SourceInfo;
+import com.google.gwt.dev.util.StringInterner;
 import com.google.gwt.dev.util.collect.Lists;
 
 import java.util.List;
@@ -35,7 +36,7 @@
   JVariable(SourceInfo info, String name, JType type, boolean isFinal) {
     super(info);
     assert type != null;
-    this.name = name;
+    this.name = StringInterner.get().intern(name);
     this.type = type;
     this.isFinal = isFinal;
   }