equal
deleted
inserted
replaced
1614 } |
1614 } |
1615 |
1615 |
1616 void LIR_Assembler::type_profile_helper(Register mdo, |
1616 void LIR_Assembler::type_profile_helper(Register mdo, |
1617 ciMethodData *md, ciProfileData *data, |
1617 ciMethodData *md, ciProfileData *data, |
1618 Register recv, Label* update_done) { |
1618 Register recv, Label* update_done) { |
1619 uint i; |
1619 for (uint i = 0; i < ReceiverTypeData::row_limit(); i++) { |
1620 for (i = 0; i < ReceiverTypeData::row_limit(); i++) { |
|
1621 Label next_test; |
1620 Label next_test; |
1622 // See if the receiver is receiver[n]. |
1621 // See if the receiver is receiver[n]. |
1623 __ cmpptr(recv, Address(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_offset(i)))); |
1622 __ cmpptr(recv, Address(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_offset(i)))); |
1624 __ jccb(Assembler::notEqual, next_test); |
1623 __ jccb(Assembler::notEqual, next_test); |
1625 Address data_addr(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_count_offset(i))); |
1624 Address data_addr(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_count_offset(i))); |
1627 __ jmp(*update_done); |
1626 __ jmp(*update_done); |
1628 __ bind(next_test); |
1627 __ bind(next_test); |
1629 } |
1628 } |
1630 |
1629 |
1631 // Didn't find receiver; find next empty slot and fill it in |
1630 // Didn't find receiver; find next empty slot and fill it in |
1632 for (i = 0; i < ReceiverTypeData::row_limit(); i++) { |
1631 for (uint i = 0; i < ReceiverTypeData::row_limit(); i++) { |
1633 Label next_test; |
1632 Label next_test; |
1634 Address recv_addr(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_offset(i))); |
1633 Address recv_addr(mdo, md->byte_offset_of_slot(data, ReceiverTypeData::receiver_offset(i))); |
1635 __ cmpptr(recv_addr, (intptr_t)NULL_WORD); |
1634 __ cmpptr(recv_addr, (intptr_t)NULL_WORD); |
1636 __ jccb(Assembler::notEqual, next_test); |
1635 __ jccb(Assembler::notEqual, next_test); |
1637 __ movptr(recv_addr, recv); |
1636 __ movptr(recv_addr, recv); |