[9] RFR(S): 8132457: Unify command-line flags controlling the usage of compiler intrinsics (original) (raw)

Zoltán Majó zoltan.majo at oracle.com
Fri Jul 31 10:02:06 UTC 2015


Hi,

please review the following patch for JDK-8132457.

Bug: https://bugs.openjdk.java.net/browse/JDK-8132457

Problem: There are four cases when flags controlling intrinsics for C1 and C2 behave inconsistently:

  1. The DisableIntrinsic flag is C2-specific.
  2. The InlineNatives flag disables most but not all intrinsics. Some intrinsics (implemented by both C1 and C2) are turned off by -XX:-InlineNatives for C1 but are left on for C2.
  3. The _getClass intrinsic (implemented by both C1 and C2) is turned off by -XX:-InlineClassNatives for C1 and is left unaffected by C2.
  4. The _loadfence, _storefence, _fullfence, _compareAndSwapObject, _compareAndSwapLong, and _compareAndSwapInt intrinsics are turned off by -XX:-InlineUnsafeOps for C2 and are unaffected by C1.

Solution: Unify command-line flags controlling intrinsic processing. Processing of command-line flags is now done only in vmIntrinsics::is_disabled_by_flags and there is no compiler-specific flag processing.

The inconsistencies listed in the problem description were addressed the following way:

  1. Extend the C1 compiler to consider the DisableIntrinsic flag when checking if an intrinsic is available.
  2. -XX:-InlineNatives turns off most intrinsics but leaves on some intrinsics (the same set of intrinsics are left on for both C1 and C2).
  3. -XX:-InlineClassNatives turns off the _getClass intrinsic for both C1 and C2.
  4. -XX:-InlineUnsafeOps turns off the _loadfence, _storefence, _fullfence, _compareAndSwapObject, _compareAndSwapLong, and _compareAndSwapInt intrinsics for both C1 and C2.

Webrev: http://cr.openjdk.java.net/~zmajo/8132457/webrev.00/

Testing:

Thank you and best regards,

Zoltan



More information about the hotspot-compiler-dev mailing list