src/hotspot/share/opto/loopTransform.cpp
changeset 48595 5d699d81c10c
parent 48145 f913f6dba2d3
child 48603 e5da6c246176
equal deleted inserted replaced
48594:4e4929530412 48595:5d699d81c10c
     1 /*
     1 /*
     2  * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
  3202   Node* offset = NULL;
  3202   Node* offset = NULL;
  3203   if (!match_fill_loop(lpt, store, store_value, shift, offset)) {
  3203   if (!match_fill_loop(lpt, store, store_value, shift, offset)) {
  3204     return false;
  3204     return false;
  3205   }
  3205   }
  3206 
  3206 
  3207   Node* exit = head->loopexit()->proj_out(0);
  3207   Node* exit = head->loopexit()->proj_out_or_null(0);
  3208   if (exit == NULL) {
  3208   if (exit == NULL) {
  3209     return false;
  3209     return false;
  3210   }
  3210   }
  3211 
  3211 
  3212 #ifndef PRODUCT
  3212 #ifndef PRODUCT
  3278   call->init_req(TypeFunc::Parms + cnt++, C->top());
  3278   call->init_req(TypeFunc::Parms + cnt++, C->top());
  3279 #endif
  3279 #endif
  3280   call->init_req(TypeFunc::Control,   head->init_control());
  3280   call->init_req(TypeFunc::Control,   head->init_control());
  3281   call->init_req(TypeFunc::I_O,       C->top());       // Does no I/O.
  3281   call->init_req(TypeFunc::I_O,       C->top());       // Does no I/O.
  3282   call->init_req(TypeFunc::Memory,    mem_phi->in(LoopNode::EntryControl));
  3282   call->init_req(TypeFunc::Memory,    mem_phi->in(LoopNode::EntryControl));
  3283   call->init_req(TypeFunc::ReturnAdr, C->start()->proj_out(TypeFunc::ReturnAdr));
  3283   call->init_req(TypeFunc::ReturnAdr, C->start()->proj_out_or_null(TypeFunc::ReturnAdr));
  3284   call->init_req(TypeFunc::FramePtr,  C->start()->proj_out(TypeFunc::FramePtr));
  3284   call->init_req(TypeFunc::FramePtr,  C->start()->proj_out_or_null(TypeFunc::FramePtr));
  3285   _igvn.register_new_node_with_optimizer(call);
  3285   _igvn.register_new_node_with_optimizer(call);
  3286   result_ctrl = new ProjNode(call,TypeFunc::Control);
  3286   result_ctrl = new ProjNode(call,TypeFunc::Control);
  3287   _igvn.register_new_node_with_optimizer(result_ctrl);
  3287   _igvn.register_new_node_with_optimizer(result_ctrl);
  3288   result_mem = new ProjNode(call,TypeFunc::Memory);
  3288   result_mem = new ProjNode(call,TypeFunc::Memory);
  3289   _igvn.register_new_node_with_optimizer(result_mem);
  3289   _igvn.register_new_node_with_optimizer(result_mem);