221 int header_cell = 0; 222 if (args_cell + ret_cell > 0) { 223 header_cell = header_cell_count(); 224 } 225 226 return header_cell + args_cell + ret_cell; 227 } 228 229 class ArgumentOffsetComputer : public SignatureInfo { 230 private: 231 int _max; 232 GrowableArray<int> _offsets; 233 234 void set(int size, BasicType type) { _size += size; } 235 void do_object(int begin, int end) { 236 if (_offsets.length() < _max) { 237 _offsets.push(_size); 238 } 239 SignatureInfo::do_object(begin, end); 240 } 241 void do_valuetype(int begin, int end) { 242 if (_offsets.length() < _max) { 243 _offsets.push(_size); 244 } 245 SignatureInfo::do_valuetype(begin, end); 246 } 247 void do_array (int begin, int end) { 248 if (_offsets.length() < _max) { 249 _offsets.push(_size); 250 } 251 SignatureInfo::do_array(begin, end); 252 } 253 254 public: 255 ArgumentOffsetComputer(Symbol* signature, int max) 256 : SignatureInfo(signature), _max(max), _offsets(Thread::current(), max) { 257 } 258 259 int total() { lazy_iterate_parameters(); return _size; } 260 261 int off_at(int i) const { return _offsets.at(i); } 262 }; 263 264 void TypeStackSlotEntries::post_initialize(Symbol* signature, bool has_receiver, bool include_receiver) { 265 ResourceMark rm; 266 int start = 0; | 221 int header_cell = 0; 222 if (args_cell + ret_cell > 0) { 223 header_cell = header_cell_count(); 224 } 225 226 return header_cell + args_cell + ret_cell; 227 } 228 229 class ArgumentOffsetComputer : public SignatureInfo { 230 private: 231 int _max; 232 GrowableArray<int> _offsets; 233 234 void set(int size, BasicType type) { _size += size; } 235 void do_object(int begin, int end) { 236 if (_offsets.length() < _max) { 237 _offsets.push(_size); 238 } 239 SignatureInfo::do_object(begin, end); 240 } 241 void do_array (int begin, int end) { 242 if (_offsets.length() < _max) { 243 _offsets.push(_size); 244 } 245 SignatureInfo::do_array(begin, end); 246 } 247 248 public: 249 ArgumentOffsetComputer(Symbol* signature, int max) 250 : SignatureInfo(signature), _max(max), _offsets(Thread::current(), max) { 251 } 252 253 int total() { lazy_iterate_parameters(); return _size; } 254 255 int off_at(int i) const { return _offsets.at(i); } 256 }; 257 258 void TypeStackSlotEntries::post_initialize(Symbol* signature, bool has_receiver, bool include_receiver) { 259 ResourceMark rm; 260 int start = 0; |