Print this page
rev 1026 : imported patch indy.compiler.inline.patch

Split Close
Expand all
Collapse all
          --- old/src/share/vm/utilities/constantTag.hpp
          +++ new/src/share/vm/utilities/constantTag.hpp
↓ open down ↓ 28 lines elided ↑ open up ↑
  29   29    // See jvm.h for shared JVM_CONSTANT_XXX tags
  30   30    // NOTE: replicated in SA in vm/agent/sun/jvm/hotspot/utilities/ConstantTag.java
  31   31    // Hotspot specific tags
  32   32    JVM_CONSTANT_Invalid                  = 0,    // For bad value initialization
  33   33    JVM_CONSTANT_InternalMin              = 100,  // First implementation tag (aside from bad value of course)
  34   34    JVM_CONSTANT_UnresolvedClass          = 100,  // Temporary tag until actual use
  35   35    JVM_CONSTANT_ClassIndex               = 101,  // Temporary tag while constructing constant pool
  36   36    JVM_CONSTANT_UnresolvedString         = 102,  // Temporary tag until actual use
  37   37    JVM_CONSTANT_StringIndex              = 103,  // Temporary tag while constructing constant pool
  38   38    JVM_CONSTANT_UnresolvedClassInError   = 104,  // Error tag due to resolution error
  39      -  JVM_CONSTANT_InternalMax              = 104   // Last implementation tag
       39 +  JVM_CONSTANT_Object                   = 105,  // Required for BoundMethodHandle arguments.
       40 +  JVM_CONSTANT_InternalMax              = 105   // Last implementation tag
  40   41  };
  41   42  
  42   43  
  43   44  class constantTag VALUE_OBJ_CLASS_SPEC {
  44   45   private:
  45   46    jbyte _tag;
  46   47   public:
  47   48    bool is_klass() const             { return _tag == JVM_CONSTANT_Class; }
  48   49    bool is_field () const            { return _tag == JVM_CONSTANT_Fieldref; }
  49   50    bool is_method() const            { return _tag == JVM_CONSTANT_Methodref; }
↓ open down ↓ 13 lines elided ↑ open up ↑
  63   64    }
  64   65  
  65   66    bool is_unresolved_klass_in_error() const {
  66   67      return _tag == JVM_CONSTANT_UnresolvedClassInError;
  67   68    }
  68   69  
  69   70    bool is_klass_index() const       { return _tag == JVM_CONSTANT_ClassIndex; }
  70   71    bool is_unresolved_string() const { return _tag == JVM_CONSTANT_UnresolvedString; }
  71   72    bool is_string_index() const      { return _tag == JVM_CONSTANT_StringIndex; }
  72   73  
       74 +  bool is_object() const            { return _tag == JVM_CONSTANT_Object; }
       75 +
  73   76    bool is_klass_reference() const   { return is_klass_index() || is_unresolved_klass(); }
  74   77    bool is_klass_or_reference() const{ return is_klass() || is_klass_reference(); }
  75   78    bool is_field_or_method() const   { return is_field() || is_method() || is_interface_method(); }
  76   79    bool is_symbol() const            { return is_utf8(); }
  77   80  
  78   81    constantTag(jbyte tag) {
  79   82      assert((tag >= 0 && tag <= JVM_CONSTANT_NameAndType) ||
  80   83             (tag >= JVM_CONSTANT_InternalMin && tag <= JVM_CONSTANT_InternalMax), "Invalid constant tag");
  81   84      _tag = tag;
  82   85    }
  83   86  
  84   87    jbyte value()                      { return _tag; }
  85   88  
  86   89    void print_on(outputStream* st) const PRODUCT_RETURN;
  87   90  };
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX