hotspot/src/share/vm/opto/parse1.cpp
changeset 22868 7f6eb436873b
parent 22845 d8812d0ff387
child 22872 b6902ee5bc8d
equal deleted inserted replaced
22867:309bcf262a19 22868:7f6eb436873b
   388   _caller = caller;
   388   _caller = caller;
   389   _method = parse_method;
   389   _method = parse_method;
   390   _expected_uses = expected_uses;
   390   _expected_uses = expected_uses;
   391   _depth = 1 + (caller->has_method() ? caller->depth() : 0);
   391   _depth = 1 + (caller->has_method() ? caller->depth() : 0);
   392   _wrote_final = false;
   392   _wrote_final = false;
       
   393   _wrote_volatile = false;
   393   _alloc_with_final = NULL;
   394   _alloc_with_final = NULL;
   394   _entry_bci = InvocationEntryBci;
   395   _entry_bci = InvocationEntryBci;
   395   _tf = NULL;
   396   _tf = NULL;
   396   _block = NULL;
   397   _block = NULL;
   397   debug_only(_block_count = -1);
   398   debug_only(_block_count = -1);
   905   _exits.set_control(gvn().transform(region));
   906   _exits.set_control(gvn().transform(region));
   906 
   907 
   907   Node* iophi = _exits.i_o();
   908   Node* iophi = _exits.i_o();
   908   _exits.set_i_o(gvn().transform(iophi));
   909   _exits.set_i_o(gvn().transform(iophi));
   909 
   910 
   910   if (wrote_final()) {
   911   // On PPC64, also add MemBarRelease for constructors which write
       
   912   // volatile fields. As support_IRIW_for_not_multiple_copy_atomic_cpu
       
   913   // is set on PPC64, no sync instruction is issued after volatile
       
   914   // stores. We want to quarantee the same behaviour as on platforms
       
   915   // with total store order, although this is not required by the Java
       
   916   // memory model. So as with finals, we add a barrier here.
       
   917   if (wrote_final() PPC64_ONLY(|| (wrote_volatile() && method()->is_initializer()))) {
   911     // This method (which must be a constructor by the rules of Java)
   918     // This method (which must be a constructor by the rules of Java)
   912     // wrote a final.  The effects of all initializations must be
   919     // wrote a final.  The effects of all initializations must be
   913     // committed to memory before any code after the constructor
   920     // committed to memory before any code after the constructor
   914     // publishes the reference to the newly constructor object.
   921     // publishes the reference to the newly constructor object.
   915     // Rather than wait for the publication, we simply block the
   922     // Rather than wait for the publication, we simply block the