Mercurial > hg > graal-compiler
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); |