src/share/vm/opto/macro.cpp

changeset 4115
e626685e9f6c
parent 4037
da91efe96a93
child 4159
8e47bac5643a
     1.1 --- a/src/share/vm/opto/macro.cpp	Tue Sep 25 15:48:17 2012 -0700
     1.2 +++ b/src/share/vm/opto/macro.cpp	Thu Sep 27 09:38:42 2012 -0700
     1.3 @@ -103,20 +103,20 @@
     1.4  Node* PhaseMacroExpand::opt_bits_test(Node* ctrl, Node* region, int edge, Node* word, int mask, int bits, bool return_fast_path) {
     1.5    Node* cmp;
     1.6    if (mask != 0) {
     1.7 -    Node* and_node = transform_later(new (C, 3) AndXNode(word, MakeConX(mask)));
     1.8 -    cmp = transform_later(new (C, 3) CmpXNode(and_node, MakeConX(bits)));
     1.9 +    Node* and_node = transform_later(new (C) AndXNode(word, MakeConX(mask)));
    1.10 +    cmp = transform_later(new (C) CmpXNode(and_node, MakeConX(bits)));
    1.11    } else {
    1.12      cmp = word;
    1.13    }
    1.14 -  Node* bol = transform_later(new (C, 2) BoolNode(cmp, BoolTest::ne));
    1.15 -  IfNode* iff = new (C, 2) IfNode( ctrl, bol, PROB_MIN, COUNT_UNKNOWN );
    1.16 +  Node* bol = transform_later(new (C) BoolNode(cmp, BoolTest::ne));
    1.17 +  IfNode* iff = new (C) IfNode( ctrl, bol, PROB_MIN, COUNT_UNKNOWN );
    1.18    transform_later(iff);
    1.19  
    1.20    // Fast path taken.
    1.21 -  Node *fast_taken = transform_later( new (C, 1) IfFalseNode(iff) );
    1.22 +  Node *fast_taken = transform_later( new (C) IfFalseNode(iff) );
    1.23  
    1.24    // Fast path not-taken, i.e. slow path
    1.25 -  Node *slow_taken = transform_later( new (C, 1) IfTrueNode(iff) );
    1.26 +  Node *slow_taken = transform_later( new (C) IfTrueNode(iff) );
    1.27  
    1.28    if (return_fast_path) {
    1.29      region->init_req(edge, slow_taken); // Capture slow-control
    1.30 @@ -141,10 +141,9 @@
    1.31  CallNode* PhaseMacroExpand::make_slow_call(CallNode *oldcall, const TypeFunc* slow_call_type, address slow_call, const char* leaf_name, Node* slow_path, Node* parm0, Node* parm1) {
    1.32  
    1.33    // Slow-path call
    1.34 -  int size = slow_call_type->domain()->cnt();
    1.35   CallNode *call = leaf_name
    1.36 -   ? (CallNode*)new (C, size) CallLeafNode      ( slow_call_type, slow_call, leaf_name, TypeRawPtr::BOTTOM )
    1.37 -   : (CallNode*)new (C, size) CallStaticJavaNode( slow_call_type, slow_call, OptoRuntime::stub_name(slow_call), oldcall->jvms()->bci(), TypeRawPtr::BOTTOM );
    1.38 +   ? (CallNode*)new (C) CallLeafNode      ( slow_call_type, slow_call, leaf_name, TypeRawPtr::BOTTOM )
    1.39 +   : (CallNode*)new (C) CallStaticJavaNode( slow_call_type, slow_call, OptoRuntime::stub_name(slow_call), oldcall->jvms()->bci(), TypeRawPtr::BOTTOM );
    1.40  
    1.41    // Slow path call has no side-effects, uses few values
    1.42    copy_predefined_input_for_runtime_call(slow_path, oldcall, call );
    1.43 @@ -412,7 +411,7 @@
    1.44    GrowableArray <Node *> values(length, length, NULL, false);
    1.45  
    1.46    // create a new Phi for the value
    1.47 -  PhiNode *phi = new (C, length) PhiNode(mem->in(0), phi_type, NULL, instance_id, alias_idx, offset);
    1.48 +  PhiNode *phi = new (C) PhiNode(mem->in(0), phi_type, NULL, instance_id, alias_idx, offset);
    1.49    transform_later(phi);
    1.50    value_phis->push(phi, mem->_idx);
    1.51  
    1.52 @@ -720,7 +719,7 @@
    1.53      SafePointNode* sfpt = safepoints.pop();
    1.54      Node* mem = sfpt->memory();
    1.55      uint first_ind = sfpt->req();
    1.56 -    SafePointScalarObjectNode* sobj = new (C, 1) SafePointScalarObjectNode(res_type,
    1.57 +    SafePointScalarObjectNode* sobj = new (C) SafePointScalarObjectNode(res_type,
    1.58  #ifdef ASSERT
    1.59                                                   alloc,
    1.60  #endif
    1.61 @@ -828,7 +827,7 @@
    1.62          if (field_val->is_EncodeP()) {
    1.63            field_val = field_val->in(1);
    1.64          } else {
    1.65 -          field_val = transform_later(new (C, 2) DecodeNNode(field_val, field_val->bottom_type()->make_ptr()));
    1.66 +          field_val = transform_later(new (C) DecodeNNode(field_val, field_val->bottom_type()->make_ptr()));
    1.67          }
    1.68        }
    1.69        sfpt->add_req(field_val);
    1.70 @@ -995,7 +994,7 @@
    1.71  //---------------------------set_eden_pointers-------------------------
    1.72  void PhaseMacroExpand::set_eden_pointers(Node* &eden_top_adr, Node* &eden_end_adr) {
    1.73    if (UseTLAB) {                // Private allocation: load from TLS
    1.74 -    Node* thread = transform_later(new (C, 1) ThreadLocalNode());
    1.75 +    Node* thread = transform_later(new (C) ThreadLocalNode());
    1.76      int tlab_top_offset = in_bytes(JavaThread::tlab_top_offset());
    1.77      int tlab_end_offset = in_bytes(JavaThread::tlab_end_offset());
    1.78      eden_top_adr = basic_plus_adr(top()/*not oop*/, thread, tlab_top_offset);
    1.79 @@ -1137,18 +1136,18 @@
    1.80    assert (initial_slow_test == NULL || !always_slow, "arguments must be consistent");
    1.81    // generate the initial test if necessary
    1.82    if (initial_slow_test != NULL ) {
    1.83 -    slow_region = new (C, 3) RegionNode(3);
    1.84 +    slow_region = new (C) RegionNode(3);
    1.85  
    1.86      // Now make the initial failure test.  Usually a too-big test but
    1.87      // might be a TRUE for finalizers or a fancy class check for
    1.88      // newInstance0.
    1.89 -    IfNode *toobig_iff = new (C, 2) IfNode(ctrl, initial_slow_test, PROB_MIN, COUNT_UNKNOWN);
    1.90 +    IfNode *toobig_iff = new (C) IfNode(ctrl, initial_slow_test, PROB_MIN, COUNT_UNKNOWN);
    1.91      transform_later(toobig_iff);
    1.92      // Plug the failing-too-big test into the slow-path region
    1.93 -    Node *toobig_true = new (C, 1) IfTrueNode( toobig_iff );
    1.94 +    Node *toobig_true = new (C) IfTrueNode( toobig_iff );
    1.95      transform_later(toobig_true);
    1.96      slow_region    ->init_req( too_big_or_final_path, toobig_true );
    1.97 -    toobig_false = new (C, 1) IfFalseNode( toobig_iff );
    1.98 +    toobig_false = new (C) IfFalseNode( toobig_iff );
    1.99      transform_later(toobig_false);
   1.100    } else {         // No initial test, just fall into next case
   1.101      toobig_false = ctrl;
   1.102 @@ -1181,10 +1180,10 @@
   1.103      Node *eden_end = make_load(ctrl, mem, eden_end_adr, 0, TypeRawPtr::BOTTOM, T_ADDRESS);
   1.104  
   1.105      // allocate the Region and Phi nodes for the result
   1.106 -    result_region = new (C, 3) RegionNode(3);
   1.107 -    result_phi_rawmem = new (C, 3) PhiNode(result_region, Type::MEMORY, TypeRawPtr::BOTTOM);
   1.108 -    result_phi_rawoop = new (C, 3) PhiNode(result_region, TypeRawPtr::BOTTOM);
   1.109 -    result_phi_i_o    = new (C, 3) PhiNode(result_region, Type::ABIO); // I/O is used for Prefetch
   1.110 +    result_region = new (C) RegionNode(3);
   1.111 +    result_phi_rawmem = new (C) PhiNode(result_region, Type::MEMORY, TypeRawPtr::BOTTOM);
   1.112 +    result_phi_rawoop = new (C) PhiNode(result_region, TypeRawPtr::BOTTOM);
   1.113 +    result_phi_i_o    = new (C) PhiNode(result_region, Type::ABIO); // I/O is used for Prefetch
   1.114  
   1.115      // We need a Region for the loop-back contended case.
   1.116      enum { fall_in_path = 1, contended_loopback_path = 2 };
   1.117 @@ -1194,8 +1193,8 @@
   1.118        contended_region = toobig_false;
   1.119        contended_phi_rawmem = mem;
   1.120      } else {
   1.121 -      contended_region = new (C, 3) RegionNode(3);
   1.122 -      contended_phi_rawmem = new (C, 3) PhiNode(contended_region, Type::MEMORY, TypeRawPtr::BOTTOM);
   1.123 +      contended_region = new (C) RegionNode(3);
   1.124 +      contended_phi_rawmem = new (C) PhiNode(contended_region, Type::MEMORY, TypeRawPtr::BOTTOM);
   1.125        // Now handle the passing-too-big test.  We fall into the contended
   1.126        // loop-back merge point.
   1.127        contended_region    ->init_req(fall_in_path, toobig_false);
   1.128 @@ -1207,23 +1206,23 @@
   1.129      // Load(-locked) the heap top.
   1.130      // See note above concerning the control input when using a TLAB
   1.131      Node *old_eden_top = UseTLAB
   1.132 -      ? new (C, 3) LoadPNode      (ctrl, contended_phi_rawmem, eden_top_adr, TypeRawPtr::BOTTOM, TypeRawPtr::BOTTOM)
   1.133 -      : new (C, 3) LoadPLockedNode(contended_region, contended_phi_rawmem, eden_top_adr);
   1.134 +      ? new (C) LoadPNode      (ctrl, contended_phi_rawmem, eden_top_adr, TypeRawPtr::BOTTOM, TypeRawPtr::BOTTOM)
   1.135 +      : new (C) LoadPLockedNode(contended_region, contended_phi_rawmem, eden_top_adr);
   1.136  
   1.137      transform_later(old_eden_top);
   1.138      // Add to heap top to get a new heap top
   1.139 -    Node *new_eden_top = new (C, 4) AddPNode(top(), old_eden_top, size_in_bytes);
   1.140 +    Node *new_eden_top = new (C) AddPNode(top(), old_eden_top, size_in_bytes);
   1.141      transform_later(new_eden_top);
   1.142      // Check for needing a GC; compare against heap end
   1.143 -    Node *needgc_cmp = new (C, 3) CmpPNode(new_eden_top, eden_end);
   1.144 +    Node *needgc_cmp = new (C) CmpPNode(new_eden_top, eden_end);
   1.145      transform_later(needgc_cmp);
   1.146 -    Node *needgc_bol = new (C, 2) BoolNode(needgc_cmp, BoolTest::ge);
   1.147 +    Node *needgc_bol = new (C) BoolNode(needgc_cmp, BoolTest::ge);
   1.148      transform_later(needgc_bol);
   1.149 -    IfNode *needgc_iff = new (C, 2) IfNode(contended_region, needgc_bol, PROB_UNLIKELY_MAG(4), COUNT_UNKNOWN);
   1.150 +    IfNode *needgc_iff = new (C) IfNode(contended_region, needgc_bol, PROB_UNLIKELY_MAG(4), COUNT_UNKNOWN);
   1.151      transform_later(needgc_iff);
   1.152  
   1.153      // Plug the failing-heap-space-need-gc test into the slow-path region
   1.154 -    Node *needgc_true = new (C, 1) IfTrueNode(needgc_iff);
   1.155 +    Node *needgc_true = new (C) IfTrueNode(needgc_iff);
   1.156      transform_later(needgc_true);
   1.157      if (initial_slow_test) {
   1.158        slow_region->init_req(need_gc_path, needgc_true);
   1.159 @@ -1234,7 +1233,7 @@
   1.160        slow_region = needgc_true;
   1.161      }
   1.162      // No need for a GC.  Setup for the Store-Conditional
   1.163 -    Node *needgc_false = new (C, 1) IfFalseNode(needgc_iff);
   1.164 +    Node *needgc_false = new (C) IfFalseNode(needgc_iff);
   1.165      transform_later(needgc_false);
   1.166  
   1.167      // Grab regular I/O before optional prefetch may change it.
   1.168 @@ -1254,37 +1253,37 @@
   1.169      // memory state.
   1.170      if (UseTLAB) {
   1.171        Node* store_eden_top =
   1.172 -        new (C, 4) StorePNode(needgc_false, contended_phi_rawmem, eden_top_adr,
   1.173 +        new (C) StorePNode(needgc_false, contended_phi_rawmem, eden_top_adr,
   1.174                                TypeRawPtr::BOTTOM, new_eden_top);
   1.175        transform_later(store_eden_top);
   1.176        fast_oop_ctrl = needgc_false; // No contention, so this is the fast path
   1.177        fast_oop_rawmem = store_eden_top;
   1.178      } else {
   1.179        Node* store_eden_top =
   1.180 -        new (C, 5) StorePConditionalNode(needgc_false, contended_phi_rawmem, eden_top_adr,
   1.181 +        new (C) StorePConditionalNode(needgc_false, contended_phi_rawmem, eden_top_adr,
   1.182                                           new_eden_top, fast_oop/*old_eden_top*/);
   1.183        transform_later(store_eden_top);
   1.184 -      Node *contention_check = new (C, 2) BoolNode(store_eden_top, BoolTest::ne);
   1.185 +      Node *contention_check = new (C) BoolNode(store_eden_top, BoolTest::ne);
   1.186        transform_later(contention_check);
   1.187 -      store_eden_top = new (C, 1) SCMemProjNode(store_eden_top);
   1.188 +      store_eden_top = new (C) SCMemProjNode(store_eden_top);
   1.189        transform_later(store_eden_top);
   1.190  
   1.191        // If not using TLABs, check to see if there was contention.
   1.192 -      IfNode *contention_iff = new (C, 2) IfNode (needgc_false, contention_check, PROB_MIN, COUNT_UNKNOWN);
   1.193 +      IfNode *contention_iff = new (C) IfNode (needgc_false, contention_check, PROB_MIN, COUNT_UNKNOWN);
   1.194        transform_later(contention_iff);
   1.195 -      Node *contention_true = new (C, 1) IfTrueNode(contention_iff);
   1.196 +      Node *contention_true = new (C) IfTrueNode(contention_iff);
   1.197        transform_later(contention_true);
   1.198        // If contention, loopback and try again.
   1.199        contended_region->init_req(contended_loopback_path, contention_true);
   1.200        contended_phi_rawmem->init_req(contended_loopback_path, store_eden_top);
   1.201  
   1.202        // Fast-path succeeded with no contention!
   1.203 -      Node *contention_false = new (C, 1) IfFalseNode(contention_iff);
   1.204 +      Node *contention_false = new (C) IfFalseNode(contention_iff);
   1.205        transform_later(contention_false);
   1.206        fast_oop_ctrl = contention_false;
   1.207  
   1.208        // Bump total allocated bytes for this thread
   1.209 -      Node* thread = new (C, 1) ThreadLocalNode();
   1.210 +      Node* thread = new (C) ThreadLocalNode();
   1.211        transform_later(thread);
   1.212        Node* alloc_bytes_adr = basic_plus_adr(top()/*not oop*/, thread,
   1.213                                               in_bytes(JavaThread::allocated_bytes_offset()));
   1.214 @@ -1293,10 +1292,10 @@
   1.215  #ifdef _LP64
   1.216        Node* alloc_size = size_in_bytes;
   1.217  #else
   1.218 -      Node* alloc_size = new (C, 2) ConvI2LNode(size_in_bytes);
   1.219 +      Node* alloc_size = new (C) ConvI2LNode(size_in_bytes);
   1.220        transform_later(alloc_size);
   1.221  #endif
   1.222 -      Node* new_alloc_bytes = new (C, 3) AddLNode(alloc_bytes, alloc_size);
   1.223 +      Node* new_alloc_bytes = new (C) AddLNode(alloc_bytes, alloc_size);
   1.224        transform_later(new_alloc_bytes);
   1.225        fast_oop_rawmem = make_store(fast_oop_ctrl, store_eden_top, alloc_bytes_adr,
   1.226                                     0, new_alloc_bytes, T_LONG);
   1.227 @@ -1323,9 +1322,9 @@
   1.228  
   1.229          mb->init_req(TypeFunc::Memory, fast_oop_rawmem);
   1.230          mb->init_req(TypeFunc::Control, fast_oop_ctrl);
   1.231 -        fast_oop_ctrl = new (C, 1) ProjNode(mb,TypeFunc::Control);
   1.232 +        fast_oop_ctrl = new (C) ProjNode(mb,TypeFunc::Control);
   1.233          transform_later(fast_oop_ctrl);
   1.234 -        fast_oop_rawmem = new (C, 1) ProjNode(mb,TypeFunc::Memory);
   1.235 +        fast_oop_rawmem = new (C) ProjNode(mb,TypeFunc::Memory);
   1.236          transform_later(fast_oop_rawmem);
   1.237        } else {
   1.238          // Add the MemBarStoreStore after the InitializeNode so that
   1.239 @@ -1339,9 +1338,9 @@
   1.240          MemBarNode* mb = MemBarNode::make(C, Op_MemBarStoreStore, Compile::AliasIdxBot);
   1.241          transform_later(mb);
   1.242  
   1.243 -        Node* ctrl = new (C, 1) ProjNode(init,TypeFunc::Control);
   1.244 +        Node* ctrl = new (C) ProjNode(init,TypeFunc::Control);
   1.245          transform_later(ctrl);
   1.246 -        Node* mem = new (C, 1) ProjNode(init,TypeFunc::Memory);
   1.247 +        Node* mem = new (C) ProjNode(init,TypeFunc::Memory);
   1.248          transform_later(mem);
   1.249  
   1.250          // The MemBarStoreStore depends on control and memory coming
   1.251 @@ -1349,9 +1348,9 @@
   1.252          mb->init_req(TypeFunc::Memory, mem);
   1.253          mb->init_req(TypeFunc::Control, ctrl);
   1.254  
   1.255 -        ctrl = new (C, 1) ProjNode(mb,TypeFunc::Control);
   1.256 +        ctrl = new (C) ProjNode(mb,TypeFunc::Control);
   1.257          transform_later(ctrl);
   1.258 -        mem = new (C, 1) ProjNode(mb,TypeFunc::Memory);
   1.259 +        mem = new (C) ProjNode(mb,TypeFunc::Memory);
   1.260          transform_later(mem);
   1.261  
   1.262          // All nodes that depended on the InitializeNode for control
   1.263 @@ -1365,13 +1364,13 @@
   1.264      if (C->env()->dtrace_extended_probes()) {
   1.265        // Slow-path call
   1.266        int size = TypeFunc::Parms + 2;
   1.267 -      CallLeafNode *call = new (C, size) CallLeafNode(OptoRuntime::dtrace_object_alloc_Type(),
   1.268 -                                                      CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_object_alloc_base),
   1.269 -                                                      "dtrace_object_alloc",
   1.270 -                                                      TypeRawPtr::BOTTOM);
   1.271 +      CallLeafNode *call = new (C) CallLeafNode(OptoRuntime::dtrace_object_alloc_Type(),
   1.272 +                                                CAST_FROM_FN_PTR(address, SharedRuntime::dtrace_object_alloc_base),
   1.273 +                                                "dtrace_object_alloc",
   1.274 +                                                TypeRawPtr::BOTTOM);
   1.275  
   1.276        // Get base of thread-local storage area
   1.277 -      Node* thread = new (C, 1) ThreadLocalNode();
   1.278 +      Node* thread = new (C) ThreadLocalNode();
   1.279        transform_later(thread);
   1.280  
   1.281        call->init_req(TypeFunc::Parms+0, thread);
   1.282 @@ -1382,9 +1381,9 @@
   1.283        call->init_req(TypeFunc::ReturnAdr, alloc->in(TypeFunc::ReturnAdr));
   1.284        call->init_req(TypeFunc::FramePtr, alloc->in(TypeFunc::FramePtr));
   1.285        transform_later(call);
   1.286 -      fast_oop_ctrl = new (C, 1) ProjNode(call,TypeFunc::Control);
   1.287 +      fast_oop_ctrl = new (C) ProjNode(call,TypeFunc::Control);
   1.288        transform_later(fast_oop_ctrl);
   1.289 -      fast_oop_rawmem = new (C, 1) ProjNode(call,TypeFunc::Memory);
   1.290 +      fast_oop_rawmem = new (C) ProjNode(call,TypeFunc::Memory);
   1.291        transform_later(fast_oop_rawmem);
   1.292      }
   1.293  
   1.294 @@ -1399,11 +1398,10 @@
   1.295    }
   1.296  
   1.297    // Generate slow-path call
   1.298 -  CallNode *call = new (C, slow_call_type->domain()->cnt())
   1.299 -    CallStaticJavaNode(slow_call_type, slow_call_address,
   1.300 -                       OptoRuntime::stub_name(slow_call_address),
   1.301 -                       alloc->jvms()->bci(),
   1.302 -                       TypePtr::BOTTOM);
   1.303 +  CallNode *call = new (C) CallStaticJavaNode(slow_call_type, slow_call_address,
   1.304 +                               OptoRuntime::stub_name(slow_call_address),
   1.305 +                               alloc->jvms()->bci(),
   1.306 +                               TypePtr::BOTTOM);
   1.307    call->init_req( TypeFunc::Control, slow_region );
   1.308    call->init_req( TypeFunc::I_O    , top() )     ;   // does no i/o
   1.309    call->init_req( TypeFunc::Memory , slow_mem ); // may gc ptrs
   1.310 @@ -1457,7 +1455,7 @@
   1.311    // _memproj_catchall so we end up with a call that has only 1 memory projection.
   1.312    if (_memproj_catchall != NULL ) {
   1.313      if (_memproj_fallthrough == NULL) {
   1.314 -      _memproj_fallthrough = new (C, 1) ProjNode(call, TypeFunc::Memory);
   1.315 +      _memproj_fallthrough = new (C) ProjNode(call, TypeFunc::Memory);
   1.316        transform_later(_memproj_fallthrough);
   1.317      }
   1.318      for (DUIterator_Fast imax, i = _memproj_catchall->fast_outs(imax); i < imax; i++) {
   1.319 @@ -1489,7 +1487,7 @@
   1.320    // _ioproj_catchall so we end up with a call that has only 1 i_o projection.
   1.321    if (_ioproj_catchall != NULL ) {
   1.322      if (_ioproj_fallthrough == NULL) {
   1.323 -      _ioproj_fallthrough = new (C, 1) ProjNode(call, TypeFunc::I_O);
   1.324 +      _ioproj_fallthrough = new (C) ProjNode(call, TypeFunc::I_O);
   1.325        transform_later(_ioproj_fallthrough);
   1.326      }
   1.327      for (DUIterator_Fast imax, i = _ioproj_catchall->fast_outs(imax); i < imax; i++) {
   1.328 @@ -1623,46 +1621,46 @@
   1.329        // As an allocation hits the watermark, we will prefetch starting
   1.330        // at a "distance" away from watermark.
   1.331  
   1.332 -      Node *pf_region = new (C, 3) RegionNode(3);
   1.333 -      Node *pf_phi_rawmem = new (C, 3) PhiNode( pf_region, Type::MEMORY,
   1.334 +      Node *pf_region = new (C) RegionNode(3);
   1.335 +      Node *pf_phi_rawmem = new (C) PhiNode( pf_region, Type::MEMORY,
   1.336                                                  TypeRawPtr::BOTTOM );
   1.337        // I/O is used for Prefetch
   1.338 -      Node *pf_phi_abio = new (C, 3) PhiNode( pf_region, Type::ABIO );
   1.339 +      Node *pf_phi_abio = new (C) PhiNode( pf_region, Type::ABIO );
   1.340  
   1.341 -      Node *thread = new (C, 1) ThreadLocalNode();
   1.342 +      Node *thread = new (C) ThreadLocalNode();
   1.343        transform_later(thread);
   1.344  
   1.345 -      Node *eden_pf_adr = new (C, 4) AddPNode( top()/*not oop*/, thread,
   1.346 +      Node *eden_pf_adr = new (C) AddPNode( top()/*not oop*/, thread,
   1.347                     _igvn.MakeConX(in_bytes(JavaThread::tlab_pf_top_offset())) );
   1.348        transform_later(eden_pf_adr);
   1.349  
   1.350 -      Node *old_pf_wm = new (C, 3) LoadPNode( needgc_false,
   1.351 +      Node *old_pf_wm = new (C) LoadPNode( needgc_false,
   1.352                                     contended_phi_rawmem, eden_pf_adr,
   1.353                                     TypeRawPtr::BOTTOM, TypeRawPtr::BOTTOM );
   1.354        transform_later(old_pf_wm);
   1.355  
   1.356        // check against new_eden_top
   1.357 -      Node *need_pf_cmp = new (C, 3) CmpPNode( new_eden_top, old_pf_wm );
   1.358 +      Node *need_pf_cmp = new (C) CmpPNode( new_eden_top, old_pf_wm );
   1.359        transform_later(need_pf_cmp);
   1.360 -      Node *need_pf_bol = new (C, 2) BoolNode( need_pf_cmp, BoolTest::ge );
   1.361 +      Node *need_pf_bol = new (C) BoolNode( need_pf_cmp, BoolTest::ge );
   1.362        transform_later(need_pf_bol);
   1.363 -      IfNode *need_pf_iff = new (C, 2) IfNode( needgc_false, need_pf_bol,
   1.364 +      IfNode *need_pf_iff = new (C) IfNode( needgc_false, need_pf_bol,
   1.365                                         PROB_UNLIKELY_MAG(4), COUNT_UNKNOWN );
   1.366        transform_later(need_pf_iff);
   1.367  
   1.368        // true node, add prefetchdistance
   1.369 -      Node *need_pf_true = new (C, 1) IfTrueNode( need_pf_iff );
   1.370 +      Node *need_pf_true = new (C) IfTrueNode( need_pf_iff );
   1.371        transform_later(need_pf_true);
   1.372  
   1.373 -      Node *need_pf_false = new (C, 1) IfFalseNode( need_pf_iff );
   1.374 +      Node *need_pf_false = new (C) IfFalseNode( need_pf_iff );
   1.375        transform_later(need_pf_false);
   1.376  
   1.377 -      Node *new_pf_wmt = new (C, 4) AddPNode( top(), old_pf_wm,
   1.378 +      Node *new_pf_wmt = new (C) AddPNode( top(), old_pf_wm,
   1.379                                      _igvn.MakeConX(AllocatePrefetchDistance) );
   1.380        transform_later(new_pf_wmt );
   1.381        new_pf_wmt->set_req(0, need_pf_true);
   1.382  
   1.383 -      Node *store_new_wmt = new (C, 4) StorePNode( need_pf_true,
   1.384 +      Node *store_new_wmt = new (C) StorePNode( need_pf_true,
   1.385                                         contended_phi_rawmem, eden_pf_adr,
   1.386                                         TypeRawPtr::BOTTOM, new_pf_wmt );
   1.387        transform_later(store_new_wmt);
   1.388 @@ -1677,10 +1675,10 @@
   1.389        uint distance = 0;
   1.390  
   1.391        for ( uint i = 0; i < lines; i++ ) {
   1.392 -        prefetch_adr = new (C, 4) AddPNode( old_pf_wm, new_pf_wmt,
   1.393 +        prefetch_adr = new (C) AddPNode( old_pf_wm, new_pf_wmt,
   1.394                                              _igvn.MakeConX(distance) );
   1.395          transform_later(prefetch_adr);
   1.396 -        prefetch = new (C, 3) PrefetchAllocationNode( i_o, prefetch_adr );
   1.397 +        prefetch = new (C) PrefetchAllocationNode( i_o, prefetch_adr );
   1.398          transform_later(prefetch);
   1.399          distance += step_size;
   1.400          i_o = prefetch;
   1.401 @@ -1703,9 +1701,9 @@
   1.402     } else if( UseTLAB && AllocatePrefetchStyle == 3 ) {
   1.403        // Insert a prefetch for each allocation.
   1.404        // This code is used for Sparc with BIS.
   1.405 -      Node *pf_region = new (C, 3) RegionNode(3);
   1.406 -      Node *pf_phi_rawmem = new (C, 3) PhiNode( pf_region, Type::MEMORY,
   1.407 -                                                TypeRawPtr::BOTTOM );
   1.408 +      Node *pf_region = new (C) RegionNode(3);
   1.409 +      Node *pf_phi_rawmem = new (C) PhiNode( pf_region, Type::MEMORY,
   1.410 +                                             TypeRawPtr::BOTTOM );
   1.411  
   1.412        // Generate several prefetch instructions.
   1.413        uint lines = (length != NULL) ? AllocatePrefetchLines : AllocateInstancePrefetchLines;
   1.414 @@ -1713,29 +1711,29 @@
   1.415        uint distance = AllocatePrefetchDistance;
   1.416  
   1.417        // Next cache address.
   1.418 -      Node *cache_adr = new (C, 4) AddPNode(old_eden_top, old_eden_top,
   1.419 +      Node *cache_adr = new (C) AddPNode(old_eden_top, old_eden_top,
   1.420                                              _igvn.MakeConX(distance));
   1.421        transform_later(cache_adr);
   1.422 -      cache_adr = new (C, 2) CastP2XNode(needgc_false, cache_adr);
   1.423 +      cache_adr = new (C) CastP2XNode(needgc_false, cache_adr);
   1.424        transform_later(cache_adr);
   1.425        Node* mask = _igvn.MakeConX(~(intptr_t)(step_size-1));
   1.426 -      cache_adr = new (C, 3) AndXNode(cache_adr, mask);
   1.427 +      cache_adr = new (C) AndXNode(cache_adr, mask);
   1.428        transform_later(cache_adr);
   1.429 -      cache_adr = new (C, 2) CastX2PNode(cache_adr);
   1.430 +      cache_adr = new (C) CastX2PNode(cache_adr);
   1.431        transform_later(cache_adr);
   1.432  
   1.433        // Prefetch
   1.434 -      Node *prefetch = new (C, 3) PrefetchAllocationNode( contended_phi_rawmem, cache_adr );
   1.435 +      Node *prefetch = new (C) PrefetchAllocationNode( contended_phi_rawmem, cache_adr );
   1.436        prefetch->set_req(0, needgc_false);
   1.437        transform_later(prefetch);
   1.438        contended_phi_rawmem = prefetch;
   1.439        Node *prefetch_adr;
   1.440        distance = step_size;
   1.441        for ( uint i = 1; i < lines; i++ ) {
   1.442 -        prefetch_adr = new (C, 4) AddPNode( cache_adr, cache_adr,
   1.443 +        prefetch_adr = new (C) AddPNode( cache_adr, cache_adr,
   1.444                                              _igvn.MakeConX(distance) );
   1.445          transform_later(prefetch_adr);
   1.446 -        prefetch = new (C, 3) PrefetchAllocationNode( contended_phi_rawmem, prefetch_adr );
   1.447 +        prefetch = new (C) PrefetchAllocationNode( contended_phi_rawmem, prefetch_adr );
   1.448          transform_later(prefetch);
   1.449          distance += step_size;
   1.450          contended_phi_rawmem = prefetch;
   1.451 @@ -1749,10 +1747,10 @@
   1.452        uint step_size = AllocatePrefetchStepSize;
   1.453        uint distance = AllocatePrefetchDistance;
   1.454        for ( uint i = 0; i < lines; i++ ) {
   1.455 -        prefetch_adr = new (C, 4) AddPNode( old_eden_top, new_eden_top,
   1.456 +        prefetch_adr = new (C) AddPNode( old_eden_top, new_eden_top,
   1.457                                              _igvn.MakeConX(distance) );
   1.458          transform_later(prefetch_adr);
   1.459 -        prefetch = new (C, 3) PrefetchAllocationNode( i_o, prefetch_adr );
   1.460 +        prefetch = new (C) PrefetchAllocationNode( i_o, prefetch_adr );
   1.461          // Do not let it float too high, since if eden_top == eden_end,
   1.462          // both might be null.
   1.463          if( i == 0 ) { // Set control for first prefetch, next follows it
   1.464 @@ -2101,12 +2099,12 @@
   1.465       *  }
   1.466       */
   1.467  
   1.468 -    region  = new (C, 5) RegionNode(5);
   1.469 +    region  = new (C) RegionNode(5);
   1.470      // create a Phi for the memory state
   1.471 -    mem_phi = new (C, 5) PhiNode( region, Type::MEMORY, TypeRawPtr::BOTTOM);
   1.472 +    mem_phi = new (C) PhiNode( region, Type::MEMORY, TypeRawPtr::BOTTOM);
   1.473  
   1.474 -    Node* fast_lock_region  = new (C, 3) RegionNode(3);
   1.475 -    Node* fast_lock_mem_phi = new (C, 3) PhiNode( fast_lock_region, Type::MEMORY, TypeRawPtr::BOTTOM);
   1.476 +    Node* fast_lock_region  = new (C) RegionNode(3);
   1.477 +    Node* fast_lock_mem_phi = new (C) PhiNode( fast_lock_region, Type::MEMORY, TypeRawPtr::BOTTOM);
   1.478  
   1.479      // First, check mark word for the biased lock pattern.
   1.480      Node* mark_node = make_load(ctrl, mem, obj, oopDesc::mark_offset_in_bytes(), TypeX_X, TypeX_X->basic_type());
   1.481 @@ -2136,10 +2134,10 @@
   1.482      }
   1.483      Node *proto_node = make_load(ctrl, mem, klass_node, in_bytes(Klass::prototype_header_offset()), TypeX_X, TypeX_X->basic_type());
   1.484  
   1.485 -    Node* thread = transform_later(new (C, 1) ThreadLocalNode());
   1.486 -    Node* cast_thread = transform_later(new (C, 2) CastP2XNode(ctrl, thread));
   1.487 -    Node* o_node = transform_later(new (C, 3) OrXNode(cast_thread, proto_node));
   1.488 -    Node* x_node = transform_later(new (C, 3) XorXNode(o_node, mark_node));
   1.489 +    Node* thread = transform_later(new (C) ThreadLocalNode());
   1.490 +    Node* cast_thread = transform_later(new (C) CastP2XNode(ctrl, thread));
   1.491 +    Node* o_node = transform_later(new (C) OrXNode(cast_thread, proto_node));
   1.492 +    Node* x_node = transform_later(new (C) XorXNode(o_node, mark_node));
   1.493  
   1.494      // Get slow path - mark word does NOT match the value.
   1.495      Node* not_biased_ctrl =  opt_bits_test(ctrl, region, 3, x_node,
   1.496 @@ -2162,17 +2160,17 @@
   1.497      // We are going to try to reset the mark of this object to the prototype
   1.498      // value and fall through to the CAS-based locking scheme.
   1.499      Node* adr = basic_plus_adr(obj, oopDesc::mark_offset_in_bytes());
   1.500 -    Node* cas = new (C, 5) StoreXConditionalNode(not_biased_ctrl, mem, adr,
   1.501 -                                                 proto_node, mark_node);
   1.502 +    Node* cas = new (C) StoreXConditionalNode(not_biased_ctrl, mem, adr,
   1.503 +                                              proto_node, mark_node);
   1.504      transform_later(cas);
   1.505 -    Node* proj = transform_later( new (C, 1) SCMemProjNode(cas));
   1.506 +    Node* proj = transform_later( new (C) SCMemProjNode(cas));
   1.507      fast_lock_mem_phi->init_req(2, proj);
   1.508  
   1.509  
   1.510      // Second, check epoch bits.
   1.511 -    Node* rebiased_region  = new (C, 3) RegionNode(3);
   1.512 -    Node* old_phi = new (C, 3) PhiNode( rebiased_region, TypeX_X);
   1.513 -    Node* new_phi = new (C, 3) PhiNode( rebiased_region, TypeX_X);
   1.514 +    Node* rebiased_region  = new (C) RegionNode(3);
   1.515 +    Node* old_phi = new (C) PhiNode( rebiased_region, TypeX_X);
   1.516 +    Node* new_phi = new (C) PhiNode( rebiased_region, TypeX_X);
   1.517  
   1.518      // Get slow path - mark word does NOT match epoch bits.
   1.519      Node* epoch_ctrl =  opt_bits_test(ctrl, rebiased_region, 1, x_node,
   1.520 @@ -2189,9 +2187,9 @@
   1.521      Node* cmask   = MakeConX(markOopDesc::biased_lock_mask_in_place |
   1.522                               markOopDesc::age_mask_in_place |
   1.523                               markOopDesc::epoch_mask_in_place);
   1.524 -    Node* old = transform_later(new (C, 3) AndXNode(mark_node, cmask));
   1.525 -    cast_thread = transform_later(new (C, 2) CastP2XNode(ctrl, thread));
   1.526 -    Node* new_mark = transform_later(new (C, 3) OrXNode(cast_thread, old));
   1.527 +    Node* old = transform_later(new (C) AndXNode(mark_node, cmask));
   1.528 +    cast_thread = transform_later(new (C) CastP2XNode(ctrl, thread));
   1.529 +    Node* new_mark = transform_later(new (C) OrXNode(cast_thread, old));
   1.530      old_phi->init_req(1, old);
   1.531      new_phi->init_req(1, new_mark);
   1.532  
   1.533 @@ -2201,10 +2199,10 @@
   1.534  
   1.535      // Try to acquire the bias of the object using an atomic operation.
   1.536      // If this fails we will go in to the runtime to revoke the object's bias.
   1.537 -    cas = new (C, 5) StoreXConditionalNode(rebiased_region, mem, adr,
   1.538 +    cas = new (C) StoreXConditionalNode(rebiased_region, mem, adr,
   1.539                                             new_phi, old_phi);
   1.540      transform_later(cas);
   1.541 -    proj = transform_later( new (C, 1) SCMemProjNode(cas));
   1.542 +    proj = transform_later( new (C) SCMemProjNode(cas));
   1.543  
   1.544      // Get slow path - Failed to CAS.
   1.545      not_biased_ctrl = opt_bits_test(rebiased_region, region, 4, cas, 0, 0);
   1.546 @@ -2212,8 +2210,8 @@
   1.547      // region->in(4) is set to fast path - the object is rebiased to the current thread.
   1.548  
   1.549      // Failed to CAS.
   1.550 -    slow_path  = new (C, 3) RegionNode(3);
   1.551 -    Node *slow_mem = new (C, 3) PhiNode( slow_path, Type::MEMORY, TypeRawPtr::BOTTOM);
   1.552 +    slow_path  = new (C) RegionNode(3);
   1.553 +    Node *slow_mem = new (C) PhiNode( slow_path, Type::MEMORY, TypeRawPtr::BOTTOM);
   1.554  
   1.555      slow_path->init_req(1, not_biased_ctrl); // Capture slow-control
   1.556      slow_mem->init_req(1, proj);
   1.557 @@ -2237,9 +2235,9 @@
   1.558      lock->set_req(TypeFunc::Memory, slow_mem);
   1.559  
   1.560    } else {
   1.561 -    region  = new (C, 3) RegionNode(3);
   1.562 +    region  = new (C) RegionNode(3);
   1.563      // create a Phi for the memory state
   1.564 -    mem_phi = new (C, 3) PhiNode( region, Type::MEMORY, TypeRawPtr::BOTTOM);
   1.565 +    mem_phi = new (C) PhiNode( region, Type::MEMORY, TypeRawPtr::BOTTOM);
   1.566  
   1.567      // Optimize test; set region slot 2
   1.568      slow_path = opt_bits_test(ctrl, region, 2, flock, 0, 0);
   1.569 @@ -2270,7 +2268,7 @@
   1.570    transform_later(region);
   1.571    _igvn.replace_node(_fallthroughproj, region);
   1.572  
   1.573 -  Node *memproj = transform_later( new(C, 1) ProjNode(call, TypeFunc::Memory) );
   1.574 +  Node *memproj = transform_later( new(C) ProjNode(call, TypeFunc::Memory) );
   1.575    mem_phi->init_req(1, memproj );
   1.576    transform_later(mem_phi);
   1.577    _igvn.replace_node(_memproj_fallthrough, mem_phi);
   1.578 @@ -2295,9 +2293,9 @@
   1.579    if (UseOptoBiasInlining) {
   1.580      // Check for biased locking unlock case, which is a no-op.
   1.581      // See the full description in MacroAssembler::biased_locking_exit().
   1.582 -    region  = new (C, 4) RegionNode(4);
   1.583 +    region  = new (C) RegionNode(4);
   1.584      // create a Phi for the memory state
   1.585 -    mem_phi = new (C, 4) PhiNode( region, Type::MEMORY, TypeRawPtr::BOTTOM);
   1.586 +    mem_phi = new (C) PhiNode( region, Type::MEMORY, TypeRawPtr::BOTTOM);
   1.587      mem_phi->init_req(3, mem);
   1.588  
   1.589      Node* mark_node = make_load(ctrl, mem, obj, oopDesc::mark_offset_in_bytes(), TypeX_X, TypeX_X->basic_type());
   1.590 @@ -2305,12 +2303,12 @@
   1.591                           markOopDesc::biased_lock_mask_in_place,
   1.592                           markOopDesc::biased_lock_pattern);
   1.593    } else {
   1.594 -    region  = new (C, 3) RegionNode(3);
   1.595 +    region  = new (C) RegionNode(3);
   1.596      // create a Phi for the memory state
   1.597 -    mem_phi = new (C, 3) PhiNode( region, Type::MEMORY, TypeRawPtr::BOTTOM);
   1.598 +    mem_phi = new (C) PhiNode( region, Type::MEMORY, TypeRawPtr::BOTTOM);
   1.599    }
   1.600  
   1.601 -  FastUnlockNode *funlock = new (C, 3) FastUnlockNode( ctrl, obj, box );
   1.602 +  FastUnlockNode *funlock = new (C) FastUnlockNode( ctrl, obj, box );
   1.603    funlock = transform_later( funlock )->as_FastUnlock();
   1.604    // Optimize test; set region slot 2
   1.605    Node *slow_path = opt_bits_test(ctrl, region, 2, funlock, 0, 0);
   1.606 @@ -2335,7 +2333,7 @@
   1.607    transform_later(region);
   1.608    _igvn.replace_node(_fallthroughproj, region);
   1.609  
   1.610 -  Node *memproj = transform_later( new(C, 1) ProjNode(call, TypeFunc::Memory) );
   1.611 +  Node *memproj = transform_later( new(C) ProjNode(call, TypeFunc::Memory) );
   1.612    mem_phi->init_req(1, memproj );
   1.613    mem_phi->init_req(2, mem);
   1.614    transform_later(mem_phi);

mercurial