< prev index next >

src/hotspot/share/opto/divnode.cpp

Print this page
*** 1614,29 ***
  }
  
  Node* ModFloatingNode::replace_with_con(PhaseIterGVN* phase, const Type* con) {
    Compile* C = phase->C;
    Node* con_node = phase->makecon(con);
!   CallProjections projs;
!   extract_projections(&projs, false, false);
!   phase->replace_node(projs.fallthrough_proj, in(TypeFunc::Control));
!   if (projs.fallthrough_catchproj != nullptr) {
-     phase->replace_node(projs.fallthrough_catchproj, in(TypeFunc::Control));
    }
!   if (projs.fallthrough_memproj != nullptr) {
!     phase->replace_node(projs.fallthrough_memproj, in(TypeFunc::Memory));
    }
!   if (projs.catchall_memproj != nullptr) {
!     phase->replace_node(projs.catchall_memproj, C->top());
    }
!   if (projs.fallthrough_ioproj != nullptr) {
!     phase->replace_node(projs.fallthrough_ioproj, in(TypeFunc::I_O));
    }
!   assert(projs.catchall_ioproj == nullptr, "no exceptions from floating mod");
!   assert(projs.catchall_catchproj == nullptr, "no exceptions from floating mod");
!   if (projs.resproj != nullptr) {
!     phase->replace_node(projs.resproj, con_node);
    }
    phase->replace_node(this, C->top());
    C->remove_macro_node(this);
    disconnect_inputs(C);
    return nullptr;
--- 1614,28 ---
  }
  
  Node* ModFloatingNode::replace_with_con(PhaseIterGVN* phase, const Type* con) {
    Compile* C = phase->C;
    Node* con_node = phase->makecon(con);
!   CallProjections* projs = extract_projections(false, false);
!   phase->replace_node(projs->fallthrough_proj, in(TypeFunc::Control));
!   if (projs->fallthrough_catchproj != nullptr) {
!     phase->replace_node(projs->fallthrough_catchproj, in(TypeFunc::Control));
    }
!   if (projs->fallthrough_memproj != nullptr) {
!     phase->replace_node(projs->fallthrough_memproj, in(TypeFunc::Memory));
    }
!   if (projs->catchall_memproj != nullptr) {
!     phase->replace_node(projs->catchall_memproj, C->top());
    }
!   if (projs->fallthrough_ioproj != nullptr) {
!     phase->replace_node(projs->fallthrough_ioproj, in(TypeFunc::I_O));
    }
!   assert(projs->catchall_ioproj == nullptr, "no exceptions from floating mod");
!   assert(projs->catchall_catchproj == nullptr, "no exceptions from floating mod");
!   if (projs->resproj[0] != nullptr) {
!     phase->replace_node(projs->resproj[0], con_node);
    }
    phase->replace_node(this, C->top());
    C->remove_macro_node(this);
    disconnect_inputs(C);
    return nullptr;

*** 1692,11 ***
    return divmod;
  }
  
  //------------------------------match------------------------------------------
  // return result(s) along with their RegMask info
! Node *DivModINode::match( const ProjNode *proj, const Matcher *match ) {
    uint ideal_reg = proj->ideal_reg();
    RegMask rm;
    if (proj->_con == div_proj_num) {
      rm = match->divI_proj_mask();
    } else {
--- 1691,11 ---
    return divmod;
  }
  
  //------------------------------match------------------------------------------
  // return result(s) along with their RegMask info
! Node *DivModINode::match(const ProjNode *proj, const Matcher *match, const RegMask* mask) {
    uint ideal_reg = proj->ideal_reg();
    RegMask rm;
    if (proj->_con == div_proj_num) {
      rm = match->divI_proj_mask();
    } else {

*** 1707,11 ***
  }
  
  
  //------------------------------match------------------------------------------
  // return result(s) along with their RegMask info
! Node *DivModLNode::match( const ProjNode *proj, const Matcher *match ) {
    uint ideal_reg = proj->ideal_reg();
    RegMask rm;
    if (proj->_con == div_proj_num) {
      rm = match->divL_proj_mask();
    } else {
--- 1706,11 ---
  }
  
  
  //------------------------------match------------------------------------------
  // return result(s) along with their RegMask info
! Node *DivModLNode::match(const ProjNode *proj, const Matcher *match, const RegMask* mask) {
    uint ideal_reg = proj->ideal_reg();
    RegMask rm;
    if (proj->_con == div_proj_num) {
      rm = match->divL_proj_mask();
    } else {

*** 1745,11 ***
    return divmod;
  }
  
  //------------------------------match------------------------------------------
  // return result(s) along with their RegMask info
! Node* UDivModINode::match( const ProjNode *proj, const Matcher *match ) {
    uint ideal_reg = proj->ideal_reg();
    RegMask rm;
    if (proj->_con == div_proj_num) {
      rm = match->divI_proj_mask();
    } else {
--- 1744,11 ---
    return divmod;
  }
  
  //------------------------------match------------------------------------------
  // return result(s) along with their RegMask info
! Node* UDivModINode::match(const ProjNode* proj, const Matcher* match, const RegMask* mask) {
    uint ideal_reg = proj->ideal_reg();
    RegMask rm;
    if (proj->_con == div_proj_num) {
      rm = match->divI_proj_mask();
    } else {

*** 1760,11 ***
  }
  
  
  //------------------------------match------------------------------------------
  // return result(s) along with their RegMask info
! Node* UDivModLNode::match( const ProjNode *proj, const Matcher *match ) {
    uint ideal_reg = proj->ideal_reg();
    RegMask rm;
    if (proj->_con == div_proj_num) {
      rm = match->divL_proj_mask();
    } else {
--- 1759,11 ---
  }
  
  
  //------------------------------match------------------------------------------
  // return result(s) along with their RegMask info
! Node* UDivModLNode::match( const ProjNode* proj, const Matcher* match, const RegMask* mask) {
    uint ideal_reg = proj->ideal_reg();
    RegMask rm;
    if (proj->_con == div_proj_num) {
      rm = match->divL_proj_mask();
    } else {
< prev index next >