< prev index next >

src/hotspot/share/opto/macro.hpp

Print this page


   1 /*
   2  * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   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
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *


 183   void copy_call_debug_info(CallNode *oldcall, CallNode * newcall);
 184   Node* opt_bits_test(Node* ctrl, Node* region, int edge, Node* word, int mask, int bits, bool return_fast_path = false);
 185   void copy_predefined_input_for_runtime_call(Node * ctrl, CallNode* oldcall, CallNode* call);
 186   CallNode* make_slow_call(CallNode *oldcall, const TypeFunc* slow_call_type, address slow_call,
 187                            const char* leaf_name, Node* slow_path, Node* parm0, Node* parm1,
 188                            Node* parm2);
 189   void extract_call_projections(CallNode *call);
 190 
 191   Node* initialize_object(AllocateNode* alloc,
 192                           Node* control, Node* rawmem, Node* object,
 193                           Node* klass_node, Node* length,
 194                           Node* size_in_bytes);
 195 
 196   Node* prefetch_allocation(Node* i_o,
 197                             Node*& needgc_false, Node*& contended_phi_rawmem,
 198                             Node* old_eden_top, Node* new_eden_top,
 199                             Node* length);
 200 
 201   Node* make_arraycopy_load(ArrayCopyNode* ac, intptr_t offset, Node* ctl, Node* mem, BasicType ft, const Type *ftype, AllocateNode *alloc);
 202 



 203 public:
 204   PhaseMacroExpand(PhaseIterGVN &igvn) : Phase(Macro_Expand), _igvn(igvn), _has_locks(false) {
 205     _igvn.set_delay_transform(true);
 206   }
 207   void eliminate_macro_nodes();
 208   bool expand_macro_nodes();
 209 
 210   PhaseIterGVN &igvn() const { return _igvn; }
 211 
 212   // Members accessed from BarrierSetC2
 213   void replace_node(Node* source, Node* target) { _igvn.replace_node(source, target); }
 214   Node* intcon(jint con)        const { return _igvn.intcon(con); }
 215   Node* longcon(jlong con)      const { return _igvn.longcon(con); }
 216   Node* makecon(const Type *t)  const { return _igvn.makecon(t); }
 217   Node* top()                   const { return C->top(); }
 218 };
 219 
 220 #endif // SHARE_VM_OPTO_MACRO_HPP
   1 /*
   2  * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   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
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *


 183   void copy_call_debug_info(CallNode *oldcall, CallNode * newcall);
 184   Node* opt_bits_test(Node* ctrl, Node* region, int edge, Node* word, int mask, int bits, bool return_fast_path = false);
 185   void copy_predefined_input_for_runtime_call(Node * ctrl, CallNode* oldcall, CallNode* call);
 186   CallNode* make_slow_call(CallNode *oldcall, const TypeFunc* slow_call_type, address slow_call,
 187                            const char* leaf_name, Node* slow_path, Node* parm0, Node* parm1,
 188                            Node* parm2);
 189   void extract_call_projections(CallNode *call);
 190 
 191   Node* initialize_object(AllocateNode* alloc,
 192                           Node* control, Node* rawmem, Node* object,
 193                           Node* klass_node, Node* length,
 194                           Node* size_in_bytes);
 195 
 196   Node* prefetch_allocation(Node* i_o,
 197                             Node*& needgc_false, Node*& contended_phi_rawmem,
 198                             Node* old_eden_top, Node* new_eden_top,
 199                             Node* length);
 200 
 201   Node* make_arraycopy_load(ArrayCopyNode* ac, intptr_t offset, Node* ctl, Node* mem, BasicType ft, const Type *ftype, AllocateNode *alloc);
 202 
 203 #if INCLUDE_SHENANDOAHGC
 204   Node* shenandoah_call_clone_barrier(Node* call, Node* dest);
 205 #endif
 206 public:
 207   PhaseMacroExpand(PhaseIterGVN &igvn) : Phase(Macro_Expand), _igvn(igvn), _has_locks(false) {
 208     _igvn.set_delay_transform(true);
 209   }
 210   void eliminate_macro_nodes();
 211   bool expand_macro_nodes();
 212 
 213   PhaseIterGVN &igvn() const { return _igvn; }
 214 
 215   // Members accessed from BarrierSetC2
 216   void replace_node(Node* source, Node* target) { _igvn.replace_node(source, target); }
 217   Node* intcon(jint con)        const { return _igvn.intcon(con); }
 218   Node* longcon(jlong con)      const { return _igvn.longcon(con); }
 219   Node* makecon(const Type *t)  const { return _igvn.makecon(t); }
 220   Node* top()                   const { return C->top(); }
 221 };
 222 
 223 #endif // SHARE_VM_OPTO_MACRO_HPP
< prev index next >