comparison src/cpu/x86/vm/c1_LIRAssembler_x86.cpp @ 1808:5511edd5d719 hs20-b01 jdk7-b112

6988779: c1_LIRAssembler_x86.cpp crashes VS2010 compiler Summary: The workaround changes the scope of the variable Reviewed-by: phh, ysr, kvn
author iveresov
date Thu, 30 Sep 2010 16:00:40 -0700
parents 3a294e483abc
children 22e4420d19f7
comparison
equal deleted inserted replaced
1807:b2045e0af26e 1808:5511edd5d719
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);