< prev index next >

src/java.xml/share/classes/com/sun/org/apache/bcel/internal/generic/ArithmeticInstruction.java

Print this page




   4  */
   5 /*
   6  * Licensed to the Apache Software Foundation (ASF) under one or more
   7  * contributor license agreements.  See the NOTICE file distributed with
   8  * this work for additional information regarding copyright ownership.
   9  * The ASF licenses this file to You under the Apache License, Version 2.0
  10  * (the "License"); you may not use this file except in compliance with
  11  * the License.  You may obtain a copy of the License at
  12  *
  13  *      http://www.apache.org/licenses/LICENSE-2.0
  14  *
  15  * Unless required by applicable law or agreed to in writing, software
  16  * distributed under the License is distributed on an "AS IS" BASIS,
  17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  18  * See the License for the specific language governing permissions and
  19  * limitations under the License.
  20  */
  21 
  22 package com.sun.org.apache.bcel.internal.generic;
  23 
  24 import com.sun.org.apache.bcel.internal.Constants;

  25 /**
  26  * Super class for the family of arithmetic instructions.
  27  *
  28  * @author  <A HREF="mailto:markus.dahm@berlin.de">M. Dahm</A>
  29  */
  30 public abstract class ArithmeticInstruction extends Instruction
  31   implements TypedInstruction, StackProducer, StackConsumer {

  32   /**
  33    * Empty constructor needed for the Class.newInstance() statement in
  34    * Instruction.readInstruction(). Not to be used otherwise.
  35    */
  36   ArithmeticInstruction() {}


  37 
  38   /**
  39    * @param opcode of instruction
  40    */
  41   protected ArithmeticInstruction(short opcode) {
  42     super(opcode, (short)1);
  43   }
  44 

  45   /** @return type associated with the instruction
  46    */
  47   public Type getType(ConstantPoolGen cp) {
  48     switch(opcode) {
  49     case Constants.DADD: case Constants.DDIV: case Constants.DMUL:
  50     case Constants.DNEG: case Constants.DREM: case Constants.DSUB:






  51       return Type.DOUBLE;
  52 
  53     case Constants.FADD: case Constants.FDIV: case Constants.FMUL:
  54     case Constants.FNEG: case Constants.FREM: case Constants.FSUB:



  55       return Type.FLOAT;
  56 
  57     case Constants.IADD: case Constants.IAND: case Constants.IDIV:
  58     case Constants.IMUL: case Constants.INEG: case Constants.IOR: case Constants.IREM:
  59     case Constants.ISHL: case Constants.ISHR: case Constants.ISUB:
  60     case Constants.IUSHR: case Constants.IXOR:







  61       return Type.INT;
  62 
  63     case Constants.LADD: case Constants.LAND: case Constants.LDIV:
  64     case Constants.LMUL: case Constants.LNEG: case Constants.LOR: case Constants.LREM:
  65     case Constants.LSHL: case Constants.LSHR: case Constants.LSUB:
  66     case Constants.LUSHR: case Constants.LXOR:







  67       return Type.LONG;
  68 
  69     default: // Never reached
  70       throw new ClassGenException("Unknown type " + opcode);
  71     }
  72   }
  73 }


   4  */
   5 /*
   6  * Licensed to the Apache Software Foundation (ASF) under one or more
   7  * contributor license agreements.  See the NOTICE file distributed with
   8  * this work for additional information regarding copyright ownership.
   9  * The ASF licenses this file to You under the Apache License, Version 2.0
  10  * (the "License"); you may not use this file except in compliance with
  11  * the License.  You may obtain a copy of the License at
  12  *
  13  *      http://www.apache.org/licenses/LICENSE-2.0
  14  *
  15  * Unless required by applicable law or agreed to in writing, software
  16  * distributed under the License is distributed on an "AS IS" BASIS,
  17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  18  * See the License for the specific language governing permissions and
  19  * limitations under the License.
  20  */
  21 
  22 package com.sun.org.apache.bcel.internal.generic;
  23 
  24 import com.sun.org.apache.bcel.internal.Const;
  25 
  26 /**
  27  * Super class for the family of arithmetic instructions.
  28  *
  29  * @version $Id: ArithmeticInstruction.java 1747278 2016-06-07 17:28:43Z britter $
  30  */
  31 public abstract class ArithmeticInstruction extends Instruction implements TypedInstruction,
  32         StackProducer, StackConsumer {
  33 
  34     /**
  35      * Empty constructor needed for the Class.newInstance() statement in
  36      * Instruction.readInstruction(). Not to be used otherwise.
  37      */
  38     ArithmeticInstruction() {
  39     }
  40 
  41 
  42     /**
  43      * @param opcode of instruction
  44      */
  45     protected ArithmeticInstruction(final short opcode) {
  46         super(opcode, (short) 1);
  47     }
  48 
  49 
  50     /** @return type associated with the instruction
  51      */
  52     @Override
  53     public Type getType( final ConstantPoolGen cp ) {
  54         final short _opcode = super.getOpcode();
  55         switch (_opcode) {
  56             case Const.DADD:
  57             case Const.DDIV:
  58             case Const.DMUL:
  59             case Const.DNEG:
  60             case Const.DREM:
  61             case Const.DSUB:
  62                 return Type.DOUBLE;
  63             case Const.FADD:
  64             case Const.FDIV:
  65             case Const.FMUL:
  66             case Const.FNEG:
  67             case Const.FREM:
  68             case Const.FSUB:
  69                 return Type.FLOAT;
  70             case Const.IADD:
  71             case Const.IAND:
  72             case Const.IDIV:
  73             case Const.IMUL:
  74             case Const.INEG:
  75             case Const.IOR:
  76             case Const.IREM:
  77             case Const.ISHL:
  78             case Const.ISHR:
  79             case Const.ISUB:
  80             case Const.IUSHR:
  81             case Const.IXOR:
  82                 return Type.INT;
  83             case Const.LADD:
  84             case Const.LAND:
  85             case Const.LDIV:
  86             case Const.LMUL:
  87             case Const.LNEG:
  88             case Const.LOR:
  89             case Const.LREM:
  90             case Const.LSHL:
  91             case Const.LSHR:
  92             case Const.LSUB:
  93             case Const.LUSHR:
  94             case Const.LXOR:
  95                 return Type.LONG;

  96             default: // Never reached
  97                 throw new ClassGenException("Unknown type " + _opcode);
  98         }
  99     }
 100 }
< prev index next >