< prev index next >

src/hotspot/share/oops/methodData.cpp

Print this page




 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;


< prev index next >