< prev index next >

src/hotspot/share/opto/callnode.cpp

Print this page
*** 483,29 ***
        }
        st->print("={");
        uint nf = spobj->n_fields();
        if (nf > 0) {
          uint first_ind = spobj->first_index(mcall->jvms());
!         Node* fld_node = mcall->in(first_ind);
          ciField* cifield;
          if (iklass != NULL) {
            st->print(" [");
            cifield = iklass->nonstatic_field_at(0);
            cifield->print_name_on(st);
!           format_helper(regalloc, st, fld_node, ":", 0, &scobjs);
          } else {
!           format_helper(regalloc, st, fld_node, "[", 0, &scobjs);
          }
          for (uint j = 1; j < nf; j++) {
-           fld_node = mcall->in(first_ind+j);
            if (iklass != NULL) {
              st->print(", [");
              cifield = iklass->nonstatic_field_at(j);
              cifield->print_name_on(st);
!             format_helper(regalloc, st, fld_node, ":", j, &scobjs);
            } else {
!             format_helper(regalloc, st, fld_node, ", [", j, &scobjs);
            }
          }
        }
        st->print(" }");
      }
--- 483,48 ---
        }
        st->print("={");
        uint nf = spobj->n_fields();
        if (nf > 0) {
          uint first_ind = spobj->first_index(mcall->jvms());
!         Node* fld_node = NULL;
          ciField* cifield;
          if (iklass != NULL) {
            st->print(" [");
            cifield = iklass->nonstatic_field_at(0);
            cifield->print_name_on(st);
!           if(spobj->stack_allocated()) {
+             st->print(":*0]");
+           } else {
+             fld_node = mcall->in(first_ind);
+             format_helper(regalloc, st, fld_node, ":", 0, &scobjs);
+           }
          } else {
!           if(spobj->stack_allocated()) {
+             st->print("[*0]");
+           } else {
+             fld_node = mcall->in(first_ind);
+             format_helper(regalloc, st, fld_node, "[", 0, &scobjs);
+           }
          }
          for (uint j = 1; j < nf; j++) {
            if (iklass != NULL) {
              st->print(", [");
              cifield = iklass->nonstatic_field_at(j);
              cifield->print_name_on(st);
!             if(spobj->stack_allocated()) {
+               st->print(":*%d]", j);
+             } else {
+               fld_node = mcall->in(first_ind+j);
+               format_helper(regalloc, st, fld_node, ":", j, &scobjs);
+             }
            } else {
!             if(spobj->stack_allocated()) {
+               st->print(", [*%d]", j);
+             } else {
+               fld_node = mcall->in(first_ind+j);
+               format_helper(regalloc, st, fld_node, ", [", j, &scobjs);
+             }
            }
          }
        }
        st->print(" }");
      }

*** 959,10 ***
--- 978,17 ---
      return true;
    }
    return false;
  }
  
+ bool CallNode::is_call_to_osr_migration_end() const {
+   if (_name != NULL && strstr(_name, "OSR_migration_end") != 0) {
+     return true;
+   }
+   return false;
+ }
+ 
  //=============================================================================
  uint CallJavaNode::size_of() const { return sizeof(*this); }
  bool CallJavaNode::cmp( const Node &n ) const {
    CallJavaNode &call = (CallJavaNode&)n;
    return CallNode::cmp(call) && _method == call._method &&

*** 1300,11 ***
  #endif
                                                       uint first_index,
                                                       uint n_fields) :
    TypeNode(tp, 1), // 1 control input -- seems required.  Get from root.
    _first_index(first_index),
!   _n_fields(n_fields)
  #ifdef ASSERT
    , _alloc(alloc)
  #endif
  {
    init_class_id(Class_SafePointScalarObject);
--- 1326,12 ---
  #endif
                                                       uint first_index,
                                                       uint n_fields) :
    TypeNode(tp, 1), // 1 control input -- seems required.  Get from root.
    _first_index(first_index),
!   _n_fields(n_fields),
+   _is_stack_allocated(false)
  #ifdef ASSERT
    , _alloc(alloc)
  #endif
  {
    init_class_id(Class_SafePointScalarObject);

*** 1362,10 ***
--- 1389,12 ---
  {
    init_class_id(Class_Allocate);
    init_flags(Flag_is_macro);
    _is_scalar_replaceable = false;
    _is_non_escaping = false;
+   _is_stack_allocateable = false;
+   _is_referenced_stack_allocation = false;
    _is_allocation_MemBar_redundant = false;
    Node *topnode = C->top();
  
    init_req( TypeFunc::Control  , ctrl );
    init_req( TypeFunc::I_O      , abio );
< prev index next >