@@ -11900,7 +11900,8 @@ J9::Power::CodeGenerator::inlineDirectCall(TR::Node *node, TR::Register *&result
1190011900 }
1190111901 else if (methodSymbol)
1190211902 {
11903- static bool disableCAEIntrinsic = feGetEnv("TR_DisableCAEIntrinsic") != NULL;
11903+ bool disableCASInlining = !cg->getSupportsInlineUnsafeCompareAndSet();
11904+ bool disableCAEInlining = !cg->getSupportsInlineUnsafeCompareAndExchange();
1190411905 switch (methodSymbol->getRecognizedMethod())
1190511906 {
1190611907 case TR::java_util_concurrent_ConcurrentLinkedQueue_tmOffer:
@@ -12189,8 +12190,11 @@ J9::Power::CodeGenerator::inlineDirectCall(TR::Node *node, TR::Register *&result
1218912190
1219012191 if ((node->isUnsafeGetPutCASCallOnNonArray() || !TR::Compiler->om.canGenerateArraylets()) && node->isSafeForCGToFastPathUnsafeCall())
1219112192 {
12192- resultReg = VMinlineCompareAndSetOrExchange(node, cg, 4, false);
12193- return true;
12193+ if (!disableCASInlining)
12194+ {
12195+ resultReg = VMinlineCompareAndSetOrExchange(node, cg, 4, false);
12196+ return true;
12197+ }
1219412198 }
1219512199 break;
1219612200
@@ -12203,13 +12207,19 @@ J9::Power::CodeGenerator::inlineDirectCall(TR::Node *node, TR::Register *&result
1220312207
1220412208 if (comp->target().is64Bit() && (node->isUnsafeGetPutCASCallOnNonArray() || !TR::Compiler->om.canGenerateArraylets()) && node->isSafeForCGToFastPathUnsafeCall())
1220512209 {
12206- resultReg = VMinlineCompareAndSetOrExchange(node, cg, 8, false);
12207- return true;
12210+ if (!disableCASInlining)
12211+ {
12212+ resultReg = VMinlineCompareAndSetOrExchange(node, cg, 8, false);
12213+ return true;
12214+ }
1220812215 }
1220912216 else if ((node->isUnsafeGetPutCASCallOnNonArray() || !TR::Compiler->om.canGenerateArraylets()) && node->isSafeForCGToFastPathUnsafeCall())
1221012217 {
12211- resultReg = inlineAtomicOperation(node, cg, methodSymbol);
12212- return true;
12218+ if (!disableCASInlining)
12219+ {
12220+ resultReg = inlineAtomicOperation(node, cg, methodSymbol);
12221+ return true;
12222+ }
1221312223 }
1221412224 break;
1221512225
@@ -12220,15 +12230,18 @@ J9::Power::CodeGenerator::inlineDirectCall(TR::Node *node, TR::Register *&result
1222012230
1222112231 if ((node->isUnsafeGetPutCASCallOnNonArray() || !TR::Compiler->om.canGenerateArraylets()) && node->isSafeForCGToFastPathUnsafeCall())
1222212232 {
12223- resultReg = VMinlineCompareAndSetOrExchangeReference(node, cg, false);
12224- return true;
12233+ if (!disableCASInlining)
12234+ {
12235+ resultReg = VMinlineCompareAndSetOrExchangeReference(node, cg, false);
12236+ return true;
12237+ }
1222512238 }
1222612239 break;
1222712240
1222812241 case TR::jdk_internal_misc_Unsafe_compareAndExchangeInt:
1222912242 if ((node->isUnsafeGetPutCASCallOnNonArray() || !TR::Compiler->om.canGenerateArraylets()) && node->isSafeForCGToFastPathUnsafeCall())
1223012243 {
12231- if (!disableCAEIntrinsic )
12244+ if (!disableCAEInlining )
1223212245 {
1223312246 resultReg = VMinlineCompareAndSetOrExchange(node, cg, 4, true);
1223412247 return true;
@@ -12239,7 +12252,7 @@ J9::Power::CodeGenerator::inlineDirectCall(TR::Node *node, TR::Register *&result
1223912252 case TR::jdk_internal_misc_Unsafe_compareAndExchangeLong:
1224012253 if (comp->target().is64Bit() && (node->isUnsafeGetPutCASCallOnNonArray() || !TR::Compiler->om.canGenerateArraylets()) && node->isSafeForCGToFastPathUnsafeCall())
1224112254 {
12242- if (!disableCAEIntrinsic )
12255+ if (!disableCAEInlining )
1224312256 {
1224412257 resultReg = VMinlineCompareAndSetOrExchange(node, cg, 8, true);
1224512258 return true;
@@ -12259,7 +12272,7 @@ J9::Power::CodeGenerator::inlineDirectCall(TR::Node *node, TR::Register *&result
1225912272 case TR::jdk_internal_misc_Unsafe_compareAndExchangeReference:
1226012273 if ((node->isUnsafeGetPutCASCallOnNonArray() || !TR::Compiler->om.canGenerateArraylets()) && node->isSafeForCGToFastPathUnsafeCall())
1226112274 {
12262- if (!disableCAEIntrinsic )
12275+ if (!disableCAEInlining )
1226312276 {
1226412277 resultReg = VMinlineCompareAndSetOrExchangeReference(node, cg, true);
1226512278 return true;
0 commit comments