< prev index next >
src/share/vm/opto/c2compiler.cpp
Print this page
*** 254,263 ****
--- 254,264 ----
#endif
break;
case vmIntrinsics::_weakCompareAndSwapObject:
case vmIntrinsics::_weakCompareAndSwapObjectAcquire:
case vmIntrinsics::_weakCompareAndSwapObjectRelease:
+ case vmIntrinsics::_weakCompareAndSwapObjectVolatile:
#ifdef _LP64
if ( UseCompressedOops && !Matcher::match_rule_supported(Op_WeakCompareAndSwapN)) return false;
if (!UseCompressedOops && !Matcher::match_rule_supported(Op_WeakCompareAndSwapP)) return false;
#else
if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapP)) return false;
*** 268,290 ****
--- 269,315 ----
if (!Matcher::match_rule_supported(Op_CompareAndSwapL)) return false;
break;
case vmIntrinsics::_weakCompareAndSwapLong:
case vmIntrinsics::_weakCompareAndSwapLongAcquire:
case vmIntrinsics::_weakCompareAndSwapLongRelease:
+ case vmIntrinsics::_weakCompareAndSwapLongVolatile:
if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapL)) return false;
break;
/* CompareAndSwap, Int: */
case vmIntrinsics::_compareAndSwapInt:
if (!Matcher::match_rule_supported(Op_CompareAndSwapI)) return false;
break;
case vmIntrinsics::_weakCompareAndSwapInt:
case vmIntrinsics::_weakCompareAndSwapIntAcquire:
case vmIntrinsics::_weakCompareAndSwapIntRelease:
+ case vmIntrinsics::_weakCompareAndSwapIntVolatile:
if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapL)) return false;
break;
+ /* CompareAndSwap, Byte: */
+ case vmIntrinsics::_compareAndSwapByte:
+ if (!Matcher::match_rule_supported(Op_CompareAndSwapB)) return false;
+ break;
+ case vmIntrinsics::_weakCompareAndSwapByte:
+ case vmIntrinsics::_weakCompareAndSwapByteAcquire:
+ case vmIntrinsics::_weakCompareAndSwapByteRelease:
+ case vmIntrinsics::_weakCompareAndSwapByteVolatile:
+ if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapB)) return false;
+ break;
+
+ /* CompareAndSwap, Short: */
+ case vmIntrinsics::_compareAndSwapShort:
+ if (!Matcher::match_rule_supported(Op_CompareAndSwapS)) return false;
+ break;
+ case vmIntrinsics::_weakCompareAndSwapShort:
+ case vmIntrinsics::_weakCompareAndSwapShortAcquire:
+ case vmIntrinsics::_weakCompareAndSwapShortRelease:
+ case vmIntrinsics::_weakCompareAndSwapShortVolatile:
+ if (!Matcher::match_rule_supported(Op_WeakCompareAndSwapS)) return false;
+ break;
+
/* CompareAndExchange, Object: */
case vmIntrinsics::_compareAndExchangeObjectVolatile:
case vmIntrinsics::_compareAndExchangeObjectAcquire:
case vmIntrinsics::_compareAndExchangeObjectRelease:
#ifdef _LP64
*** 307,322 ****
--- 332,374 ----
case vmIntrinsics::_compareAndExchangeIntAcquire:
case vmIntrinsics::_compareAndExchangeIntRelease:
if (!Matcher::match_rule_supported(Op_CompareAndExchangeI)) return false;
break;
+ /* CompareAndExchange, Byte: */
+ case vmIntrinsics::_compareAndExchangeByteVolatile:
+ case vmIntrinsics::_compareAndExchangeByteAcquire:
+ case vmIntrinsics::_compareAndExchangeByteRelease:
+ if (!Matcher::match_rule_supported(Op_CompareAndExchangeB)) return false;
+ break;
+
+ /* CompareAndExchange, Short: */
+ case vmIntrinsics::_compareAndExchangeShortVolatile:
+ case vmIntrinsics::_compareAndExchangeShortAcquire:
+ case vmIntrinsics::_compareAndExchangeShortRelease:
+ if (!Matcher::match_rule_supported(Op_CompareAndExchangeS)) return false;
+ break;
+
+ case vmIntrinsics::_getAndAddByte:
+ if (!Matcher::match_rule_supported(Op_GetAndAddB)) return false;
+ break;
+ case vmIntrinsics::_getAndAddShort:
+ if (!Matcher::match_rule_supported(Op_GetAndAddS)) return false;
+ break;
case vmIntrinsics::_getAndAddInt:
if (!Matcher::match_rule_supported(Op_GetAndAddI)) return false;
break;
case vmIntrinsics::_getAndAddLong:
if (!Matcher::match_rule_supported(Op_GetAndAddL)) return false;
break;
+
+ case vmIntrinsics::_getAndSetByte:
+ if (!Matcher::match_rule_supported(Op_GetAndSetB)) return false;
+ break;
+ case vmIntrinsics::_getAndSetShort:
+ if (!Matcher::match_rule_supported(Op_GetAndSetS)) return false;
+ break;
case vmIntrinsics::_getAndSetInt:
if (!Matcher::match_rule_supported(Op_GetAndSetI)) return false;
break;
case vmIntrinsics::_getAndSetLong:
if (!Matcher::match_rule_supported(Op_GetAndSetL)) return false;
< prev index next >