-
Bug
-
Resolution: Fixed
-
P3
-
None
-
b01
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8202806 | 10u-cpu | Aleksey Shipilev | P3 | Resolved | Fixed | master |
JDK-8202733 | 10.0.2 | Aleksey Shipilev | P3 | Resolved | Fixed | b06 |
JDK-8201502 | 10u-open | Aleksey Shipilev | P3 | Resolved | Fixed | master |
If MethodHandles.filterArguments is used to apply two or more non-null filters to a method handle, those filters will be run in right-to-left order in the OpenJDK implementation. The javadoc indicates that these filters are run in normal argument order, left-to-right; IBM's implementation correctly implements this specification. If we have unit tests for this, they are probably using filter functions with no side effects, so it is impossible to detect the error.
Suggested fix: Run the accumulation loop backwards over the array of filters. And put in a regression test with side-effecting filters.
Links:
http://mail.openjdk.java.net/pipermail/mlvm-dev/2018-January/006789.html
http://mail.openjdk.java.net/pipermail/mlvm-dev/2018-January/006798.html
Suggested fix: Run the accumulation loop backwards over the array of filters. And put in a regression test with side-effecting filters.
Links:
http://mail.openjdk.java.net/pipermail/mlvm-dev/2018-January/006789.html
http://mail.openjdk.java.net/pipermail/mlvm-dev/2018-January/006798.html
- backported by
-
JDK-8201502 filterArguments runs multiple filters in the wrong order
- Resolved
-
JDK-8202733 filterArguments runs multiple filters in the wrong order
- Resolved
-
JDK-8202806 filterArguments runs multiple filters in the wrong order
- Resolved
- blocks
-
JDK-8200118 [TESTBUG] String concat tests should test toString() application order
- Resolved
- csr for
-
JDK-8201371 filterArguments runs multiple filters in the wrong order
- Closed