comparison src/share/vm/c1/c1_LIRGenerator.cpp @ 2352:425688247f3d

6965570: assert(!needs_patching && x->is_loaded(),"how do we know it's volatile if it's not loaded") Reviewed-by: iveresov
author never
date Sun, 06 Mar 2011 22:09:23 -0800
parents aa4b04b68652
children 8033953d67ff
comparison
equal deleted inserted replaced
2351:8e72cd29b15d 2352:425688247f3d
1557 pre_barrier(LIR_OprFact::address(address), 1557 pre_barrier(LIR_OprFact::address(address),
1558 needs_patching, 1558 needs_patching,
1559 (info ? new CodeEmitInfo(info) : NULL)); 1559 (info ? new CodeEmitInfo(info) : NULL));
1560 } 1560 }
1561 1561
1562 if (is_volatile) { 1562 if (is_volatile && !needs_patching) {
1563 assert(!needs_patching && x->is_loaded(),
1564 "how do we know it's volatile if it's not loaded");
1565 volatile_field_store(value.result(), address, info); 1563 volatile_field_store(value.result(), address, info);
1566 } else { 1564 } else {
1567 LIR_PatchCode patch_code = needs_patching ? lir_patch_normal : lir_patch_none; 1565 LIR_PatchCode patch_code = needs_patching ? lir_patch_normal : lir_patch_none;
1568 __ store(value.result(), address, info, patch_code); 1566 __ store(value.result(), address, info, patch_code);
1569 } 1567 }
1625 address = new LIR_Address(object.result(), PATCHED_ADDR, field_type); 1623 address = new LIR_Address(object.result(), PATCHED_ADDR, field_type);
1626 } else { 1624 } else {
1627 address = generate_address(object.result(), x->offset(), field_type); 1625 address = generate_address(object.result(), x->offset(), field_type);
1628 } 1626 }
1629 1627
1630 if (is_volatile) { 1628 if (is_volatile && !needs_patching) {
1631 assert(!needs_patching && x->is_loaded(),
1632 "how do we know it's volatile if it's not loaded");
1633 volatile_field_load(address, reg, info); 1629 volatile_field_load(address, reg, info);
1634 } else { 1630 } else {
1635 LIR_PatchCode patch_code = needs_patching ? lir_patch_normal : lir_patch_none; 1631 LIR_PatchCode patch_code = needs_patching ? lir_patch_normal : lir_patch_none;
1636 __ load(address, reg, info, patch_code); 1632 __ load(address, reg, info, patch_code);
1637 } 1633 }