primitivetype.java

来自「JDK1.4编译器后端」· Java 代码 · 共 347 行

JAVA
347
字号

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.*;public class PrimitiveType extends TypeDecl implements Cloneable {
    public void flushCache() {        super.flushCache();        narrowingConversionTo_TypeDecl_values = null;        instanceOf_TypeDecl_values = null;    }     @SuppressWarnings({"unchecked", "cast"})  public PrimitiveType clone() throws CloneNotSupportedException {        PrimitiveType node = (PrimitiveType)super.clone();        node.narrowingConversionTo_TypeDecl_values = null;        node.instanceOf_TypeDecl_values = null;        node.in$Circle(false);        node.is$Final(false);    return node;    }     @SuppressWarnings({"unchecked", "cast"})  public PrimitiveType copy() {      try {          PrimitiveType node = (PrimitiveType)clone();          if(children != null) node.children = (ASTNode[])children.clone();          return node;      } catch (CloneNotSupportedException e) {      }      System.err.println("Error: Could not clone node of type " + getClass().getName() + "!");      return null;    }     @SuppressWarnings({"unchecked", "cast"})  public PrimitiveType fullCopy() {        PrimitiveType res = (PrimitiveType)copy();        for(int i = 0; i < getNumChildNoTransform(); i++) {          ASTNode node = getChildNoTransform(i);          if(node != null) node = node.fullCopy();          res.setChild(node, i);        }        return res;    }    // Declared in QualifiedNames.jrag at line 108  public Access createQualifiedAccess() {    return new PrimitiveTypeAccess(name());  }    // Declared in TypeAnalysis.jrag at line 606    public boolean hasSuperclass() {    return !isObject();  }    // Declared in CodeGeneration.jrag at line 619  public void emitReturn(CodeGeneration gen) { gen.emit(Bytecode.IRETURN);}    // Declared in CodeGeneration.jrag at line 640  public void emitLoadLocal(CodeGeneration gen, int pos) {    gen.maxLocals = Math.max(gen.maxLocals, pos+1);    if(pos == 0) gen.emit(Bytecode.ILOAD_0);    else if(pos == 1) gen.emit(Bytecode.ILOAD_1);    else if(pos == 2) gen.emit(Bytecode.ILOAD_2);    else if(pos == 3) gen.emit(Bytecode.ILOAD_3);    else if(pos < 256) gen.emit(Bytecode.ILOAD).add(pos);    else gen.emit(Bytecode.WIDE).emit(Bytecode.ILOAD).add2(pos);  }    // Declared in CodeGeneration.jrag at line 753  public void emitStoreLocal(CodeGeneration gen, int pos) {    gen.maxLocals = Math.max(gen.maxLocals, pos+1);    if(pos == 0) gen.emit(Bytecode.ISTORE_0);    else if(pos == 1) gen.emit(Bytecode.ISTORE_1);    else if(pos == 2) gen.emit(Bytecode.ISTORE_2);    else if(pos == 3) gen.emit(Bytecode.ISTORE_3);    else if(pos < 256) gen.emit(Bytecode.ISTORE).add(pos);    else gen.emit(Bytecode.WIDE).emit(Bytecode.ISTORE).add2(pos);  }    // Declared in java.ast at line 3    // Declared in java.ast line 42
    public PrimitiveType() {        super();
        setChild(new Opt(), 1);
        setChild(new List(), 2);

    }    // Declared in java.ast at line 12
    // Declared in java.ast line 42    public PrimitiveType(Modifiers p0, String p1, Opt<Access> p2, List<BodyDecl> p3) {        setChild(p0, 0);        setID(p1);        setChild(p2, 1);        setChild(p3, 2);    }    // Declared in java.ast at line 20    // Declared in java.ast line 42    public PrimitiveType(Modifiers p0, beaver.Symbol p1, Opt<Access> p2, List<BodyDecl> p3) {        setChild(p0, 0);        setID(p1);        setChild(p2, 1);        setChild(p3, 2);    }    // Declared in java.ast at line 27  protected int numChildren() {
    return 3;
  }    // Declared in java.ast at line 30
  public boolean mayHaveRewrite() { return false; }    // Declared in java.ast at line 2    // Declared in java.ast line 42    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 42    public void setSuperClassAccessOpt(Opt<Access> opt) {        setChild(opt, 1);    }    // Declared in java.ast at line 6    public boolean hasSuperClassAccess() {        return getSuperClassAccessOpt().getNumChild() != 0;    }    // Declared in java.ast at line 10     @SuppressWarnings({"unchecked", "cast"})  public Access getSuperClassAccess() {        return (Access)getSuperClassAccessOpt().getChild(0);    }    // Declared in java.ast at line 14    public void setSuperClassAccess(Access node) {        getSuperClassAccessOpt().setChild(node, 0);    }    // Declared in java.ast at line 17     @SuppressWarnings({"unchecked", "cast"})  public Opt<Access> getSuperClassAccessOpt() {        return (Opt<Access>)getChild(1);    }    // Declared in java.ast at line 21     @SuppressWarnings({"unchecked", "cast"})  public Opt<Access> getSuperClassAccessOptNoTransform() {        return (Opt<Access>)getChildNoTransform(1);    }    // Declared in java.ast at line 2    // Declared in java.ast line 42    public void setBodyDeclList(List<BodyDecl> list) {        setChild(list, 2);    }    // 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(2);    }    // Declared in java.ast at line 35     @SuppressWarnings({"unchecked", "cast"})  public List<BodyDecl> getBodyDeclListNoTransform() {        return (List<BodyDecl>)getChildNoTransform(2);    }    // Declared in TypeAnalysis.jrag at line 22 @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 28 @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) {  return type.instanceOf(this);  }    // Declared in TypeAnalysis.jrag at line 170 @SuppressWarnings({"unchecked", "cast"})     public boolean isPrimitiveType() {        boolean isPrimitiveType_value = isPrimitiveType_compute();        return isPrimitiveType_value;    }    private boolean isPrimitiveType_compute() {  return true;  }    // Declared in TypeAnalysis.jrag at line 223 @SuppressWarnings({"unchecked", "cast"})     public boolean isPrimitive() {        boolean isPrimitive_value = isPrimitive_compute();        return isPrimitive_value;    }    private boolean isPrimitive_compute() {  return true;  }    // Declared in TypeAnalysis.jrag at line 413 @SuppressWarnings({"unchecked", "cast"})     public boolean instanceOf(TypeDecl type) {        Object _parameters = type;if(instanceOf_TypeDecl_values == null) instanceOf_TypeDecl_values = new java.util.HashMap(4);        if(instanceOf_TypeDecl_values.containsKey(_parameters))            return ((Boolean)instanceOf_TypeDecl_values.get(_parameters)).booleanValue();        int num = boundariesCrossed;        boolean isFinal = this.is$Final();        boolean instanceOf_TypeDecl_value = instanceOf_compute(type);        if(isFinal && num == boundariesCrossed)            instanceOf_TypeDecl_values.put(_parameters, Boolean.valueOf(instanceOf_TypeDecl_value));        return instanceOf_TypeDecl_value;    }    private boolean instanceOf_compute(TypeDecl type) {  return type.isSupertypeOfPrimitiveType(this);  }    // Declared in TypeAnalysis.jrag at line 477 @SuppressWarnings({"unchecked", "cast"})     public boolean isSupertypeOfPrimitiveType(PrimitiveType type) {        boolean isSupertypeOfPrimitiveType_PrimitiveType_value = isSupertypeOfPrimitiveType_compute(type);        return isSupertypeOfPrimitiveType_PrimitiveType_value;    }    private boolean isSupertypeOfPrimitiveType_compute(PrimitiveType type) {    if(super.isSupertypeOfPrimitiveType(type))      return true;    return type.hasSuperclass() && type.superclass().isPrimitive() && type.superclass().instanceOf(this);  }    // Declared in TypeAnalysis.jrag at line 610 @SuppressWarnings({"unchecked", "cast"})     public TypeDecl superclass() {        TypeDecl superclass_value = superclass_compute();        return superclass_value;    }    private TypeDecl superclass_compute() {  return getSuperClassAccess().type();  }    // Declared in LocalNum.jrag at line 126 @SuppressWarnings({"unchecked", "cast"})     public int variableSize() {        int variableSize_value = variableSize_compute();        return variableSize_value;    }    private int variableSize_compute() {  return 1;  }    // Declared in TypeAnalysis.jrag at line 575    public TypeDecl Define_TypeDecl_hostType(ASTNode caller, ASTNode child) {        if(caller == getSuperClassAccessOptNoTransform()) {            return hostType();        }        return super.Define_TypeDecl_hostType(caller, child);    }public ASTNode rewriteTo() {    return super.rewriteTo();}}

⌨️ 快捷键说明

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