forstmt.java

来自「JDK1.4编译器前端」· Java 代码 · 共 874 行 · 第 1/3 页

JAVA
874
字号
        return ((Boolean)isDUbeforeCondition_Variable_values.get(_parameters)).booleanValue();    }    private boolean isDUbeforeCondition_compute(Variable v) {    if(!isDUafterInit(v))      return false;    else if(!isDUafterUpdate(v))      return false;    return true;  }    protected java.util.Map isDUafterUpdate_Variable_visited;    // Declared in DefiniteAssignment.jrag at line 1133 @SuppressWarnings({"unchecked", "cast"})     public boolean isDUafterUpdate(Variable v) {        Object _parameters = v;if(isDUafterUpdate_Variable_visited == null) isDUafterUpdate_Variable_visited = new java.util.HashMap(4);        if(new Integer(boundariesCrossed).equals(isDUafterUpdate_Variable_visited.get(_parameters)))            throw new RuntimeException("Circular definition of attr: isDUafterUpdate in class: ");        isDUafterUpdate_Variable_visited.put(_parameters, new Integer(boundariesCrossed));        boolean isDUafterUpdate_Variable_value = isDUafterUpdate_compute(v);        isDUafterUpdate_Variable_visited.remove(_parameters);        return isDUafterUpdate_Variable_value;    }    private boolean isDUafterUpdate_compute(Variable v) {    if(!isDUbeforeCondition(v)) // start a circular evaluation here      return false;    if(getNumUpdateStmt() > 0)      return getUpdateStmt(getNumUpdateStmt()-1).isDUafter(v);    if(!getStmt().isDUafter(v))      return false;    for(Iterator iter = targetContinues().iterator(); iter.hasNext(); ) {      ContinueStmt stmt = (ContinueStmt)iter.next();      if(!stmt.isDUafterReachedFinallyBlocks(v))        return false;    }    return true;  }    protected java.util.Map localLookup_String_visited;    protected java.util.Map localLookup_String_values;    // Declared in LookupVariable.jrag at line 91 @SuppressWarnings({"unchecked", "cast"})     public SimpleSet localLookup(String name) {        Object _parameters = name;if(localLookup_String_visited == null) localLookup_String_visited = new java.util.HashMap(4);if(localLookup_String_values == null) localLookup_String_values = new java.util.HashMap(4);        if(localLookup_String_values.containsKey(_parameters))            return (SimpleSet)localLookup_String_values.get(_parameters);        if(new Integer(boundariesCrossed).equals(localLookup_String_visited.get(_parameters)))            throw new RuntimeException("Circular definition of attr: localLookup in class: ");        localLookup_String_visited.put(_parameters, new Integer(boundariesCrossed));        int num = boundariesCrossed;        boolean isFinal = this.is$Final();        SimpleSet localLookup_String_value = localLookup_compute(name);        if(isFinal && num == boundariesCrossed)            localLookup_String_values.put(_parameters, localLookup_String_value);        localLookup_String_visited.remove(_parameters);        return localLookup_String_value;    }    private SimpleSet localLookup_compute(String name) {    VariableDeclaration v = localVariableDeclaration(name);    if(v != null) return v;    return lookupVariable(name);  }    protected java.util.Map localVariableDeclaration_String_visited;    protected java.util.Map localVariableDeclaration_String_values;    // Declared in LookupVariable.jrag at line 121 @SuppressWarnings({"unchecked", "cast"})     public VariableDeclaration localVariableDeclaration(String name) {        Object _parameters = name;if(localVariableDeclaration_String_visited == null) localVariableDeclaration_String_visited = new java.util.HashMap(4);if(localVariableDeclaration_String_values == null) localVariableDeclaration_String_values = new java.util.HashMap(4);        if(localVariableDeclaration_String_values.containsKey(_parameters))            return (VariableDeclaration)localVariableDeclaration_String_values.get(_parameters);        if(new Integer(boundariesCrossed).equals(localVariableDeclaration_String_visited.get(_parameters)))            throw new RuntimeException("Circular definition of attr: localVariableDeclaration in class: ");        localVariableDeclaration_String_visited.put(_parameters, new Integer(boundariesCrossed));        int num = boundariesCrossed;        boolean isFinal = this.is$Final();        VariableDeclaration localVariableDeclaration_String_value = localVariableDeclaration_compute(name);        if(isFinal && num == boundariesCrossed)            localVariableDeclaration_String_values.put(_parameters, localVariableDeclaration_String_value);        localVariableDeclaration_String_visited.remove(_parameters);        return localVariableDeclaration_String_value;    }    private VariableDeclaration localVariableDeclaration_compute(String name) {    for(int i = 0; i < getNumInitStmt(); i++)      if(getInitStmt(i).declaresVariable(name))        return (VariableDeclaration)getInitStmt(i);    return null;  }    protected int continueLabel_visited = -1;    // Declared in NameCheck.jrag at line 397 @SuppressWarnings({"unchecked", "cast"})     public boolean continueLabel() {        if(continueLabel_visited == boundariesCrossed)            throw new RuntimeException("Circular definition of attr: continueLabel in class: ");        continueLabel_visited = boundariesCrossed;        boolean continueLabel_value = continueLabel_compute();        continueLabel_visited = -1;        return continueLabel_value;    }    private boolean continueLabel_compute() {  return true;  }    protected int canCompleteNormally_visited = -1;    // Declared in UnreachableStatements.jrag at line 102 @SuppressWarnings({"unchecked", "cast"})     public boolean canCompleteNormally() {        if(canCompleteNormally_computed)            return canCompleteNormally_value;        if(canCompleteNormally_visited == boundariesCrossed)            throw new RuntimeException("Circular definition of attr: canCompleteNormally in class: ");        canCompleteNormally_visited = boundariesCrossed;        int num = boundariesCrossed;        boolean isFinal = this.is$Final();        canCompleteNormally_value = canCompleteNormally_compute();        if(isFinal && num == boundariesCrossed)            canCompleteNormally_computed = true;        canCompleteNormally_visited = -1;        return canCompleteNormally_value;    }    private boolean canCompleteNormally_compute() {  return reachable() && hasCondition() && (!getCondition().isConstant() || !getCondition().isTrue()) || reachableBreak();  }    protected java.util.Map lookupVariable_String_visited;    protected java.util.Map lookupVariable_String_values;    // Declared in LookupVariable.jrag at line 18 @SuppressWarnings({"unchecked", "cast"})     public SimpleSet lookupVariable(String name) {        Object _parameters = name;if(lookupVariable_String_visited == null) lookupVariable_String_visited = new java.util.HashMap(4);if(lookupVariable_String_values == null) lookupVariable_String_values = new java.util.HashMap(4);        if(lookupVariable_String_values.containsKey(_parameters))            return (SimpleSet)lookupVariable_String_values.get(_parameters);        if(new Integer(boundariesCrossed).equals(lookupVariable_String_visited.get(_parameters)))            throw new RuntimeException("Circular definition of attr: lookupVariable in class: ");        lookupVariable_String_visited.put(_parameters, new Integer(boundariesCrossed));        int num = boundariesCrossed;        boolean isFinal = this.is$Final();        if(getParent() == null) throw new RuntimeException("Trying to evaluate attribute in subtree not attached to main tree");        SimpleSet lookupVariable_String_value = getParent().Define_SimpleSet_lookupVariable(this, null, name);        if(isFinal && num == boundariesCrossed)            lookupVariable_String_values.put(_parameters, lookupVariable_String_value);        lookupVariable_String_visited.remove(_parameters);        return lookupVariable_String_value;    }    // Declared in NameCheck.jrag at line 365    public boolean Define_boolean_insideLoop(ASTNode caller, ASTNode child) {        if(caller == getStmtNoTransform()) {            return true;        }        if(getParent() == null) throw new RuntimeException("Trying to evaluate attribute in subtree not attached to main tree");        return getParent().Define_boolean_insideLoop(this, caller);    }    // Declared in LookupVariable.jrag at line 90    public SimpleSet Define_SimpleSet_lookupVariable(ASTNode caller, ASTNode child, String name) {        if(caller == getStmtNoTransform()) {            return localLookup(name);        }        if(caller == getUpdateStmtListNoTransform()) {      int childIndex = caller.getIndexOfChild(child);            return localLookup(name);        }        if(caller == getConditionOptNoTransform()) {            return localLookup(name);        }        if(caller == getInitStmtListNoTransform()) {      int childIndex = caller.getIndexOfChild(child);            return localLookup(name);        }        if(getParent() == null) throw new RuntimeException("Trying to evaluate attribute in subtree not attached to main tree");        return getParent().Define_SimpleSet_lookupVariable(this, caller, name);    }    // Declared in UnreachableStatements.jrag at line 149    public boolean Define_boolean_reportUnreachable(ASTNode caller, ASTNode child) {        if(caller == getStmtNoTransform()) {            return reachable();        }        if(getParent() == null) throw new RuntimeException("Trying to evaluate attribute in subtree not attached to main tree");        return getParent().Define_boolean_reportUnreachable(this, caller);    }    // Declared in UnreachableStatements.jrag at line 103    public boolean Define_boolean_reachable(ASTNode caller, ASTNode child) {        if(caller == getStmtNoTransform()) {            return reachable() && (!hasCondition() || (!getCondition().isConstant() || !getCondition().isFalse()));        }        if(getParent() == null) throw new RuntimeException("Trying to evaluate attribute in subtree not attached to main tree");        return getParent().Define_boolean_reachable(this, caller);    }    // Declared in NameCheck.jrag at line 294    public VariableScope Define_VariableScope_outerScope(ASTNode caller, ASTNode child) {        if(caller == getStmtNoTransform()) {            return this;        }        if(caller == getInitStmtListNoTransform()) {      int childIndex = caller.getIndexOfChild(child);            return this;        }        if(getParent() == null) throw new RuntimeException("Trying to evaluate attribute in subtree not attached to main tree");        return getParent().Define_VariableScope_outerScope(this, caller);    }    // Declared in DefiniteAssignment.jrag at line 637    public boolean Define_boolean_isDAbefore(ASTNode caller, ASTNode child, Variable v) {        if(caller == getUpdateStmtListNoTransform()) {    int childIndex = caller.getIndexOfChild(child);{    if(!getStmt().isDAafter(v))      return false;    for(Iterator iter = targetContinues().iterator(); iter.hasNext(); ) {      ContinueStmt stmt = (ContinueStmt)iter.next();      if(!stmt.isDAafterReachedFinallyBlocks(v))        return false;    }    return true;  }}        if(caller == getStmtNoTransform()){    if(hasCondition() && getCondition().isDAafterTrue(v))      return true;    if(!hasCondition() && isDAafterInitialization(v))      return true;    return false;  }        if(caller == getConditionOptNoTransform()) {            return isDAafterInitialization(v);        }        if(caller == getInitStmtListNoTransform()) {      int i = caller.getIndexOfChild(child);            return i == 0 ? isDAbefore(v) : getInitStmt(i-1).isDAafter(v);        }        if(getParent() == null) throw new RuntimeException("Trying to evaluate attribute in subtree not attached to main tree");        return getParent().Define_boolean_isDAbefore(this, caller, v);    }    // Declared in DefiniteAssignment.jrag at line 1149    public boolean Define_boolean_isDUbefore(ASTNode caller, ASTNode child, Variable v) {        if(caller == getUpdateStmtListNoTransform()) {    int i = caller.getIndexOfChild(child);{    if(!isDUbeforeCondition(v)) // start a circular evaluation here      return false;    if(i == 0) {      if(!getStmt().isDUafter(v))        return false;      for(Iterator iter = targetContinues().iterator(); iter.hasNext(); ) {        ContinueStmt stmt = (ContinueStmt)iter.next();        if(!stmt.isDUafterReachedFinallyBlocks(v))          return false;      }      return true;    }    else      return getUpdateStmt(i-1).isDUafter(v);  }}        if(caller == getStmtNoTransform()) {            return isDUbeforeCondition(v) && (hasCondition() ?    getCondition().isDUafterTrue(v) : isDUafterInit(v));        }        if(caller == getConditionOptNoTransform()) {            return isDUbeforeCondition(v);        }        if(caller == getInitStmtListNoTransform()) {      int childIndex = caller.getIndexOfChild(child);            return childIndex == 0 ? isDUbefore(v) : getInitStmt(childIndex-1).isDUafter(v);        }        if(getParent() == null) throw new RuntimeException("Trying to evaluate attribute in subtree not attached to main tree");        return getParent().Define_boolean_isDUbefore(this, caller, v);    }public ASTNode rewriteTo() {    // Declared in DefiniteAssignment.jrag at line 1167    if(!hasCondition()) {        duringDefiniteAssignment++;        ASTNode result = rewriteRule0();        duringDefiniteAssignment--;        return result;    }    return super.rewriteTo();}    // Declared in DefiniteAssignment.jrag at line 1167    private ForStmt rewriteRule0() {         debugRewrite("Rewriting " + getClass().getName() + " using rule in DefiniteAssignment.jrag at line 1167");{      setCondition(new BooleanLiteral("true"));      return this;    }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?