Skip to content

Commit

Permalink
Refactor arm TreeEvaluatorTable
Browse files Browse the repository at this point in the history
Refactored ARM TreeEvaluatorTable to use FOR_EACH_OPCODE
macro from OMROpcodes.hpp.

Signed-off-by: Batyr Nuryyev <nuryyev@ualberta.ca>
  • Loading branch information
oneturkmen committed Nov 6, 2020
1 parent b0eaa27 commit bafce7c
Show file tree
Hide file tree
Showing 3 changed files with 809 additions and 896 deletions.
10 changes: 10 additions & 0 deletions compiler/arm/codegen/FPTreeEvaluator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3138,4 +3138,14 @@ TR::Register *OMR::ARM::TreeEvaluator::fRegStoreEvaluator(TR::Node *node, TR::Co
return NULL;
}

TR::Register *OMR::ARM::TreeEvaluator::fmaxEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
return NULL;
}

TR::Register *OMR::ARM::TreeEvaluator::fminEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
return NULL;
}

#endif
47 changes: 40 additions & 7 deletions compiler/arm/codegen/OMRTreeEvaluator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -544,9 +544,9 @@ TR::Register *OMR::ARM::TreeEvaluator::commonLoadEvaluator(TR::Node *node, TR_A
return tempReg;
}

#if J9_PROJECT_SPECIFIC
TR::Register *OMR::ARM::TreeEvaluator::awrtbarEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
#if J9_PROJECT_SPECIFIC
TR::MemoryReference *tempMR = new (cg->trHeapMemory()) TR::MemoryReference(node, 4, cg);
TR::Register *destinationRegister = cg->evaluate(node->getSecondChild());
TR::Node *firstChild = node->getFirstChild();
Expand Down Expand Up @@ -589,10 +589,14 @@ TR::Register *OMR::ARM::TreeEvaluator::awrtbarEvaluator(TR::Node *node, TR::Code
tempMR->decNodeReferenceCounts();

return NULL;
#else
return OMR::ARM::TreeEvaluator::unImpOpEvaluator(node, cg);
#endif
}

TR::Register *OMR::ARM::TreeEvaluator::awrtbariEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
#if J9_PROJECT_SPECIFIC
TR::MemoryReference *tempMR = new (cg->trHeapMemory()) TR::MemoryReference(node, 4, cg);
TR::Register *destinationRegister = cg->evaluate(node->getChild(2));
TR::Node *secondChild = node->getSecondChild();
Expand Down Expand Up @@ -636,8 +640,10 @@ TR::Register *OMR::ARM::TreeEvaluator::awrtbariEvaluator(TR::Node *node, TR::Cod
tempMR->decNodeReferenceCounts();

return NULL;
}
#else
return OMR::ARM::TreeEvaluator::unImpOpEvaluator(node, cg);
#endif
}

// also handles ilstore
TR::Register *OMR::ARM::TreeEvaluator::lstoreEvaluator(TR::Node *node, TR::CodeGenerator *cg)
Expand Down Expand Up @@ -743,17 +749,23 @@ TR::Register *OMR::ARM::TreeEvaluator::commonStoreEvaluator(TR::Node *node, TR_A
return NULL;
}

#ifdef J9_PROJECT_SPECIFIC
TR::Register *OMR::ARM::TreeEvaluator::monentEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
#ifdef J9_PROJECT_SPECIFIC
return VMmonentEvaluator(node, cg);
#else
return OMR::ARM::TreeEvaluator::unImpOpEvaluator(node, cg);
#endif
}

TR::Register *OMR::ARM::TreeEvaluator::monexitEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
#ifdef J9_PROJECT_SPECIFIC
return VMmonexitEvaluator(node, cg);
}
#else
return OMR::ARM::TreeEvaluator::unImpOpEvaluator(node, cg);
#endif
}

TR::Register *OMR::ARM::TreeEvaluator::integerHighestOneBit(TR::Node *node, TR::CodeGenerator *cg) { TR_UNIMPLEMENTED(); return NULL; }
TR::Register *OMR::ARM::TreeEvaluator::integerLowestOneBit(TR::Node *node, TR::CodeGenerator *cg) { TR_UNIMPLEMENTED(); return NULL; }
Expand Down Expand Up @@ -1041,29 +1053,45 @@ TR::Register *OMR::ARM::TreeEvaluator::asynccheckEvaluator(TR::Node *node, TR::C
return NULL;
}

#if J9_PROJECT_SPECIFIC
TR::Register *OMR::ARM::TreeEvaluator::instanceofEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
#if J9_PROJECT_SPECIFIC
return VMinstanceOfEvaluator(node, cg);
#else
return OMR::ARM::TreeEvaluator::unImpOpEvaluator(node, cg);
#endif
}

TR::Register *OMR::ARM::TreeEvaluator::checkcastEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
#if J9_PROJECT_SPECIFIC
return OMR::ARM::TreeEvaluator::VMcheckcastEvaluator(node, cg);
#else
return OMR::ARM::TreeEvaluator::unImpOpEvaluator(node, cg);
#endif
}

TR::Register *OMR::ARM::TreeEvaluator::checkcastAndNULLCHKEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
#if J9_PROJECT_SPECIFIC
return OMR::ARM::TreeEvaluator::VMcheckcastEvaluator(node, cg);
#else
return OMR::ARM::TreeEvaluator::unImpOpEvaluator(node, cg);
#endif
}

TR::Register *OMR::ARM::TreeEvaluator::newObjectEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
#if J9_PROJECT_SPECIFIC
return VMnewEvaluator(node, cg);
#else
return OMR::ARM::TreeEvaluator::unImpOpEvaluator(node, cg);
#endif
}

TR::Register *OMR::ARM::TreeEvaluator::newArrayEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
#if J9_PROJECT_SPECIFIC
if (cg->comp()->suppressAllocationInlining())
{
TR::ILOpCodes opCode = node->getOpCodeValue();
Expand All @@ -1076,10 +1104,14 @@ TR::Register *OMR::ARM::TreeEvaluator::newArrayEvaluator(TR::Node *node, TR::Cod
{
return VMnewEvaluator(node, cg);
}
#else
return OMR::ARM::TreeEvaluator::unImpOpEvaluator(node, cg);
#endif
}

TR::Register *OMR::ARM::TreeEvaluator::anewArrayEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
#if J9_PROJECT_SPECIFIC
if (cg->comp()->suppressAllocationInlining())
{
TR::ILOpCodes opCode = node->getOpCodeValue();
Expand All @@ -1092,9 +1124,10 @@ TR::Register *OMR::ARM::TreeEvaluator::anewArrayEvaluator(TR::Node *node, TR::Co
{
return VMnewEvaluator(node, cg);
}

}
#else
return OMR::ARM::TreeEvaluator::unImpOpEvaluator(node, cg);
#endif
}

TR::Register *OMR::ARM::TreeEvaluator::multianewArrayEvaluator(TR::Node *node, TR::CodeGenerator *cg)
{
Expand Down
Loading

0 comments on commit bafce7c

Please sign in to comment.