comparison src/share/vm/c1/c1_Optimizer.cpp @ 4966:701a83c86f28

7120481: storeStore barrier in constructor with final field Summary: Issue storestore barrier before constructor return if the constructor write final field. Reviewed-by: dholmes, jrose, roland, coleenp Contributed-by: Jiangli Zhou <jiangli.zhou@oracle.com>
author jiangli
date Tue, 21 Feb 2012 13:14:55 -0500
parents e5ac210043cd
children 1d7922586cf6
comparison
equal deleted inserted replaced
4965:d79f8393df2b 4966:701a83c86f28
507 void do_UnsafePrefetchRead (UnsafePrefetchRead* x); 507 void do_UnsafePrefetchRead (UnsafePrefetchRead* x);
508 void do_UnsafePrefetchWrite(UnsafePrefetchWrite* x); 508 void do_UnsafePrefetchWrite(UnsafePrefetchWrite* x);
509 void do_ProfileCall (ProfileCall* x); 509 void do_ProfileCall (ProfileCall* x);
510 void do_ProfileInvoke (ProfileInvoke* x); 510 void do_ProfileInvoke (ProfileInvoke* x);
511 void do_RuntimeCall (RuntimeCall* x); 511 void do_RuntimeCall (RuntimeCall* x);
512 void do_MemBar (MemBar* x);
512 }; 513 };
513 514
514 515
515 // Because of a static contained within (for the purpose of iteration 516 // Because of a static contained within (for the purpose of iteration
516 // over instructions), it is only valid to have one of these active at 517 // over instructions), it is only valid to have one of these active at
676 void NullCheckVisitor::do_UnsafePrefetchRead (UnsafePrefetchRead* x) {} 677 void NullCheckVisitor::do_UnsafePrefetchRead (UnsafePrefetchRead* x) {}
677 void NullCheckVisitor::do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) {} 678 void NullCheckVisitor::do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) {}
678 void NullCheckVisitor::do_ProfileCall (ProfileCall* x) { nce()->clear_last_explicit_null_check(); } 679 void NullCheckVisitor::do_ProfileCall (ProfileCall* x) { nce()->clear_last_explicit_null_check(); }
679 void NullCheckVisitor::do_ProfileInvoke (ProfileInvoke* x) {} 680 void NullCheckVisitor::do_ProfileInvoke (ProfileInvoke* x) {}
680 void NullCheckVisitor::do_RuntimeCall (RuntimeCall* x) {} 681 void NullCheckVisitor::do_RuntimeCall (RuntimeCall* x) {}
682 void NullCheckVisitor::do_MemBar (MemBar* x) {}
681 683
682 684
683 void NullCheckEliminator::visit(Value* p) { 685 void NullCheckEliminator::visit(Value* p) {
684 assert(*p != NULL, "should not find NULL instructions"); 686 assert(*p != NULL, "should not find NULL instructions");
685 if (visitable(*p)) { 687 if (visitable(*p)) {