6793828: G1: invariant: queues are empty when activated
authornever
Thu, 05 Feb 2009 11:42:10 -0800
changeset 2008 898493b2e3f1
parent 2007 b31e32c0076f
child 2009 4adf43957a1b
6793828: G1: invariant: queues are empty when activated Reviewed-by: jrose, kvn
hotspot/src/share/vm/opto/graphKit.cpp
hotspot/src/share/vm/opto/memnode.cpp
--- a/hotspot/src/share/vm/opto/graphKit.cpp	Wed Feb 04 15:42:52 2009 -0800
+++ b/hotspot/src/share/vm/opto/graphKit.cpp	Thu Feb 05 11:42:10 2009 -0800
@@ -3233,12 +3233,11 @@
 
   // Now some of the values
 
-  Node* marking = __ load(no_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);
+  Node* marking = __ load(__ ctrl(), marking_adr, TypeInt::INT, active_type, Compile::AliasIdxRaw);
 
   // if (!marking)
   __ 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* t2 = val->bottom_type();
@@ -3246,6 +3245,7 @@
     Node* orig = __ load(no_ctrl, adr, val_type, bt, alias_idx);
     // if (orig != NULL)
     __ if_then(orig, BoolTest::ne, null()); {
+      Node* buffer  = __ load(__ ctrl(), buffer_adr, TypeRawPtr::NOTNULL, T_ADDRESS, Compile::AliasIdxRaw);
 
       // load original value
       // alias_idx correct??
--- a/hotspot/src/share/vm/opto/memnode.cpp	Wed Feb 04 15:42:52 2009 -0800
+++ b/hotspot/src/share/vm/opto/memnode.cpp	Thu Feb 05 11:42:10 2009 -0800
@@ -1303,6 +1303,7 @@
     Node*    base   = AddPNode::Ideal_base_and_offset(address, phase, ignore);
     if (base != NULL
         && 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())) {
       // A method-invariant, non-null address (constant or 'this' argument).
       set_req(MemNode::Control, NULL);