src/share/vm/c1/c1_GraphBuilder.cpp

Print this page

        

*** 1434,1444 **** call_register_finalizer(); } bool need_mem_bar = false; if (method()->name() == ciSymbol::object_initializer_name() && ! scope()->wrote_final()) { need_mem_bar = true; } // Check to see whether we are inlining. If so, Return // instructions become Gotos to the continuation point. --- 1434,1444 ---- call_register_finalizer(); } bool need_mem_bar = false; if (method()->name() == ciSymbol::object_initializer_name() && ! (scope()->wrote_final() || (AlwaysSafeConstructors && scope()->wrote_fields()))) { need_mem_bar = true; } // Check to see whether we are inlining. If so, Return // instructions become Gotos to the continuation point.
*** 1548,1557 **** --- 1548,1561 ---- if (field->is_final() && (code == Bytecodes::_putfield)) { 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: { // check for compile-time constants, i.e., initialized static final fields Instruction* constant = NULL;