Mercurial > hg > truffle
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)) { |