[9] RFR(S): 8130309: need to bailout cleanly if CompiledStaticCall::emit_to_interp_stub fails when codecache is out of space

Tobias Hartmann tobias.hartmann at oracle.com
Mon Jul 27 05:58:14 UTC 2015


On 24.07.2015 23:21, Dean Long wrote:
> If TraceJumps causes problems on Sparc, then I think the Sparc version of to_interp_stub_size() needs to be adjusted to take TraceJumps into account.

No, the Sparc version of to_interp_stub_size() already takes TraceJumps into account:

  90 int CompiledStaticCall::to_interp_stub_size() {
  91   // This doesn't need to be accurate but it must be larger or equal to
  92   // the real size of the stub.
  93   return (NativeMovConstReg::instruction_size +  // sethi/setlo;
  94           NativeJump::instruction_size + // sethi; jmp; nop
  95           (TraceJumps ? 20 * BytesPerInstWord : 0) );
  96 }

The problem is that the additional code needed for TraceJumps does not fit into the scratch buffer because we only allocate 'MAX_stubs_size' for stubs and cannot expand the buffer (see Compile::scratch_emit_size()).

Other solutions would be to increase 'MAX_stubs_size' (which does not make sense because this is only a debug case) or to not emit the stub if we are 'in_scratch_emit_size()'. I saw you filed JDK-8132344 which should take care of this issue in general.

Best,
Tobias

> 
> dl


More information about the hotspot-compiler-dev mailing list