1 /*
   2  * Copyright (c) 1997, 1999, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 # include "incls/_precompiled.incl"
  26 # include "incls/_constantTag.cpp.incl"
  27 
  28 #ifndef PRODUCT
  29 
  30 void constantTag::print_on(outputStream* st) const {
  31   st->print(internal_name());
  32 }
  33 
  34 #endif // PRODUCT
  35 
  36 BasicType constantTag::basic_type() const {
  37   switch (_tag) {
  38     case JVM_CONSTANT_Integer :
  39       return T_INT;
  40     case JVM_CONSTANT_Float :
  41       return T_FLOAT;
  42     case JVM_CONSTANT_Long :
  43       return T_LONG;
  44     case JVM_CONSTANT_Double :
  45       return T_DOUBLE;
  46 
  47     case JVM_CONSTANT_Class :
  48     case JVM_CONSTANT_String :
  49     case JVM_CONSTANT_UnresolvedClass :
  50     case JVM_CONSTANT_UnresolvedClassInError :
  51     case JVM_CONSTANT_ClassIndex :
  52     case JVM_CONSTANT_UnresolvedString :
  53     case JVM_CONSTANT_StringIndex :
  54     case JVM_CONSTANT_MethodHandle :
  55     case JVM_CONSTANT_MethodType :
  56     case JVM_CONSTANT_Object :
  57       return T_OBJECT;
  58     default:
  59       ShouldNotReachHere();
  60       return T_ILLEGAL;
  61   }
  62 }
  63 
  64 
  65 
  66 const char* constantTag::internal_name() const {
  67   switch (_tag) {
  68     case JVM_CONSTANT_Invalid :
  69       return "Invalid index";
  70     case JVM_CONSTANT_Class :
  71       return "Class";
  72     case JVM_CONSTANT_Fieldref :
  73       return "Field";
  74     case JVM_CONSTANT_Methodref :
  75       return "Method";
  76     case JVM_CONSTANT_InterfaceMethodref :
  77       return "InterfaceMethod";
  78     case JVM_CONSTANT_String :
  79       return "String";
  80     case JVM_CONSTANT_Integer :
  81       return "Integer";
  82     case JVM_CONSTANT_Float :
  83       return "Float";
  84     case JVM_CONSTANT_Long :
  85       return "Long";
  86     case JVM_CONSTANT_Double :
  87       return "Double";
  88     case JVM_CONSTANT_NameAndType :
  89       return "NameAndType";
  90     case JVM_CONSTANT_MethodHandle :
  91       return "MethodHandle";
  92     case JVM_CONSTANT_MethodType :
  93       return "MethodType";
  94     case JVM_CONSTANT_InvokeDynamic :
  95       return "InvokeDynamic";
  96     case JVM_CONSTANT_Object :
  97       return "Object";
  98     case JVM_CONSTANT_Utf8 :
  99       return "Utf8";
 100     case JVM_CONSTANT_UnresolvedClass :
 101       return "Unresolved Class";
 102     case JVM_CONSTANT_UnresolvedClassInError :
 103       return "Unresolved Class Error";
 104     case JVM_CONSTANT_ClassIndex :
 105       return "Unresolved Class Index";
 106     case JVM_CONSTANT_UnresolvedString :
 107       return "Unresolved String";
 108     case JVM_CONSTANT_StringIndex :
 109       return "Unresolved String Index";
 110     default:
 111       ShouldNotReachHere();
 112       return "Illegal";
 113   }
 114 }