3562
3563 if (fs.is_contended()) {
3564 bm.set_bit(fs.contended_group());
3565 }
3566 }
3567
3568 int current_group = -1;
3569 while ((current_group = (int)bm.get_next_one_offset(current_group + 1)) != (int)bm.size()) {
3570
3571 for (AllFieldStream fs(_fields, _cp); !fs.done(); fs.next()) {
3572
3573 // skip already laid out fields
3574 if (fs.is_offset_set()) continue;
3575
3576 // skip non-contended fields and fields from different group
3577 if (!fs.is_contended() || (fs.contended_group() != current_group)) continue;
3578
3579 // handle statics below
3580 if (fs.access_flags().is_static()) continue;
3581
3582 int real_offset;
3583 FieldAllocationType atype = (FieldAllocationType) fs.allocation_type();
3584
3585 switch (atype) {
3586 case NONSTATIC_BYTE:
3587 next_nonstatic_padded_offset = align_size_up(next_nonstatic_padded_offset, 1);
3588 real_offset = next_nonstatic_padded_offset;
3589 next_nonstatic_padded_offset += 1;
3590 break;
3591
3592 case NONSTATIC_SHORT:
3593 next_nonstatic_padded_offset = align_size_up(next_nonstatic_padded_offset, BytesPerShort);
3594 real_offset = next_nonstatic_padded_offset;
3595 next_nonstatic_padded_offset += BytesPerShort;
3596 break;
3597
3598 case NONSTATIC_WORD:
3599 next_nonstatic_padded_offset = align_size_up(next_nonstatic_padded_offset, BytesPerInt);
3600 real_offset = next_nonstatic_padded_offset;
3601 next_nonstatic_padded_offset += BytesPerInt;
3602 break;
|
3562
3563 if (fs.is_contended()) {
3564 bm.set_bit(fs.contended_group());
3565 }
3566 }
3567
3568 int current_group = -1;
3569 while ((current_group = (int)bm.get_next_one_offset(current_group + 1)) != (int)bm.size()) {
3570
3571 for (AllFieldStream fs(_fields, _cp); !fs.done(); fs.next()) {
3572
3573 // skip already laid out fields
3574 if (fs.is_offset_set()) continue;
3575
3576 // skip non-contended fields and fields from different group
3577 if (!fs.is_contended() || (fs.contended_group() != current_group)) continue;
3578
3579 // handle statics below
3580 if (fs.access_flags().is_static()) continue;
3581
3582 int real_offset = 0;
3583 FieldAllocationType atype = (FieldAllocationType) fs.allocation_type();
3584
3585 switch (atype) {
3586 case NONSTATIC_BYTE:
3587 next_nonstatic_padded_offset = align_size_up(next_nonstatic_padded_offset, 1);
3588 real_offset = next_nonstatic_padded_offset;
3589 next_nonstatic_padded_offset += 1;
3590 break;
3591
3592 case NONSTATIC_SHORT:
3593 next_nonstatic_padded_offset = align_size_up(next_nonstatic_padded_offset, BytesPerShort);
3594 real_offset = next_nonstatic_padded_offset;
3595 next_nonstatic_padded_offset += BytesPerShort;
3596 break;
3597
3598 case NONSTATIC_WORD:
3599 next_nonstatic_padded_offset = align_size_up(next_nonstatic_padded_offset, BytesPerInt);
3600 real_offset = next_nonstatic_padded_offset;
3601 next_nonstatic_padded_offset += BytesPerInt;
3602 break;
|