Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8143473 | emb-9 | Zoltan Majo | P3 | Resolved | Fixed | team |
DisableIntrinsic filtering code looks for the vmIntrinsic name in the comma-separated list:
ccstr disable_intr = NULL;
if ((DisableIntrinsic[0] != '\0' && strstr(DisableIntrinsic, vmIntrinsics::name_at(id)) != NULL) ||
(!compilation_context.is_null() &&
CompilerOracle::has_option_value(compilation_context, "DisableIntrinsic", disable_intr) &&
strstr(disable_intr, vmIntrinsics::name_at(id)) != NULL)
) {
tty->print_cr("Disabling intrinsic %s by DisableIntrinsic", vmIntrinsics::name_at(id));
return true;
}
Which means that supplying -XX:DisableIntrinsic=_copyOfRange matches *both* _copyOf and _copyOfRange intrinsics. I think the code should actually look for the vmIntrinsic name to be followed with a comma or \0. It gets much worse when you are trying to disable some new intrinsic, e.g. _getCharStringU, and (Unsafe::)_getChar gets disabled along.
Makes performance work more tedious than it should nominally be.
ccstr disable_intr = NULL;
if ((DisableIntrinsic[0] != '\0' && strstr(DisableIntrinsic, vmIntrinsics::name_at(id)) != NULL) ||
(!compilation_context.is_null() &&
CompilerOracle::has_option_value(compilation_context, "DisableIntrinsic", disable_intr) &&
strstr(disable_intr, vmIntrinsics::name_at(id)) != NULL)
) {
tty->print_cr("Disabling intrinsic %s by DisableIntrinsic", vmIntrinsics::name_at(id));
return true;
}
Which means that supplying -XX:DisableIntrinsic=_copyOfRange matches *both* _copyOf and _copyOfRange intrinsics. I think the code should actually look for the vmIntrinsic name to be followed with a comma or \0. It gets much worse when you are trying to disable some new intrinsic, e.g. _getCharStringU, and (Unsafe::)_getChar gets disabled along.
Makes performance work more tedious than it should nominally be.
- backported by
-
JDK-8143473 -XX:DisableIntrinsic matches intrinsics overly eagerly
- Resolved
- blocks
-
JDK-8140389 Remove StringCharIntrinsics flag after JDK-8138651 is fixed
- Resolved
- is blocked by
-
JDK-8046155 JEP 165: Compiler Control
- Closed
- relates to
-
JDK-8140322 Per-method usage of the DisableIntrinsic flags does not permit value accumulation
- Open