Print this page


Split Close
Expand all
Collapse all
          --- old/src/share/vm/ci/ciSignature.cpp
          +++ new/src/share/vm/ci/ciSignature.cpp
↓ open down ↓ 72 lines elided ↑ open up ↑
  73   73        break;
  74   74      }
  75   75      size += type->size();
  76   76      count++;
  77   77    }
  78   78    _size = size;
  79   79    _count = count;
  80   80  }
  81   81  
  82   82  // ------------------------------------------------------------------
  83      -// ciSignature::return_ciType
       83 +// ciSignature::return_type
  84   84  //
  85   85  // What is the return type of this signature?
  86   86  ciType* ciSignature::return_type() const {
  87   87    return _types->at(_count);
  88   88  }
  89   89  
  90   90  // ------------------------------------------------------------------
  91      -// ciSignature::ciType_at
       91 +// ciSignature::type_at
  92   92  //
  93   93  // What is the type of the index'th element of this
  94   94  // signature?
  95   95  ciType* ciSignature::type_at(int index) const {
  96   96    assert(index < _count, "out of bounds");
  97   97    // The first _klasses element holds the return klass.
  98   98    return _types->at(index);
  99   99  }
 100  100  
 101  101  // ------------------------------------------------------------------
      102 +// ciSignature::equals
      103 +//
      104 +// Compare this signature to another one.  Signatures with different
      105 +// accessing classes but with signature-types resolved to the same
      106 +// types are defined to be equal.
      107 +bool ciSignature::equals(ciSignature* that) {
      108 +  // Compare signature
      109 +  if (!this->as_symbol()->equals(that->as_symbol()))  return false;
      110 +  // Compare all types of the arguments
      111 +  for (int i = 0; i < _count; i++) {
      112 +    if (this->type_at(i) != that->type_at(i))         return false;
      113 +  }
      114 +  // Compare the return type
      115 +  if (this->return_type() != that->return_type())     return false;
      116 +  return true;
      117 +}
      118 +
      119 +// ------------------------------------------------------------------
 102  120  // ciSignature::print_signature
 103  121  void ciSignature::print_signature() {
 104  122    _symbol->print_symbol();
 105  123  }
 106  124  
 107  125  // ------------------------------------------------------------------
 108  126  // ciSignature::print
 109  127  void ciSignature::print() {
 110  128    tty->print("<ciSignature symbol=");
 111  129    print_signature();
 112  130   tty->print(" accessing_klass=");
 113  131    _accessing_klass->print();
 114  132    tty->print(" address=0x%x>", (address)this);
 115  133  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX