3 import org.ibex.util.*;
5 class JSString extends JSPrimitive {
7 public JSString(String s) { this.s = s; }
8 public int hashCode() { return s.hashCode(); }
10 public boolean jsequals(JS o) {
11 if(o == this) return true;
12 if(o instanceof JSString) {
13 return ((JSString)o).s.equals(s);
14 } else if(o instanceof JSNumber) {
15 return o.jsequals(this);
21 private final static Hash internHash = new Hash();
22 static synchronized JS intern(String s) {
23 synchronized(internHash) {
24 JS js = (JS)internHash.get(s);
25 if(js == null) internHash.put(s,js = new Intern(s));
29 static class Intern extends JSString {
30 public Intern(String s) { super(s); }
31 protected void finalize() { synchronized(internHash) { internHash.put(s,null); } }
34 String coerceToString() { return s; }