block.java

来自「JDK1.4编译器后端」· Java 代码 · 共 513 行 · 第 1/2 页

JAVA
513
字号
        boolean isFinal = this.is$Final();        boolean checkReturnDU_Variable_value = checkReturnDU_compute(v);        if(isFinal && num == boundariesCrossed)            checkReturnDU_Variable_values.put(_parameters, Boolean.valueOf(checkReturnDU_Variable_value));        return checkReturnDU_Variable_value;    }    private boolean checkReturnDU_compute(Variable v) {    HashSet set = new HashSet();    collectBranches(set);    for(Iterator iter = set.iterator(); iter.hasNext(); ) {      Object o = iter.next();      if(o instanceof ReturnStmt) {        ReturnStmt stmt = (ReturnStmt)o;        if(!stmt.isDUafterReachedFinallyBlocks(v))          return false;      }    }    return true;  }    // Declared in DefiniteAssignment.jrag at line 874 @SuppressWarnings({"unchecked", "cast"})     public boolean isDUafter(Variable v) {        Object _parameters = v;if(isDUafter_Variable_values == null) isDUafter_Variable_values = new java.util.HashMap(4);        if(isDUafter_Variable_values.containsKey(_parameters))            return ((Boolean)isDUafter_Variable_values.get(_parameters)).booleanValue();        int num = boundariesCrossed;        boolean isFinal = this.is$Final();        boolean isDUafter_Variable_value = isDUafter_compute(v);        if(isFinal && num == boundariesCrossed)            isDUafter_Variable_values.put(_parameters, Boolean.valueOf(isDUafter_Variable_value));        return isDUafter_Variable_value;    }    private boolean isDUafter_compute(Variable v) {  return getNumStmt() == 0 ? isDUbefore(v) : getStmt(getNumStmt()-1).isDUafter(v);  }    protected java.util.Map localVariableDeclaration_String_values;    // Declared in LookupVariable.jrag at line 114 @SuppressWarnings({"unchecked", "cast"})     public VariableDeclaration localVariableDeclaration(String name) {        Object _parameters = name;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);        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);        return localVariableDeclaration_String_value;    }    private VariableDeclaration localVariableDeclaration_compute(String name) {    for(int i = 0; i < getNumStmt(); i++)      if(getStmt(i).declaresVariable(name))        return (VariableDeclaration)getStmt(i);    return null;  }    // Declared in UnreachableStatements.jrag at line 37 @SuppressWarnings({"unchecked", "cast"})     public boolean canCompleteNormally() {        if(canCompleteNormally_computed)            return canCompleteNormally_value;        int num = boundariesCrossed;        boolean isFinal = this.is$Final();        canCompleteNormally_value = canCompleteNormally_compute();        if(isFinal && num == boundariesCrossed)            canCompleteNormally_computed = true;        return canCompleteNormally_value;    }    private boolean canCompleteNormally_compute() {  return getNumStmt() == 0 ? reachable() : getStmt(getNumStmt() - 1).canCompleteNormally();  }    protected java.util.Map variableScopeEndLabel_CodeGeneration_values;    // Declared in CodeGeneration.jrag at line 43 @SuppressWarnings({"unchecked", "cast"})     public int variableScopeEndLabel(CodeGeneration gen) {        Object _parameters = gen;if(variableScopeEndLabel_CodeGeneration_values == null) variableScopeEndLabel_CodeGeneration_values = new java.util.HashMap(4);        if(variableScopeEndLabel_CodeGeneration_values.containsKey(_parameters))            return ((Integer)variableScopeEndLabel_CodeGeneration_values.get(_parameters)).intValue();        int num = boundariesCrossed;        boolean isFinal = this.is$Final();        int variableScopeEndLabel_CodeGeneration_value = variableScopeEndLabel_compute(gen);        if(isFinal && num == boundariesCrossed)            variableScopeEndLabel_CodeGeneration_values.put(_parameters, new Integer(variableScopeEndLabel_CodeGeneration_value));        return variableScopeEndLabel_CodeGeneration_value;    }    private int variableScopeEndLabel_compute(CodeGeneration gen) {  return gen.variableScopeLabel();  }    protected java.util.Map lookupType_String_values;    // Declared in LookupType.jrag at line 175 @SuppressWarnings({"unchecked", "cast"})     public SimpleSet lookupType(String name) {        Object _parameters = name;if(lookupType_String_values == null) lookupType_String_values = new java.util.HashMap(4);        if(lookupType_String_values.containsKey(_parameters))            return (SimpleSet)lookupType_String_values.get(_parameters);        int num = boundariesCrossed;        boolean isFinal = this.is$Final();        SimpleSet lookupType_String_value = getParent().Define_SimpleSet_lookupType(this, null, name);        if(isFinal && num == boundariesCrossed)            lookupType_String_values.put(_parameters, lookupType_String_value);        return lookupType_String_value;    }    protected java.util.Map lookupVariable_String_values;    // Declared in LookupVariable.jrag at line 17 @SuppressWarnings({"unchecked", "cast"})     public SimpleSet lookupVariable(String name) {        Object _parameters = name;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);        int num = boundariesCrossed;        boolean isFinal = this.is$Final();        SimpleSet lookupVariable_String_value = getParent().Define_SimpleSet_lookupVariable(this, null, name);        if(isFinal && num == boundariesCrossed)            lookupVariable_String_values.put(_parameters, lookupVariable_String_value);        return lookupVariable_String_value;    }    // Declared in UnreachableStatements.jrag at line 28 @SuppressWarnings({"unchecked", "cast"})     public boolean reachable() {        boolean reachable_value = getParent().Define_boolean_reachable(this, null);        return reachable_value;    }    // Declared in LocalNum.jrag at line 110    public int Define_int_localNum(ASTNode caller, ASTNode child) {        if(caller == getStmtListNoTransform()) {    int index = caller.getIndexOfChild(child);{    if(index == 0)      return localNum();    if(getStmt(index-1) instanceof VariableDeclaration)      return getStmt(index-1).localNum() + ((VariableDeclaration)getStmt(index-1)).type().variableSize();    return getStmt(index-1).localNum();  }}        return getParent().Define_int_localNum(this, caller);    }    // Declared in LookupVariable.jrag at line 68    public SimpleSet Define_SimpleSet_lookupVariable(ASTNode caller, ASTNode child, String name) {        if(caller == getStmtListNoTransform()) {    int index = caller.getIndexOfChild(child);{    VariableDeclaration v = localVariableDeclaration(name);    // declare before use and shadowing    if(v != null && declaredBeforeUse(v, index))      return v;    return lookupVariable(name);  }}        return getParent().Define_SimpleSet_lookupVariable(this, caller, name);    }    // Declared in CodeGeneration.jrag at line 44    public int Define_int_variableScopeEndLabel(ASTNode caller, ASTNode child, CodeGeneration gen) {        if(caller == getStmtListNoTransform()) {      int i = caller.getIndexOfChild(child);            return variableScopeEndLabel(gen);        }        return getParent().Define_int_variableScopeEndLabel(this, caller, gen);    }    // Declared in UnreachableStatements.jrag at line 146    public boolean Define_boolean_reportUnreachable(ASTNode caller, ASTNode child) {        if(caller == getStmtListNoTransform()) {      int i = caller.getIndexOfChild(child);            return i == 0 ? reachable() : getStmt(i-1).reachable();        }        return getParent().Define_boolean_reportUnreachable(this, caller);    }    // Declared in DefiniteAssignment.jrag at line 52    public boolean Define_boolean_isIncOrDec(ASTNode caller, ASTNode child) {        if(caller == getStmtListNoTransform()) {      int childIndex = caller.getIndexOfChild(child);            return false;        }        return getParent().Define_boolean_isIncOrDec(this, caller);    }    // Declared in UnreachableStatements.jrag at line 38    public boolean Define_boolean_reachable(ASTNode caller, ASTNode child) {        if(caller == getStmtListNoTransform()) {      int childIndex = caller.getIndexOfChild(child);            return childIndex == 0 ? reachable() : getStmt(childIndex-1).canCompleteNormally();        }        return getParent().Define_boolean_reachable(this, caller);    }    // Declared in SyntacticClassification.jrag at line 116    public NameType Define_NameType_nameType(ASTNode caller, ASTNode child) {        if(caller == getStmtListNoTransform()) {      int childIndex = caller.getIndexOfChild(child);            return NameType.EXPRESSION_NAME;        }        return getParent().Define_NameType_nameType(this, caller);    }    // Declared in NameCheck.jrag at line 291    public VariableScope Define_VariableScope_outerScope(ASTNode caller, ASTNode child) {        if(caller == getStmtListNoTransform()) {      int childIndex = caller.getIndexOfChild(child);            return this;        }        return getParent().Define_VariableScope_outerScope(this, caller);    }    // Declared in DefiniteAssignment.jrag at line 445    public boolean Define_boolean_isDAbefore(ASTNode caller, ASTNode child, Variable v) {        if(caller == getStmtListNoTransform()) {      int index = caller.getIndexOfChild(child);            return index == 0 ? isDAbefore(v) : getStmt(index - 1).isDAafter(v);        }        return getParent().Define_boolean_isDAbefore(this, caller, v);    }    // Declared in LookupType.jrag at line 292    public SimpleSet Define_SimpleSet_lookupType(ASTNode caller, ASTNode child, String name) {        if(caller == getStmtListNoTransform()) {    int index = caller.getIndexOfChild(child);{    SimpleSet c = SimpleSet.emptySet;    for(int i = index; i >= 0 && !(getStmt(i) instanceof Case); i--) {      if(getStmt(i) instanceof LocalClassDeclStmt) {        TypeDecl t = ((LocalClassDeclStmt)getStmt(i)).getClassDecl();        if(t.name().equals(name)) {          c = c.add(t);        }      }    }    if(!c.isEmpty())      return c;    return lookupType(name);  }}        return getParent().Define_SimpleSet_lookupType(this, caller, name);    }    // Declared in DefiniteAssignment.jrag at line 875    public boolean Define_boolean_isDUbefore(ASTNode caller, ASTNode child, Variable v) {        if(caller == getStmtListNoTransform()) {      int index = caller.getIndexOfChild(child);            return index == 0 ? isDUbefore(v) : getStmt(index - 1).isDUafter(v);        }        return getParent().Define_boolean_isDUbefore(this, caller, v);    }public ASTNode rewriteTo() {    return super.rewriteTo();}}

⌨️ 快捷键说明

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