1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/StringArray.java Fri Feb 27 13:50:37 2015 +0100
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/StringArray.java Fri Feb 27 18:11:54 2015 +0100
1.3 @@ -32,16 +32,23 @@
1.4 }
1.5
1.6 public void add(String s) {
1.7 + add(s, false);
1.8 + }
1.9 + private boolean add(String s, boolean check) {
1.10 if (arr == null) {
1.11 arr = new String[1];
1.12 } else {
1.13 String[] tmp = new String[arr.length + 1];
1.14 for (int i = 0; i < arr.length; i++) {
1.15 + if (check && s.equals(arr[i])) {
1.16 + return false;
1.17 + }
1.18 tmp[i] = arr[i];
1.19 }
1.20 arr = tmp;
1.21 }
1.22 arr[arr.length - 1] = s;
1.23 + return true;
1.24 }
1.25
1.26 StringArray addAndNew(String... values) {
1.27 @@ -130,4 +137,8 @@
1.28 void clear() {
1.29 arr = null;
1.30 }
1.31 +
1.32 + boolean addIfMissing(String s) {
1.33 + return add(s, true);
1.34 + }
1.35 }
2.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Fri Feb 27 13:50:37 2015 +0100
2.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Fri Feb 27 18:11:54 2015 +0100
2.3 @@ -291,11 +291,7 @@
2.4
2.5 @Override
2.6 protected boolean requireReference(String cn) {
2.7 - if (references.contains(cn)) {
2.8 - return false;
2.9 - }
2.10 - references.add(cn);
2.11 - return true;
2.12 + return references.addIfMissing(cn);
2.13 }
2.14
2.15 @Override
3.1 --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/BytesLoader.java Fri Feb 27 13:50:37 2015 +0100
3.2 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/BytesLoader.java Fri Feb 27 18:11:54 2015 +0100
3.3 @@ -30,10 +30,9 @@
3.4 private static final StringArray requested = new StringArray();
3.5
3.6 public byte[] get(String name) throws IOException {
3.7 - if (requested.contains(name)) {
3.8 + if (!requested.addIfMissing(name)) {
3.9 throw new IllegalStateException("Requested for second time: " + name);
3.10 }
3.11 - requested.add(name);
3.12 byte[] arr = readClass(name);
3.13 /*
3.14 System.err.print("loader['" + name + "'] = [");