78 _size = size; |
78 _size = size; |
79 _count = count; |
79 _count = count; |
80 } |
80 } |
81 |
81 |
82 // ------------------------------------------------------------------ |
82 // ------------------------------------------------------------------ |
83 // ciSignature::return_ciType |
83 // ciSignature::return_type |
84 // |
84 // |
85 // What is the return type of this signature? |
85 // What is the return type of this signature? |
86 ciType* ciSignature::return_type() const { |
86 ciType* ciSignature::return_type() const { |
87 return _types->at(_count); |
87 return _types->at(_count); |
88 } |
88 } |
89 |
89 |
90 // ------------------------------------------------------------------ |
90 // ------------------------------------------------------------------ |
91 // ciSignature::ciType_at |
91 // ciSignature::type_at |
92 // |
92 // |
93 // What is the type of the index'th element of this |
93 // What is the type of the index'th element of this |
94 // signature? |
94 // signature? |
95 ciType* ciSignature::type_at(int index) const { |
95 ciType* ciSignature::type_at(int index) const { |
96 assert(index < _count, "out of bounds"); |
96 assert(index < _count, "out of bounds"); |
97 // The first _klasses element holds the return klass. |
97 // The first _klasses element holds the return klass. |
98 return _types->at(index); |
98 return _types->at(index); |
|
99 } |
|
100 |
|
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; |
99 } |
117 } |
100 |
118 |
101 // ------------------------------------------------------------------ |
119 // ------------------------------------------------------------------ |
102 // ciSignature::print_signature |
120 // ciSignature::print_signature |
103 void ciSignature::print_signature() { |
121 void ciSignature::print_signature() { |