@@ -3214,9 +3214,6 @@ J9::Z::TreeEvaluator::genLoadForObjectHeadersMasked(TR::CodeGenerator *cg, TR::N
3214
3214
return iCursor;
3215
3215
}
3216
3216
3217
- // max number of cache slots used by checkcat/instanceof
3218
- #define NUM_PICS 3
3219
-
3220
3217
static TR::Instruction *
3221
3218
genTestIsSuper(TR::CodeGenerator * cg, TR::Node * node,
3222
3219
TR::Register * objClassReg, TR::Register * castClassReg,
@@ -3562,68 +3559,6 @@ bool killedByInstanceOfHelper(int32_t regIndex, TR::Node * node, TR::CodeGenerat
3562
3559
}
3563
3560
}
3564
3561
3565
- static bool generateInlineTest(TR::CodeGenerator * cg, TR::Node * node, TR::Node * castClassNode,
3566
- TR::Register * objClassReg, TR::Register * resultReg,
3567
- TR::Register * scratchReg, TR::Register * litPoolReg,
3568
- bool needsResult, TR::LabelSymbol * falseLabel,
3569
- TR::LabelSymbol * trueLabel, TR::LabelSymbol * doneLabel, bool isCheckCast, int32_t maxNum_PICS = NUM_PICS)
3570
- {
3571
- TR::Compilation *comp = cg->comp();
3572
- TR_J9VMBase *fej9 = (TR_J9VMBase *)(comp->fe());
3573
- TR_OpaqueClassBlock* guessClassArray[NUM_PICS];
3574
- TR_OpaqueClassBlock* castClassAddr = TR::TreeEvaluator::getCastClassAddress(castClassNode);
3575
- uint8_t num_PICs = 0, i;
3576
-
3577
- if (!castClassAddr)
3578
- {
3579
- return false;
3580
- }
3581
-
3582
- if (isCheckCast)
3583
- {
3584
- TR_OpaqueClassBlock *tempGuessClassArray[NUM_PICS];
3585
- uint8_t numberOfGuessClasses = TR::TreeEvaluator::interpreterProfilingInstanceOfOrCheckCastInfo(cg, node, tempGuessClassArray);
3586
- if (numberOfGuessClasses > 0)
3587
- {
3588
- for (i = 0; i < numberOfGuessClasses; i++)
3589
- {
3590
- if (fej9->instanceOfOrCheckCast((J9Class*)tempGuessClassArray[i], (J9Class*)castClassAddr))
3591
- {
3592
- guessClassArray[num_PICs++] = tempGuessClassArray[i];
3593
- if (maxNum_PICS == num_PICs) break;
3594
- }
3595
- }
3596
- }
3597
- }
3598
- else
3599
- {
3600
- num_PICs = TR::TreeEvaluator::interpreterProfilingInstanceOfOrCheckCastInfo(cg, node, guessClassArray);
3601
- }
3602
-
3603
- // defect 92901
3604
- // if test fails, in case of checkcast, there is no need to generate inline check for guess value
3605
- if (num_PICs == 0)
3606
- return false;
3607
-
3608
- bool result_bool;
3609
- TR::LabelSymbol *result_label;
3610
- TR::Instruction * unloadableConstInstr[NUM_PICS];
3611
- num_PICs = ((num_PICs > maxNum_PICS) ? maxNum_PICS : num_PICs);
3612
- for (i = 0; i < num_PICs; i++)
3613
- {
3614
- dumpOptDetails(comp, "inline test with guess class address of %p\n", guessClassArray[i]);
3615
-
3616
- unloadableConstInstr[i] = genLoadProfiledClassAddressConstant(cg, node, guessClassArray[i], scratchReg, NULL, NULL, NULL);
3617
- result_bool = fej9->instanceOfOrCheckCast((J9Class*)(guessClassArray[i]), (J9Class*)castClassAddr);
3618
- result_label = (falseLabel != trueLabel ) ? (result_bool ? trueLabel : falseLabel) : doneLabel;
3619
-
3620
- if (needsResult)
3621
- generateRIInstruction(cg, TR::InstOpCode::getLoadHalfWordImmOpCode(), node, resultReg, (int32_t)result_bool);
3622
- generateS390CompareAndBranchInstruction(cg, TR::InstOpCode::getCmpLogicalRegOpCode(), node, objClassReg, scratchReg, TR::InstOpCode::COND_BE, result_label);
3623
-
3624
- }
3625
- return true;
3626
- }
3627
3562
static void
3628
3563
generateTestBitFlag(
3629
3564
TR::CodeGenerator *cg,
0 commit comments