comparison src/share/vm/opto/parse1.cpp @ 14452:c6d7e7406136

8029101: PPC64 (part 211): ordering of Independent Reads of Independent Writes Reviewed-by: dholmes, kvn Contributed-by: martin.doerr@sap.com
author goetz
date Thu, 16 Jan 2014 14:25:51 +0100
parents 2113136690bc
children abec000618bf
comparison
equal deleted inserted replaced
14451:b858620b0081 14452:c6d7e7406136
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