JDK-8005722 : Assert in c1_LIR.hpp incorrect wrt to number of register operands
  • Type: Bug
  • Component: embedded
  • Sub-Component: hotspot
  • Affected Version: hs24,hs25
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • CPU: generic
  • Submitted: 2013-01-04
  • Updated: 2013-06-26
  • Resolved: 2013-02-13
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 7 JDK 8 Other
7u40Fixed 8Fixed hs24Fixed
      assert(_oprs_len[mode] < maxNumberOfOperands, "array overflow") should probably be <= test
The problem is not the assert but the fact that in LIR_OpVisitState::visit() the receiver operand is processed twice. First at line 813 and then again when the arg list is processed starting at index 0 which is the receiver object. Fix is to set the start index to 0 or 1 based on receiver invalid/valid.