-
Bug
-
Resolution: Fixed
-
P2
-
8u112, 9
-
None
-
b148
-
generic
-
generic
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8183883 | 8u161 | Attila Szegedi | P2 | Resolved | Fixed | b01 |
JDK-8170628 | 8u152 | Attila Szegedi | P2 | Closed | Fixed | b01 |
JDK-8192726 | emb-8u161 | Attila Szegedi | P2 | Resolved | Fixed | b01 |
The expression "a.b >>>=0" or "a[b] >>>=0" will leave a lingering "a" loaded on the operand stack when generating bytecode, in many cases throwing off stack maps and ultimately failing the verifier.
This is specific to the >>>= operator, in case where the LHS is a base expression (property or element access) and the RHS is a literal zero.
The bug is in a special-case handling of RHS zero (we have a special path for "coerce to UInt32, which is basically what >>>=0 is doing) that is not loading LHS with "base already on stack" flag set and thus resulting in an additional, unnecessary load of the base.
This is specific to the >>>= operator, in case where the LHS is a base expression (property or element access) and the RHS is a literal zero.
The bug is in a special-case handling of RHS zero (we have a special path for "coerce to UInt32, which is basically what >>>=0 is doing) that is not loading LHS with "base already on stack" flag set and thus resulting in an additional, unnecessary load of the base.
- backported by
-
JDK-8183883 >>>=0 generates invalid bytecode for BaseNode LHS
- Resolved
-
JDK-8192726 >>>=0 generates invalid bytecode for BaseNode LHS
- Resolved
-
JDK-8170628 >>>=0 generates invalid bytecode for BaseNode LHS
- Closed