⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 referencetype.java

📁 JDK1.4编译器后端
💻 JAVA
字号:

package AST;
import java.util.HashSet;import java.util.LinkedHashSet;import java.io.FileNotFoundException;import java.io.File;import java.util.*;import beaver.*;import java.util.ArrayList;import java.util.zip.*;import java.io.*;// 4.1 The Kinds of Types and Valuespublic abstract class ReferenceType extends TypeDecl implements Cloneable {
    public void flushCache() {        super.flushCache();        narrowingConversionTo_TypeDecl_values = null;        bcFields_computed = false;        bcFields_value = null;        jvmName_computed = false;        jvmName_value = null;    }     @SuppressWarnings({"unchecked", "cast"})  public ReferenceType clone() throws CloneNotSupportedException {        ReferenceType node = (ReferenceType)super.clone();        node.narrowingConversionTo_TypeDecl_values = null;        node.bcFields_computed = false;        node.bcFields_value = null;        node.jvmName_computed = false;        node.jvmName_value = null;        node.in$Circle(false);        node.is$Final(false);    return node;    }    // Declared in CodeGeneration.jrag at line 623  public void emitReturn(CodeGeneration gen) { gen.emit(Bytecode.ARETURN);}    // Declared in CodeGeneration.jrag at line 676  public void emitLoadLocal(CodeGeneration gen, int pos) {    gen.emitLoadReference(pos);  }    // Declared in CodeGeneration.jrag at line 789  public void emitStoreLocal(CodeGeneration gen, int pos) {    gen.emitStoreReference(pos);  }    // Declared in CodeGeneration.jrag at line 947  void emitCastTo(CodeGeneration gen, TypeDecl type) { if(!instanceOf(type) && !type.isNull()) gen.emitCheckCast(type); }    // Declared in CodeGeneration.jrag at line 1144  public void branchEQ(CodeGeneration gen, int label) { gen.emitCompare(Bytecode.IF_ACMPEQ, label); }    // Declared in CodeGeneration.jrag at line 1153  public void branchNE(CodeGeneration gen, int label) { gen.emitCompare(Bytecode.IF_ACMPNE, label); }    // Declared in java.ast at line 3    // Declared in java.ast line 41
    public ReferenceType() {        super();
        setChild(new List(), 1);

    }    // Declared in java.ast at line 11
    // Declared in java.ast line 41    public ReferenceType(Modifiers p0, String p1, List<BodyDecl> p2) {        setChild(p0, 0);        setID(p1);        setChild(p2, 1);    }    // Declared in java.ast at line 18    // Declared in java.ast line 41    public ReferenceType(Modifiers p0, beaver.Symbol p1, List<BodyDecl> p2) {        setChild(p0, 0);        setID(p1);        setChild(p2, 1);    }    // Declared in java.ast at line 24  protected int numChildren() {
    return 2;
  }    // Declared in java.ast at line 27
  public boolean mayHaveRewrite() { return false; }    // Declared in java.ast at line 2    // Declared in java.ast line 38    public void setModifiers(Modifiers node) {        setChild(node, 0);    }    // Declared in java.ast at line 5    public Modifiers getModifiers() {        return (Modifiers)getChild(0);    }    // Declared in java.ast at line 9    public Modifiers getModifiersNoTransform() {        return (Modifiers)getChildNoTransform(0);    }    // Declared in java.ast at line 2    // Declared in java.ast line 38    public void setBodyDeclList(List<BodyDecl> list) {        setChild(list, 1);    }    // Declared in java.ast at line 6    private int getNumBodyDecl = 0;    // Declared in java.ast at line 7    public int getNumBodyDecl() {        return getBodyDeclList().getNumChild();    }    // Declared in java.ast at line 11     @SuppressWarnings({"unchecked", "cast"})  public BodyDecl getBodyDecl(int i) {        return (BodyDecl)getBodyDeclList().getChild(i);    }    // Declared in java.ast at line 15    public void addBodyDecl(BodyDecl node) {        List<BodyDecl> list = getBodyDeclList();        list.addChild(node);    }    // Declared in java.ast at line 20    public void setBodyDecl(BodyDecl node, int i) {        List<BodyDecl> list = getBodyDeclList();        list.setChild(node, i);    }    // Declared in java.ast at line 24    public List<BodyDecl> getBodyDecls() {        return getBodyDeclList();    }    // Declared in java.ast at line 27    public List<BodyDecl> getBodyDeclsNoTransform() {        return getBodyDeclListNoTransform();    }    // Declared in java.ast at line 31     @SuppressWarnings({"unchecked", "cast"})  public List<BodyDecl> getBodyDeclList() {        return (List<BodyDecl>)getChild(1);    }    // Declared in java.ast at line 35     @SuppressWarnings({"unchecked", "cast"})  public List<BodyDecl> getBodyDeclListNoTransform() {        return (List<BodyDecl>)getChildNoTransform(1);    }    // Declared in TypeAnalysis.jrag at line 34 @SuppressWarnings({"unchecked", "cast"})     public boolean wideningConversionTo(TypeDecl type) {        boolean wideningConversionTo_TypeDecl_value = wideningConversionTo_compute(type);        return wideningConversionTo_TypeDecl_value;    }    private boolean wideningConversionTo_compute(TypeDecl type) {  return instanceOf(type);  }    // Declared in TypeAnalysis.jrag at line 37 @SuppressWarnings({"unchecked", "cast"})     public boolean narrowingConversionTo(TypeDecl type) {        Object _parameters = type;if(narrowingConversionTo_TypeDecl_values == null) narrowingConversionTo_TypeDecl_values = new java.util.HashMap(4);        if(narrowingConversionTo_TypeDecl_values.containsKey(_parameters))            return ((Boolean)narrowingConversionTo_TypeDecl_values.get(_parameters)).booleanValue();        int num = boundariesCrossed;        boolean isFinal = this.is$Final();        boolean narrowingConversionTo_TypeDecl_value = narrowingConversionTo_compute(type);        if(isFinal && num == boundariesCrossed)            narrowingConversionTo_TypeDecl_values.put(_parameters, Boolean.valueOf(narrowingConversionTo_TypeDecl_value));        return narrowingConversionTo_TypeDecl_value;    }    private boolean narrowingConversionTo_compute(TypeDecl type) {    if(type.instanceOf(this))      return true;    if(isClassDecl() && !getModifiers().isFinal() && type.isInterfaceDecl())      return true;    if(isInterfaceDecl() && type.isClassDecl() && !type.getModifiers().isFinal())      return true;    if(isInterfaceDecl() && type.instanceOf(this))      return true;    if(fullName().equals("java.lang.Object") && type.isInterfaceDecl())      return true;    // Dragons    // TODO: Check if both are interfaces with compatible methods    if(isArrayDecl() && type.isArrayDecl() && elementType().instanceOf(type.elementType()))      return true;    return false;  }    // Declared in TypeAnalysis.jrag at line 167 @SuppressWarnings({"unchecked", "cast"})     public boolean isReferenceType() {        boolean isReferenceType_value = isReferenceType_compute();        return isReferenceType_value;    }    private boolean isReferenceType_compute() {  return true;  }    // Declared in TypeAnalysis.jrag at line 484 @SuppressWarnings({"unchecked", "cast"})     public boolean isSupertypeOfNullType(NullType type) {        boolean isSupertypeOfNullType_NullType_value = isSupertypeOfNullType_compute(type);        return isSupertypeOfNullType_NullType_value;    }    private boolean isSupertypeOfNullType_compute(NullType type) {  return true;  }    // Declared in CodeGeneration.jrag at line 629 @SuppressWarnings({"unchecked", "cast"})     public byte arrayLoad() {        byte arrayLoad_value = arrayLoad_compute();        return arrayLoad_value;    }    private byte arrayLoad_compute() {  return Bytecode.AALOAD;  }    // Declared in CodeGeneration.jrag at line 731 @SuppressWarnings({"unchecked", "cast"})     public byte arrayStore() {        byte arrayStore_value = arrayStore_compute();        return arrayStore_value;    }    private byte arrayStore_compute() {  return Bytecode.AASTORE;  }    // Declared in GenerateClassfile.jrag at line 276 @SuppressWarnings({"unchecked", "cast"})     public Collection bcFields() {        if(bcFields_computed)            return bcFields_value;        int num = boundariesCrossed;        boolean isFinal = this.is$Final();        bcFields_value = bcFields_compute();        if(isFinal && num == boundariesCrossed)            bcFields_computed = true;        return bcFields_value;    }    private Collection bcFields_compute() {    ArrayList l = new ArrayList();    for(int i = 0; i < getNumBodyDecl(); i++)       if(getBodyDecl(i).isBytecodeField() && getBodyDecl(i).generate())        l.add(getBodyDecl(i));    return l;  }    // Declared in GenerateClassfile.jrag at line 284 @SuppressWarnings({"unchecked", "cast"})     public Collection bcMethods() {        Collection bcMethods_value = bcMethods_compute();        return bcMethods_value;    }    private Collection bcMethods_compute() {    ArrayList l = new ArrayList();    constructors();    for(int i = 0; i < getNumBodyDecl(); i++)      if(getBodyDecl(i).isBytecodeMethod() && getBodyDecl(i).generate())        l.add(getBodyDecl(i));    return l;  }    // Declared in InnerClasses.jrag at line 80 @SuppressWarnings({"unchecked", "cast"})     public TypeDecl stringPromotion() {        TypeDecl stringPromotion_value = stringPromotion_compute();        return stringPromotion_value;    }    private TypeDecl stringPromotion_compute() {  return typeObject();  }    // Declared in Java2Rewrites.jrag at line 18 @SuppressWarnings({"unchecked", "cast"})     public String jvmName() {        if(jvmName_computed)            return jvmName_value;        int num = boundariesCrossed;        boolean isFinal = this.is$Final();        jvmName_value = jvmName_compute();        if(isFinal && num == boundariesCrossed)            jvmName_computed = true;        return jvmName_value;    }    private String jvmName_compute() {    if(!isNestedType())      return fullName();    else if(isAnonymous() || isLocalClass())      return enclosingType().jvmName() + "$" + uniqueIndex() + name();    else      return enclosingType().jvmName() + "$" + name();  }    // Declared in Java2Rewrites.jrag at line 60 @SuppressWarnings({"unchecked", "cast"})     public String referenceClassFieldName() {        String referenceClassFieldName_value = referenceClassFieldName_compute();        return referenceClassFieldName_value;    }    private String referenceClassFieldName_compute() {  return "class$" + jvmName().replace('[', '$').replace('.', '$').replace(';', ' ').trim();  }    // Declared in LocalNum.jrag at line 125 @SuppressWarnings({"unchecked", "cast"})     public int variableSize() {        int variableSize_value = variableSize_compute();        return variableSize_value;    }    private int variableSize_compute() {  return 1;  }public ASTNode rewriteTo() {    return super.rewriteTo();}}

⌨️ 快捷键说明

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