提交 a4e30aa0 编写于 作者: N never

6793828: G1: invariant: queues are empty when activated

Reviewed-by: jrose, kvn
上级 a0730930
...@@ -3233,12 +3233,11 @@ void GraphKit::g1_write_barrier_pre(Node* obj, ...@@ -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, ...@@ -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) { ...@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册