6793828: G1: invariant: queues are empty when activated
Reviewed-by: jrose, kvn
This commit is contained in:
parent
61c259aeb5
commit
275a0bfb42
@ -3233,12 +3233,11 @@ void GraphKit::g1_write_barrier_pre(Node* obj,
|
|||||||
|
|
||||||
// Now some of the values
|
// Now some of the values
|
||||||
|
|
||||||
Node* marking = __ load(no_ctrl, marking_adr, TypeInt::INT, active_type, Compile::AliasIdxRaw);
|
Node* marking = __ load(__ ctrl(), marking_adr, TypeInt::INT, active_type, Compile::AliasIdxRaw);
|
||||||
Node* index = __ load(no_ctrl, index_adr, TypeInt::INT, T_INT, Compile::AliasIdxRaw);
|
|
||||||
Node* buffer = __ load(no_ctrl, buffer_adr, TypeRawPtr::NOTNULL, T_ADDRESS, Compile::AliasIdxRaw);
|
|
||||||
|
|
||||||
// if (!marking)
|
// if (!marking)
|
||||||
__ if_then(marking, BoolTest::ne, zero); {
|
__ if_then(marking, BoolTest::ne, zero); {
|
||||||
|
Node* index = __ load(__ ctrl(), index_adr, TypeInt::INT, T_INT, Compile::AliasIdxRaw);
|
||||||
|
|
||||||
const Type* t1 = adr->bottom_type();
|
const Type* t1 = adr->bottom_type();
|
||||||
const Type* t2 = val->bottom_type();
|
const Type* t2 = val->bottom_type();
|
||||||
@ -3246,6 +3245,7 @@ void GraphKit::g1_write_barrier_pre(Node* obj,
|
|||||||
Node* orig = __ load(no_ctrl, adr, val_type, bt, alias_idx);
|
Node* orig = __ load(no_ctrl, adr, val_type, bt, alias_idx);
|
||||||
// if (orig != NULL)
|
// if (orig != NULL)
|
||||||
__ if_then(orig, BoolTest::ne, null()); {
|
__ if_then(orig, BoolTest::ne, null()); {
|
||||||
|
Node* buffer = __ load(__ ctrl(), buffer_adr, TypeRawPtr::NOTNULL, T_ADDRESS, Compile::AliasIdxRaw);
|
||||||
|
|
||||||
// load original value
|
// load original value
|
||||||
// alias_idx correct??
|
// alias_idx correct??
|
||||||
|
@ -1303,6 +1303,7 @@ Node *LoadNode::Ideal(PhaseGVN *phase, bool can_reshape) {
|
|||||||
Node* base = AddPNode::Ideal_base_and_offset(address, phase, ignore);
|
Node* base = AddPNode::Ideal_base_and_offset(address, phase, ignore);
|
||||||
if (base != NULL
|
if (base != NULL
|
||||||
&& phase->type(base)->higher_equal(TypePtr::NOTNULL)
|
&& phase->type(base)->higher_equal(TypePtr::NOTNULL)
|
||||||
|
&& phase->C->get_alias_index(phase->type(address)->is_ptr()) != Compile::AliasIdxRaw
|
||||||
&& all_controls_dominate(base, phase->C->start())) {
|
&& all_controls_dominate(base, phase->C->start())) {
|
||||||
// A method-invariant, non-null address (constant or 'this' argument).
|
// A method-invariant, non-null address (constant or 'this' argument).
|
||||||
set_req(MemNode::Control, NULL);
|
set_req(MemNode::Control, NULL);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user