<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Sep 14, 2015, at 9:22 PM, Vladimir Kozlov <<a href="mailto:vladimir.kozlov@oracle.com" class="">vladimir.kozlov@oracle.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><a href="https://bugs.openjdk.java.net/browse/JDK-8136406" class="">https://bugs.openjdk.java.net/browse/JDK-8136406</a><br class=""><a href="http://cr.openjdk.java.net/~kvn/8136406/webrev/" class="">http://cr.openjdk.java.net/~kvn/8136406/webrev/</a><br class=""></div></blockquote><div><br class=""></div>Should we remove:</div><div><br class=""></div><div>  void OopMap::set_value(VMReg reg) {<br class=""><br class="">altogether?</div><div><br class=""><blockquote type="cite" class=""><div class=""><br class="">Dead code elimination.<br class="">I did not find any bugs since 2000 associated with ZapDeadCompilerLocals. There were few in 1999,2000 when that code was added.<br class=""><br class="">I do not remember ever used ZapDeadCompilerLocals. I tried today and it does not work - corresponding calls into runtime to check oopmap are not generated. The code has condition:<br class=""><br class="">(n->as_MachSafePoint()->oop_map() != NULL);<br class=""><br class="">But oop_map set only during BuildOopMaps() which is called after Insert_zap_nodes(). And we can't move Insert_zap_nodes() call because calls insertion should happen before short branches are processed.<br class="">So it is dead code we always had in debug Server VM.<br class=""><br class="">As result of this cleaning we can remove OopMapValue::value_value used only with ZapDeadCompiledLocals - see OopMap::set_value(). It will allow increase maximum allocatable spill area by factor of 2. When we generate oopmaps we may bailout compilation when we hit this limit:<br class=""><br class="">      // Check for a legal reg name in the oopMap and bailout if it is not.<br class="">      if (!omap->legal_vm_reg_name(r)) {<br class="">        regalloc->C->record_method_not_compilable("illegal oopMap register name");<br class="">        continue;<br class="">      }<br class=""><br class="">Changes passed JPRT.<br class=""><br class="">Thanks,<br class="">Vladimir<br class=""></div></blockquote></div><br class=""></body></html>