doubletype.java

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

JAVA
521
字号

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 DoubleType extends FloatingPointType implements Cloneable {
    public void flushCache() {        super.flushCache();        typeDescriptor_computed = false;        typeDescriptor_value = null;        jvmName_computed = false;        jvmName_value = null;    }     @SuppressWarnings({"unchecked", "cast"})  public DoubleType clone() throws CloneNotSupportedException {        DoubleType node = (DoubleType)super.clone();        node.typeDescriptor_computed = false;        node.typeDescriptor_value = null;        node.jvmName_computed = false;        node.jvmName_value = null;        node.in$Circle(false);        node.is$Final(false);    return node;    }     @SuppressWarnings({"unchecked", "cast"})  public DoubleType copy() {      try {          DoubleType node = (DoubleType)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 DoubleType fullCopy() {        DoubleType res = (DoubleType)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 Attributes.jrag at line 66  public int addConstant(ConstantPool p, Constant c)   { return p.addConstant(c.doubleValue()); }    // Declared in CodeGeneration.jrag at line 550  public void emitPushConstant(CodeGeneration gen, int value) { DoubleLiteral.push(gen, value); }    // Declared in CodeGeneration.jrag at line 622  public void emitReturn(CodeGeneration gen)    { gen.emit(Bytecode.DRETURN);}    // Declared in CodeGeneration.jrag at line 667  public void emitLoadLocal(CodeGeneration gen, int pos) {    gen.maxLocals = Math.max(gen.maxLocals, pos+2);    if(pos == 0) gen.emit(Bytecode.DLOAD_0);    else if(pos == 1) gen.emit(Bytecode.DLOAD_1);    else if(pos == 2) gen.emit(Bytecode.DLOAD_2);    else if(pos == 3) gen.emit(Bytecode.DLOAD_3);    else if(pos < 256) gen.emit(Bytecode.DLOAD).add(pos);    else gen.emit(Bytecode.WIDE).emit(Bytecode.DLOAD).add2(pos);  }    // Declared in CodeGeneration.jrag at line 780  public void emitStoreLocal(CodeGeneration gen, int pos) {    gen.maxLocals = Math.max(gen.maxLocals, pos+2);    if(pos == 0) gen.emit(Bytecode.DSTORE_0);    else if(pos == 1) gen.emit(Bytecode.DSTORE_1);    else if(pos == 2) gen.emit(Bytecode.DSTORE_2);    else if(pos == 3) gen.emit(Bytecode.DSTORE_3);    else if(pos < 256) gen.emit(Bytecode.DSTORE).add(pos);    else gen.emit(Bytecode.WIDE).emit(Bytecode.DSTORE).add2(pos);  }    // Declared in CodeGeneration.jrag at line 851  public void emitDup(CodeGeneration gen)    { gen.emit(Bytecode.DUP2); }    // Declared in CodeGeneration.jrag at line 856  public void emitDup_x1(CodeGeneration gen) { gen.emit(Bytecode.DUP2_X1); }    // Declared in CodeGeneration.jrag at line 861  public void emitDup_x2(CodeGeneration gen) { gen.emit(Bytecode.DUP2_X2); }    // Declared in CodeGeneration.jrag at line 866  public void emitPop(CodeGeneration gen)    { gen.emit(Bytecode.POP2); }    // Declared in CodeGeneration.jrag at line 950  void emitCastTo(CodeGeneration gen, TypeDecl type)   { type.doubleToThis(gen); }    // Declared in CodeGeneration.jrag at line 962  void intToThis(CodeGeneration gen) { gen.emit(Bytecode.I2D); }    // Declared in CodeGeneration.jrag at line 974  void floatToThis(CodeGeneration gen) { gen.emit(Bytecode.F2D); }    // Declared in CodeGeneration.jrag at line 983  void doubleToThis(CodeGeneration gen) { }    // Declared in CodeGeneration.jrag at line 992  void longToThis(CodeGeneration gen) { gen.emit(Bytecode.L2D); }    // Declared in CodeGeneration.jrag at line 999  void byteToThis(CodeGeneration gen)   { gen.emit(Bytecode.I2D);}    // Declared in CodeGeneration.jrag at line 1007  void charToThis(CodeGeneration gen)   { gen.emit(Bytecode.I2D);}    // Declared in CodeGeneration.jrag at line 1015  void shortToThis(CodeGeneration gen)   { gen.emit(Bytecode.I2D); }    // Declared in CodeGeneration.jrag at line 1046  void neg(CodeGeneration gen)   { gen.emit(Bytecode.DNEG); }    // Declared in CodeGeneration.jrag at line 1058  void add(CodeGeneration gen) {gen.emit(Bytecode.DADD);}    // Declared in CodeGeneration.jrag at line 1064  void sub(CodeGeneration gen) {gen.emit(Bytecode.DSUB);}    // Declared in CodeGeneration.jrag at line 1070  void mul(CodeGeneration gen) {gen.emit(Bytecode.DMUL);}    // Declared in CodeGeneration.jrag at line 1076  void div(CodeGeneration gen) {gen.emit(Bytecode.DDIV);}    // Declared in CodeGeneration.jrag at line 1082  void rem(CodeGeneration gen) {gen.emit(Bytecode.DREM);}    // Declared in CodeGeneration.jrag at line 1115  public void branchLT(CodeGeneration gen, int label)   { gen.emit(Bytecode.DCMPG).emitCompare(Bytecode.IFLT, label); }    // Declared in CodeGeneration.jrag at line 1121  public void branchLE(CodeGeneration gen, int label)   { gen.emit(Bytecode.DCMPG).emitCompare(Bytecode.IFLE, label); }    // Declared in CodeGeneration.jrag at line 1127  public void branchGE(CodeGeneration gen, int label)   { gen.emit(Bytecode.DCMPL).emitCompare(Bytecode.IFGE, label); }    // Declared in CodeGeneration.jrag at line 1133  public void branchGT(CodeGeneration gen, int label)   { gen.emit(Bytecode.DCMPL).emitCompare(Bytecode.IFGT, label); }    // Declared in CodeGeneration.jrag at line 1139  public void branchEQ(CodeGeneration gen, int label)    { gen.emit(Bytecode.DCMPL).emitCompare(Bytecode.IFEQ, label); }    // Declared in CodeGeneration.jrag at line 1148  public void branchNE(CodeGeneration gen, int label)    { gen.emit(Bytecode.DCMPL).emitCompare(Bytecode.IFNE, label); }    // Declared in java.ast at line 3    // Declared in java.ast line 60
    public DoubleType() {        super();
        setChild(new Opt(), 1);
        setChild(new List(), 2);

    }    // Declared in java.ast at line 12
    // Declared in java.ast line 60    public DoubleType(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 60    public DoubleType(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) {

⌨️ 快捷键说明

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