Mercurial > hg > truffle
diff src/share/vm/c1/c1_GraphBuilder.cpp @ 14663:3edd4a71588b
8031818: Experimental VM flag for enforcing safe object construction
Summary: -XX:+AlwaysSafeConstructors to unconditionally emit the trailing constructor barrier.
Reviewed-by: kvn, roland
author | shade |
---|---|
date | Mon, 03 Mar 2014 15:31:27 +0400 |
parents | 96d2c94bbdd0 |
children | 1179450ad3ee |
line wrap: on
line diff
--- a/src/share/vm/c1/c1_GraphBuilder.cpp Mon Mar 03 15:54:45 2014 +0400 +++ b/src/share/vm/c1/c1_GraphBuilder.cpp Mon Mar 03 15:31:27 2014 +0400 @@ -1436,7 +1436,7 @@ bool need_mem_bar = false; if (method()->name() == ciSymbol::object_initializer_name() && - scope()->wrote_final()) { + (scope()->wrote_final() || (AlwaysSafeConstructors && scope()->wrote_fields()))) { need_mem_bar = true; } @@ -1550,6 +1550,10 @@ scope()->set_wrote_final(); } + if (code == Bytecodes::_putfield) { + scope()->set_wrote_fields(); + } + const int offset = !needs_patching ? field->offset() : -1; switch (code) { case Bytecodes::_getstatic: {