< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.virtual/src/org/graalvm/compiler/virtual/phases/ea/EffectList.java

Print this page




 154             }
 155         };
 156     }
 157 
 158     public Effect get(int index) {
 159         if (index >= size) {
 160             throw new IndexOutOfBoundsException();
 161         }
 162         return effects[index];
 163     }
 164 
 165     public void clear() {
 166         size = 0;
 167     }
 168 
 169     public boolean isEmpty() {
 170         return size == 0;
 171     }
 172 
 173     public void apply(StructuredGraph graph, ArrayList<Node> obsoleteNodes, boolean cfgKills) {

 174         for (int i = 0; i < size(); i++) {
 175             Effect effect = effects[i];
 176             if (effect.isCfgKill() == cfgKills) {




 177                 try {
 178                     effect.apply(graph, obsoleteNodes);
 179                 } catch (Throwable t) {
 180                     StringBuilder str = new StringBuilder();
 181                     toString(str, i);
 182                     throw new GraalError(t).addContext("effect", str);
 183                 }
 184                 if (effect.isVisible() && debug.isLogEnabled()) {
 185                     StringBuilder str = new StringBuilder();
 186                     toString(str, i);
 187                     debug.log("    %s", str);
 188                 }
 189             }
 190         }
 191     }
 192 
 193     private void toString(StringBuilder str, int i) {
 194         Effect effect = effects[i];
 195         str.append(getName(i)).append(" [");
 196         boolean first = true;
 197         for (Field field : effect.getClass().getDeclaredFields()) {
 198             try {
 199                 field.setAccessible(true);
 200                 Object object = field.get(effect);
 201                 if (object == this) {
 202                     // Inner classes could capture the EffectList itself.
 203                     continue;
 204                 }
 205                 str.append(first ? "" : ", ").append(format(object));
 206                 first = false;
 207             } catch (SecurityException | IllegalAccessException e) {
 208                 throw new RuntimeException(e);
 209             }
 210         }
 211         str.append(']');
 212     }
 213 
 214     private static String format(Object object) {
 215         if (object != null && Object[].class.isAssignableFrom(object.getClass())) {
 216             return Arrays.toString((Object[]) object);
 217         }
 218         return "" + object;
 219     }
 220 
 221     @Override
 222     public String toString() {
 223         StringBuilder str = new StringBuilder();
 224         for (int i = 0; i < size(); i++) {
 225             Effect effect = get(i);


 154             }
 155         };
 156     }
 157 
 158     public Effect get(int index) {
 159         if (index >= size) {
 160             throw new IndexOutOfBoundsException();
 161         }
 162         return effects[index];
 163     }
 164 
 165     public void clear() {
 166         size = 0;
 167     }
 168 
 169     public boolean isEmpty() {
 170         return size == 0;
 171     }
 172 
 173     public void apply(StructuredGraph graph, ArrayList<Node> obsoleteNodes, boolean cfgKills) {
 174         boolean message = false;
 175         for (int i = 0; i < size(); i++) {
 176             Effect effect = effects[i];
 177             if (effect.isCfgKill() == cfgKills) {
 178                 if (!message) {
 179                     message = true;
 180                     debug.log(cfgKills ? " ==== cfg kill effects" : " ==== effects");
 181                 }
 182                 try {
 183                     effect.apply(graph, obsoleteNodes);
 184                 } catch (Throwable t) {
 185                     StringBuilder str = new StringBuilder();
 186                     toString(str, i);
 187                     throw new GraalError(t).addContext("effect", str);
 188                 }
 189                 if (effect.isVisible() && debug.isLogEnabled()) {
 190                     StringBuilder str = new StringBuilder();
 191                     toString(str, i);
 192                     debug.log("    %s", str);
 193                 }
 194             }
 195         }
 196     }
 197 
 198     private void toString(StringBuilder str, int i) {
 199         Effect effect = effects[i];
 200         str.append(getName(i)).append(" [");
 201         boolean first = true;
 202         for (Field field : effect.getClass().getDeclaredFields()) {
 203             try {
 204                 field.setAccessible(true);
 205                 Object object = field.get(effect);
 206                 if (object == this) {
 207                     // Inner classes could capture the EffectList itself.
 208                     continue;
 209                 }
 210                 str.append(first ? "" : ", ").append(field.getName()).append("=").append(format(object));
 211                 first = false;
 212             } catch (SecurityException | IllegalAccessException e) {
 213                 throw new RuntimeException(e);
 214             }
 215         }
 216         str.append(']');
 217     }
 218 
 219     private static String format(Object object) {
 220         if (object != null && Object[].class.isAssignableFrom(object.getClass())) {
 221             return Arrays.toString((Object[]) object);
 222         }
 223         return "" + object;
 224     }
 225 
 226     @Override
 227     public String toString() {
 228         StringBuilder str = new StringBuilder();
 229         for (int i = 0; i < size(); i++) {
 230             Effect effect = get(i);
< prev index next >